From 6a2654637b07e38c2f8c6ba8d4a87bf1af84b7c1 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 16:43:17 +0100 Subject: [PATCH 01/95] openspec: propose moho-import (S2: Crust's importer reads through Moho) Plans step S2 of the scene-index program: a second import route that reads the stage through Moho's scene index, migrated family by family behind a parity check against the direct import (samples, fixtures, ALab, Moana), with the default flipped to the index route once parity holds. Pins openusd by Moho's rev so the build carries one openusd, and lists the Moho-side gaps (cross-chunk light linking, materials outside loaded chunks, authored scene globals, prototype source paths) as follow-ups. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/.openspec.yaml | 2 + openspec/changes/moho-import/design.md | 382 ++++++++++++++++++ openspec/changes/moho-import/proposal.md | 93 +++++ .../moho-import/specs/import-parity/spec.md | 97 +++++ .../specs/scene-index-import/spec.md | 140 +++++++ openspec/changes/moho-import/tasks.md | 313 ++++++++++++++ 6 files changed, 1027 insertions(+) create mode 100644 openspec/changes/moho-import/.openspec.yaml create mode 100644 openspec/changes/moho-import/design.md create mode 100644 openspec/changes/moho-import/proposal.md create mode 100644 openspec/changes/moho-import/specs/import-parity/spec.md create mode 100644 openspec/changes/moho-import/specs/scene-index-import/spec.md create mode 100644 openspec/changes/moho-import/tasks.md diff --git a/openspec/changes/moho-import/.openspec.yaml b/openspec/changes/moho-import/.openspec.yaml new file mode 100644 index 000000000..7ccf7c369 --- /dev/null +++ b/openspec/changes/moho-import/.openspec.yaml @@ -0,0 +1,2 @@ +schema: spec-driven +created: 2026-10-25 diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md new file mode 100644 index 000000000..a77a7f6ef --- /dev/null +++ b/openspec/changes/moho-import/design.md @@ -0,0 +1,382 @@ +## Context + +See proposal.md for why. This section records the state the plan starts from: Crust at +`dacc6475`, Moho at `92c8b84`, openusd at `68a867a`. + +**Crust's importer** (`crates/crust-core/src/scene/usd_import/`, about 23k lines). +`load_scene` works in three stages. + +- **The index stage.** `load_scene` first opens a `LoadNone` index stage. `read_index` + reads the render settings, products, vars, passes, the working colour space, the + dicing camera and the shutter from it. It is kept until light links are resolved. +- **The traversal.** `traverse_stage` runs over one stage, or over one `LoadAll` stage + per chunk when the stage has at least 4 top-level subtrees (`stream_roots`; each chunk + is masked to its subtree plus the active pass prim). Each chunk is walked from the + root by `traverse_into`, an explicit stack. That walk composes world matrices + (`compose_with_parent`) and prunes abstract, inactive, `proxy`/`guide` and invisible + prims, still walking invisible subtrees for cameras. It dispatches by typed schema. + Geometry ids are handed out in traversal order. They key light links, pass flags and + provenance. +- **After the last chunk.** Light links are resolved (`LightLinks::resolve`), meshes + are flushed (the bake-versus-instance decision needs every chunk's placement counts), + and the top-level BVH is committed. + +| module | reads from openusd | Moho counterpart | +|---|---|---| +| `time` | thread-local time code (`EvalTimeScope`) | the index's time: `set_time`, sampled offsets | +| `settings`, `products`, `precomp` | `RenderSettings`/`Product`/`Var`, `crust:*` settings, `driver:parameters:*`, `ri:*`, `compute_render_spec`, filter prims named by relationship | `renderSettings` (flattened products and vars, `namespacedSettings`), scene globals, generic data on filter prims | +| `passes` | the active `RenderPass`: `matte`, `cameraVisibility`, opinions of `prune`/`renderVisibility` | `renderPass`, its `collections` (matte, cameraVisibility), generic relationships for the rest | +| `camera`, `adaptive` | `UsdGeomCamera`, `metersPerUnit` (and whether it is authored), conform policy | `camera` schema, scene globals (no authored flag: gap M3) | +| `xform` | `xformOpOrder` stacks, `XformQuery`, sample times over the shutter, `crust:motion:translate` | `xform` (local) and flattened world `xform`, sample times; generic data | +| `attrs` | `crust:rayMask`, `crust:subdivision*`, `crust:light:cameraVisible`, `primvars:ri:attributes:visibility:camera`, colour spaces | `__usdAttributes` (value, authored, colorSpace), `primvars` | +| `mesh` | topology, holes, subdivision tags, primvars (indices, interpolation, elementSize, colour space), normals precedence, `crust:displacementBound` | `mesh`, `primvars` (de-indexed reads), generic data | +| `shapes`, `strands` | `Sphere`, `BasisCurves`, `NurbsCurves`, `primvars:curve*`, widths | `sphere`, `basisCurves`, `nurbsCurves`, `primvars` | +| `implicit` | `Cube`, `Cone`, `Cylinder(_1)`, `Capsule(_1)`, `Plane`, tessellated by Crust | the shape schemas (not meshed by Moho, as Crust needs) | +| `materials`, `preview`, `mtlx_network` | binding resolution (`full` purpose, then all purposes; collection bindings), terminals, `info:id`, inputs and connections, `crust:openpbr`, `PxrDisneyBsdf`, `.mtlx` references read off layer specs, materials outside the chunk on a side stage, `prim_stack` and connections for provenance | `materialBindings` (resolved per purpose), `material` networks per context, asset values; no `.mtlx` arc (openusd has no MaterialX format, see `mtlx-format-plugin`) | +| `lights`, `light_links` | every UsdLux type, shaping, IES, dome texture and pole, `crust:light:*`; link collections via `compute_membership_query`, read on the index stage or the chunk | `light` (open container), `collections` (complete membership expressions), `categories` (per chunk only: gap M1) | +| `volume` | `crust:volume:*` on any prim; a material's volume terminal | generic data; `material` volume terminal | +| `instancing` | `is_instance`/`prototype` (`/__Prototype_N`, epoch-scoped), placements counted per subtree, raw `PointInstancer` arrays with per-index warnings | `instancer` prims, `instancerTopology`, `hydra:instance*` primvars, stable prototype paths under `MohoNiPropagatedPrototypes` / `ForInstancer` | +| `mod.rs` (stage facts) | `layer_identifiers`, `layer_stack`, session/root layer specs (`invisible_overrides`), `has_authored_time_code_range` | none: not imaging data (D7) | +| `live` | rebuilds one material, light, or the settings on a masked stage through the import's functions | the same functions, over an index of that stage (D8) | +| `listing` | `crust ls` | unchanged (not an import) | + +**Live edits today** (`crate::live`, `usd_import/live.rs`). The MCP session and the +host session diff layers. A classifier, fed by the scene's `Provenance` (arc sources +from `prim_stack`, the prims a material reads, per-light and per-mesh origins), decides +whether an edit can be rebuilt in place. A rebuild calls the import's own functions on a +stage masked to the edited prim. The rule "an MCP edit applied in place equals a full +re-import" is pinned bitwise. + +**Moho** gives `StageSceneIndex` (`new`, `set_stage`, `set_time`, +`apply_pending_updates`, `set_include_unloaded_prims`, and `stage()`), +`moho::chain::standard`, the public filters (so a chain can be assembled from them), +`MergingSceneIndex` (`add_input_scene`, `insert_input_scene`, `remove_input_scene`), +typed schemas, and `__usdAttributes`/`__usdRelationships`. Its contract is +`Moho/openspec/specs/*/spec.md`. Data sources are `Rc` and confined to one thread; +values are `Send`. Moho's `moho-spike` is the streaming memory benchmark: on Moana, +strategy (B), a masked stage per chunk, peaks at 1.97 GiB. + +**Constraints.** +- Moho pins openusd by `rev`. crust-render patches by `branch = "main"`, which locks to + the same commit but is a different Cargo source. +- Moho is public. It is consumed by git rev, and a sibling path patch is optional for + co-development. +- crust-core stays `deny(unsafe_code)`. Moho is `forbid`. +- The import is single-threaded (`time.rs`). Only `MeshArena::commit_slots` uses rayon, + on arrays already read. + +## Goals / Non-Goals + +**Goals:** +- An index route that produces, for every scene, the `Scene` the direct route produces: + the same geometry in the same order, the same materials, lights, camera, settings, + AOVs, warnings and provenance. +- Migrate one family at a time, with the parity check green after each move. +- Keep the direct route's memory bound on streamed scenes, and the import time within a + stated bound. +- One openusd copy in the build, checked rather than assumed. +- An importer shaped for S3: readers are functions of (index, path) that feed Crust's + builders, so a later change can call them for dirtied prims. + +**Non-Goals:** +- S3: dirty notices driving in-place updates, observers on the index, retiring the + layer-diff classifier, or the session keeping an index alive between applies. +- Removing the direct importer. A follow-up change does that after the default flips. +- Behaviour changes that Hydra semantics would bring, such as primvar inheritance, + `includedPurposes` (that is `payload-and-purpose-view`'s) or binding purposes beyond + today's. +- Changing Moho. Gaps are filed against Moho (M1 to M7) and planned around openly. +- `crust ls` (`listing.rs`) and the MCP session's authoring stage. Neither imports a + scene. + +## Decisions + +### D1. One openusd: the patch pins Moho's rev + +`[patch.crates-io]` changes from `branch = "main"` to +`rev = "68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f"` for both openusd and openusd-schemas. +`[workspace.dependencies]` gains +`moho = { git = "https://github.com/doubleailes/Moho", rev = "92c8b847822823f796b81b85452c3c400d77e5ec" }`. +Cargo identifies a git source by URL plus reference, so `?branch=main` and `?rev=…` are +two packages even at one commit. Moho's `openusd = { git, rev }` and crust's patched +crates.io `openusd 0.8` resolve to one package only when both name the same rev. Three +checks guard it: +- `cargo tree -i openusd` and `cargo tree -i openusd-schemas` each show one package; +- `cargo tree -d` lists no openusd crate; +- a compile-time test in crust-core passes a `moho::openusd::usd::Stage` where an + `openusd::usd::Stage` is expected, and the same for one openusd-schemas type. It stops + compiling if two copies ever appear. + +*Alternatives:* `branch = "main"` in Moho. Rejected: Moho's rule is an exact rev, and +`main` moves. A `git =` entry in `[workspace.dependencies]` in place of the patch. +Rejected: the patch keeps the `0.8` requirement, so dropping it is still the whole +revert. + +The bump order becomes Moho, then crust-render, then Mantle. `cargo update -p openusd` +stops being the way to move. A bump edits both revs: Moho's rev in the `moho` entry and +the openusd rev in the patch. `CLAUDE.md` says so. + +### D2. Use openusd through Moho's re-exports at the index boundary + +New index-route code names openusd types as `moho::openusd` and +`moho::openusd_schemas`. The workspace's own `openusd` and `openusd-schemas` +dependencies stay. crust-core needs features Moho does not turn on (`mmap`, the `skel`, +`proc` and `media` schema families), crust-render needs `serde`, and the direct route +uses them. Feature unification gives both names the same crate (D1's test proves it). A +reader of the index code can see which types cross the Moho boundary. + +### D3. The route switch + +`Config` gains `usd_import: ImportRoute { Direct, Index }`, read from +`CRUST_USD_IMPORT` (`direct` or `index`; any other value warns once and keeps the +default). `UsdImportOptions` gains `route: Option`, which overrides the +environment for one import. Tests run in parallel in one process, so they cannot use the +environment. Following the switch convention, the off side is today's importer: `direct` +is the default until task group 15 flips it. `load_scene` dispatches once. Everything +before the traversal that does not read the stage (option checks, warnings scope, stats) +is shared. + +### D4. Index layout: S0's merged index, the consumer deciding what is in + +- **Single stage** (fewer than 4 subtrees, or `CRUST_STREAM_IMPORT=0`): one + `StageSceneIndex` over a `LoadAll` stage opened with Crust's `stage_builder()`, which + keeps the schema registry and the `mmap` resolver. The chain is built over it (D6). +- **Streamed**: a `MergingSceneIndex` with: + - the **scene input**, weakest and permanent: a chain over the `LoadNone` index stage + with `set_include_unloaded_prims(true)`. It replaces `read_index`'s direct reads of + settings, products, passes and cameras outside payloads. + - one **chunk input** at a time: a chain over a `LoadAll` stage masked to the chunk + (and the active pass prim, as today), added with `add_input_scene(chunk, root)`, + walked, then removed with `remove_input_scene`, and its stage dropped. That is S0's + strategy (B) and its memory bound. + - a **side input** when a chunk binds a material that neither the chunk nor the scene + input holds. It is a chain over a stage masked to the out-of-chunk binding targets + (and the prims their networks connect to), payloads loaded. It is grown and reopened + under the same rules as today's `OutsideMaterials`, and removed after the last + chunk. This is a consumer deciding what is loaded, built from Moho's own pieces. + Moho has not specified it, so M2 asks Moho to. +- Crust keeps opening every stage itself and hands it to `set_stage`. Moho never loads + or unloads. + +*Alternative:* one chain per chunk, walked without a merging index. Rejected. S0 decided +on the merged index, the scene input already holds what `read_index` reads, and a +material in the scene input must be reachable from a chunk's prims by path. + +### D5. The traversal: Crust walks, in the direct route's order + +The index route has its own walk, from the absolute root, over the index's `children`, +with the direct route's stack discipline (push in order, pop last-first). Geometry ids, +light-link runs, pass flags and provenance depend on visit order, and bitwise image +parity depends on geometry order. While streaming, a chunk is walked from the root down +to and through that chunk's root only. Below the chunk root the merged children come +from the chunk input in stage order (the scene input's children there are a subset). +Outside the chunk, only the ancestors are visited, as the masked stage gives today. +`MergingSceneIndex::children` returns the union in input order, not namespace order +(M7), so the walk never relies on it above a chunk root. + +- World transforms come from the flattened `xform`. Visibility and purpose come from + the flattened data, applying today's pruning: abstract and inactive prims are absent + from the index, `proxy`/`guide` prune, invisible prims prune but are still walked for + cameras. Shutter samples come from `sample_times` over the shutter offsets. +- Dispatch is by Hydra prim type (`mesh`, `sphere`, `basisCurves`, `instancer`, the + light types, `camera`, ...). A prim with `crust:volume:type` in its generic data + dispatches as a volume first, as today. A geometry prim that no branch reads is + counted for `geom.unsupported_type` from its type, as today. + +### D6. Migration by family, with a bridge that is deleted at the end + +The index route starts with every family on a **bridge**: for a prim at a stage path, +the bridge asks the input that holds it (the current chunk, the side input or the scene +input) for its `StageSceneIndex::stage()` and hands the existing reader the `usd::Prim` +at that path, at the same time code. Parity therefore holds from the first commit of the +route. Each family then moves on its own to an **index reader**: a function of (scene +index, path) that reads schemas and generic data and calls the same builders the direct +reader calls. The move is accepted when `import-parity` is green. + +The bridge cannot reach a prim that exists only in Moho's namespace (re-rooted +prototypes). So until instancing moves, the index route builds its chain without the two +instancing filters: +``` +StageSceneIndex -> Flattening -> MaterialBindingResolving -> LightLinking -> RenderSettingsFlattening +``` +An instance or `PointInstancer` prim goes through the bridge to today's +`emit_native_instance` and `emit_point_instancer`, and that holds the prototype epoch +scoping. Instancing moves last. With it the chain becomes `moho::chain::standard`, and +prototypes are keyed by Moho's stable prototype paths. Those paths need no epoch, +because they agree across chunks by construction. The epoch stays for the direct route. +After that move the bridge has no callers, and it is deleted in the same task group. + +Family order follows the data each one needs: +1. settings, products, precomp, passes, camera (the camera needs the aspect); +2. transforms and motion; +3. meshes (primvars, subdivision, adaptive level, displacement bound); +4. implicit shapes and spheres; +5. curves; +6. materials; +7. lights and light links; +8. volumes; +9. instancing. + +*Alternative:* write the whole index importer, then compare. Rejected. 23k lines with +no intermediate parity would make a difference undiagnosable, and Mantle's design asks +for one module at a time. + +### D7. What is not imaging data is read from the stage + +Some facts are not scene description: the layers a scene composed (`Scene::layers`, +`Source::layer_stack`), session/root-layer `invisible` overrides, whether the time range +or `metersPerUnit` is authored, a material's composition arcs (`prim_stack`) for +provenance, and a `.mtlx` reference read off layer specs. The index route reads these +from `StageSceneIndex::stage()`, behind one module (`index/stage_facts.rs`), each with a +comment naming why it is not a schema read. Two of them are Moho gaps that Moho can +close (M3 authored-ness, M4 prototype source paths). Two are pending other work (the +`.mtlx` arc moves to `mtlx-format-plugin`; `prim_stack` provenance goes with S3's +classifier). The rest (layers) are a host's business, not a scene index's. This is the +documented escape hatch, not a silent workaround. + +### D8. In-place rebuilds move with their family + +`usd_import/live.rs` rebuilds a material, a light, or the settings and camera on a +masked stage through the import's functions. When a family moves, its rebuild builds a +`StageSceneIndex` over that masked stage and calls the same index reader, under the same +route as the scene's import (`StageFacts::options` carries the route). This keeps the +pair "an in-place update equals a full re-import" true on both routes, with +`crust-core/tests/live.rs` run under both. The classifier and `Provenance` are S3's to +replace. They keep their inputs, which D7 reads from the stage where Moho has no +counterpart. + +### D9. Light links: Crust keeps deciding after the last chunk + +Moho's `LightLinkingSceneIndex` sits in each input's chain. It knows only the lights of +its own input, so a receiver in chunk B gets no category for a light in chunk A or in +the scene input (M1). The direct route already defers link decisions to after the last +chunk, judging recorded paths. The index route keeps that structure. It reads each +light's `collections/lightLink` and `collections/shadowLink` (Moho's complete membership +expressions), judges every recorded receiver path after the last chunk, and does not +read `categories`. On a single stage the two agree, and a parity test asserts it there, +so the M1 fix can later switch Crust to `categories` with a test already in place. +Today's choice between the index stage and the chunk for a light's link opinions +becomes: the merged data of the light (chunk opinions over scene input), with the same +warning when a nested collection is not composed. + +### D10. Time: the index owns it + +Every `StageSceneIndex` the import builds is set to the import's time +(`TimeCode::default()` for `None`, the authored default, as today). The index route +reads sampled data at offset 0, and at the shutter offsets for motion. `EvalTimeScope` +stays only for bridged readers and the direct route. It goes from the index route with +the bridge. `LiveSession::set_time` (`live-session-time`) keeps its behaviour: a time +change is a full import. + +### D11. What parity compares + +See `specs/import-parity`. In short: +- a structural `Scene` digest, test-only in crust-core, over geometry in id order, + materials by resolved parameters, the light list, camera, settings, AOV request, + warnings in order and provenance; +- the `crust check --json` report minus timings; +- a 16 spp EXR compared bitwise with `crust diff`; +- for ALab and Moana, `--stats` peak memory and import time, compared between routes in + one `bench_ab.sh`-style interleaved run. + +A difference that is correct (for example a Hydra semantic Crust should adopt) is not +let through. It is recorded under Open Questions and left for its own behavioural +change. + +### Moho-side follow-ups (filed in the Moho repo, not done here) + +- **M1. Cross-input light linking.** In a merged streamed index, each input's + `LightLinkingSceneIndex` sees only its own lights, so a chunk's geometry lacks + categories for lights in other inputs. Ask: resolve linking after the merge (a + scene-wide linking filter over the `MergingSceneIndex`), with a streaming test whose + fixture links across chunks. Crust's interim is D9. +- **M2. Prims outside the loaded chunks.** S0 left "how a consumer asks for a material + bound from another chunk" to S1, and S1's specs do not say. Ask: specify and test the + side-input pattern of D4 (a chain over a stage masked to out-of-chunk targets, as an + extra merging input), or give `MergingSceneIndex` a documented hook. +- **M3. Authored-ness in the scene globals.** `metersPerUnit` and the time range are + given as values only. Crust warns differently when they are unauthored. Ask: an + `authored` flag beside each, as `__usdAttributes` already has. +- **M4. Source paths for prototype prims.** Re-rooted prototype prims + (`MohoNiPropagatedPrototypes/...`, `ForInstancer`) do not name the USD prim + they come from. Crust's warnings and provenance name prototype-internal prims by their + stage path. Ask: expose the source prim path (as `__usdPrimInfo` does for instances). + Until then, warning paths inside prototypes are a listed parity exception for the + instancing family only, normalised by the parity tooling. +- **M5. An index strategy in `moho-spike`.** S0 measured raw openusd reads. Ask: a + strategy (D) that does (B) through `MergingSceneIndex` and standard chains, so Moho's + own memory overhead is measured against (B) on Moana. +- **M6. Pass collections.** `renderPass` exposes `matte` and `cameraVisibility` only. + Crust reads `prune` and `renderVisibility` opinions to warn that it does not honour + them. Generic relationships cover it now. Ask: expose them as `collections` for + completeness. +- **M7. Merged children in namespace order.** `MergingSceneIndex::children` returns the + union in input order. D5 avoids relying on it. Ask: namespace order, or document the + current order. + +## Risks / Trade-offs + +- **[Visit order differs, so geometry ids differ, so the image differs]** → D5 walks + per chunk with the direct route's stack discipline. The digest compares geometry in id + order, so a reorder is caught at the first family that emits geometry, not at the end. +- **[Prototype namespace mismatch]** (Moho re-roots prototypes by content and binding; + Crust keys `/__Prototype_N` by epoch) → instancing moves last, on the standard chain. + Moho groups instances by binding, while Crust's `MeshKey` deduplicates by geometry + and material. These are different keys, so the bake-versus-instance decision is + re-checked by the digest, including placement counts per subtree (adaptive + subdivision). +- **[Hydra preprocessing hides what Crust warns about]** (a `PointInstancer`'s + out-of-range `protoIndices`, `inactiveIds` already removed from `instancerTopology`; + unauthored-ness) → the index reader reads the raw arrays from `__usdAttributes` where a + warning depends on them, as the generic data exists for. +- **[Inherited constant primvars]** Moho's flattened `primvars` include ancestors' + constant primvars, which Crust does not read today → the index reader reads a prim's + own constant primvars from its generic data, preserving today's behaviour. Whether to + adopt USD's inheritance is an Open Question. +- **[Import time overhead]** (layers of `Rc` data sources, string-keyed containers) → + the ALab and Moana gates bound it (`import-parity`). Hot arrays (points, indices, + primvars) are read once as shared `sdf::Value` arrays, never element by element + through data sources. +- **[Memory]** (the scene input keeps a `LoadNone` stage alive for the whole traversal, + as the direct route already keeps its index stage until light links) → it is dropped + at the same point, and Moana's peak is gated. Each chunk input is removed and its + stage dropped before the next opens. +- **[openusd bump friction]** (three repos pinned to one rev) → D1's checks fail loudly. + The bump order is written in `CLAUDE.md`. +- **[Pending changes touch the same code]** (`payload-and-purpose-view` adds + `includedPurposes`, binding purposes and load-set flags; `mtlx-format-plugin` moves + the `.mtlx` arc into composition) → whichever lands first, the other's tasks must + cover both routes. The parity tests cover new behaviour automatically, because they + run every import test under both routes. +- **[Thread confinement]** (Moho data sources are `!Send`) → the import is already + single-threaded. `commit_slots` takes arrays, never data sources. Values crossing to + rayon are `sdf::Value`/`Vec`, which are `Send`. + +## Migration Plan + +1. Dependencies (D1, D2) land alone. No behaviour change. CI is green with one openusd. +2. The route switch, the parity harness and the index skeleton land, with every family + bridged. `CRUST_USD_IMPORT=index` equals `direct` from here on. +3. One task group per family, each merged only with parity green on the samples and + fixtures. ALab and Moana are run at the materials, lights and instancing milestones + and at the end. +4. The bridge is deleted with the last family (instancing). +5. With parity on ALab and Moana within the memory and time bounds, the default flips to + `index`. hdCrust's `compare.sh` and `interaction.sh` run on it. The design record + and docs are updated. +6. Rollback at any point is `CRUST_USD_IMPORT=direct`. After the flip, reverting that + one commit restores the old default. The direct route is removed in a later change, + not here. + +## Open Questions + +- **Primvar inheritance.** USD (and Hydra's flattening) makes an ancestor's constant + primvar visible to descendants, and Crust reads a prim's own only. Adopting + inheritance is a behavioural change to `usd-scene-import`, proposed separately after + the flip. It does not change this plan: parity keeps today's behaviour. +- **Light links on `categories`.** Once M1 lands, does Crust read Moho's categories + instead of judging expressions itself (D9)? It is deferrable, because the + single-stage agreement test is already there to switch on. +- **When the direct route goes.** Mantle's design says "until parity holds, then goes". + This change flips the default. The removal (with `EvalTimeScope`, the epoch and the + direct readers) is a follow-up change, timed after S3 has started on the index route. diff --git a/openspec/changes/moho-import/proposal.md b/openspec/changes/moho-import/proposal.md new file mode 100644 index 000000000..bd197b296 --- /dev/null +++ b/openspec/changes/moho-import/proposal.md @@ -0,0 +1,93 @@ +## Why + +Crust reads USD in one place, `crust-core::scene::usd_import`, and every family module +there reads `openusd` prims directly. Mantle's `scene-index` program (step S2) moves +that reader onto Moho, a Hydra-2.0-style scene index over openusd that Mantle's IPR and +Obsidian also consume. Two readers of the same stage drift apart. With one index, an IPR +frame and `crust render -i` read the scene the same way, and S3's live updates get dirty +locators to work from. Moho's S1 core is done, with schemas for every family Crust +imports, so the importer can now migrate. The move is gated on parity with the direct +import, so nothing a render produces changes while it happens. + +## What Changes + +- **One openusd across the stack.** The workspace's `[patch.crates-io]` pins openusd and + openusd-schemas by `rev = "68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f"` instead of + `branch = "main"`. Moho uses the same rev, and Cargo treats a `branch` source and a + `rev` source as different crates, so without this the build would carry two openusd + copies. Moho is added as a git dependency at + `rev = "92c8b847822823f796b81b85452c3c400d77e5ec"`, and `deny.toml` allows its source. +- **A second import route, the index import.** The scene is read through a Moho scene + index. For a small stage that is one standard chain. For a streamed stage it is a + `MergingSceneIndex` over a payload-free scene input and one masked chunk input at a + time. The importer pulls Hydra prims, schemas and generic attribute data (`crust:*`) + instead of `usd::Prim`. It produces the same `Scene` as the direct import, through the + same builders. +- **A route switch.** `CRUST_USD_IMPORT=direct|index` and a per-call override on + `UsdImportOptions`. Until parity holds the default is `direct`, today's importer + unchanged. +- **Module-by-module migration.** Each schema family (settings and products, camera, + transforms and motion, meshes, implicit shapes, curves, materials, lights and light + links, volumes, instancing) moves to the index on its own. Each move is gated by the + parity check. Families not yet moved are read through a temporary bridge that hands + the existing reader the `usd::Prim` at the same path. The bridge is deleted when the + last family moves. +- **A parity check.** For every committed sample and the import tests' fixtures, the + index import must equal the direct import. `scripts/import_parity.sh` compares the two + routes on large scenes (ALab, Moana), using the `crust check` report, a bitwise 16 spp + image and the `--stats` import memory and time. Moho's S0 harness (`moho-spike`) is the + reference for streaming memory. +- **The default flips to `index`** once parity holds on the samples, ALab and Moana. The + direct importer stays, selectable with `CRUST_USD_IMPORT=direct`. Removing it is a + later change. +- **Moho-side gaps go to Moho.** Crust does not work around them silently. The gaps are + cross-chunk light linking, materials outside the loaded chunks, authored-ness of scene + globals and source paths for prototype prims (design, "Moho-side follow-ups"). + +Not in this change: S3, where Moho's dirty locators replace the layer-diff classifier +for live edits. In-place rebuilds keep today's classifier. Only the functions they call +move with their family, so an in-place update still equals a re-import. + +## Capabilities + +### New Capabilities + +- `scene-index-import`: Crust reads a stage through the Moho scene index. This covers + the route switch and its default, which hosts use it, streaming by chunk under a + merging index within the direct import's memory bound, the index owning the time, and + the rule that every family reads what the direct import reads. +- `import-parity`: the check that the index import equals the direct import. It defines + what "equal" means (the scene, the `crust check` report, a bitwise image), where the + check runs (tests on the samples and fixtures, and a script for ALab and Moana with + memory and time bounds), and how a family's move is gated on it. + +### Modified Capabilities + +None. With the default `direct` the importer's behaviour is unchanged, and the index +route must reproduce it (`import-parity`). Behaviour changes that Moho's Hydra semantics +would bring, such as inheriting ancestors' constant primvars, are left for later +changes (design, Open Questions). + +## Impact + +- **Dependencies:** root `Cargo.toml` (`[patch.crates-io]` from branch to rev, a `moho` + entry in `[workspace.dependencies]`), `Cargo.lock`, `deny.toml` (`allow-git` gains + `https://github.com/doubleailes/Moho`). `crust-core` depends on `moho`. Bumping openusd + goes in order: Moho, then crust-render, then Mantle. `cargo update -p openusd` no + longer moves the pin. +- **Code:** `crates/crust-core/src/scene/usd_import/`. A new index route with its own + traversal sits beside `traverse_into`, and each family module gains an index reader + that feeds the same builders. `config.rs` gets the `CRUST_USD_IMPORT` field, and + `UsdImportOptions` gets the route override. `usd_import/live.rs` rebuilds move with + their families. +- **Hosts:** `crust render`, `check`, `diagnostic`, `crust mcp` and `crust-hydra` all + import through `load_scene`, so they all follow the switch. hdCrust's `compare.sh` and + `interaction.sh` exercise the index route once it is the default. +- **Tests and tooling:** a parity test in `crust-core/tests`, `scripts/import_parity.sh`, + and recorded ALab and Moana baselines. +- **Docs:** `openspec/specs/usd-scene-import/design.md` (the index route, the bridge, + gaps), `docs/architecture.md` (Moho in the crate map, the new switch), `CLAUDE.md` + (openusd pinned by rev, the Moho rule, local co-development), and the site's + environment-variables page. +- **Performance:** render throughput is untouched, because only the import changes. + Import time and peak memory are gated on ALab and Moana (`import-parity`). diff --git a/openspec/changes/moho-import/specs/import-parity/spec.md b/openspec/changes/moho-import/specs/import-parity/spec.md new file mode 100644 index 000000000..493ccf99f --- /dev/null +++ b/openspec/changes/moho-import/specs/import-parity/spec.md @@ -0,0 +1,97 @@ +## Purpose + +The check that the index import route produces what the direct route produces: what +"equal" means, where it runs (tests on the committed samples and import fixtures, and a +script for ALab and Moana with memory and time bounds), and how it gates each step of +the migration and the change of default. + +## ADDED Requirements + +### Requirement: What equal means + +Two imports of one stage, with the same options, SHALL be equal when all of these hold: +- their scene digests match. The digest covers the geometry in id order (primitives, + transforms, materials, masks), the light list, the camera, the render settings, the + AOV request, the warnings in order and the provenance; +- their `crust check --json` reports match, timings excluded; +- their renders at `-s 16 --indirect-clamp 0` are bitwise equal under `crust diff`. + +No tolerance SHALL apply. A difference SHALL be either fixed or listed as a parity +exception with its reason. The only exception allowed SHALL be the prim paths that +warnings and provenance name inside a native prototype, until the scene index exposes +those prims' source paths. That exception SHALL be normalised by the check, never +ignored wholesale. + +#### Scenario: An equal scene + +- **WHEN** `samples/cornellbox.usda` is imported on both routes +- **THEN** the digests, the reports and the 16 spp images are equal + +#### Scenario: A reordered geometry is caught + +- **WHEN** a change makes the index route visit two meshes in the other order +- **THEN** the digests differ and the check names the first geometry id that differs + +### Requirement: Parity tests on the samples and import fixtures + +`cargo test` SHALL run the parity check on every committed `samples/*.usd*` scene that +imports without external assets. It SHALL also run every import test fixture in +`crust-core/tests` under both routes. A sample that cannot run in CI SHALL be listed +with its reason. The check SHALL compare digests and reports in `cargo test`. The +bitwise image check SHALL run on the samples `scripts/check_images.sh` covers. + +#### Scenario: The test suite + +- **WHEN** `cargo test -p crust-core --test import_parity` runs +- **THEN** every listed sample is imported on both routes and compared, and any + difference fails the test, naming the sample and what differs + +#### Scenario: Fixtures run on both routes + +- **WHEN** the existing import tests run +- **THEN** each scene they build is also imported with the index route and compared + with the direct route + +### Requirement: Large-scene parity with memory and time bounds + +`scripts/import_parity.sh [render flags]` SHALL import and render the scene on +both routes, interleaved as `bench_ab.sh` interleaves A and B. It SHALL compare the +`crust check` reports and the 16 spp images, and report each route's `--stats` peak +memory and import time (`Parse USD stage`). It SHALL exit non-zero when: +- the reports or images differ; +- the index route's peak memory exceeds 1.10× the direct route's; +- its import time exceeds 1.25× the direct route's (the minimum over the runs). + +The results for ALab and Moana, and Moho's `moho-spike` strategy (B) peak on the same +machine as the streaming reference, SHALL be recorded in the `usd-scene-import` design +record. + +#### Scenario: Moana + +- **WHEN** `scripts/import_parity.sh ~/Workspace/samples/island/usd/island.usda --camera /island/cam/shotCam` runs +- **THEN** it exits 0 only if the reports and images match, and the index route's peak + memory and import time are within 1.10× and 1.25× of the direct route's + +#### Scenario: A memory regression + +- **WHEN** the index route keeps every chunk's stage alive +- **THEN** the script reports the peak ratio and exits non-zero + +### Requirement: Parity gates every step + +A schema family SHALL move to the index route only with the parity tests green. The +default route SHALL change to `index` only when the parity tests are green and +`scripts/import_parity.sh` passes on ALab and Moana. The direct route SHALL remain until +a later change removes it. + +#### Scenario: A family moves + +- **WHEN** the mesh family's index reader replaces its bridged reader +- **THEN** the change is accepted only with `import_parity` passing, unchanged from + before the move + +#### Scenario: The default flips + +- **WHEN** the default changes to `index` +- **THEN** the recorded ALab and Moana runs for that commit pass, and + `CRUST_USD_IMPORT=direct` still selects the direct route diff --git a/openspec/changes/moho-import/specs/scene-index-import/spec.md b/openspec/changes/moho-import/specs/scene-index-import/spec.md new file mode 100644 index 000000000..f7a430395 --- /dev/null +++ b/openspec/changes/moho-import/specs/scene-index-import/spec.md @@ -0,0 +1,140 @@ +## Purpose + +How Crust reads a USD stage through the Moho scene index rather than through openusd +directly: which import route runs, which hosts follow it, how a large stage streams by +chunk, and that the index route reads exactly what the direct route reads. + +## ADDED Requirements + +### Requirement: Two import routes, chosen per import + +The importer SHALL offer two routes over the same stage. The `direct` route reads +openusd prims. The `index` route reads a Moho scene index of the stage. The route SHALL +come from `CRUST_USD_IMPORT` (`direct` or `index`). A host SHALL be able to override it +for a single import through its import options. Any other value of `CRUST_USD_IMPORT` +SHALL be reported once as a warning and the default used. + +Until the parity gate of the `import-parity` capability has passed on the samples, ALab +and Moana, the default SHALL be `direct`. After that, the default SHALL be `index`, and +`direct` SHALL remain selectable. + +*Implementation status: not yet implemented. The default flips in the change's final +task group.* + +#### Scenario: Default before the flip + +- **WHEN** `crust render -i samples/cornellbox.usda` runs with `CRUST_USD_IMPORT` unset, + before the flip +- **THEN** the scene is imported by the direct route, exactly as before this change + +#### Scenario: Choosing the index route + +- **WHEN** the same command runs with `CRUST_USD_IMPORT=index` +- **THEN** the scene is imported by the index route, and the EXR is bitwise equal to the + direct route's at 16 spp + +#### Scenario: An unknown route + +- **WHEN** `CRUST_USD_IMPORT=hydra` is set +- **THEN** one warning names the unknown value and the default route imports the scene + +#### Scenario: A per-import override + +- **WHEN** a host imports two scenes in one process, one with the route override set to + `index` and one without +- **THEN** the first uses the index route and the second the environment's route, + whatever order they run in + +### Requirement: Every host follows the route + +`crust render`, `crust check`, `crust diagnostic`, the `crust mcp` session and the +Hydra delegate (`crust-hydra`) SHALL import through the selected route. An in-place +update in a live session SHALL rebuild through the same route as the import it updates. +An in-place update SHALL remain equal to a full re-import on both routes. + +#### Scenario: check reports the index route's scene + +- **WHEN** `crust check -i scene.usda --json -` runs with `CRUST_USD_IMPORT=index` +- **THEN** its report, timings aside, equals the report with `CRUST_USD_IMPORT=direct` + +#### Scenario: An in-place edit on the index route + +- **WHEN** an MCP session imported with the index route changes a material's input, and + the edit is applied in place +- **THEN** the rendered image is bitwise equal to a full re-import of the edited layer + on the index route + +### Requirement: The index route reads what the direct route reads + +For every prim the direct route imports, the index route SHALL import the same thing: +- the same geometry, materials, lights, volumes and cameras; +- the same render settings, products, vars and passes; +- the same warnings, with the same codes, in the same order; +- the same prims pruned (abstract, inactive, `proxy`/`guide` purpose, invisible), with + invisible subtrees still searched for cameras. + +Renderer attributes (`crust:*`) SHALL be read from the scene index's generic attribute +data, with the same authored-versus-fallback rule as the direct route. + +#### Scenario: A renderer attribute + +- **WHEN** a mesh authors `crust:rayMask` and `crust:subdivisionLevel` +- **THEN** the index route applies both to the mesh exactly as the direct route does + +#### Scenario: Pruning and cameras + +- **WHEN** a stage holds an invisible rig scope containing a camera and a light, and a + `GEO_PROXY` scope with `purpose = "proxy"` +- **THEN** on the index route the light and the proxies are not imported, and + `--camera` can still name the rig's camera, as on the direct route + +#### Scenario: Warnings + +- **WHEN** a stage raises warnings on the direct route +- **THEN** the index route raises the same warning codes, at the same prims, in the same + order + +### Requirement: The index route streams within the direct route's memory bound + +When the direct route would stream (at least 4 top-level subtrees, and +`CRUST_STREAM_IMPORT` not `0`), the index route SHALL also stream. It SHALL hold at most +one chunk's payloads composed at a time, beside the payload-free scene and any materials +bound from outside the chunk. Each chunk's stage SHALL be dropped before the next is +opened. A material bound from outside a chunk SHALL resolve as it does on the direct +route. + +#### Scenario: Moana + +- **WHEN** the Moana island is imported on both routes +- **THEN** the index route's peak memory is within the bound the `import-parity` + capability sets, relative to the direct route's + +#### Scenario: A material in a sibling chunk + +- **WHEN** a streamed stage binds geometry in `/World/Box` to a material under + `/World/Looks` +- **THEN** the index route resolves that material, as the direct route does, instead of + falling back to the default material + +#### Scenario: Streaming off + +- **WHEN** `CRUST_STREAM_IMPORT=0` is set +- **THEN** the index route reads one fully loaded stage, and its result equals the + streamed index route's + +### Requirement: The index owns the time + +The index route SHALL resolve every value at the import's time code (`-f`), and at the +shutter offsets around it for motion, through the scene index's time. With no time +code, it SHALL read default values, as the direct route does. + +#### Scenario: A frame + +- **WHEN** `crust render -i samples/animation.usda -f 12 -s 16` runs on both routes +- **THEN** the two EXRs are bitwise equal + +#### Scenario: Motion over the shutter + +- **WHEN** `samples/motionblur.usda` is rendered at 16 spp on both routes +- **THEN** the two EXRs are bitwise equal, the moving geometry is sampled at the same + shutter times, and the same "time-sampled motion not produced" warnings are raised diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md new file mode 100644 index 000000000..35d3fe6c1 --- /dev/null +++ b/openspec/changes/moho-import/tasks.md @@ -0,0 +1,313 @@ +# Tasks + +Every task ends green on `cargo fmt --all -- --check`, +`cargo clippy --workspace --all-targets -- -D warnings` and +`cargo test --workspace --no-fail-fast`. "Parity green" means +`cargo test -p crust-core --test import_parity` passes (group 3). + +## 1. One openusd, and Moho as a dependency (design D1, D2) + +- [ ] 1.1 Switch `[patch.crates-io]` in the root `Cargo.toml` from `branch = "main"` to + `rev = "68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f"` for `openusd` and + `openusd-schemas`, and rewrite the comment above it: pinned by rev to Moho's, bumped in + order Moho, then crust-render, then Mantle, and no longer moved by `cargo update -p`. + Regenerate `Cargo.lock`. Verify that `Cargo.lock`'s three openusd entries read + `?rev=68a867a…#68a867a…`, that `cargo tree -i openusd` shows one package, and that + `cargo deny --locked check` is clean. +- [ ] 1.2 Add `moho = { git = "https://github.com/doubleailes/Moho", rev = "92c8b847822823f796b81b85452c3c400d77e5ec" }` + to `[workspace.dependencies]` and `moho.workspace = true` to crust-core. Add + `https://github.com/doubleailes/Moho` to `allow-git` in `deny.toml`, and update the + comment there. Verify: + - `cargo tree -i openusd` and `cargo tree -i openusd-schemas` each show a single + package, with `moho` among its dependents; + - `cargo tree -d` lists no openusd crate; + - `cargo deny --locked check` is clean. +- [ ] 1.3 Add a compile-time guard test in crust-core (`tests/one_openusd.rs`) that + passes a `moho::openusd::usd::Stage` where an `openusd::usd::Stage` is expected, and a + `moho::openusd_schemas` type where the workspace's `openusd_schemas` type is expected. + Verify that it compiles and passes. Then check, once, that it fails to compile with + the patch temporarily set back to `branch = "main"`, and record that in the test's doc + comment. +- [ ] 1.4 Update `CLAUDE.md`'s openusd paragraph: pinned by rev, the Moho entry pinned + by rev, one openusd across Moho, crust-render and Mantle, and the bump order. Document + local co-development with Moho through an untracked `.cargo/config.toml` + (`[patch."https://github.com/doubleailes/Moho"] moho = { path = "../Moho/crates/moho" }`; + the root `.gitignore` already ignores `config.toml`). Verify with `grep` that + `CLAUDE.md` names both revs' rule and the bump order. +- [ ] 1.5 File the Moho-side follow-ups M1 to M7 (design, "Moho-side follow-ups") as + issues on `doubleailes/Moho`, each with the Crust case that needs it, and link them + from the design record's known gaps (task 16.1). Verify that each issue exists and is + linked. + +## 2. The route switch (design D3) + +- [ ] 2.1 Add `ImportRoute { Direct, Index }` and `Config::usd_import`, read from + `CRUST_USD_IMPORT` in `config.rs` (default `Direct`; an unknown value warns once + through the existing config-warning path and keeps the default). Add + `UsdImportOptions::route: Option` overriding it per import. Record the + effective route in `StageFacts::options`. Verify with unit tests for parsing, the + unknown value and the override, and that every existing `UsdImportOptions { .. }` site + compiles through `Default`. +- [ ] 2.2 Make `load_scene` dispatch on the route after `ValidOptions::check`. Until + group 4, `Index` returns the `Error` variant for an unsupported option with a clear + message. Verify with a test that `Direct` is unchanged: `scripts/check_images.sh + check` passes against goldens recorded before the change. +- [ ] 2.3 Add the `CRUST_USD_IMPORT` row to `docs/architecture.md` § Environment + switches and its section to `site/content/docs/reference/environment-variables.md` + (marked as experimental until group 15). Verify with `zola build` in `site/`. + +## 3. The parity harness (design D11, spec `import-parity`) + +- [ ] 3.1 Add a test-only scene digest in crust-core (behind `cfg(test)` or a + `parity` feature that only tests enable). It hashes: + - geometry in id order (primitive buffers, instance transforms, material identity by + resolved parameters, masks, holdout flags); + - the light list; + - camera, settings and the AOV request; + - warnings in order, and the provenance. + + It returns a field-by-field diff naming the first difference. Verify with a unit test + where two scenes that differ in one geometry's order report that geometry id. +- [ ] 3.2 Add `crust-core/tests/import_parity.rs`. For each committed `samples/*.usd*` + that imports without external assets (the excluded ones listed with reasons), it + imports on both routes with `UsdImportOptions::route` and compares digests and the + `crust check` report data, timings excluded. Until group 4 the index side is + `#[ignore]`d. Verify that the test lists every sample, ignored or not. +- [ ] 3.3 Add a helper the existing import tests (`usd_scene.rs`, `light_linking.rs`, + `render_passes.rs`, `mesh_primvars.rs`, `camera_*.rs`, `motion_vector.rs`, ...) call + in place of a bare import: it imports on both routes and asserts parity before + returning the direct scene. Convert the files one by one. Verify by `grep` that no + import test in `crust-core/tests` calls the importer without it, apart from a short, + commented list. +- [ ] 3.4 Add `scripts/import_parity.sh [render flags]`. It renders on both + routes interleaved (as `bench_ab.sh` does, `-n` runs), at `-s 16 --indirect-clamp 0`, + with `--stats`, and compares `crust check --json` minus timings and the EXRs with + `crust diff`. It prints each route's peak memory and `Parse USD stage` time, and the + ratios, and exits non-zero on any difference or when the ratios exceed 1.10× (memory) + and 1.25× (time, minimum over runs). Verify on `samples/cornellbox.usda` once group 4 + lands (exit 0), and on a deliberately broken index route (exit non-zero). +- [ ] 3.5 Record the baselines: the direct route's ALab (`samples/ALab/entry.usda -f 1004`) + and Moana (`--camera /island/cam/shotCam`) peak memory and import time, and Moho's + `scripts/streaming-spike.sh` strategy (B) on Moana, on one machine, in + `openspec/specs/usd-scene-import/design.md` under a new "Index import" section. + Verify that the section names the machine, the revs and the commands. + +## 4. The index skeleton and the bridge (design D4, D5, D6, D7, D10) + +- [ ] 4.1 Create `usd_import/index/` (`mod.rs`, `walk.rs`, `bridge.rs`, + `stage_facts.rs`), importing openusd through `moho::openusd` and + `moho::openusd_schemas` (D2). Build the bridge chain: `StageSceneIndex` → + `Flattening` → `MaterialBindingResolving` → `LightLinking` → + `RenderSettingsFlattening`, with no instancing filters (D6). Every stage is opened + with Crust's `stage_builder()` and set to the import's time (`TimeCode::default()` for + none). Verify with a unit test that a chain over `samples/cornellbox.usda` lists its + prims with their Hydra types. +- [ ] 4.2 Single stage: wrap the `LoadAll` stage in one chain. Walk from the absolute + root with the direct route's stack discipline. Apply pruning from the flattened + visibility and purpose, keeping the camera search in invisible subtrees. Hand every + prim to the existing readers through the bridge (`StageSceneIndex::stage()` and the + same path, under `EvalTimeScope`). Verify that `import_parity` passes on every + single-stage sample with the index side un-ignored. +- [ ] 4.3 Streaming: build the `MergingSceneIndex` with the scene input (`LoadNone`, + `set_include_unloaded_prims(true)`) and one chunk input at a time (masked to the chunk + and the active pass prim). Add the input, walk from the root through that chunk's root + only, remove it, drop its stage, and advance the epoch as today. The bridge resolves + each path to the stage of the input that holds it. Verify: + - parity on every streamed sample and on a fixture with 5 top-level subtrees; + - with `CRUST_STREAM_IMPORT=0`, a test that the streamed and single-stage index + routes are equal. +- [ ] 4.4 Move the non-imaging stage facts (D7) behind `index/stage_facts.rs`: layers + and layer stack, invisible overrides, authored time range and `metersPerUnit`, each + with a comment naming the Moho issue (M3) or the reason it is not imaging data. Verify + that `Scene::layers` and `Source` are equal on both routes in `import_parity`. +- [ ] 4.5 Make `crust check`, `crust diagnostic` and the session's import honour the + route through `UsdImportOptions`. Verify with a crust-render test that `check --json` + on `samples/cornellbox.usda` is equal under both values of `CRUST_USD_IMPORT`. + +## 5. Settings, products, precomp, passes and camera + +- [ ] 5.1 Index reader for render settings: `renderSettings` from the scene input + (camera, resolution, pixel aspect, conform policy, data window, motion and depth of + field toggles, `renderingColorSpace`), and `crust:*` from `namespacedSettings`. The + active settings come from the scene globals and the host's pass. Replaces + `read_index`'s settings reads on the index route only. Verify parity green, plus a + test on `samples/aovs.usda` and the settings fixtures. +- [ ] 5.2 Index reader for products and vars (flattened `renderProducts`, + `driver:parameters:*`, `ri:*`, `crust:aov:*`, `crust:filter*`), and precomp filters + read from the generic data of the prims the settings' relationships target. Verify + parity green on `aovs.usda`, `aovs_lpe.usda`, `primvar_aovs.usda` and `precomp.usda`. +- [ ] 5.3 Index reader for the active pass: `renderPass`, the `matte` and + `cameraVisibility` collections, and the `prune`/`renderVisibility` opinions from + generic relationships for the existing warning (M6). Membership is judged per chunk at + the instance or instancer path, as today. Verify parity green on + `crust-core/tests/render_passes.rs` and `holdouts.rs`. +- [ ] 5.4 Index reader for cameras: the `camera` schema (projection, apertures and + offsets, clipping, focus, shutter, exposure), `metersPerUnit` from the scene globals + with its authored-ness from `stage_facts` (M3), and the dicing camera. Verify parity + green on `camera_*.rs`, `aspect_conform.rs` and `orthographic` fixtures. +- [ ] 5.5 Move the settings-and-camera rebuild in `usd_import/live.rs` to the index + readers on the index route (D8). Verify that `crust-core/tests/live.rs` passes under + both routes, with the in-place versus re-import bitwise checks. + +## 6. Transforms and motion + +- [ ] 6.1 Take world matrices from the flattened `xform` on the index route + (`resetXformStack` honoured), in place of `compose_with_parent`. Take `Timing` and + spans from `sample_times` over the shutter offsets and values at each offset, plus + `crust:motion:translate` from generic data. Verify parity green on + `motionblur.usda`, `motionvector.usda`, `animation.usda` at `-f`, and the transform + stack fixtures in `usd_scene.rs`. +- [ ] 6.2 Move the "time-sampled motion not produced" reporting to the index route's + sample times. Verify that the warnings are equal on both routes in the motion + fixtures. + +## 7. Meshes + +- [ ] 7.1 Index reader for `mesh`: topology, holes, orientation, subdivision scheme and + tags, `doubleSided`, and points and normals (`primvars:normals` precedence) read once + as whole arrays. It feeds `MeshSource` and the existing bake and instance placement + path. Verify parity green on `cornellbox.usda`, `displacement.usda`, the subdivision + fixtures and `mesh_normals.rs`. +- [ ] 7.2 Primvars: the render vars' primvars and materials' primvars with indices, + interpolation, `elementSize` and colour space, de-indexed as the direct route does. + Constant primvars are read from the prim's own generic data, not the flattened + (inherited) set (design, Risks). Verify parity green on `mesh_primvars.rs`, + `primvar_aovs.usda` and `ptex_quads.usda`. +- [ ] 7.3 `crust:subdivisionLevel`, `crust:subdivisionEdgeLength`, + `crust:displacementBound` and `primvars:displacementbound:sphere` from generic data, + and the adaptive level from the camera's projection. Verify parity green on the + adaptive subdivision fixtures and `pxr_displace.usda`. +- [ ] 7.4 Move the mesh parts of `usd_import/live.rs` (`mesh_source`, bake helpers) to + the index reader on the index route. Verify that `live.rs` and the + `live-geometry-edits` tests pass under both routes. + +## 8. Implicit shapes and spheres + +- [ ] 8.1 Index readers for `sphere`, `cube`, `cone`, `cylinder`, `capsule` and `plane` + (radius, size, height, axis, radiusTop/Bottom, width, length, doubleSided), tessellated + by Crust's existing `implicit` code. Analytic spheres stay analytic. Verify parity + green on `implicit_shapes.usda`, and that `geomutil_oracle` passes unchanged. +- [ ] 8.2 Move the sphere rebuild in `live.rs` to the index reader on the index route. + Verify that `live.rs` passes under both routes. + +## 9. Curves + +- [ ] 9.1 Index readers for `basisCurves` and `nurbsCurves` (topology, widths, order, + knots, ranges, point weights) and the `primvars:curve*` and `st` primvars that strand + requests read. Verify parity green on `curves.usda`, `hair.usda`, + `hair_variation.usda`, `curve_attributes.rs` and `hair.rs`. + +## 10. Materials + +- [ ] 10.1 Binding: read `materialBindings` for the render purpose, then the + all-purpose binding, from the material binding resolving filter. Check it against + `winning_binding_target` with a test that runs both on `purpose_bindings.usda` and the + binding fixtures. Verify parity green. +- [ ] 10.2 Networks: `material` per render context (universal, `mtlx`, `ri`). Terminals, + `nodeIdentifier`, parameters with colour space and resolved asset paths, and + connections feed `preview` (`UsdPreviewSurface`, `UsdUVTexture`, primvar readers), + `mtlx_network` (inline `ND_*`), `PxrDisneyBsdf` and `PxrDisplace`. `crust:openpbr` is + read from the material's generic data. Verify parity green on every `materialx_*`, + `openpbr_showcase.usda`, `ptex_quads.usda` and `mtlx_surfaces.rs`. +- [ ] 10.3 `.mtlx` references: on the index route, read the arc through `stage_facts` + (D7) as `mtlx_reference` does, unless `mtlx-format-plugin` has landed, in which case + the composed shader prims are read like any network. Verify parity green on + `materialx_teapot.usda` and `materialx_lion.usda`. +- [ ] 10.4 Materials outside a chunk: add the side input (D4), a chain over a stage + masked to the out-of-chunk binding targets and the prims their networks connect to, + grown and reopened under `OutsideMaterials`' rules (at most `MAX_SIDE_STAGE_OPENS` per + material), and removed after the last chunk. Verify: + - parity on a fixture with `/World/Looks` beside four geometry chunks; + - parity on a fixture whose material lives only in another chunk's payload; + - parity on the Cornell box streamed. +- [ ] 10.5 Provenance for materials (`material_reads`: arcs from `prim_stack`, targets + from the generic `connections`) on the index route, through `stage_facts` for the + arcs. Move the material rebuild in `live.rs` to the index readers. Verify that + `live.rs` passes under both routes, and that provenance is equal in `import_parity`. +- [ ] 10.6 Run `scripts/import_parity.sh` on ALab. Verify that it exits 0, and record + the run in the design record. + +## 11. Lights and light links (design D9) + +- [ ] 11.1 Index readers for every light type through the `light` container + (intensity, exposure, colour and temperature, normalize, the type's own inputs, dome + texture and pole axis, shaping and IES), plus `crust:light:*` from generic data. They + feed the existing `emit_*_light` builders. Verify parity green on `lights.rs`, + `domelight.usda`, `dome_backdrop.usda`, `rectlight.usda`, `many_lights.usda`, + `light_visibility.usda`, `hidden_lights.rs` and the IES samples. +- [ ] 11.2 Light links: record receivers as today. Read each light's + `collections/lightLink` and `collections/shadowLink` expressions from the merged data, + and judge them after the last chunk without reading `categories` (M1). Add a + single-stage test asserting that Moho's `categories` agree with Crust's answers. + Verify parity green on `light_linking.usda` and `light_linking.rs`, and on a streamed + fixture whose light and receivers sit in different chunks. +- [ ] 11.3 Move the light rebuild in `live.rs` to the index readers. Verify that + `live.rs` passes under both routes. + +## 12. Volumes + +- [ ] 12.1 Index reader for `crust:volume:*` regions from generic data, dispatched + before geometry as today, and the material's volume terminal from the `material` + network. Verify parity green on `fog.usda`, `materialx_volume.usda` and `medium.rs`. + +## 13. Instancing, the standard chain, and the bridge's removal + +- [ ] 13.1 Switch the index route to `moho::chain::standard`. Read `instancer` prims: + - native instances: `instancerTopology` and `hydra:instanceTransforms`, with + prototypes walked under their stable paths through the same readers; + - point instancers: raw `protoIndices`, positions, orientations, scales and + invisible/inactive ids from `__usdAttributes` where a warning depends on them, and + `instancerTopology` otherwise. + + Key prototype caches on the stable prototype paths on the index route, with no epoch. + Verify parity green on `instancing.usda`, `nested_instancing.usda`, + `PointInstancedMedCity.usd` and the `usd_scene.rs` instancing tests. Warning paths + inside prototypes are normalised as the listed exception (M4). +- [ ] 13.2 Placement counts for adaptive subdivision and the bake-versus-instance + decision from instancers, per top-level subtree. Instances judged at the instance or + instancer path for links and passes. Verify that parity is green with adaptive + subdivision on, on the instancing samples, streamed and not. +- [ ] 13.3 Delete the bridge and `EvalTimeScope` use from the index route. Every index + reader reads only the scene index or `stage_facts`. Verify with `grep` that + `index/` names no `usd::Prim` outside `stage_facts.rs`, and that parity is green. +- [ ] 13.4 Run `scripts/import_parity.sh` on ALab and Moana. Verify that both exit 0, + and record the runs (and Moho's spike strategy (B) on the same machine) in the design + record. + +## 14. Hosts and large scenes + +- [ ] 14.1 hdCrust: run `hydra/hdCrust/test/compare.sh`, `interaction.sh` and + `usdc_roundtrip.sh` with `CRUST_USD_IMPORT=index`. Verify that all three pass. +- [ ] 14.2 Run `crust diagnostic --budget 2m` and the MCP session tests + (`crust-render` with feature `mcp`) under both routes. Verify equal reports, timings + aside, and green tests. +- [ ] 14.3 Run `scripts/check_images.sh check` with `CRUST_USD_IMPORT=index` against + goldens recorded on `direct`. Verify exit 0. + +## 15. The default flips + +- [ ] 15.1 Change `Config::usd_import`'s default to `Index` (keeping `direct` + selectable), with ALab and Moana re-run on this commit by `scripts/import_parity.sh`. + Verify that both exit 0 and the full CI is green. +- [ ] 15.2 Mark the requirement "Two import routes, chosen per import" as implemented + (drop its status note), and update the environment-variables page and the + architecture row to the new default. Verify with `zola build` and + `openspec validate moho-import --strict`. + +## 16. Documentation + +- [ ] 16.1 Update `openspec/specs/usd-scene-import/design.md`: + - the index route (layout, walk order, bridge history, stage facts); + - the parity runs; + - known gaps linking Moho issues M1 to M7; + - the remaining exception (prototype warning paths). + + Verify that every M issue is linked. +- [ ] 16.2 Update `docs/architecture.md`: Moho in the crate map and render flow, the + `index/` module, and the new invariant that each family's index reader and its + in-place rebuild change together. Update the `usd_import/mod.rs` module table to + name each family's index reader. Verify with `grep` that each document names Moho + and the rev rule. +- [ ] 16.3 Add a page on the import routes to the site's architecture section (what + the index route is, `CRUST_USD_IMPORT`, and that the direct route is kept for A/B). + Verify with `zola build`. From 50d402335820da8c4f5a1605a0a7d83040a00435 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 17:58:51 +0100 Subject: [PATCH 02/95] openspec: moho-import reports memory and time instead of gating on them As UsdImaging's move onto scene indices was gated on parity alone (USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX, legacy tests kept against the same baselines), import_parity.sh fails on report or image differences only and prints both routes' peak memory and import time with their ratios. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/design.md | 6 +++-- openspec/changes/moho-import/proposal.md | 3 ++- .../moho-import/specs/import-parity/spec.md | 23 ++++++++++--------- .../specs/scene-index-import/spec.md | 6 ++--- openspec/changes/moho-import/tasks.md | 7 +++--- 5 files changed, 25 insertions(+), 20 deletions(-) diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index a77a7f6ef..4874cf537 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -72,8 +72,10 @@ strategy (B), a masked stage per chunk, peaks at 1.97 GiB. the same geometry in the same order, the same materials, lights, camera, settings, AOVs, warnings and provenance. - Migrate one family at a time, with the parity check green after each move. -- Keep the direct route's memory bound on streamed scenes, and the import time within a - stated bound. +- Keep the direct route's memory bound on streamed scenes (one chunk's stage at a + time), and measure memory and import time on ALab and Moana against the direct + route. As UsdImaging did when it moved onto scene indices, parity is the gate and + performance is reported. - One openusd copy in the build, checked rather than assumed. - An importer shaped for S3: readers are functions of (index, path) that feed Crust's builders, so a later change can call them for dirtied prims. diff --git a/openspec/changes/moho-import/proposal.md b/openspec/changes/moho-import/proposal.md index bd197b296..286ee3cc0 100644 --- a/openspec/changes/moho-import/proposal.md +++ b/openspec/changes/moho-import/proposal.md @@ -90,4 +90,5 @@ changes (design, Open Questions). (openusd pinned by rev, the Moho rule, local co-development), and the site's environment-variables page. - **Performance:** render throughput is untouched, because only the import changes. - Import time and peak memory are gated on ALab and Moana (`import-parity`). + Import time and peak memory are measured and reported on ALab and Moana, not gated + (`import-parity`), as UsdImaging's move onto scene indices was gated on parity alone. diff --git a/openspec/changes/moho-import/specs/import-parity/spec.md b/openspec/changes/moho-import/specs/import-parity/spec.md index 493ccf99f..34d0038bf 100644 --- a/openspec/changes/moho-import/specs/import-parity/spec.md +++ b/openspec/changes/moho-import/specs/import-parity/spec.md @@ -52,15 +52,15 @@ bitwise image check SHALL run on the samples `scripts/check_images.sh` covers. - **THEN** each scene they build is also imported with the index route and compared with the direct route -### Requirement: Large-scene parity with memory and time bounds +### Requirement: Large-scene parity, with memory and time reported `scripts/import_parity.sh [render flags]` SHALL import and render the scene on both routes, interleaved as `bench_ab.sh` interleaves A and B. It SHALL compare the -`crust check` reports and the 16 spp images, and report each route's `--stats` peak -memory and import time (`Parse USD stage`). It SHALL exit non-zero when: -- the reports or images differ; -- the index route's peak memory exceeds 1.10× the direct route's; -- its import time exceeds 1.25× the direct route's (the minimum over the runs). +`crust check` reports and the 16 spp images, and SHALL exit non-zero when they differ. +It SHALL report each route's `--stats` peak memory and import time (`Parse USD stage`) +and their ratios, without gating on them: as UsdImaging did when it moved onto scene +indices (`USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX`, with the legacy route's tests kept +running against the same baselines), parity is the gate and performance is measured. The results for ALab and Moana, and Moho's `moho-spike` strategy (B) peak on the same machine as the streaming reference, SHALL be recorded in the `usd-scene-import` design @@ -69,13 +69,14 @@ record. #### Scenario: Moana - **WHEN** `scripts/import_parity.sh ~/Workspace/samples/island/usd/island.usda --camera /island/cam/shotCam` runs -- **THEN** it exits 0 only if the reports and images match, and the index route's peak - memory and import time are within 1.10× and 1.25× of the direct route's +- **THEN** it exits 0 only if the reports and images match, and prints both routes' + peak memory and import time with their ratios -#### Scenario: A memory regression +#### Scenario: Memory and time do not gate -- **WHEN** the index route keeps every chunk's stage alive -- **THEN** the script reports the peak ratio and exits non-zero +- **WHEN** the index route's peak memory or import time is higher than the direct + route's, and the reports and images match +- **THEN** the script prints the ratios and exits 0 ### Requirement: Parity gates every step diff --git a/openspec/changes/moho-import/specs/scene-index-import/spec.md b/openspec/changes/moho-import/specs/scene-index-import/spec.md index f7a430395..614f58d05 100644 --- a/openspec/changes/moho-import/specs/scene-index-import/spec.md +++ b/openspec/changes/moho-import/specs/scene-index-import/spec.md @@ -105,9 +105,9 @@ route. #### Scenario: Moana -- **WHEN** the Moana island is imported on both routes -- **THEN** the index route's peak memory is within the bound the `import-parity` - capability sets, relative to the direct route's +- **WHEN** the Moana island is imported on the index route +- **THEN** at most one chunk's stage is open at any time, and each is dropped before the + next is opened #### Scenario: A material in a sibling chunk diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 35d3fe6c1..51165b02a 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -83,9 +83,10 @@ Every task ends green on `cargo fmt --all -- --check`, routes interleaved (as `bench_ab.sh` does, `-n` runs), at `-s 16 --indirect-clamp 0`, with `--stats`, and compares `crust check --json` minus timings and the EXRs with `crust diff`. It prints each route's peak memory and `Parse USD stage` time, and the - ratios, and exits non-zero on any difference or when the ratios exceed 1.10× (memory) - and 1.25× (time, minimum over runs). Verify on `samples/cornellbox.usda` once group 4 - lands (exit 0), and on a deliberately broken index route (exit non-zero). + ratios, and exits non-zero on any report or image difference; memory and time are + reported, not gated (as UsdImaging's scene index switch was). Verify on + `samples/cornellbox.usda` once group 4 lands (exit 0), and on a deliberately broken + index route (exit non-zero). - [ ] 3.5 Record the baselines: the direct route's ALab (`samples/ALab/entry.usda -f 1004`) and Moana (`--camera /island/cam/shotCam`) peak memory and import time, and Moho's `scripts/streaming-spike.sh` strategy (B) on Moana, on one machine, in From fcd6c4a4acc587a5bb0543f38bfaa1d43313f74c Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 18:02:23 +0100 Subject: [PATCH 03/95] openspec: moho-import builds on Moho's closed gaps M1 to M7 Moho's change scene-index-gaps closes the seven gaps the plan found: light linking after the merge (chain::input / chain::merged), the unresolved paths for the side input, stage metadata with authored-ness, primOrigin/scenePath, strategy (D) in the spike, every pass collection, and the merged children order. The design, tasks and parity spec now use them: task 1.5 builds against scene-index-gaps and bumps the moho rev once it merges, D9 keeps judging links after the last chunk with an agreement test streamed too, and the prototype warning-path parity exception goes. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/design.md | 185 +++++++++++------- openspec/changes/moho-import/proposal.md | 11 +- .../moho-import/specs/import-parity/spec.md | 16 +- openspec/changes/moho-import/tasks.md | 78 ++++---- 4 files changed, 171 insertions(+), 119 deletions(-) diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index 4874cf537..440c3aa2d 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -24,19 +24,19 @@ See proposal.md for why. This section records the state the plan starts from: Cr | module | reads from openusd | Moho counterpart | |---|---|---| | `time` | thread-local time code (`EvalTimeScope`) | the index's time: `set_time`, sampled offsets | -| `settings`, `products`, `precomp` | `RenderSettings`/`Product`/`Var`, `crust:*` settings, `driver:parameters:*`, `ri:*`, `compute_render_spec`, filter prims named by relationship | `renderSettings` (flattened products and vars, `namespacedSettings`), scene globals, generic data on filter prims | -| `passes` | the active `RenderPass`: `matte`, `cameraVisibility`, opinions of `prune`/`renderVisibility` | `renderPass`, its `collections` (matte, cameraVisibility), generic relationships for the rest | -| `camera`, `adaptive` | `UsdGeomCamera`, `metersPerUnit` (and whether it is authored), conform policy | `camera` schema, scene globals (no authored flag: gap M3) | +| `settings`, `products`, `precomp` | `RenderSettings`/`Product`/`Var`, `crust:*` settings, `driver:parameters:*`, `ri:*`, `compute_render_spec`, filter prims named by relationship | `renderSettings` (flattened products and vars, `namespacedSettings`), scene globals and `__usdStageMetadata` (M3), generic data on filter prims | +| `passes` | the active `RenderPass`: `matte`, `cameraVisibility`, opinions of `prune`/`renderVisibility` | `renderPass`, its `collections` (`renderVisibility`, and `prune`, `matte`, `cameraVisibility` when applied: M6) | +| `camera`, `adaptive` | `UsdGeomCamera`, `metersPerUnit` (and whether it is authored), conform policy | `camera` schema, `__usdStageMetadata/metersPerUnit/{value, authored}` on the absolute root (M3) | | `xform` | `xformOpOrder` stacks, `XformQuery`, sample times over the shutter, `crust:motion:translate` | `xform` (local) and flattened world `xform`, sample times; generic data | | `attrs` | `crust:rayMask`, `crust:subdivision*`, `crust:light:cameraVisible`, `primvars:ri:attributes:visibility:camera`, colour spaces | `__usdAttributes` (value, authored, colorSpace), `primvars` | | `mesh` | topology, holes, subdivision tags, primvars (indices, interpolation, elementSize, colour space), normals precedence, `crust:displacementBound` | `mesh`, `primvars` (de-indexed reads), generic data | | `shapes`, `strands` | `Sphere`, `BasisCurves`, `NurbsCurves`, `primvars:curve*`, widths | `sphere`, `basisCurves`, `nurbsCurves`, `primvars` | | `implicit` | `Cube`, `Cone`, `Cylinder(_1)`, `Capsule(_1)`, `Plane`, tessellated by Crust | the shape schemas (not meshed by Moho, as Crust needs) | | `materials`, `preview`, `mtlx_network` | binding resolution (`full` purpose, then all purposes; collection bindings), terminals, `info:id`, inputs and connections, `crust:openpbr`, `PxrDisneyBsdf`, `.mtlx` references read off layer specs, materials outside the chunk on a side stage, `prim_stack` and connections for provenance | `materialBindings` (resolved per purpose), `material` networks per context, asset values; no `.mtlx` arc (openusd has no MaterialX format, see `mtlx-format-plugin`) | -| `lights`, `light_links` | every UsdLux type, shaping, IES, dome texture and pole, `crust:light:*`; link collections via `compute_membership_query`, read on the index stage or the chunk | `light` (open container), `collections` (complete membership expressions), `categories` (per chunk only: gap M1) | +| `lights`, `light_links` | every UsdLux type, shaping, IES, dome texture and pole, `crust:light:*`; link collections via `compute_membership_query`, read on the index stage or the chunk | `light` (open container), `collections` (complete membership expressions), `categories` (after the merge, `chain::merged`: M1) | | `volume` | `crust:volume:*` on any prim; a material's volume terminal | generic data; `material` volume terminal | -| `instancing` | `is_instance`/`prototype` (`/__Prototype_N`, epoch-scoped), placements counted per subtree, raw `PointInstancer` arrays with per-index warnings | `instancer` prims, `instancerTopology`, `hydra:instance*` primvars, stable prototype paths under `MohoNiPropagatedPrototypes` / `ForInstancer` | -| `mod.rs` (stage facts) | `layer_identifiers`, `layer_stack`, session/root layer specs (`invisible_overrides`), `has_authored_time_code_range` | none: not imaging data (D7) | +| `instancing` | `is_instance`/`prototype` (`/__Prototype_N`, epoch-scoped), placements counted per subtree, raw `PointInstancer` arrays with per-index warnings | `instancer` prims, `instancerTopology`, `hydra:instance*` primvars, stable prototype paths under `MohoNiPropagatedPrototypes` / `ForInstancer`, `primOrigin/scenePath` naming each prototype prim's USD source (M4) | +| `mod.rs` (stage facts) | `layer_identifiers`, `layer_stack`, session/root layer specs (`invisible_overrides`), `has_authored_time_code_range` | the time range's authored-ness: `__usdStageMetadata` (M3); the rest none: not imaging data (D7) | | `live` | rebuilds one material, light, or the settings on a masked stage through the import's functions | the same functions, over an index of that stage (D8) | | `listing` | `crust ls` | unchanged (not an import) | @@ -49,12 +49,23 @@ re-import" is pinned bitwise. **Moho** gives `StageSceneIndex` (`new`, `set_stage`, `set_time`, `apply_pending_updates`, `set_include_unloaded_prims`, and `stage()`), -`moho::chain::standard`, the public filters (so a chain can be assembled from them), +`moho::chain::standard`, `chain::input` (the standard chain without light linking) and +`chain::merged` (light linking over a merging index), `moho::streaming::unresolved`, the +public filters (so a chain can be assembled from them), `MergingSceneIndex` (`add_input_scene`, `insert_input_scene`, `remove_input_scene`), typed schemas, and `__usdAttributes`/`__usdRelationships`. Its contract is `Moho/openspec/specs/*/spec.md`. Data sources are `Rc` and confined to one thread; values are `Send`. Moho's `moho-spike` is the streaming memory benchmark: on Moana, -strategy (B), a masked stage per chunk, peaks at 1.97 GiB. +strategy (B), a masked stage per chunk, peaks at 1.97 GiB, and strategy (D) does (B) +through Moho (`scripts/streaming-spike.sh --with-d`). + +**Moho's rev.** The plan was written while Moho's gaps M1 to M7 were open. Moho's change +`scene-index-gaps` closes them (Moho-side follow-ups, below), but it is not on Moho's +`main` yet. The workspace pins `moho` at `92c8b84` (Moho's `main`), and the build and +tests run against the `scene-index-gaps` branch through an untracked +`.cargo/config.toml` path patch. **The `moho` rev must be bumped to the merge of +`scene-index-gaps` once it lands on Moho's `main`** (task 1.5); until then a clean +checkout without the patch does not build the index route's uses of M1 to M7. **Constraints.** - Moho pins openusd by `rev`. crust-render patches by `branch = "main"`, which locks to @@ -87,7 +98,9 @@ strategy (B), a masked stage per chunk, peaks at 1.97 GiB. - Behaviour changes that Hydra semantics would bring, such as primvar inheritance, `includedPurposes` (that is `payload-and-purpose-view`'s) or binding purposes beyond today's. -- Changing Moho. Gaps are filed against Moho (M1 to M7) and planned around openly. +- Changing Moho. The gaps the plan found (M1 to M7) are closed in Moho's own change + `scene-index-gaps`; a new gap stops the work on that point and goes through Moho's + OpenSpec flow, not a workaround here. - `crust ls` (`listing.rs`) and the MCP session's authoring stage. Neither imports a scene. @@ -143,7 +156,8 @@ is shared. - **Single stage** (fewer than 4 subtrees, or `CRUST_STREAM_IMPORT=0`): one `StageSceneIndex` over a `LoadAll` stage opened with Crust's `stage_builder()`, which keeps the schema registry and the `mmap` resolver. The chain is built over it (D6). -- **Streamed**: a `MergingSceneIndex` with: +- **Streamed**: `chain::merged` (light linking, M1) over a `MergingSceneIndex` whose + inputs are each a `chain::input`: - the **scene input**, weakest and permanent: a chain over the `LoadNone` index stage with `set_include_unloaded_prims(true)`. It replaces `read_index`'s direct reads of settings, products, passes and cameras outside payloads. @@ -152,11 +166,14 @@ is shared. walked, then removed with `remove_input_scene`, and its stage dropped. That is S0's strategy (B) and its memory bound. - a **side input** when a chunk binds a material that neither the chunk nor the scene - input holds. It is a chain over a stage masked to the out-of-chunk binding targets - (and the prims their networks connect to), payloads loaded. It is grown and reopened - under the same rules as today's `OutsideMaterials`, and removed after the last - chunk. This is a consumer deciding what is loaded, built from Moho's own pieces. - Moho has not specified it, so M2 asks Moho to. + input holds. `moho::streaming::unresolved(index)` lists those paths (the bound + materials and the network nodes outside a material that no input holds, M2). The + side input is a `chain::input` over a stage masked to them, payloads loaded, + inserted weaker than the chunks and stronger than the scene input, as Moho's + streaming pattern specifies. It is grown and reopened under the same rules as + today's `OutsideMaterials` (at most `MAX_SIDE_STAGE_OPENS` per material) until + nothing is unresolved, and removed after the last chunk. Moho lists what is missing; + Crust decides what is loaded. - Crust keeps opening every stage itself and hands it to `set_stage`. Moho never loads or unloads. @@ -173,8 +190,9 @@ parity depends on geometry order. While streaming, a chunk is walked from the ro to and through that chunk's root only. Below the chunk root the merged children come from the chunk input in stage order (the scene input's children there are a subset). Outside the chunk, only the ancestors are visited, as the masked stage gives today. -`MergingSceneIndex::children` returns the union in input order, not namespace order -(M7), so the walk never relies on it above a chunk root. +`MergingSceneIndex::children` returns the inputs' children strongest first, then the +prims implied by deeper roots (Moho specifies that order, M7). It is not the stage's +namespace order above a chunk root, so the walk never relies on it there. - World transforms come from the flattened `xform`. Visibility and purpose come from the flattened data, applying today's pruning: abstract and inactive prims are absent @@ -196,14 +214,18 @@ index, path) that reads schemas and generic data and calls the same builders the reader calls. The move is accepted when `import-parity` is green. The bridge cannot reach a prim that exists only in Moho's namespace (re-rooted -prototypes). So until instancing moves, the index route builds its chain without the two -instancing filters: +prototypes). So until instancing moves, the index route builds each input's chain +without the two instancing filters, in `chain::input`'s order, with light linking over +the result as `chain::standard` (one stage, the stage as membership oracle) or +`chain::merged` (a merging index) puts it: ``` -StageSceneIndex -> Flattening -> MaterialBindingResolving -> LightLinking -> RenderSettingsFlattening +StageSceneIndex -> Flattening -> MaterialBindingResolving -> RenderSettingsFlattening (per input) + -> LightLinking (over the input, or the merge) ``` An instance or `PointInstancer` prim goes through the bridge to today's `emit_native_instance` and `emit_point_instancer`, and that holds the prototype epoch -scoping. Instancing moves last. With it the chain becomes `moho::chain::standard`, and +scoping. Instancing moves last. With it the chains become `moho::chain::standard` (one stage) or +`chain::input` per input under `chain::merged` (streamed), and prototypes are keyed by Moho's stable prototype paths. Those paths need no epoch, because they agree across chunks by construction. The epoch stays for the direct route. After that move the bridge has no callers, and it is deleted in the same task group. @@ -226,15 +248,19 @@ for one module at a time. ### D7. What is not imaging data is read from the stage Some facts are not scene description: the layers a scene composed (`Scene::layers`, -`Source::layer_stack`), session/root-layer `invisible` overrides, whether the time range -or `metersPerUnit` is authored, a material's composition arcs (`prim_stack`) for -provenance, and a `.mtlx` reference read off layer specs. The index route reads these -from `StageSceneIndex::stage()`, behind one module (`index/stage_facts.rs`), each with a -comment naming why it is not a schema read. Two of them are Moho gaps that Moho can -close (M3 authored-ness, M4 prototype source paths). Two are pending other work (the -`.mtlx` arc moves to `mtlx-format-plugin`; `prim_stack` provenance goes with S3's -classifier). The rest (layers) are a host's business, not a scene index's. This is the -documented escape hatch, not a silent workaround. +`Source::layer_stack`), session/root-layer `invisible` overrides, a material's +composition arcs (`prim_stack`) for provenance, and a `.mtlx` reference read off layer +specs. The index route reads these from `StageSceneIndex::stage()`, behind one module +(`index/stage_facts.rs`), each with a comment naming why it is not a schema read. Two +are pending other work (the `.mtlx` arc moves to `mtlx-format-plugin`; `prim_stack` +provenance goes with S3's classifier). The rest (layers, layer-spec overrides) are a +host's business, not a scene index's. This is the documented escape hatch, not a silent +workaround. + +Whether the time range or `metersPerUnit` is authored is not among them any more. Moho +gives it on the absolute root as `__usdStageMetadata//{value, authored}` (M3), so +the index route reads it there, not from `stage_facts`. A prototype prim's USD source is +not either: every prim carries `primOrigin/scenePath` (M4). ### D8. In-place rebuilds move with their family @@ -249,14 +275,18 @@ counterpart. ### D9. Light links: Crust keeps deciding after the last chunk -Moho's `LightLinkingSceneIndex` sits in each input's chain. It knows only the lights of -its own input, so a receiver in chunk B gets no category for a light in chunk A or in -the scene input (M1). The direct route already defers link decisions to after the last -chunk, judging recorded paths. The index route keeps that structure. It reads each -light's `collections/lightLink` and `collections/shadowLink` (Moho's complete membership -expressions), judges every recorded receiver path after the last chunk, and does not -read `categories`. On a single stage the two agree, and a parity test asserts it there, -so the M1 fix can later switch Crust to `categories` with a test already in place. +Moho runs light linking after the merge (`chain::merged`, M1), so a receiver in chunk B +gets the categories of a light in chunk A or in the scene input. But a receiver's +categories are only complete while every light's input is present, and an offline import +removes each chunk before the next is added: a receiver walked in chunk B cannot see a +light that only chunk D, not yet added, holds. The direct route already defers link +decisions to after the last chunk, judging recorded paths. The index route keeps that +structure. It reads each light's `collections/lightLink` and `collections/shadowLink` +(Moho's complete membership expressions), judges every recorded receiver path after the +last chunk, and does not read `categories`. An agreement test asserts that Moho's +`categories` match Crust's answers, on a single stage (`chain::standard`) and on a +streamed fixture (`chain::merged` with every input present), so switching Crust to +`categories` is a tested option. Whether to switch is an open question (below). Today's choice between the index stage and the chunk for a light's link opinions becomes: the merged data of the light (chunk opinions over scene input), with the same warning when a nested collection is not composed. @@ -285,36 +315,40 @@ A difference that is correct (for example a Hydra semantic Crust should adopt) i let through. It is recorded under Open Questions and left for its own behavioural change. -### Moho-side follow-ups (filed in the Moho repo, not done here) - -- **M1. Cross-input light linking.** In a merged streamed index, each input's - `LightLinkingSceneIndex` sees only its own lights, so a chunk's geometry lacks - categories for lights in other inputs. Ask: resolve linking after the merge (a - scene-wide linking filter over the `MergingSceneIndex`), with a streaming test whose - fixture links across chunks. Crust's interim is D9. -- **M2. Prims outside the loaded chunks.** S0 left "how a consumer asks for a material - bound from another chunk" to S1, and S1's specs do not say. Ask: specify and test the - side-input pattern of D4 (a chain over a stage masked to out-of-chunk targets, as an - extra merging input), or give `MergingSceneIndex` a documented hook. -- **M3. Authored-ness in the scene globals.** `metersPerUnit` and the time range are - given as values only. Crust warns differently when they are unauthored. Ask: an - `authored` flag beside each, as `__usdAttributes` already has. -- **M4. Source paths for prototype prims.** Re-rooted prototype prims - (`MohoNiPropagatedPrototypes/...`, `ForInstancer`) do not name the USD prim - they come from. Crust's warnings and provenance name prototype-internal prims by their - stage path. Ask: expose the source prim path (as `__usdPrimInfo` does for instances). - Until then, warning paths inside prototypes are a listed parity exception for the - instancing family only, normalised by the parity tooling. -- **M5. An index strategy in `moho-spike`.** S0 measured raw openusd reads. Ask: a - strategy (D) that does (B) through `MergingSceneIndex` and standard chains, so Moho's - own memory overhead is measured against (B) on Moana. -- **M6. Pass collections.** `renderPass` exposes `matte` and `cameraVisibility` only. - Crust reads `prune` and `renderVisibility` opinions to warn that it does not honour - them. Generic relationships cover it now. Ask: expose them as `collections` for - completeness. -- **M7. Merged children in namespace order.** `MergingSceneIndex::children` returns the - union in input order. D5 avoids relying on it. Ask: namespace order, or document the - current order. +### Moho-side follow-ups (closed in Moho's `scene-index-gaps`) + +Planning this change found seven gaps in Moho. Moho's change `scene-index-gaps` closes +all of them, with tests, on its own branch. Crust builds against that branch (Context, +"Moho's rev") and bumps the `moho` rev once it merges. + +- **M1. Cross-input light linking.** *Closed:* `moho::chain::input(stage)` is the + standard chain without light linking, `moho::chain::merged(merging)` is light linking + after the merge, judging the lights' complete membership expressions, and + `chain::standard` is `input` plus linking. Streamed imports are built as + `chain::input` per input under a `MergingSceneIndex`, with `chain::merged` on top. + Crust still judges expressions after the last chunk (D9). +- **M2. Prims outside the loaded chunks.** *Closed:* `moho::streaming::unresolved(index)` + lists the bound materials, and the network nodes outside a material, that no input + holds. D4's side input is built from it. +- **M3. Authored-ness in the scene globals.** *Closed:* the absolute root carries + `__usdStageMetadata//{value, authored}` for `startTimeCode`, `endTimeCode`, + `timeCodesPerSecond`, `framesPerSecond`, `metersPerUnit`, `upAxis` and + `renderSettingsPrimPath`. The time range's and `metersPerUnit`'s authored-ness leave + `stage_facts` (D7). +- **M4. Source paths for prototype prims.** *Closed:* every prim carries Hydra's + `primOrigin/scenePath`, the USD path, made relative to the prototype root inside a + USD prototype; the instancing filters keep it. A prototype prim's stage path is the + instance's prototype joined with it, so warnings and provenance inside prototypes name + the same prims as the direct route, and `import-parity` has no exception for them. +- **M5. An index strategy in `moho-spike`.** *Closed:* strategy (D) does (B) through + Moho; `scripts/streaming-spike.sh --with-d` runs it. Its Moana peak is recorded beside + (B)'s with the parity runs. +- **M6. Pass collections.** *Closed:* a render pass's `collections` hold + `renderVisibility`, and `prune`, `matte` and `cameraVisibility` when applied. The + `prune`/`renderVisibility` warning reads them there. +- **M7. Merged children order.** *Closed (documented):* inputs strongest first, each + input's children in its own order, then the prims implied by deeper roots. D5 still + does not rely on it above a chunk root. ## Risks / Trade-offs @@ -336,12 +370,12 @@ change. own constant primvars from its generic data, preserving today's behaviour. Whether to adopt USD's inheritance is an Open Question. - **[Import time overhead]** (layers of `Rc` data sources, string-keyed containers) → - the ALab and Moana gates bound it (`import-parity`). Hot arrays (points, indices, + the ALab and Moana runs measure it, reported, not gated (`import-parity`). Hot arrays (points, indices, primvars) are read once as shared `sdf::Value` arrays, never element by element through data sources. - **[Memory]** (the scene input keeps a `LoadNone` stage alive for the whole traversal, as the direct route already keeps its index stage until light links) → it is dropped - at the same point, and Moana's peak is gated. Each chunk input is removed and its + at the same point, and Moana's peak is reported beside the direct route's and the spike's (B) and (D). Each chunk input is removed and its stage dropped before the next opens. - **[openusd bump friction]** (three repos pinned to one rev) → D1's checks fail loudly. The bump order is written in `CLAUDE.md`. @@ -363,7 +397,7 @@ change. fixtures. ALab and Moana are run at the materials, lights and instancing milestones and at the end. 4. The bridge is deleted with the last family (instancing). -5. With parity on ALab and Moana within the memory and time bounds, the default flips to +5. With parity on ALab and Moana (memory and time reported), the default flips to `index`. hdCrust's `compare.sh` and `interaction.sh` run on it. The design record and docs are updated. 6. Rollback at any point is `CRUST_USD_IMPORT=direct`. After the flip, reverting that @@ -376,9 +410,12 @@ change. primvar visible to descendants, and Crust reads a prim's own only. Adopting inheritance is a behavioural change to `usd-scene-import`, proposed separately after the flip. It does not change this plan: parity keeps today's behaviour. -- **Light links on `categories`.** Once M1 lands, does Crust read Moho's categories - instead of judging expressions itself (D9)? It is deferrable, because the - single-stage agreement test is already there to switch on. +- **Light links on `categories`.** M1 has landed. Does Crust read Moho's categories + instead of judging expressions itself after the last chunk (D9)? An offline import + removes chunks as it goes, so categories read during the walk would miss lights in + chunks not yet added; reading them would need a second pass or lights collected + ahead. Left to the user; the agreement test (single stage and streamed) is there to + switch on. - **When the direct route goes.** Mantle's design says "until parity holds, then goes". This change flips the default. The removal (with `EvalTimeScope`, the epoch and the direct readers) is a follow-up change, timed after S3 has started on the index route. diff --git a/openspec/changes/moho-import/proposal.md b/openspec/changes/moho-import/proposal.md index 286ee3cc0..9e224c601 100644 --- a/openspec/changes/moho-import/proposal.md +++ b/openspec/changes/moho-import/proposal.md @@ -40,9 +40,12 @@ import, so nothing a render produces changes while it happens. - **The default flips to `index`** once parity holds on the samples, ALab and Moana. The direct importer stays, selectable with `CRUST_USD_IMPORT=direct`. Removing it is a later change. -- **Moho-side gaps go to Moho.** Crust does not work around them silently. The gaps are - cross-chunk light linking, materials outside the loaded chunks, authored-ness of scene - globals and source paths for prototype prims (design, "Moho-side follow-ups"). +- **Moho-side gaps go to Moho.** Crust does not work around them silently. The gaps the + plan found (cross-chunk light linking, materials outside the loaded chunks, + authored-ness of scene globals, source paths for prototype prims, an index strategy in + the spike, pass collections, merged children order) are closed in Moho's change + `scene-index-gaps`. Crust builds against it and bumps the `moho` rev once it merges + (design, "Moho-side follow-ups"). Not in this change: S3, where Moho's dirty locators replace the layer-diff classifier for live edits. In-place rebuilds keep today's classifier. Only the functions they call @@ -59,7 +62,7 @@ move with their family, so an in-place update still equals a re-import. - `import-parity`: the check that the index import equals the direct import. It defines what "equal" means (the scene, the `crust check` report, a bitwise image), where the check runs (tests on the samples and fixtures, and a script for ALab and Moana with - memory and time bounds), and how a family's move is gated on it. + memory and time reported), and how a family's move is gated on it. ### Modified Capabilities diff --git a/openspec/changes/moho-import/specs/import-parity/spec.md b/openspec/changes/moho-import/specs/import-parity/spec.md index 34d0038bf..7665e616c 100644 --- a/openspec/changes/moho-import/specs/import-parity/spec.md +++ b/openspec/changes/moho-import/specs/import-parity/spec.md @@ -2,7 +2,7 @@ The check that the index import route produces what the direct route produces: what "equal" means, where it runs (tests on the committed samples and import fixtures, and a -script for ALab and Moana with memory and time bounds), and how it gates each step of +script for ALab and Moana with memory and time reported), and how it gates each step of the migration and the change of default. ## ADDED Requirements @@ -16,11 +16,11 @@ Two imports of one stage, with the same options, SHALL be equal when all of thes - their `crust check --json` reports match, timings excluded; - their renders at `-s 16 --indirect-clamp 0` are bitwise equal under `crust diff`. -No tolerance SHALL apply. A difference SHALL be either fixed or listed as a parity -exception with its reason. The only exception allowed SHALL be the prim paths that -warnings and provenance name inside a native prototype, until the scene index exposes -those prims' source paths. That exception SHALL be normalised by the check, never -ignored wholesale. +No tolerance SHALL apply, and no exception: a difference SHALL be fixed. Prim paths +that warnings and provenance name inside a native prototype SHALL be equal too, named +on the index route from the scene index's `primOrigin/scenePath`. A difference that +cannot be fixed in Crust SHALL be reported (a Moho gap goes to Moho), never normalised +or ignored. #### Scenario: An equal scene @@ -62,8 +62,8 @@ and their ratios, without gating on them: as UsdImaging did when it moved onto s indices (`USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX`, with the legacy route's tests kept running against the same baselines), parity is the gate and performance is measured. -The results for ALab and Moana, and Moho's `moho-spike` strategy (B) peak on the same -machine as the streaming reference, SHALL be recorded in the `usd-scene-import` design +The results for ALab and Moana, and Moho's `moho-spike` strategy (B) and (D) peaks on +the same machine as the streaming reference, SHALL be recorded in the `usd-scene-import` design record. #### Scenario: Moana diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 51165b02a..287ecbf22 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -34,10 +34,12 @@ Every task ends green on `cargo fmt --all -- --check`, (`[patch."https://github.com/doubleailes/Moho"] moho = { path = "../Moho/crates/moho" }`; the root `.gitignore` already ignores `config.toml`). Verify with `grep` that `CLAUDE.md` names both revs' rule and the bump order. -- [ ] 1.5 File the Moho-side follow-ups M1 to M7 (design, "Moho-side follow-ups") as - issues on `doubleailes/Moho`, each with the Crust case that needs it, and link them - from the design record's known gaps (task 16.1). Verify that each issue exists and is - linked. +- [ ] 1.5 Build against Moho's `scene-index-gaps` (M1 to M7 closed) through an untracked + `.cargo/config.toml` path patch, and bump the `moho` rev in `[workspace.dependencies]` + to the merge of `scene-index-gaps` once it lands on Moho's `main`, dropping the local + patch. Verify that `cargo tree -i moho` names the merged rev, and that a clean checkout + without `.cargo/config.toml` builds and passes `import_parity`. Until the merge this + task stays open, and the design's "Moho's rev" note says so. ## 2. The route switch (design D3) @@ -89,7 +91,7 @@ Every task ends green on `cargo fmt --all -- --check`, index route (exit non-zero). - [ ] 3.5 Record the baselines: the direct route's ALab (`samples/ALab/entry.usda -f 1004`) and Moana (`--camera /island/cam/shotCam`) peak memory and import time, and Moho's - `scripts/streaming-spike.sh` strategy (B) on Moana, on one machine, in + `scripts/streaming-spike.sh --with-d` strategies (B) and (D) on Moana, on one machine, in `openspec/specs/usd-scene-import/design.md` under a new "Index import" section. Verify that the section names the machine, the revs and the commands. @@ -118,9 +120,12 @@ Every task ends green on `cargo fmt --all -- --check`, - with `CRUST_STREAM_IMPORT=0`, a test that the streamed and single-stage index routes are equal. - [ ] 4.4 Move the non-imaging stage facts (D7) behind `index/stage_facts.rs`: layers - and layer stack, invisible overrides, authored time range and `metersPerUnit`, each - with a comment naming the Moho issue (M3) or the reason it is not imaging data. Verify - that `Scene::layers` and `Source` are equal on both routes in `import_parity`. + and layer stack, and invisible overrides, each with a comment naming the reason it is + not imaging data. Read the time range's authored-ness (`check_time_range`) from the + root's `__usdStageMetadata/{startTimeCode,endTimeCode}/authored` (M3), not from the + stage. Verify that `Scene::layers` and `Source` are equal on both routes in + `import_parity`, and that the time-range warnings are equal on a stage with and one + without an authored range. - [ ] 4.5 Make `crust check`, `crust diagnostic` and the session's import honour the route through `UsdImportOptions`. Verify with a crust-render test that `check --json` on `samples/cornellbox.usda` is equal under both values of `CRUST_USD_IMPORT`. @@ -137,15 +142,16 @@ Every task ends green on `cargo fmt --all -- --check`, `driver:parameters:*`, `ri:*`, `crust:aov:*`, `crust:filter*`), and precomp filters read from the generic data of the prims the settings' relationships target. Verify parity green on `aovs.usda`, `aovs_lpe.usda`, `primvar_aovs.usda` and `precomp.usda`. -- [ ] 5.3 Index reader for the active pass: `renderPass`, the `matte` and - `cameraVisibility` collections, and the `prune`/`renderVisibility` opinions from - generic relationships for the existing warning (M6). Membership is judged per chunk at - the instance or instancer path, as today. Verify parity green on - `crust-core/tests/render_passes.rs` and `holdouts.rs`. +- [ ] 5.3 Index reader for the active pass: `renderPass` and its `collections` + (`matte`, `cameraVisibility`, and `prune`/`renderVisibility` for the existing warning + that they are not honoured, M6). Membership is judged per chunk at the instance or + instancer path, as today. Verify parity green on `crust-core/tests/render_passes.rs` + and `holdouts.rs`, including a pass that applies all four collections. - [ ] 5.4 Index reader for cameras: the `camera` schema (projection, apertures and - offsets, clipping, focus, shutter, exposure), `metersPerUnit` from the scene globals - with its authored-ness from `stage_facts` (M3), and the dicing camera. Verify parity - green on `camera_*.rs`, `aspect_conform.rs` and `orthographic` fixtures. + offsets, clipping, focus, shutter, exposure), `metersPerUnit` and its authored-ness + from the root's `__usdStageMetadata/metersPerUnit/{value, authored}` (M3), and the + dicing camera. Verify parity green on `camera_*.rs`, `aspect_conform.rs` and + `orthographic` fixtures, with `metersPerUnit` authored and not. - [ ] 5.5 Move the settings-and-camera rebuild in `usd_import/live.rs` to the index readers on the index route (D8). Verify that `crust-core/tests/live.rs` passes under both routes, with the in-place versus re-import bitwise checks. @@ -214,10 +220,11 @@ Every task ends green on `cargo fmt --all -- --check`, (D7) as `mtlx_reference` does, unless `mtlx-format-plugin` has landed, in which case the composed shader prims are read like any network. Verify parity green on `materialx_teapot.usda` and `materialx_lion.usda`. -- [ ] 10.4 Materials outside a chunk: add the side input (D4), a chain over a stage - masked to the out-of-chunk binding targets and the prims their networks connect to, - grown and reopened under `OutsideMaterials`' rules (at most `MAX_SIDE_STAGE_OPENS` per - material), and removed after the last chunk. Verify: +- [ ] 10.4 Materials outside a chunk: add the side input (D4), a `chain::input` over a + stage masked to the paths `moho::streaming::unresolved` lists (M2), inserted weaker + than the chunk and stronger than the scene input, grown and reopened under + `OutsideMaterials`' rules (at most `MAX_SIDE_STAGE_OPENS` per material) until nothing + is unresolved, and removed after the last chunk. Verify: - parity on a fixture with `/World/Looks` beside four geometry chunks; - parity on a fixture whose material lives only in another chunk's payload; - parity on the Cornell box streamed. @@ -238,10 +245,12 @@ Every task ends green on `cargo fmt --all -- --check`, `light_visibility.usda`, `hidden_lights.rs` and the IES samples. - [ ] 11.2 Light links: record receivers as today. Read each light's `collections/lightLink` and `collections/shadowLink` expressions from the merged data, - and judge them after the last chunk without reading `categories` (M1). Add a - single-stage test asserting that Moho's `categories` agree with Crust's answers. - Verify parity green on `light_linking.usda` and `light_linking.rs`, and on a streamed - fixture whose light and receivers sit in different chunks. + and judge them after the last chunk without reading `categories` (D9; whether to read + `categories` now that M1 has landed is the open question). Add agreement tests + asserting that Moho's `categories` agree with Crust's answers: on a single stage + (`chain::standard`), and on a streamed fixture whose light and receivers sit in + different chunks (`chain::merged` over every input). Verify parity green on + `light_linking.usda` and `light_linking.rs`, and on that streamed fixture. - [ ] 11.3 Move the light rebuild in `live.rs` to the index readers. Verify that `live.rs` passes under both routes. @@ -253,7 +262,8 @@ Every task ends green on `cargo fmt --all -- --check`, ## 13. Instancing, the standard chain, and the bridge's removal -- [ ] 13.1 Switch the index route to `moho::chain::standard`. Read `instancer` prims: +- [ ] 13.1 Switch the index route to `moho::chain::standard` (one stage), and to + `chain::input` per input under `chain::merged` (streamed). Read `instancer` prims: - native instances: `instancerTopology` and `hydra:instanceTransforms`, with prototypes walked under their stable paths through the same readers; - point instancers: raw `protoIndices`, positions, orientations, scales and @@ -261,9 +271,11 @@ Every task ends green on `cargo fmt --all -- --check`, `instancerTopology` otherwise. Key prototype caches on the stable prototype paths on the index route, with no epoch. - Verify parity green on `instancing.usda`, `nested_instancing.usda`, - `PointInstancedMedCity.usd` and the `usd_scene.rs` instancing tests. Warning paths - inside prototypes are normalised as the listed exception (M4). + Name prims inside a prototype, in warnings and provenance, by the instance's prototype + joined with `primOrigin/scenePath` (M4). Verify parity green on `instancing.usda`, + `nested_instancing.usda`, `PointInstancedMedCity.usd` and the `usd_scene.rs` + instancing tests, with no path normalisation; a remaining difference is reported, not + normalised. - [ ] 13.2 Placement counts for adaptive subdivision and the bake-versus-instance decision from instancers, per top-level subtree. Instances judged at the instance or instancer path for links and passes. Verify that parity is green with adaptive @@ -272,8 +284,8 @@ Every task ends green on `cargo fmt --all -- --check`, reader reads only the scene index or `stage_facts`. Verify with `grep` that `index/` names no `usd::Prim` outside `stage_facts.rs`, and that parity is green. - [ ] 13.4 Run `scripts/import_parity.sh` on ALab and Moana. Verify that both exit 0, - and record the runs (and Moho's spike strategy (B) on the same machine) in the design - record. + and record the runs (and Moho's spike strategies (B) and (D) on the same machine) in + the design record. ## 14. Hosts and large scenes @@ -300,10 +312,10 @@ Every task ends green on `cargo fmt --all -- --check`, - [ ] 16.1 Update `openspec/specs/usd-scene-import/design.md`: - the index route (layout, walk order, bridge history, stage facts); - the parity runs; - - known gaps linking Moho issues M1 to M7; - - the remaining exception (prototype warning paths). + - Moho's gaps M1 to M7, closed in `scene-index-gaps`, with the Moho rev that closes + them, and any parity exception that remains (none is planned). - Verify that every M issue is linked. + Verify that M1 to M7 are each named with what Crust uses from them. - [ ] 16.2 Update `docs/architecture.md`: Moho in the crate map and render flow, the `index/` module, and the new invariant that each family's index reader and its in-place rebuild change together. Update the `usd_import/mod.rs` module table to From 5ecc3a23e31f8fe7fdc361740fea0011bab28446 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 18:15:14 +0100 Subject: [PATCH 04/95] openspec: moho-import drops the direct importer instead of a route switch The user's call: the Crust importer can drop and move to Moho in this change. No CRUST_USD_IMPORT switch and no default flip. Parity becomes "against baselines recorded from today's importer" (digest, check report and 16 spp image per sample and fixture, ALab and Moana memory and time as a report), with a regenerate flag, as UsdImaging moved onto scene indices. The bridge stays as a transitional device inside the change, and a final group deletes the direct readers, the bridge, EvalTimeScope and the prototype epoch. Specs, design and tasks revised to match; co-development with Moho goes through `cargo --config`, since .cargo/config.toml is tracked here. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/design.md | 148 ++++--- openspec/changes/moho-import/proposal.md | 111 ++--- .../moho-import/specs/import-parity/spec.md | 116 +++--- .../specs/scene-index-import/spec.md | 130 +++--- openspec/changes/moho-import/tasks.md | 389 +++++++++--------- 5 files changed, 474 insertions(+), 420 deletions(-) diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index 440c3aa2d..be0335c5f 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -79,13 +79,17 @@ checkout without the patch does not build the index route's uses of M1 to M7. ## Goals / Non-Goals **Goals:** -- An index route that produces, for every scene, the `Scene` the direct route produces: - the same geometry in the same order, the same materials, lights, camera, settings, - AOVs, warnings and provenance. -- Migrate one family at a time, with the parity check green after each move. -- Keep the direct route's memory bound on streamed scenes (one chunk's stage at a - time), and measure memory and import time on ALab and Moana against the direct - route. As UsdImaging did when it moved onto scene indices, parity is the gate and +- One import, through Moho, that produces for every scene the `Scene` the direct + importer produced, as recorded in baselines before anything migrated: the same + geometry in the same order, the same materials, lights, camera, settings, AOVs, + warnings and provenance. +- Migrate one family at a time, with parity against the baselines green after each + move. +- Delete the direct importer at the end of this change: its readers, the bridge, + `EvalTimeScope` and the prototype epoch. Every host then imports through Moho. +- Keep the direct importer's memory bound on streamed scenes (one chunk's stage at a + time), and measure memory and import time on ALab and Moana against its recorded + baselines. As UsdImaging did when it moved onto scene indices, parity is the gate and performance is reported. - One openusd copy in the build, checked rather than assumed. - An importer shaped for S3: readers are functions of (index, path) that feed Crust's @@ -94,7 +98,6 @@ checkout without the patch does not build the index route's uses of M1 to M7. **Non-Goals:** - S3: dirty notices driving in-place updates, observers on the index, retiring the layer-diff classifier, or the session keeping an index alive between applies. -- Removing the direct importer. A follow-up change does that after the default flips. - Behaviour changes that Hydra semantics would bring, such as primvar inheritance, `includedPurposes` (that is `payload-and-purpose-view`'s) or binding purposes beyond today's. @@ -136,20 +139,38 @@ the openusd rev in the patch. `CLAUDE.md` says so. New index-route code names openusd types as `moho::openusd` and `moho::openusd_schemas`. The workspace's own `openusd` and `openusd-schemas` dependencies stay. crust-core needs features Moho does not turn on (`mmap`, the `skel`, -`proc` and `media` schema families), crust-render needs `serde`, and the direct route +`proc` and `media` schema families), crust-render needs `serde`, and the direct importer uses them. Feature unification gives both names the same crate (D1's test proves it). A reader of the index code can see which types cross the Moho boundary. -### D3. The route switch - -`Config` gains `usd_import: ImportRoute { Direct, Index }`, read from -`CRUST_USD_IMPORT` (`direct` or `index`; any other value warns once and keeps the -default). `UsdImportOptions` gains `route: Option`, which overrides the -environment for one import. Tests run in parallel in one process, so they cannot use the -environment. Following the switch convention, the off side is today's importer: `direct` -is the default until task group 15 flips it. `load_scene` dispatches once. Everything -before the traversal that does not read the stage (option checks, warnings scope, stats) -is shared. +### D3. One route, and baselines from today's importer + +There is no route switch. The import moves to Moho in place, and the direct importer is +deleted at the end of this change (the user's decision: "the Crust importer can drop and +move to Moho"). A switch would only keep two readers alive to drift apart, which is what +the move exists to end. + +What replaces the live A/B is a set of **baselines recorded from the direct importer** +before anything migrates (task group 2), kept for the whole change, as UsdImaging kept +its legacy route's baselines when it moved onto scene indices: +- a scene digest (D11) for every committed sample and import test fixture; +- the `crust check --json` report, timings excluded, for every committed sample; +- a hash of the 16 spp image's pixels (`--indirect-clamp 0`) for every committed sample + and import test fixture; +- for ALab and Moana, the report, the EXR, and the peak memory and import time. + +The small baselines are committed under `crust-core/tests/data/import_baselines/`. The +large-scene ones are kept in a local directory by `scripts/import_parity.sh record` +(EXRs of hundreds of megabytes are not committed), and their memory and time go into the +`usd-scene-import` design record. `CRUST_RECORD_BASELINES=1` (tests) and `record` +(script) regenerate them; after the first recording that is a behavioural change of its +own, never a way to accept a migration's difference. + +Until a family moves, the transitional bridge (D6) keeps its direct reader running +under the index walk, so the tests stay green at every commit. The direct readers, the +bridge, `EvalTimeScope` and the prototype epoch are deleted together in the final code +group, once every family reads the index and parity holds on the samples, fixtures, +ALab and Moana. ### D4. Index layout: S0's merged index, the consumer deciding what is in @@ -181,10 +202,10 @@ is shared. on the merged index, the scene input already holds what `read_index` reads, and a material in the scene input must be reachable from a chunk's prims by path. -### D5. The traversal: Crust walks, in the direct route's order +### D5. The traversal: Crust walks, in the direct importer's order The index route has its own walk, from the absolute root, over the index's `children`, -with the direct route's stack discipline (push in order, pop last-first). Geometry ids, +with the direct importer's stack discipline (push in order, pop last-first). Geometry ids, light-link runs, pass flags and provenance depend on visit order, and bitwise image parity depends on geometry order. While streaming, a chunk is walked from the root down to and through that chunk's root only. Below the chunk root the merged children come @@ -203,15 +224,17 @@ namespace order above a chunk root, so the walk never relies on it there. dispatches as a volume first, as today. A geometry prim that no branch reads is counted for `geom.unsupported_type` from its type, as today. -### D6. Migration by family, with a bridge that is deleted at the end +### D6. Migration by family, with a transitional bridge -The index route starts with every family on a **bridge**: for a prim at a stage path, +The bridge is a device of this change only: it exists so that the index walk replaces +the direct traversal at once while the tests stay green, and it goes with the direct +readers it calls (D3). The index route starts with every family on a **bridge**: for a prim at a stage path, the bridge asks the input that holds it (the current chunk, the side input or the scene input) for its `StageSceneIndex::stage()` and hands the existing reader the `usd::Prim` -at that path, at the same time code. Parity therefore holds from the first commit of the -route. Each family then moves on its own to an **index reader**: a function of (scene +at that path, at the same time code. Parity with the baselines therefore holds from the +first commit of the index walk. Each family then moves on its own to an **index reader**: a function of (scene index, path) that reads schemas and generic data and calls the same builders the direct -reader calls. The move is accepted when `import-parity` is green. +reader calls. The move is accepted when `import-parity` is green against the unchanged baselines. The bridge cannot reach a prim that exists only in Moho's namespace (re-rooted prototypes). So until instancing moves, the index route builds each input's chain @@ -227,8 +250,8 @@ An instance or `PointInstancer` prim goes through the bridge to today's scoping. Instancing moves last. With it the chains become `moho::chain::standard` (one stage) or `chain::input` per input under `chain::merged` (streamed), and prototypes are keyed by Moho's stable prototype paths. Those paths need no epoch, -because they agree across chunks by construction. The epoch stays for the direct route. -After that move the bridge has no callers, and it is deleted in the same task group. +because they agree across chunks by construction. After that move the bridge has no +callers, and it is deleted with the direct readers and the epoch (D3). Family order follows the data each one needs: 1. settings, products, precomp, passes, camera (the camera needs the aspect); @@ -266,10 +289,9 @@ not either: every prim carries `primOrigin/scenePath` (M4). `usd_import/live.rs` rebuilds a material, a light, or the settings and camera on a masked stage through the import's functions. When a family moves, its rebuild builds a -`StageSceneIndex` over that masked stage and calls the same index reader, under the same -route as the scene's import (`StageFacts::options` carries the route). This keeps the -pair "an in-place update equals a full re-import" true on both routes, with -`crust-core/tests/live.rs` run under both. The classifier and `Provenance` are S3's to +`StageSceneIndex` over that masked stage and calls the same index reader as the import. +This keeps the pair "an in-place update equals a full re-import" true, with +`crust-core/tests/live.rs` checking it at every step. The classifier and `Provenance` are S3's to replace. They keep their inputs, which D7 reads from the stage where Moho has no counterpart. @@ -279,7 +301,7 @@ Moho runs light linking after the merge (`chain::merged`, M1), so a receiver in gets the categories of a light in chunk A or in the scene input. But a receiver's categories are only complete while every light's input is present, and an offline import removes each chunk before the next is added: a receiver walked in chunk B cannot see a -light that only chunk D, not yet added, holds. The direct route already defers link +light that only chunk D, not yet added, holds. The direct importer already defers link decisions to after the last chunk, judging recorded paths. The index route keeps that structure. It reads each light's `collections/lightLink` and `collections/shadowLink` (Moho's complete membership expressions), judges every recorded receiver path after the @@ -296,20 +318,23 @@ warning when a nested collection is not composed. Every `StageSceneIndex` the import builds is set to the import's time (`TimeCode::default()` for `None`, the authored default, as today). The index route reads sampled data at offset 0, and at the shutter offsets for motion. `EvalTimeScope` -stays only for bridged readers and the direct route. It goes from the index route with -the bridge. `LiveSession::set_time` (`live-session-time`) keeps its behaviour: a time +stays only for bridged readers, and it is deleted with them (D3); the `CLAUDE.md` rule +that the import reads its time from a thread-local goes with it. `LiveSession::set_time` (`live-session-time`) keeps its behaviour: a time change is a full import. ### D11. What parity compares -See `specs/import-parity`. In short: +See `specs/import-parity`. Every comparison is with the baselines recorded from the +direct importer (D3). In short: - a structural `Scene` digest, test-only in crust-core, over geometry in id order, materials by resolved parameters, the light list, camera, settings, AOV request, - warnings in order and provenance; + warnings in order, provenance, layers and `Source`, as stable text so a difference is + named, not just detected; - the `crust check --json` report minus timings; -- a 16 spp EXR compared bitwise with `crust diff`; -- for ALab and Moana, `--stats` peak memory and import time, compared between routes in - one `bench_ab.sh`-style interleaved run. +- the 16 spp image, by a hash of its pixels in the tests and bitwise with `crust diff` + in `scripts/import_parity.sh`; +- for ALab and Moana, `--stats` peak memory and import time, the minimum of `-n` runs, + against the baseline's, reported and not gated. A difference that is correct (for example a Hydra semantic Crust should adopt) is not let through. It is recorded under Open Questions and left for its own behavioural @@ -339,7 +364,7 @@ all of them, with tests, on its own branch. Crust builds against that branch (Co `primOrigin/scenePath`, the USD path, made relative to the prototype root inside a USD prototype; the instancing filters keep it. A prototype prim's stage path is the instance's prototype joined with it, so warnings and provenance inside prototypes name - the same prims as the direct route, and `import-parity` has no exception for them. + the same prims as the direct importer, and `import-parity` has no exception for them. - **M5. An index strategy in `moho-spike`.** *Closed:* strategy (D) does (B) through Moho; `scripts/streaming-spike.sh --with-d` runs it. Its Moana peak is recorded beside (B)'s with the parity runs. @@ -353,7 +378,7 @@ all of them, with tests, on its own branch. Crust builds against that branch (Co ## Risks / Trade-offs - **[Visit order differs, so geometry ids differ, so the image differs]** → D5 walks - per chunk with the direct route's stack discipline. The digest compares geometry in id + per chunk with the direct importer's stack discipline. The digest compares geometry in id order, so a reorder is caught at the first family that emits geometry, not at the end. - **[Prototype namespace mismatch]** (Moho re-roots prototypes by content and binding; Crust keys `/__Prototype_N` by epoch) → instancing moves last, on the standard chain. @@ -374,16 +399,16 @@ all of them, with tests, on its own branch. Crust builds against that branch (Co primvars) are read once as shared `sdf::Value` arrays, never element by element through data sources. - **[Memory]** (the scene input keeps a `LoadNone` stage alive for the whole traversal, - as the direct route already keeps its index stage until light links) → it is dropped - at the same point, and Moana's peak is reported beside the direct route's and the spike's (B) and (D). Each chunk input is removed and its + as the direct importer already keeps its index stage until light links) → it is dropped + at the same point, and Moana's peak is reported beside the direct importer's and the spike's (B) and (D). Each chunk input is removed and its stage dropped before the next opens. - **[openusd bump friction]** (three repos pinned to one rev) → D1's checks fail loudly. The bump order is written in `CLAUDE.md`. - **[Pending changes touch the same code]** (`payload-and-purpose-view` adds `includedPurposes`, binding purposes and load-set flags; `mtlx-format-plugin` moves - the `.mtlx` arc into composition) → whichever lands first, the other's tasks must - cover both routes. The parity tests cover new behaviour automatically, because they - run every import test under both routes. + the `.mtlx` arc into composition) → if one lands before this change ends, its + behaviour lands in the direct readers and the index readers alike, and its baselines + are recorded as its own behavioural change, not folded into a migration step. - **[Thread confinement]** (Moho data sources are `!Send`) → the import is already single-threaded. `commit_slots` takes arrays, never data sources. Values crossing to rayon are `sdf::Value`/`Vec`, which are `Send`. @@ -391,31 +416,28 @@ all of them, with tests, on its own branch. Crust builds against that branch (Co ## Migration Plan 1. Dependencies (D1, D2) land alone. No behaviour change. CI is green with one openusd. -2. The route switch, the parity harness and the index skeleton land, with every family - bridged. `CRUST_USD_IMPORT=index` equals `direct` from here on. -3. One task group per family, each merged only with parity green on the samples and - fixtures. ALab and Moana are run at the materials, lights and instancing milestones - and at the end. -4. The bridge is deleted with the last family (instancing). -5. With parity on ALab and Moana (memory and time reported), the default flips to - `index`. hdCrust's `compare.sh` and `interaction.sh` run on it. The design record - and docs are updated. -6. Rollback at any point is `CRUST_USD_IMPORT=direct`. After the flip, reverting that - one commit restores the old default. The direct route is removed in a later change, - not here. +2. The digest and the parity harness land, and the baselines are recorded from the + direct importer: samples, fixtures, ALab and Moana. +3. The index skeleton replaces the direct traversal, with every family bridged. Parity + with the baselines holds from here on. +4. One task group per family, each merged only with parity green on the samples and + fixtures. ALab is run at the materials milestone, ALab and Moana at instancing and at + the end. +5. The direct readers, the bridge, `EvalTimeScope` and the epoch are deleted. hdCrust's + scripts, `crust diagnostic`, the MCP tests and `check_images.sh` run against the + direct importer's recordings. The design record and docs are updated. +6. Rollback is a revert: before step 5, of the family step that broke parity; after it, + of the change. There is no switch to fall back on. ## Open Questions - **Primvar inheritance.** USD (and Hydra's flattening) makes an ancestor's constant primvar visible to descendants, and Crust reads a prim's own only. Adopting inheritance is a behavioural change to `usd-scene-import`, proposed separately after - the flip. It does not change this plan: parity keeps today's behaviour. + this change. It does not change this plan: parity keeps today's behaviour. - **Light links on `categories`.** M1 has landed. Does Crust read Moho's categories instead of judging expressions itself after the last chunk (D9)? An offline import removes chunks as it goes, so categories read during the walk would miss lights in chunks not yet added; reading them would need a second pass or lights collected ahead. Left to the user; the agreement test (single stage and streamed) is there to switch on. -- **When the direct route goes.** Mantle's design says "until parity holds, then goes". - This change flips the default. The removal (with `EvalTimeScope`, the epoch and the - direct readers) is a follow-up change, timed after S3 has started on the index route. diff --git a/openspec/changes/moho-import/proposal.md b/openspec/changes/moho-import/proposal.md index 9e224c601..1e77a9d96 100644 --- a/openspec/changes/moho-import/proposal.md +++ b/openspec/changes/moho-import/proposal.md @@ -6,8 +6,9 @@ that reader onto Moho, a Hydra-2.0-style scene index over openusd that Mantle's Obsidian also consume. Two readers of the same stage drift apart. With one index, an IPR frame and `crust render -i` read the scene the same way, and S3's live updates get dirty locators to work from. Moho's S1 core is done, with schemas for every family Crust -imports, so the importer can now migrate. The move is gated on parity with the direct -import, so nothing a render produces changes while it happens. +imports, so the importer can now migrate. The move is gated on parity with baselines +recorded from today's importer, so nothing a render produces changes while it happens, +and the direct importer goes at the end of it. ## What Changes @@ -17,29 +18,33 @@ import, so nothing a render produces changes while it happens. `rev` source as different crates, so without this the build would carry two openusd copies. Moho is added as a git dependency at `rev = "92c8b847822823f796b81b85452c3c400d77e5ec"`, and `deny.toml` allows its source. -- **A second import route, the index import.** The scene is read through a Moho scene - index. For a small stage that is one standard chain. For a streamed stage it is a - `MergingSceneIndex` over a payload-free scene input and one masked chunk input at a - time. The importer pulls Hydra prims, schemas and generic attribute data (`crust:*`) - instead of `usd::Prim`. It produces the same `Scene` as the direct import, through the - same builders. -- **A route switch.** `CRUST_USD_IMPORT=direct|index` and a per-call override on - `UsdImportOptions`. Until parity holds the default is `direct`, today's importer - unchanged. +- **Baselines from today's importer, first.** Before anything migrates, the direct + importer records baselines and they are kept for the whole change: a scene digest, the + `crust check --json` report (timings excluded) and a 16 spp image hash for every + committed sample and import test fixture, and for ALab and Moana the report, the EXR + and the memory and time. A regenerate flag rewrites them. This is what UsdImaging did + when it moved onto scene indices: the same baselines, a new route. +- **The importer reads through Moho.** The scene is read through a Moho scene index. For + a small stage that is one standard chain. For a streamed stage it is `chain::merged` + over a `MergingSceneIndex` of a payload-free scene input and one masked chunk input at + a time. The importer pulls Hydra prims, schemas and generic attribute data (`crust:*`) + instead of `usd::Prim`. It produces the same `Scene` as the direct importer did, + through the same builders. There is one route and no switch. - **Module-by-module migration.** Each schema family (settings and products, camera, transforms and motion, meshes, implicit shapes, curves, materials, lights and light - links, volumes, instancing) moves to the index on its own. Each move is gated by the - parity check. Families not yet moved are read through a temporary bridge that hands - the existing reader the `usd::Prim` at the same path. The bridge is deleted when the - last family moves. -- **A parity check.** For every committed sample and the import tests' fixtures, the - index import must equal the direct import. `scripts/import_parity.sh` compares the two - routes on large scenes (ALab, Moana), using the `crust check` report, a bitwise 16 spp - image and the `--stats` import memory and time. Moho's S0 harness (`moho-spike`) is the - reference for streaming memory. -- **The default flips to `index`** once parity holds on the samples, ALab and Moana. The - direct importer stays, selectable with `CRUST_USD_IMPORT=direct`. Removing it is a - later change. + links, volumes, instancing) moves to the index on its own, and each move is gated by + parity with the baselines. While a family has not moved, a transitional bridge hands + its existing reader the `usd::Prim` at the same path, so the tests stay green + throughout. The bridge exists only inside this change. +- **The direct importer goes.** Once every family reads the index and parity holds on + the samples, the fixtures, ALab and Moana, the direct readers, the bridge, + `EvalTimeScope` and the prototype epoch are deleted. Every host (`crust render`, + `check`, `diagnostic`, `mcp`, hdCrust) then imports through Moho. +- **A parity check.** `crust-core/tests/import_parity.rs` compares every sample with its + baselines, and the import tests compare every fixture with theirs. + `scripts/import_parity.sh record|check` does the same for large scenes (ALab, Moana), + reporting memory and time without gating on them. Moho's S0 harness (`moho-spike`, + strategies (B) and (D)) is the reference for streaming memory. - **Moho-side gaps go to Moho.** Crust does not work around them silently. The gaps the plan found (cross-chunk light linking, materials outside the loaded chunks, authored-ness of scene globals, source paths for prototype prims, an index strategy in @@ -55,21 +60,24 @@ move with their family, so an in-place update still equals a re-import. ### New Capabilities -- `scene-index-import`: Crust reads a stage through the Moho scene index. This covers - the route switch and its default, which hosts use it, streaming by chunk under a - merging index within the direct import's memory bound, the index owning the time, and - the rule that every family reads what the direct import reads. -- `import-parity`: the check that the index import equals the direct import. It defines - what "equal" means (the scene, the `crust check` report, a bitwise image), where the - check runs (tests on the samples and fixtures, and a script for ALab and Moana with - memory and time reported), and how a family's move is gated on it. +- `scene-index-import`: Crust reads every stage through the Moho scene index, the one + import route. This covers the hosts that import through it, streaming by chunk under + a merging index within the direct importer's memory bound, the index owning the time, + and the rule that the import reads what the direct importer read. +- `import-parity`: the check that the import through Moho equals baselines recorded + from the direct importer. It defines the baselines and their regeneration, what + "equal" means (the scene, the `crust check` report, a bitwise image), where the check + runs (tests on the samples and fixtures, and a script for ALab and Moana with memory + and time reported), and how each family's move and the direct importer's removal are + gated on it. ### Modified Capabilities -None. With the default `direct` the importer's behaviour is unchanged, and the index -route must reproduce it (`import-parity`). Behaviour changes that Moho's Hydra semantics -would bring, such as inheriting ancestors' constant primvars, are left for later -changes (design, Open Questions). +None. The import through Moho must reproduce the direct importer's behaviour exactly +(`import-parity`), so `usd-scene-import`'s requirements are unchanged; its design record +is updated. Behaviour changes that Moho's Hydra semantics would bring, such as +inheriting ancestors' constant primvars, are left for later changes (design, Open +Questions). ## Impact @@ -78,20 +86,23 @@ changes (design, Open Questions). `https://github.com/doubleailes/Moho`). `crust-core` depends on `moho`. Bumping openusd goes in order: Moho, then crust-render, then Mantle. `cargo update -p openusd` no longer moves the pin. -- **Code:** `crates/crust-core/src/scene/usd_import/`. A new index route with its own - traversal sits beside `traverse_into`, and each family module gains an index reader - that feeds the same builders. `config.rs` gets the `CRUST_USD_IMPORT` field, and - `UsdImportOptions` gets the route override. `usd_import/live.rs` rebuilds move with - their families. +- **Code:** `crates/crust-core/src/scene/usd_import/`. A new `index/` module with its own + walk replaces `traverse_into`, each family module gains an index reader that feeds the + same builders, and the direct readers, `time.rs` (`EvalTimeScope`) and the prototype + epoch are deleted at the end. `usd_import/live.rs` rebuilds move with their families. + `listing.rs` (`crust ls`) is not an import and stays. - **Hosts:** `crust render`, `check`, `diagnostic`, `crust mcp` and `crust-hydra` all - import through `load_scene`, so they all follow the switch. hdCrust's `compare.sh` and - `interaction.sh` exercise the index route once it is the default. -- **Tests and tooling:** a parity test in `crust-core/tests`, `scripts/import_parity.sh`, - and recorded ALab and Moana baselines. -- **Docs:** `openspec/specs/usd-scene-import/design.md` (the index route, the bridge, - gaps), `docs/architecture.md` (Moho in the crate map, the new switch), `CLAUDE.md` - (openusd pinned by rev, the Moho rule, local co-development), and the site's - environment-variables page. + import through `load_scene`, so they all read through Moho. hdCrust's `compare.sh`, + `interaction.sh` and `usdc_roundtrip.sh` exercise it. +- **Tests and tooling:** a scene digest behind a test-only feature, `import_parity.rs` + and recorded baselines under `crust-core/tests/data/import_baselines/`, a baseline + helper for the import tests, `scripts/import_parity.sh`, and recorded ALab and Moana + baselines. +- **Docs:** `openspec/specs/usd-scene-import/design.md` (the import through Moho, the + baselines, the closed gaps), `docs/architecture.md` (Moho in the crate map), + `CLAUDE.md` (openusd pinned by rev, the Moho rule, local co-development, the retired + `EvalTimeScope` and epoch rules), and a site architecture page on the import. - **Performance:** render throughput is untouched, because only the import changes. - Import time and peak memory are measured and reported on ALab and Moana, not gated - (`import-parity`), as UsdImaging's move onto scene indices was gated on parity alone. + Import time and peak memory are measured on ALab and Moana and reported against the + direct importer's baselines, not gated (`import-parity`), as UsdImaging's move onto + scene indices was gated on parity alone. diff --git a/openspec/changes/moho-import/specs/import-parity/spec.md b/openspec/changes/moho-import/specs/import-parity/spec.md index 7665e616c..2356d909b 100644 --- a/openspec/changes/moho-import/specs/import-parity/spec.md +++ b/openspec/changes/moho-import/specs/import-parity/spec.md @@ -1,98 +1,120 @@ ## Purpose -The check that the index import route produces what the direct route produces: what -"equal" means, where it runs (tests on the committed samples and import fixtures, and a +The check that the import through Moho produces what Crust's direct importer produced: +the baselines recorded from the direct importer before anything migrated, what "equal" +means, where the check runs (tests on the committed samples and import fixtures, and a script for ALab and Moana with memory and time reported), and how it gates each step of -the migration and the change of default. +the migration and the direct importer's removal. As UsdImaging did when it moved onto +scene indices: the same baselines, a new route. ## ADDED Requirements +### Requirement: Baselines from the direct importer + +Before any schema family migrates, baselines SHALL be recorded from the direct importer +and kept for the whole migration: +- the scene digest, for every committed sample and every import test fixture; +- the `crust check --json` report, timings excluded, for every committed sample; +- the 16 spp render at `--indirect-clamp 0`, for every committed sample and every import + test fixture, by a hash of its pixels; +- for ALab and Moana, the `crust check` report, the 16 spp EXR, and the `--stats` peak + memory and import time (`Parse USD stage`) as a report. + +The digest SHALL cover the geometry in id order (primitives, transforms, materials, +masks), the light list, the camera, the render settings, the AOV request, the warnings +in order, the provenance, the layers and the scene's `Source`. A regenerate flag +(`CRUST_RECORD_BASELINES=1` for the tests, `record` for the script) SHALL rewrite the +baselines; it is used to record them from the direct importer, and afterwards only for a +behavioural change that is its own decision. + +#### Scenario: Recording + +- **WHEN** `CRUST_RECORD_BASELINES=1 cargo test -p crust-core --test import_parity` + runs at the commit that adds the baselines +- **THEN** every listed sample's digest, report and image hash is written from the + direct importer + ### Requirement: What equal means -Two imports of one stage, with the same options, SHALL be equal when all of these hold: -- their scene digests match. The digest covers the geometry in id order (primitives, - transforms, materials, masks), the light list, the camera, the render settings, the - AOV request, the warnings in order and the provenance; -- their `crust check --json` reports match, timings excluded; -- their renders at `-s 16 --indirect-clamp 0` are bitwise equal under `crust diff`. +An import SHALL equal its baseline when all of these hold: +- its scene digest matches the baseline's; +- its `crust check --json` report matches, timings excluded; +- its render at `-s 16 --indirect-clamp 0` is bitwise equal. No tolerance SHALL apply, and no exception: a difference SHALL be fixed. Prim paths that warnings and provenance name inside a native prototype SHALL be equal too, named -on the index route from the scene index's `primOrigin/scenePath`. A difference that -cannot be fixed in Crust SHALL be reported (a Moho gap goes to Moho), never normalised +from the scene index's `primOrigin/scenePath`. A difference that cannot be fixed in +Crust SHALL be reported (a Moho gap goes to Moho), never accepted silently, normalised or ignored. #### Scenario: An equal scene -- **WHEN** `samples/cornellbox.usda` is imported on both routes -- **THEN** the digests, the reports and the 16 spp images are equal +- **WHEN** `samples/cornellbox.usda` is imported through Moho +- **THEN** its digest, report and 16 spp image equal the baseline's #### Scenario: A reordered geometry is caught -- **WHEN** a change makes the index route visit two meshes in the other order +- **WHEN** a change makes the import visit two meshes in the other order - **THEN** the digests differ and the check names the first geometry id that differs ### Requirement: Parity tests on the samples and import fixtures -`cargo test` SHALL run the parity check on every committed `samples/*.usd*` scene that -imports without external assets. It SHALL also run every import test fixture in -`crust-core/tests` under both routes. A sample that cannot run in CI SHALL be listed -with its reason. The check SHALL compare digests and reports in `cargo test`. The -bitwise image check SHALL run on the samples `scripts/check_images.sh` covers. +`cargo test` SHALL run the parity check on every committed `samples/*.usd*` scene, +comparing digests, reports and image hashes with the baselines. Every import test +fixture in `crust-core/tests` SHALL be compared with its baseline digest and image +hash. A sample that cannot run in CI SHALL be listed with its reason. #### Scenario: The test suite - **WHEN** `cargo test -p crust-core --test import_parity` runs -- **THEN** every listed sample is imported on both routes and compared, and any +- **THEN** every listed sample is imported and compared with its baseline, and any difference fails the test, naming the sample and what differs -#### Scenario: Fixtures run on both routes +#### Scenario: Fixtures - **WHEN** the existing import tests run -- **THEN** each scene they build is also imported with the index route and compared - with the direct route +- **THEN** each scene they build is compared with the baseline recorded for it from the + direct importer ### Requirement: Large-scene parity, with memory and time reported -`scripts/import_parity.sh [render flags]` SHALL import and render the scene on -both routes, interleaved as `bench_ab.sh` interleaves A and B. It SHALL compare the -`crust check` reports and the 16 spp images, and SHALL exit non-zero when they differ. -It SHALL report each route's `--stats` peak memory and import time (`Parse USD stage`) -and their ratios, without gating on them: as UsdImaging did when it moved onto scene -indices (`USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX`, with the legacy route's tests kept -running against the same baselines), parity is the gate and performance is measured. +`scripts/import_parity.sh check [render flags]` SHALL import and render +the scene with the current build and compare the `crust check` report and the 16 spp +image with the baseline in ``, and SHALL exit non-zero when they differ. It SHALL +report the current and baseline `--stats` peak memory and import time and their ratios, +without gating on them: as UsdImaging did when it moved onto scene indices, parity is +the gate and performance is measured. The results for ALab and Moana, and Moho's `moho-spike` strategy (B) and (D) peaks on -the same machine as the streaming reference, SHALL be recorded in the `usd-scene-import` design -record. +the same machine as the streaming reference, SHALL be recorded in the +`usd-scene-import` design record. #### Scenario: Moana -- **WHEN** `scripts/import_parity.sh ~/Workspace/samples/island/usd/island.usda --camera /island/cam/shotCam` runs -- **THEN** it exits 0 only if the reports and images match, and prints both routes' - peak memory and import time with their ratios +- **WHEN** `scripts/import_parity.sh check ~/Workspace/samples/island/usd/island.usda --camera /island/cam/shotCam` runs +- **THEN** it exits 0 only if the report and image match the baseline, and prints both + peak memories and import times with their ratios #### Scenario: Memory and time do not gate -- **WHEN** the index route's peak memory or import time is higher than the direct - route's, and the reports and images match +- **WHEN** the import's peak memory or import time is higher than the baseline's, and + the report and image match - **THEN** the script prints the ratios and exits 0 ### Requirement: Parity gates every step -A schema family SHALL move to the index route only with the parity tests green. The -default route SHALL change to `index` only when the parity tests are green and -`scripts/import_parity.sh` passes on ALab and Moana. The direct route SHALL remain until -a later change removes it. +A schema family SHALL move to the scene index only with the parity tests green. The +direct importer SHALL be removed only when the parity tests are green and +`scripts/import_parity.sh check` passes on ALab and Moana. #### Scenario: A family moves - **WHEN** the mesh family's index reader replaces its bridged reader -- **THEN** the change is accepted only with `import_parity` passing, unchanged from - before the move +- **THEN** the change is accepted only with `import_parity` passing against the + unchanged baselines -#### Scenario: The default flips +#### Scenario: The direct importer goes -- **WHEN** the default changes to `index` -- **THEN** the recorded ALab and Moana runs for that commit pass, and - `CRUST_USD_IMPORT=direct` still selects the direct route +- **WHEN** the direct readers, the bridge and `EvalTimeScope` are deleted +- **THEN** the parity tests are green and the ALab and Moana runs for that commit pass + against their baselines diff --git a/openspec/changes/moho-import/specs/scene-index-import/spec.md b/openspec/changes/moho-import/specs/scene-index-import/spec.md index 614f58d05..b7b82cf0b 100644 --- a/openspec/changes/moho-import/specs/scene-index-import/spec.md +++ b/openspec/changes/moho-import/specs/scene-index-import/spec.md @@ -1,72 +1,58 @@ ## Purpose -How Crust reads a USD stage through the Moho scene index rather than through openusd -directly: which import route runs, which hosts follow it, how a large stage streams by -chunk, and that the index route reads exactly what the direct route reads. +How Crust reads a USD stage: through the Moho scene index, which every host imports +through. It covers how a large stage streams by chunk, the index owning the time, and +that the import through Moho reads exactly what Crust's direct importer read before it +was removed. ## ADDED Requirements -### Requirement: Two import routes, chosen per import +### Requirement: One import route, through Moho -The importer SHALL offer two routes over the same stage. The `direct` route reads -openusd prims. The `index` route reads a Moho scene index of the stage. The route SHALL -come from `CRUST_USD_IMPORT` (`direct` or `index`). A host SHALL be able to override it -for a single import through its import options. Any other value of `CRUST_USD_IMPORT` -SHALL be reported once as a warning and the default used. +The importer SHALL read every stage through a Moho scene index of it: Hydra prims, +schemas and Moho's generic attribute data, never `usd::Prim` readers walking the stage. +There SHALL be one route. The direct importer, which read openusd prims, SHALL be +removed, with no switch to select it. Facts that are not imaging data (the layers a +scene composed, layer-spec overrides, a material's composition arcs for provenance, a +`.mtlx` reference read off layer specs) SHALL be read from the indexed stage in one +module, each with its reason. -Until the parity gate of the `import-parity` capability has passed on the samples, ALab -and Moana, the default SHALL be `direct`. After that, the default SHALL be `index`, and -`direct` SHALL remain selectable. +*Implementation status: in progress. The direct importer is removed in the change's +final task groups.* -*Implementation status: not yet implemented. The default flips in the change's final -task group.* +#### Scenario: A render -#### Scenario: Default before the flip +- **WHEN** `crust render -i samples/cornellbox.usda -s 16 --indirect-clamp 0` runs +- **THEN** the scene is imported through the Moho scene index, and the EXR is bitwise + equal to the baseline recorded from the direct importer -- **WHEN** `crust render -i samples/cornellbox.usda` runs with `CRUST_USD_IMPORT` unset, - before the flip -- **THEN** the scene is imported by the direct route, exactly as before this change +#### Scenario: No route to select -#### Scenario: Choosing the index route +- **WHEN** the importer's options and the `crust::Config` switches are listed +- **THEN** none of them selects an import route -- **WHEN** the same command runs with `CRUST_USD_IMPORT=index` -- **THEN** the scene is imported by the index route, and the EXR is bitwise equal to the - direct route's at 16 spp - -#### Scenario: An unknown route - -- **WHEN** `CRUST_USD_IMPORT=hydra` is set -- **THEN** one warning names the unknown value and the default route imports the scene - -#### Scenario: A per-import override - -- **WHEN** a host imports two scenes in one process, one with the route override set to - `index` and one without -- **THEN** the first uses the index route and the second the environment's route, - whatever order they run in - -### Requirement: Every host follows the route +### Requirement: Every host imports through Moho `crust render`, `crust check`, `crust diagnostic`, the `crust mcp` session and the -Hydra delegate (`crust-hydra`) SHALL import through the selected route. An in-place -update in a live session SHALL rebuild through the same route as the import it updates. -An in-place update SHALL remain equal to a full re-import on both routes. +Hydra delegate (`crust-hydra`) SHALL import through the Moho scene index. An in-place +update in a live session SHALL rebuild through the same index readers as the import it +updates, and SHALL remain equal to a full re-import. -#### Scenario: check reports the index route's scene +#### Scenario: check reports the scene read through Moho -- **WHEN** `crust check -i scene.usda --json -` runs with `CRUST_USD_IMPORT=index` -- **THEN** its report, timings aside, equals the report with `CRUST_USD_IMPORT=direct` +- **WHEN** `crust check -i samples/cornellbox.usda --json -` runs +- **THEN** its report, timings aside, equals the baseline recorded from the direct + importer -#### Scenario: An in-place edit on the index route +#### Scenario: An in-place edit -- **WHEN** an MCP session imported with the index route changes a material's input, and - the edit is applied in place +- **WHEN** an MCP session changes a material's input, and the edit is applied in place - **THEN** the rendered image is bitwise equal to a full re-import of the edited layer - on the index route -### Requirement: The index route reads what the direct route reads +### Requirement: The import reads what the direct importer read -For every prim the direct route imports, the index route SHALL import the same thing: +For every prim the direct importer imported, the import through Moho SHALL import the +same thing, as recorded in the baselines (`import-parity`): - the same geometry, materials, lights, volumes and cameras; - the same render settings, products, vars and passes; - the same warnings, with the same codes, in the same order; @@ -74,38 +60,38 @@ For every prim the direct route imports, the index route SHALL import the same t invisible subtrees still searched for cameras. Renderer attributes (`crust:*`) SHALL be read from the scene index's generic attribute -data, with the same authored-versus-fallback rule as the direct route. +data, with the same authored-versus-fallback rule as the direct importer. #### Scenario: A renderer attribute - **WHEN** a mesh authors `crust:rayMask` and `crust:subdivisionLevel` -- **THEN** the index route applies both to the mesh exactly as the direct route does +- **THEN** both apply to the mesh exactly as the direct importer applied them #### Scenario: Pruning and cameras - **WHEN** a stage holds an invisible rig scope containing a camera and a light, and a `GEO_PROXY` scope with `purpose = "proxy"` -- **THEN** on the index route the light and the proxies are not imported, and - `--camera` can still name the rig's camera, as on the direct route +- **THEN** the light and the proxies are not imported, and `--camera` can still name + the rig's camera, as with the direct importer #### Scenario: Warnings -- **WHEN** a stage raises warnings on the direct route -- **THEN** the index route raises the same warning codes, at the same prims, in the same +- **WHEN** a stage's baseline records warnings from the direct importer +- **THEN** the import raises the same warning codes, at the same prims, in the same order -### Requirement: The index route streams within the direct route's memory bound +### Requirement: The import streams within the direct importer's memory bound -When the direct route would stream (at least 4 top-level subtrees, and -`CRUST_STREAM_IMPORT` not `0`), the index route SHALL also stream. It SHALL hold at most +When a stage has at least 4 top-level subtrees, and `CRUST_STREAM_IMPORT` is not `0`, +the import SHALL stream, as the direct importer did. It SHALL hold at most one chunk's payloads composed at a time, beside the payload-free scene and any materials bound from outside the chunk. Each chunk's stage SHALL be dropped before the next is -opened. A material bound from outside a chunk SHALL resolve as it does on the direct -route. +opened. A material bound from outside a chunk SHALL resolve as it did with the direct +importer. #### Scenario: Moana -- **WHEN** the Moana island is imported on the index route +- **WHEN** the Moana island is imported - **THEN** at most one chunk's stage is open at any time, and each is dropped before the next is opened @@ -113,28 +99,30 @@ route. - **WHEN** a streamed stage binds geometry in `/World/Box` to a material under `/World/Looks` -- **THEN** the index route resolves that material, as the direct route does, instead of +- **THEN** the import resolves that material, as the direct importer did, instead of falling back to the default material #### Scenario: Streaming off - **WHEN** `CRUST_STREAM_IMPORT=0` is set -- **THEN** the index route reads one fully loaded stage, and its result equals the - streamed index route's +- **THEN** the import reads one fully loaded stage, and its result equals the streamed + import's ### Requirement: The index owns the time -The index route SHALL resolve every value at the import's time code (`-f`), and at the -shutter offsets around it for motion, through the scene index's time. With no time -code, it SHALL read default values, as the direct route does. +The import SHALL resolve every value at the import's time code (`-f`), and at the +shutter offsets around it for motion, through the scene index's time, with no +thread-local time. With no time code, it SHALL read default values, as the direct +importer did. #### Scenario: A frame -- **WHEN** `crust render -i samples/animation.usda -f 12 -s 16` runs on both routes -- **THEN** the two EXRs are bitwise equal +- **WHEN** `crust render -i samples/animation.usda -f 12 -s 16` runs +- **THEN** the EXR is bitwise equal to the baseline recorded from the direct importer #### Scenario: Motion over the shutter -- **WHEN** `samples/motionblur.usda` is rendered at 16 spp on both routes -- **THEN** the two EXRs are bitwise equal, the moving geometry is sampled at the same - shutter times, and the same "time-sampled motion not produced" warnings are raised +- **WHEN** `samples/motionblur.usda` is rendered at 16 spp +- **THEN** the EXR is bitwise equal to its baseline, the moving geometry is sampled at + the same shutter times, and the same "time-sampled motion not produced" warnings are + raised diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 287ecbf22..cb7a52fdc 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -3,7 +3,8 @@ Every task ends green on `cargo fmt --all -- --check`, `cargo clippy --workspace --all-targets -- -D warnings` and `cargo test --workspace --no-fail-fast`. "Parity green" means -`cargo test -p crust-core --test import_parity` passes (group 3). +`cargo test -p crust-core --test import_parity` passes, comparing today's import with the +baselines recorded from the direct importer before anything migrated (group 2). ## 1. One openusd, and Moho as a dependency (design D1, D2) @@ -20,7 +21,9 @@ Every task ends green on `cargo fmt --all -- --check`, comment there. Verify: - `cargo tree -i openusd` and `cargo tree -i openusd-schemas` each show a single package, with `moho` among its dependents; - - `cargo tree -d` lists no openusd crate; + - `cargo tree -d -e no-build` lists no openusd crate (openusd is also openusd-schemas' + build-time code generator, so a plain `cargo tree -d` lists the one package twice, + host and target, as it did before this change); - `cargo deny --locked check` is clean. - [ ] 1.3 Add a compile-time guard test in crust-core (`tests/one_openusd.rs`) that passes a `moho::openusd::usd::Stage` where an `openusd::usd::Stage` is expected, and a @@ -30,197 +33,195 @@ Every task ends green on `cargo fmt --all -- --check`, comment. - [ ] 1.4 Update `CLAUDE.md`'s openusd paragraph: pinned by rev, the Moho entry pinned by rev, one openusd across Moho, crust-render and Mantle, and the bump order. Document - local co-development with Moho through an untracked `.cargo/config.toml` - (`[patch."https://github.com/doubleailes/Moho"] moho = { path = "../Moho/crates/moho" }`; - the root `.gitignore` already ignores `config.toml`). Verify with `grep` that - `CLAUDE.md` names both revs' rule and the bump order. -- [ ] 1.5 Build against Moho's `scene-index-gaps` (M1 to M7 closed) through an untracked - `.cargo/config.toml` path patch, and bump the `moho` rev in `[workspace.dependencies]` - to the merge of `scene-index-gaps` once it lands on Moho's `main`, dropping the local - patch. Verify that `cargo tree -i moho` names the merged rev, and that a clean checkout - without `.cargo/config.toml` builds and passes `import_parity`. Until the merge this - task stays open, and the design's "Moho's rev" note says so. - -## 2. The route switch (design D3) - -- [ ] 2.1 Add `ImportRoute { Direct, Index }` and `Config::usd_import`, read from - `CRUST_USD_IMPORT` in `config.rs` (default `Direct`; an unknown value warns once - through the existing config-warning path and keeps the default). Add - `UsdImportOptions::route: Option` overriding it per import. Record the - effective route in `StageFacts::options`. Verify with unit tests for parsing, the - unknown value and the override, and that every existing `UsdImportOptions { .. }` site - compiles through `Default`. -- [ ] 2.2 Make `load_scene` dispatch on the route after `ValidOptions::check`. Until - group 4, `Index` returns the `Error` variant for an unsupported option with a clear - message. Verify with a test that `Direct` is unchanged: `scripts/check_images.sh - check` passes against goldens recorded before the change. -- [ ] 2.3 Add the `CRUST_USD_IMPORT` row to `docs/architecture.md` § Environment - switches and its section to `site/content/docs/reference/environment-variables.md` - (marked as experimental until group 15). Verify with `zola build` in `site/`. - -## 3. The parity harness (design D11, spec `import-parity`) - -- [ ] 3.1 Add a test-only scene digest in crust-core (behind `cfg(test)` or a - `parity` feature that only tests enable). It hashes: + local co-development with Moho through a Cargo config file passed with `--config` + (`[patch."https://github.com/doubleailes/Moho"] moho = { path = "../Moho/crates/moho" }`). + `.cargo/config.toml` is tracked in this repository, so the patch does not go there, and + a path patch rewrites `Cargo.lock`'s `moho` entry, which is restored before a commit. + Verify with `grep` that `CLAUDE.md` names both revs' rule and the bump order. +- [ ] 1.5 Build against Moho's `scene-index-gaps` (M1 to M7 closed) through that + `--config` path patch, and bump the `moho` rev in `[workspace.dependencies]` to the + merge of `scene-index-gaps` once it lands on Moho's `main`, dropping the local patch. + Verify that `cargo tree -i moho` names the merged rev, and that a clean checkout + builds and passes `import_parity` without the patch. Until the merge this task stays + open, and the design's "Moho's rev" note says so. + +## 2. Baselines from today's importer (design D3, D11, spec `import-parity`) + +Recorded before anything migrates, from the direct importer as it is at the start of +this group, and kept for the whole change. + +- [ ] 2.1 Add a test-only scene digest in crust-core (behind a `parity` feature that only + tests and the parity tooling enable). It records, as stable text: - geometry in id order (primitive buffers, instance transforms, material identity by resolved parameters, masks, holdout flags); - the light list; - camera, settings and the AOV request; - - warnings in order, and the provenance. - - It returns a field-by-field diff naming the first difference. Verify with a unit test - where two scenes that differ in one geometry's order report that geometry id. -- [ ] 3.2 Add `crust-core/tests/import_parity.rs`. For each committed `samples/*.usd*` - that imports without external assets (the excluded ones listed with reasons), it - imports on both routes with `UsdImportOptions::route` and compares digests and the - `crust check` report data, timings excluded. Until group 4 the index side is - `#[ignore]`d. Verify that the test lists every sample, ignored or not. -- [ ] 3.3 Add a helper the existing import tests (`usd_scene.rs`, `light_linking.rs`, + - warnings in order, and the provenance; + - the scene's layers and `Source`. + + Comparing two digests returns a field-by-field diff naming the first difference. + Verify with a unit test where two scenes that differ in one geometry's order report + that geometry id. +- [ ] 2.2 Add `crust-core/tests/import_parity.rs` and its baselines under + `crust-core/tests/data/import_baselines/`. For each committed `samples/*.usd*` (the + Kitchen set variants included; a scene that cannot run in CI is listed with its + reason), it imports the scene and compares, with the recorded baseline: + - the digest; + - the `crust check` report data, timings excluded; + - the 16 spp image (`--indirect-clamp 0`), by a hash of its pixels. + + `CRUST_RECORD_BASELINES=1` rewrites the baselines instead of comparing. Record them + from the direct importer at this commit. Verify that the test lists every sample, and + that a deliberate change to one scene's import fails the test naming the sample and + the first difference. +- [ ] 2.3 Add a helper the existing import tests (`usd_scene.rs`, `light_linking.rs`, `render_passes.rs`, `mesh_primvars.rs`, `camera_*.rs`, `motion_vector.rs`, ...) call - in place of a bare import: it imports on both routes and asserts parity before - returning the direct scene. Convert the files one by one. Verify by `grep` that no - import test in `crust-core/tests` calls the importer without it, apart from a short, - commented list. -- [ ] 3.4 Add `scripts/import_parity.sh [render flags]`. It renders on both - routes interleaved (as `bench_ab.sh` does, `-n` runs), at `-s 16 --indirect-clamp 0`, - with `--stats`, and compares `crust check --json` minus timings and the EXRs with - `crust diff`. It prints each route's peak memory and `Parse USD stage` time, and the - ratios, and exits non-zero on any report or image difference; memory and time are - reported, not gated (as UsdImaging's scene index switch was). Verify on - `samples/cornellbox.usda` once group 4 lands (exit 0), and on a deliberately broken - index route (exit non-zero). -- [ ] 3.5 Record the baselines: the direct route's ALab (`samples/ALab/entry.usda -f 1004`) - and Moana (`--camera /island/cam/shotCam`) peak memory and import time, and Moho's - `scripts/streaming-spike.sh --with-d` strategies (B) and (D) on Moana, on one machine, in - `openspec/specs/usd-scene-import/design.md` under a new "Index import" section. - Verify that the section names the machine, the revs and the commands. - -## 4. The index skeleton and the bridge (design D4, D5, D6, D7, D10) - -- [ ] 4.1 Create `usd_import/index/` (`mod.rs`, `walk.rs`, `bridge.rs`, + in place of a bare import. It imports the fixture, and compares its digest and its + 16 spp image hash with the baseline recorded under the test's name (the same + `CRUST_RECORD_BASELINES=1` regenerates them). Convert the files one by one and record + their baselines from the direct importer. Verify by `grep` that no import test in + `crust-core/tests` calls the importer without it, apart from a short, commented list. +- [ ] 2.4 Add `scripts/import_parity.sh record|check [render flags]`. + `record` renders the scene `-n` times at `-s 16 --indirect-clamp 0` with `--stats` and + keeps the `crust check --json` report (timings removed), the EXR, and the peak memory + and `Parse USD stage` time (the minimum over the runs) in ``. `check` does the + same with the current build and compares: it exits non-zero on any report or image + difference (`crust diff`), and prints both builds' memory and time with their ratios, + without gating on them. Verify on `samples/cornellbox.usda` (record, then check exits + 0), and that a deliberately different render makes `check` exit non-zero. +- [ ] 2.5 Record the large-scene baselines from the direct importer with + `scripts/import_parity.sh record`: ALab (`samples/ALab/entry.usda -f 1004`) and Moana + (`--camera /island/cam/shotCam`), plus Moho's `scripts/streaming-spike.sh --with-d` + strategies (B) and (D) on Moana, on one machine. Also record `scripts/check_images.sh + record` goldens and a `crust diagnostic --budget 2m` report on + `samples/cornellbox.usda` (for group 14). Write the memory and time report in + `openspec/specs/usd-scene-import/design.md` under a new "Index import" section, and + keep the baseline directory for groups 9, 12 and 14. Verify that the section names + the machine, the revs and the commands. + +## 3. The index skeleton and the bridge (design D4, D5, D6, D7, D10) + +- [ ] 3.1 Create `usd_import/index/` (`mod.rs`, `walk.rs`, `bridge.rs`, `stage_facts.rs`), importing openusd through `moho::openusd` and - `moho::openusd_schemas` (D2). Build the bridge chain: `StageSceneIndex` → - `Flattening` → `MaterialBindingResolving` → `LightLinking` → - `RenderSettingsFlattening`, with no instancing filters (D6). Every stage is opened - with Crust's `stage_builder()` and set to the import's time (`TimeCode::default()` for - none). Verify with a unit test that a chain over `samples/cornellbox.usda` lists its - prims with their Hydra types. -- [ ] 4.2 Single stage: wrap the `LoadAll` stage in one chain. Walk from the absolute - root with the direct route's stack discipline. Apply pruning from the flattened - visibility and purpose, keeping the camera search in invisible subtrees. Hand every - prim to the existing readers through the bridge (`StageSceneIndex::stage()` and the - same path, under `EvalTimeScope`). Verify that `import_parity` passes on every - single-stage sample with the index side un-ignored. -- [ ] 4.3 Streaming: build the `MergingSceneIndex` with the scene input (`LoadNone`, - `set_include_unloaded_prims(true)`) and one chunk input at a time (masked to the chunk - and the active pass prim). Add the input, walk from the root through that chunk's root - only, remove it, drop its stage, and advance the epoch as today. The bridge resolves - each path to the stage of the input that holds it. Verify: - - parity on every streamed sample and on a fixture with 5 top-level subtrees; - - with `CRUST_STREAM_IMPORT=0`, a test that the streamed and single-stage index - routes are equal. -- [ ] 4.4 Move the non-imaging stage facts (D7) behind `index/stage_facts.rs`: layers + `moho::openusd_schemas` (D2). Build the bridge chain (D6): per input + `StageSceneIndex` → `Flattening` → `MaterialBindingResolving` → + `RenderSettingsFlattening`, with no instancing filters, and light linking over it. + Every stage is opened with Crust's `stage_builder()` and set to the import's time + (`TimeCode::default()` for none). Verify with a unit test that a chain over + `samples/cornellbox.usda` lists its prims with their Hydra types. +- [ ] 3.2 Single stage: `load_scene` wraps the `LoadAll` stage in one chain and walks + it from the absolute root with the direct traversal's stack discipline, in place of + `traverse_into`. Pruning comes from the flattened visibility and purpose, keeping the + camera search in invisible subtrees. Every prim goes to the existing readers through + the bridge (`StageSceneIndex::stage()` and the same path, under `EvalTimeScope`). + Verify parity green on every single-stage sample and fixture. +- [ ] 3.3 Streaming: build `chain::merged` over a `MergingSceneIndex` with the scene + input (`LoadNone`, `set_include_unloaded_prims(true)`) and one chunk input at a time + (masked to the chunk and the active pass prim). Add the input, walk from the root + through that chunk's root only, remove it, drop its stage, and advance the epoch as + today. The bridge resolves each path to the stage of the input that holds it. Verify: + - parity green on every streamed sample and on a fixture with 5 top-level subtrees; + - with `CRUST_STREAM_IMPORT=0`, a test that the streamed and single-stage imports are + equal. +- [ ] 3.4 Move the non-imaging stage facts (D7) behind `index/stage_facts.rs`: layers and layer stack, and invisible overrides, each with a comment naming the reason it is not imaging data. Read the time range's authored-ness (`check_time_range`) from the root's `__usdStageMetadata/{startTimeCode,endTimeCode}/authored` (M3), not from the - stage. Verify that `Scene::layers` and `Source` are equal on both routes in - `import_parity`, and that the time-range warnings are equal on a stage with and one - without an authored range. -- [ ] 4.5 Make `crust check`, `crust diagnostic` and the session's import honour the - route through `UsdImportOptions`. Verify with a crust-render test that `check --json` - on `samples/cornellbox.usda` is equal under both values of `CRUST_USD_IMPORT`. + stage. Verify parity green (`Scene::layers` and `Source` are in the digest), and that + the time-range warnings match the baselines on a stage with and one without an + authored range. +- [ ] 3.5 Make `crust check`, `crust diagnostic` and the session's import go through + `load_scene`'s index walk. Verify with a crust-render test that `check --json` on + `samples/cornellbox.usda` equals its baseline, timings aside. -## 5. Settings, products, precomp, passes and camera +## 4. Settings, products, precomp, passes and camera -- [ ] 5.1 Index reader for render settings: `renderSettings` from the scene input +- [ ] 4.1 Index reader for render settings: `renderSettings` from the scene input (camera, resolution, pixel aspect, conform policy, data window, motion and depth of field toggles, `renderingColorSpace`), and `crust:*` from `namespacedSettings`. The active settings come from the scene globals and the host's pass. Replaces - `read_index`'s settings reads on the index route only. Verify parity green, plus a - test on `samples/aovs.usda` and the settings fixtures. -- [ ] 5.2 Index reader for products and vars (flattened `renderProducts`, + `read_index`'s settings reads. Verify parity green, plus a test on `samples/aovs.usda` + and the settings fixtures. +- [ ] 4.2 Index reader for products and vars (flattened `renderProducts`, `driver:parameters:*`, `ri:*`, `crust:aov:*`, `crust:filter*`), and precomp filters read from the generic data of the prims the settings' relationships target. Verify parity green on `aovs.usda`, `aovs_lpe.usda`, `primvar_aovs.usda` and `precomp.usda`. -- [ ] 5.3 Index reader for the active pass: `renderPass` and its `collections` +- [ ] 4.3 Index reader for the active pass: `renderPass` and its `collections` (`matte`, `cameraVisibility`, and `prune`/`renderVisibility` for the existing warning that they are not honoured, M6). Membership is judged per chunk at the instance or instancer path, as today. Verify parity green on `crust-core/tests/render_passes.rs` and `holdouts.rs`, including a pass that applies all four collections. -- [ ] 5.4 Index reader for cameras: the `camera` schema (projection, apertures and +- [ ] 4.4 Index reader for cameras: the `camera` schema (projection, apertures and offsets, clipping, focus, shutter, exposure), `metersPerUnit` and its authored-ness from the root's `__usdStageMetadata/metersPerUnit/{value, authored}` (M3), and the dicing camera. Verify parity green on `camera_*.rs`, `aspect_conform.rs` and `orthographic` fixtures, with `metersPerUnit` authored and not. -- [ ] 5.5 Move the settings-and-camera rebuild in `usd_import/live.rs` to the index - readers on the index route (D8). Verify that `crust-core/tests/live.rs` passes under - both routes, with the in-place versus re-import bitwise checks. +- [ ] 4.5 Move the settings-and-camera rebuild in `usd_import/live.rs` to the index + readers (D8). Verify that `crust-core/tests/live.rs` passes, with the in-place versus + re-import bitwise checks. -## 6. Transforms and motion +## 5. Transforms and motion -- [ ] 6.1 Take world matrices from the flattened `xform` on the index route - (`resetXformStack` honoured), in place of `compose_with_parent`. Take `Timing` and - spans from `sample_times` over the shutter offsets and values at each offset, plus - `crust:motion:translate` from generic data. Verify parity green on - `motionblur.usda`, `motionvector.usda`, `animation.usda` at `-f`, and the transform - stack fixtures in `usd_scene.rs`. -- [ ] 6.2 Move the "time-sampled motion not produced" reporting to the index route's - sample times. Verify that the warnings are equal on both routes in the motion - fixtures. +- [ ] 5.1 Take world matrices from the flattened `xform` (`resetXformStack` honoured), + in place of `compose_with_parent`. Take `Timing` and spans from `sample_times` over + the shutter offsets and values at each offset, plus `crust:motion:translate` from + generic data. Verify parity green on `motionblur.usda`, `motionvector.usda`, + `animation.usda` at `-f`, and the transform stack fixtures in `usd_scene.rs`. +- [ ] 5.2 Move the "time-sampled motion not produced" reporting to the index's sample + times. Verify that the warnings match the baselines in the motion fixtures. -## 7. Meshes +## 6. Meshes -- [ ] 7.1 Index reader for `mesh`: topology, holes, orientation, subdivision scheme and +- [ ] 6.1 Index reader for `mesh`: topology, holes, orientation, subdivision scheme and tags, `doubleSided`, and points and normals (`primvars:normals` precedence) read once as whole arrays. It feeds `MeshSource` and the existing bake and instance placement path. Verify parity green on `cornellbox.usda`, `displacement.usda`, the subdivision fixtures and `mesh_normals.rs`. -- [ ] 7.2 Primvars: the render vars' primvars and materials' primvars with indices, - interpolation, `elementSize` and colour space, de-indexed as the direct route does. +- [ ] 6.2 Primvars: the render vars' primvars and materials' primvars with indices, + interpolation, `elementSize` and colour space, de-indexed as the direct reader does. Constant primvars are read from the prim's own generic data, not the flattened (inherited) set (design, Risks). Verify parity green on `mesh_primvars.rs`, `primvar_aovs.usda` and `ptex_quads.usda`. -- [ ] 7.3 `crust:subdivisionLevel`, `crust:subdivisionEdgeLength`, +- [ ] 6.3 `crust:subdivisionLevel`, `crust:subdivisionEdgeLength`, `crust:displacementBound` and `primvars:displacementbound:sphere` from generic data, and the adaptive level from the camera's projection. Verify parity green on the adaptive subdivision fixtures and `pxr_displace.usda`. -- [ ] 7.4 Move the mesh parts of `usd_import/live.rs` (`mesh_source`, bake helpers) to - the index reader on the index route. Verify that `live.rs` and the - `live-geometry-edits` tests pass under both routes. +- [ ] 6.4 Move the mesh parts of `usd_import/live.rs` (`mesh_source`, bake helpers) to + the index reader. Verify that `live.rs` and the `live-geometry-edits` tests pass. -## 8. Implicit shapes and spheres +## 7. Implicit shapes and spheres -- [ ] 8.1 Index readers for `sphere`, `cube`, `cone`, `cylinder`, `capsule` and `plane` +- [ ] 7.1 Index readers for `sphere`, `cube`, `cone`, `cylinder`, `capsule` and `plane` (radius, size, height, axis, radiusTop/Bottom, width, length, doubleSided), tessellated by Crust's existing `implicit` code. Analytic spheres stay analytic. Verify parity green on `implicit_shapes.usda`, and that `geomutil_oracle` passes unchanged. -- [ ] 8.2 Move the sphere rebuild in `live.rs` to the index reader on the index route. - Verify that `live.rs` passes under both routes. +- [ ] 7.2 Move the sphere rebuild in `live.rs` to the index reader. Verify that + `live.rs` passes. -## 9. Curves +## 8. Curves -- [ ] 9.1 Index readers for `basisCurves` and `nurbsCurves` (topology, widths, order, +- [ ] 8.1 Index readers for `basisCurves` and `nurbsCurves` (topology, widths, order, knots, ranges, point weights) and the `primvars:curve*` and `st` primvars that strand requests read. Verify parity green on `curves.usda`, `hair.usda`, `hair_variation.usda`, `curve_attributes.rs` and `hair.rs`. -## 10. Materials +## 9. Materials -- [ ] 10.1 Binding: read `materialBindings` for the render purpose, then the +- [ ] 9.1 Binding: read `materialBindings` for the render purpose, then the all-purpose binding, from the material binding resolving filter. Check it against `winning_binding_target` with a test that runs both on `purpose_bindings.usda` and the - binding fixtures. Verify parity green. -- [ ] 10.2 Networks: `material` per render context (universal, `mtlx`, `ri`). Terminals, + binding fixtures, while the direct reader still exists. Verify parity green. +- [ ] 9.2 Networks: `material` per render context (universal, `mtlx`, `ri`). Terminals, `nodeIdentifier`, parameters with colour space and resolved asset paths, and connections feed `preview` (`UsdPreviewSurface`, `UsdUVTexture`, primvar readers), `mtlx_network` (inline `ND_*`), `PxrDisneyBsdf` and `PxrDisplace`. `crust:openpbr` is read from the material's generic data. Verify parity green on every `materialx_*`, `openpbr_showcase.usda`, `ptex_quads.usda` and `mtlx_surfaces.rs`. -- [ ] 10.3 `.mtlx` references: on the index route, read the arc through `stage_facts` - (D7) as `mtlx_reference` does, unless `mtlx-format-plugin` has landed, in which case - the composed shader prims are read like any network. Verify parity green on +- [ ] 9.3 `.mtlx` references: read the arc through `stage_facts` (D7) as + `mtlx_reference` does, unless `mtlx-format-plugin` has landed, in which case the + composed shader prims are read like any network. Verify parity green on `materialx_teapot.usda` and `materialx_lion.usda`. -- [ ] 10.4 Materials outside a chunk: add the side input (D4), a `chain::input` over a +- [ ] 9.4 Materials outside a chunk: add the side input (D4), a `chain::input` over a stage masked to the paths `moho::streaming::unresolved` lists (M2), inserted weaker than the chunk and stronger than the scene input, grown and reopened under `OutsideMaterials`' rules (at most `MAX_SIDE_STAGE_OPENS` per material) until nothing @@ -228,22 +229,22 @@ Every task ends green on `cargo fmt --all -- --check`, - parity on a fixture with `/World/Looks` beside four geometry chunks; - parity on a fixture whose material lives only in another chunk's payload; - parity on the Cornell box streamed. -- [ ] 10.5 Provenance for materials (`material_reads`: arcs from `prim_stack`, targets - from the generic `connections`) on the index route, through `stage_facts` for the - arcs. Move the material rebuild in `live.rs` to the index readers. Verify that - `live.rs` passes under both routes, and that provenance is equal in `import_parity`. -- [ ] 10.6 Run `scripts/import_parity.sh` on ALab. Verify that it exits 0, and record - the run in the design record. +- [ ] 9.5 Provenance for materials (`material_reads`: arcs from `prim_stack`, targets + from the generic `connections`), through `stage_facts` for the arcs. Move the material + rebuild in `live.rs` to the index readers. Verify that `live.rs` passes, and parity + green (provenance is in the digest). +- [ ] 9.6 Run `scripts/import_parity.sh check` on ALab against its baseline. Verify that + it exits 0, and record the run in the design record. -## 11. Lights and light links (design D9) +## 10. Lights and light links (design D9) -- [ ] 11.1 Index readers for every light type through the `light` container +- [ ] 10.1 Index readers for every light type through the `light` container (intensity, exposure, colour and temperature, normalize, the type's own inputs, dome texture and pole axis, shaping and IES), plus `crust:light:*` from generic data. They feed the existing `emit_*_light` builders. Verify parity green on `lights.rs`, `domelight.usda`, `dome_backdrop.usda`, `rectlight.usda`, `many_lights.usda`, `light_visibility.usda`, `hidden_lights.rs` and the IES samples. -- [ ] 11.2 Light links: record receivers as today. Read each light's +- [ ] 10.2 Light links: record receivers as today. Read each light's `collections/lightLink` and `collections/shadowLink` expressions from the merged data, and judge them after the last chunk without reading `categories` (D9; whether to read `categories` now that M1 has landed is the open question). Add agreement tests @@ -251,76 +252,86 @@ Every task ends green on `cargo fmt --all -- --check`, (`chain::standard`), and on a streamed fixture whose light and receivers sit in different chunks (`chain::merged` over every input). Verify parity green on `light_linking.usda` and `light_linking.rs`, and on that streamed fixture. -- [ ] 11.3 Move the light rebuild in `live.rs` to the index readers. Verify that - `live.rs` passes under both routes. +- [ ] 10.3 Move the light rebuild in `live.rs` to the index readers. Verify that + `live.rs` passes. -## 12. Volumes +## 11. Volumes -- [ ] 12.1 Index reader for `crust:volume:*` regions from generic data, dispatched +- [ ] 11.1 Index reader for `crust:volume:*` regions from generic data, dispatched before geometry as today, and the material's volume terminal from the `material` network. Verify parity green on `fog.usda`, `materialx_volume.usda` and `medium.rs`. -## 13. Instancing, the standard chain, and the bridge's removal +## 12. Instancing and the standard chain -- [ ] 13.1 Switch the index route to `moho::chain::standard` (one stage), and to - `chain::input` per input under `chain::merged` (streamed). Read `instancer` prims: +- [ ] 12.1 Switch to `moho::chain::standard` (one stage), and to `chain::input` per + input under `chain::merged` (streamed). Read `instancer` prims: - native instances: `instancerTopology` and `hydra:instanceTransforms`, with prototypes walked under their stable paths through the same readers; - point instancers: raw `protoIndices`, positions, orientations, scales and invisible/inactive ids from `__usdAttributes` where a warning depends on them, and `instancerTopology` otherwise. - Key prototype caches on the stable prototype paths on the index route, with no epoch. - Name prims inside a prototype, in warnings and provenance, by the instance's prototype - joined with `primOrigin/scenePath` (M4). Verify parity green on `instancing.usda`, - `nested_instancing.usda`, `PointInstancedMedCity.usd` and the `usd_scene.rs` - instancing tests, with no path normalisation; a remaining difference is reported, not - normalised. -- [ ] 13.2 Placement counts for adaptive subdivision and the bake-versus-instance + Key prototype caches on the stable prototype paths, with no epoch. Name prims inside + a prototype, in warnings and provenance, by the instance's prototype joined with + `primOrigin/scenePath` (M4). Verify parity green on `instancing.usda`, + `nested_instancing.usda`, `PointInstancedMedCity.usd`, the Kitchen set variants and the + `usd_scene.rs` instancing tests, with no path normalisation; a remaining difference is + reported, not normalised. +- [ ] 12.2 Placement counts for adaptive subdivision and the bake-versus-instance decision from instancers, per top-level subtree. Instances judged at the instance or instancer path for links and passes. Verify that parity is green with adaptive subdivision on, on the instancing samples, streamed and not. -- [ ] 13.3 Delete the bridge and `EvalTimeScope` use from the index route. Every index - reader reads only the scene index or `stage_facts`. Verify with `grep` that - `index/` names no `usd::Prim` outside `stage_facts.rs`, and that parity is green. -- [ ] 13.4 Run `scripts/import_parity.sh` on ALab and Moana. Verify that both exit 0, - and record the runs (and Moho's spike strategies (B) and (D) on the same machine) in - the design record. +- [ ] 12.3 Every index reader reads only the scene index or `stage_facts`: no bridged + call remains. Verify with `grep` that `index/` names no `usd::Prim` outside + `stage_facts.rs`, and that parity is green. +- [ ] 12.4 Run `scripts/import_parity.sh check` on ALab and Moana against their + baselines. Verify that both exit 0, and record the runs (and Moho's spike strategies + (B) and (D) on the same machine) in the design record. + +## 13. Delete the direct importer (design D3, D6) + +- [ ] 13.1 Delete the direct readers and the traversal they served (`traverse_into`, + `count_placements`' stage walk, the per-family `usd::Prim` readers no index reader + calls), the bridge (`index/bridge.rs`), `EvalTimeScope` and `time.rs`, and the + prototype epoch (`ImportCaches::epoch`, `MaterialCache::epoch`). `listing.rs` + (`crust ls`) is not an import and stays. Verify with `grep` that none of them remains, + that `usd_import/` reads openusd only through `index/` and `stage_facts.rs` (and + `listing.rs`), and that parity is green. +- [ ] 13.2 Update the `CLAUDE.md` rules the deletion retires or changes: "The USD import + is single-threaded and reads the time code from a thread-local (`EvalTimeScope`)", and + the pair "Anything keyed on a prototype path is scoped by the stage epoch". Verify + with `grep` that neither names a deleted item. ## 14. Hosts and large scenes - [ ] 14.1 hdCrust: run `hydra/hdCrust/test/compare.sh`, `interaction.sh` and - `usdc_roundtrip.sh` with `CRUST_USD_IMPORT=index`. Verify that all three pass. -- [ ] 14.2 Run `crust diagnostic --budget 2m` and the MCP session tests - (`crust-render` with feature `mcp`) under both routes. Verify equal reports, timings - aside, and green tests. -- [ ] 14.3 Run `scripts/check_images.sh check` with `CRUST_USD_IMPORT=index` against - goldens recorded on `direct`. Verify exit 0. - -## 15. The default flips - -- [ ] 15.1 Change `Config::usd_import`'s default to `Index` (keeping `direct` - selectable), with ALab and Moana re-run on this commit by `scripts/import_parity.sh`. - Verify that both exit 0 and the full CI is green. -- [ ] 15.2 Mark the requirement "Two import routes, chosen per import" as implemented - (drop its status note), and update the environment-variables page and the - architecture row to the new default. Verify with `zola build` and - `openspec validate moho-import --strict`. - -## 16. Documentation - -- [ ] 16.1 Update `openspec/specs/usd-scene-import/design.md`: - - the index route (layout, walk order, bridge history, stage facts); - - the parity runs; + `usdc_roundtrip.sh`. Verify that all three pass. +- [ ] 14.2 Run `crust diagnostic --budget 2m` on `samples/cornellbox.usda` and compare + its report with the one recorded from the direct importer in group 2, timings aside, + and run the MCP session tests (`crust-render` with feature `mcp`). Verify equal + reports and green tests. +- [ ] 14.3 Run `scripts/check_images.sh check` against the goldens recorded from the + direct importer in group 2. Verify exit 0. +- [ ] 14.4 Run `scripts/import_parity.sh check` on ALab and Moana against their + baselines on the final commit. Verify that both exit 0 and that the full CI is green, + and record the runs in the design record. + +## 15. Documentation and specs + +- [ ] 15.1 Update `openspec/specs/usd-scene-import/design.md`: + - the import through Moho (layout, walk order, the bridge's history, stage facts); + - the baselines and the parity runs; - Moho's gaps M1 to M7, closed in `scene-index-gaps`, with the Moho rev that closes them, and any parity exception that remains (none is planned). Verify that M1 to M7 are each named with what Crust uses from them. -- [ ] 16.2 Update `docs/architecture.md`: Moho in the crate map and render flow, the +- [ ] 15.2 Update `docs/architecture.md`: Moho in the crate map and render flow, the `index/` module, and the new invariant that each family's index reader and its in-place rebuild change together. Update the `usd_import/mod.rs` module table to name each family's index reader. Verify with `grep` that each document names Moho and the rev rule. -- [ ] 16.3 Add a page on the import routes to the site's architecture section (what - the index route is, `CRUST_USD_IMPORT`, and that the direct route is kept for A/B). - Verify with `zola build`. +- [ ] 15.3 Add a page on the import to the site's architecture section (Crust reads + USD through Moho, the scene index; how it streams), and update any site page that + names the direct importer. Verify with `zola build`. +- [ ] 15.4 Drop the implementation status note on "One import route, through Moho", and + run `openspec validate moho-import --strict`. From b49800fc1c879f65af1dc1ea33616cb86f4272bd Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 18:43:42 +0100 Subject: [PATCH 05/95] build(deps): pin openusd by rev, the commit Moho pins MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cargo identifies a git source by URL plus reference, so `branch = "main"` and Moho's `rev = "68a867a…"` would be two openusd packages at one commit. The patch now names the rev; bump order is Moho, then crust-render, then Mantle, and `cargo update -p openusd` no longer moves it. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- Cargo.lock | 6 +++--- Cargo.toml | 22 ++++++++++++++-------- openspec/changes/moho-import/tasks.md | 2 +- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2c537c015..cfed98df2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1398,7 +1398,7 @@ source = "git+https://github.com/doubleailes/OpenSubdiv-rs?tag=0.5.0#c672796f958 [[package]] name = "openusd" version = "0.8.0" -source = "git+https://github.com/mxpv/openusd?branch=main#68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f" +source = "git+https://github.com/mxpv/openusd?rev=68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f#68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f" dependencies = [ "bitflags 2.13.2", "bytemuck", @@ -1420,7 +1420,7 @@ dependencies = [ [[package]] name = "openusd-build" version = "0.8.0" -source = "git+https://github.com/mxpv/openusd?branch=main#68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f" +source = "git+https://github.com/mxpv/openusd?rev=68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f#68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f" dependencies = [ "openusd", "prettyplease", @@ -1435,7 +1435,7 @@ dependencies = [ [[package]] name = "openusd-schemas" version = "0.8.0" -source = "git+https://github.com/mxpv/openusd?branch=main#68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f" +source = "git+https://github.com/mxpv/openusd?rev=68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f#68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f" dependencies = [ "bitflags 2.13.2", "derive_more", diff --git a/Cargo.toml b/Cargo.toml index 8644a1d4f..cb7d0badb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -83,7 +83,7 @@ ocio = "0.2.0" # The USD reader and its typed schema views, versioned in lockstep. Declared # once so crust-core (the import) and crust-render (the MCP session's override # layer, the probe examples) can never name different versions of the stage -# they share; `[patch.crates-io]` below swaps both for GitHub `main`. No +# they share; `[patch.crates-io]` below swaps both for one GitHub rev. No # default features (openusd has none since 0.8): each member adds the ones it # needs — crust-core's `mmap` and schema families, crust-render's `serde`. openusd = { version = "0.8", default-features = false } @@ -142,11 +142,17 @@ codegen-units = 1 inherits = "release" panic = "unwind" -# openusd tracks its GitHub `main` rather than the 0.8.0 release, to take its -# fixes as they land. A patch rather than a `git =` in `[workspace.dependencies]`, -# so the requirement stays the release's `0.8` and dropping this section is the -# whole revert to it. Cargo.lock pins the commit; `cargo update -p -# openusd -p openusd-schemas` moves it. +# openusd is pinned by `rev` to the exact commit Moho pins (Moho's root +# Cargo.toml), not tracked by `branch = "main"`: Cargo identifies a git source +# by URL plus reference, so `?branch=main` and `?rev=…` are two packages even at +# one commit, and the build would carry two openusd copies — one for Moho's +# scene index, one for crust. `tests/one_openusd.rs` in crust-core stops +# compiling if that ever happens. A patch rather than a `git =` in +# `[workspace.dependencies]`, so the requirement stays the release's `0.8` and +# dropping this section is the whole revert to it. +# +# One rev across the stack: Moho, crust-render and Mantle all resolve this +# commit. Bump in order — Moho, then crust-render, then Mantle. `cargo update -p openusd` no longer moves it. [patch.crates-io] -openusd = { git = "https://github.com/mxpv/openusd", branch = "main" } -openusd-schemas = { git = "https://github.com/mxpv/openusd", branch = "main" } +openusd = { git = "https://github.com/mxpv/openusd", rev = "68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f" } +openusd-schemas = { git = "https://github.com/mxpv/openusd", rev = "68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f" } diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index cb7a52fdc..10a6cf435 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -8,7 +8,7 @@ baselines recorded from the direct importer before anything migrated (group 2). ## 1. One openusd, and Moho as a dependency (design D1, D2) -- [ ] 1.1 Switch `[patch.crates-io]` in the root `Cargo.toml` from `branch = "main"` to +- [x] 1.1 Switch `[patch.crates-io]` in the root `Cargo.toml` from `branch = "main"` to `rev = "68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f"` for `openusd` and `openusd-schemas`, and rewrite the comment above it: pinned by rev to Moho's, bumped in order Moho, then crust-render, then Mantle, and no longer moved by `cargo update -p`. From 5170b7cedc3f634d628fdb3bd116f08b2f4b0f3f Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 18:50:40 +0100 Subject: [PATCH 06/95] build(deps): depend on Moho, the scene index, at the rev pinning our openusd crust-core gains `moho` (git, rev 92c8b84), which pins openusd at the same rev as the workspace patch, so `cargo tree -i openusd` shows one package with moho among its dependents. deny.toml allows Moho's source. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- Cargo.lock | 12 +++++++++++- Cargo.toml | 10 +++++++++- crates/crust-core/Cargo.toml | 5 +++++ deny.toml | 6 ++++-- openspec/changes/moho-import/tasks.md | 2 +- 5 files changed, 30 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cfed98df2..2b87621b4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -604,6 +604,7 @@ dependencies = [ "crust-nn", "crust-rt", "glam", + "moho", "ocio", "openqmc-rs", "opensubdiv-rs", @@ -1280,6 +1281,15 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "moho" +version = "0.1.0" +source = "git+https://github.com/doubleailes/Moho?rev=92c8b847822823f796b81b85452c3c400d77e5ec#92c8b847822823f796b81b85452c3c400d77e5ec" +dependencies = [ + "openusd", + "openusd-schemas", +] + [[package]] name = "moxcms" version = "0.8.1" @@ -2333,7 +2343,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index cb7d0badb..c7a867d8d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -88,6 +88,13 @@ ocio = "0.2.0" # needs — crust-core's `mmap` and schema families, crust-render's `serde`. openusd = { version = "0.8", default-features = false } openusd-schemas = { version = "0.8", default-features = false } +# Moho, the Hydra-2.0-style scene index over openusd that the index import route +# (`CRUST_USD_IMPORT=index`) reads the stage through. Pinned by rev; it pins +# openusd at the same rev as `[patch.crates-io]` below, which is what keeps one +# openusd in the build. Moho re-exports it (`moho::openusd`), and new index-route +# code names openusd through that re-export. Bumped with the openusd rev, in the +# order written there. +moho = { git = "https://github.com/doubleailes/Moho", rev = "92c8b847822823f796b81b85452c3c400d77e5ec" } # The hot loops are spread across crates: the integrator in `crust-core` # calls the kernel in `crust-rt`, which calls `glam`'s SIMD vector ops. @@ -152,7 +159,8 @@ panic = "unwind" # dropping this section is the whole revert to it. # # One rev across the stack: Moho, crust-render and Mantle all resolve this -# commit. Bump in order — Moho, then crust-render, then Mantle. `cargo update -p openusd` no longer moves it. +# commit. Bump in order — Moho, then crust-render (this rev *and* the `moho` +# rev above), then Mantle. `cargo update -p openusd` no longer moves it. [patch.crates-io] openusd = { git = "https://github.com/mxpv/openusd", rev = "68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f" } openusd-schemas = { git = "https://github.com/mxpv/openusd", rev = "68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f" } diff --git a/crates/crust-core/Cargo.toml b/crates/crust-core/Cargo.toml index e5b48ddd5..670b3c488 100644 --- a/crates/crust-core/Cargo.toml +++ b/crates/crust-core/Cargo.toml @@ -45,6 +45,11 @@ openusd.workspace = true # every Xformable type C++ USD defines is known (the remaining families, # UsdPhysics, UsdUI and UsdSemantics, define none). openusd-schemas = { workspace = true, features = ["geom", "lux", "shade", "render", "skel", "vol", "proc", "media"] } +# The scene index the index import route reads the stage through +# (`scene/usd_import/index/`). It depends on the same openusd rev as the patch in +# the workspace Cargo.toml, so `moho::openusd` and `openusd` are one crate +# (`tests/one_openusd.rs`). +moho.workspace = true # Pure-Rust OpenSubdiv port (Far topology refinement + Sdc rules) driving # Catmull-Clark subdivision at USD import: zero dependencies, # `forbid(unsafe_code)`. Pinned to a release tag; the committed `Cargo.lock` diff --git a/deny.toml b/deny.toml index 45b1035ff..9a10ea6dd 100644 --- a/deny.toml +++ b/deny.toml @@ -60,9 +60,11 @@ unknown-registry = "deny" unknown-git = "deny" allow-registry = ["https://github.com/rust-lang/crates.io-index"] # The git dependencies, each resolved to a commit in Cargo.lock: OpenSubdiv-rs, -# pinned by release tag, and openusd / openusd-schemas, patched to `main` -# (see `[patch.crates-io]` in the workspace Cargo.toml). +# pinned by release tag, openusd / openusd-schemas, patched to one rev, and Moho +# (the scene index the index import route reads through), pinned by rev to the +# Moho commit that pins that same openusd rev (see the workspace Cargo.toml). allow-git = [ + "https://github.com/doubleailes/Moho", "https://github.com/doubleailes/OpenSubdiv-rs", "https://github.com/mxpv/openusd", ] diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 10a6cf435..d11c97c38 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -15,7 +15,7 @@ baselines recorded from the direct importer before anything migrated (group 2). Regenerate `Cargo.lock`. Verify that `Cargo.lock`'s three openusd entries read `?rev=68a867a…#68a867a…`, that `cargo tree -i openusd` shows one package, and that `cargo deny --locked check` is clean. -- [ ] 1.2 Add `moho = { git = "https://github.com/doubleailes/Moho", rev = "92c8b847822823f796b81b85452c3c400d77e5ec" }` +- [x] 1.2 Add `moho = { git = "https://github.com/doubleailes/Moho", rev = "92c8b847822823f796b81b85452c3c400d77e5ec" }` to `[workspace.dependencies]` and `moho.workspace = true` to crust-core. Add `https://github.com/doubleailes/Moho` to `allow-git` in `deny.toml`, and update the comment there. Verify: From 4423095d369da011939500267a6b9e66d91e1297 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 18:50:40 +0100 Subject: [PATCH 07/95] crust-core: a compile-time guard that Moho and crust share one openusd tests/one_openusd.rs hands Moho's re-exported Stage, SchemaRegistry and an openusd-schemas type to functions taking the workspace's. With the patch set back to `branch = "main"` it failed with mismatched types, as recorded in its doc comment. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- crates/crust-core/tests/one_openusd.rs | 50 ++++++++++++++++++++++++++ openspec/changes/moho-import/tasks.md | 2 +- 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 crates/crust-core/tests/one_openusd.rs diff --git a/crates/crust-core/tests/one_openusd.rs b/crates/crust-core/tests/one_openusd.rs new file mode 100644 index 000000000..33cc210a1 --- /dev/null +++ b/crates/crust-core/tests/one_openusd.rs @@ -0,0 +1,50 @@ +//! One openusd in the build: the stage Moho's scene index reads and the stage +//! crust's direct import reads are the same type. +//! +//! Cargo identifies a git source by URL plus reference, so a patch to openusd's +//! `branch = "main"` and Moho's `rev = "…"` are two packages even at one commit. +//! The workspace patches openusd by the rev Moho pins (`[patch.crates-io]` in +//! the root `Cargo.toml`); if the two ever diverge, this file stops compiling, +//! because `moho::openusd` and `openusd` become different crates. +//! +//! Checked once when the guard was added: with the patch set back to +//! `branch = "main"`, the build carried two openusd packages and this file +//! failed with "mismatched types" (expected `openusd::usd::Stage`, found +//! `moho::openusd::usd::Stage`) — see the `moho-import` change, task 1.3. + +use std::sync::Arc; + +/// Takes the workspace's openusd stage. +fn workspace_stage(stage: openusd::usd::Stage) -> openusd::usd::Stage { + stage +} + +/// Takes the workspace's openusd-schemas registry. +fn workspace_registry( + registry: Arc, +) -> Arc { + registry +} + +#[test] +fn moho_and_crust_share_one_openusd() { + // A stage built through Moho's re-export, handed where crust's is expected. + let registry: Arc = + moho::openusd_schemas::schema_registry(); + let registry = workspace_registry(registry); + let stage: moho::openusd::usd::Stage = moho::openusd::usd::Stage::builder() + .schema_registry(registry) + .open("../../samples/cornellbox.usda") + .expect("the Cornell box opens"); + let stage = workspace_stage(stage); + assert!(stage.prim("/").is_ok()); +} + +#[test] +fn moho_and_crust_share_one_openusd_schemas() { + // A typed schema view from Moho's openusd-schemas, where crust's is expected. + let as_crust: fn( + Option, + ) -> Option = |mesh| mesh; + assert!(as_crust(None).is_none()); +} diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index d11c97c38..7c9bf6d5d 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -25,7 +25,7 @@ baselines recorded from the direct importer before anything migrated (group 2). build-time code generator, so a plain `cargo tree -d` lists the one package twice, host and target, as it did before this change); - `cargo deny --locked check` is clean. -- [ ] 1.3 Add a compile-time guard test in crust-core (`tests/one_openusd.rs`) that +- [x] 1.3 Add a compile-time guard test in crust-core (`tests/one_openusd.rs`) that passes a `moho::openusd::usd::Stage` where an `openusd::usd::Stage` is expected, and a `moho::openusd_schemas` type where the workspace's `openusd_schemas` type is expected. Verify that it compiles and passes. Then check, once, that it fails to compile with From 99c56742d1e213712105c8ec85e68fead63d2a5e Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 18:50:56 +0100 Subject: [PATCH 08/95] CLAUDE.md: openusd pinned by rev with Moho, the bump order, co-development Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- CLAUDE.md | 22 +++++++++++++++++++--- openspec/changes/moho-import/tasks.md | 2 +- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 70485d35b..b90ac18dd 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -14,9 +14,25 @@ beside the behavioural `spec.md` for the same capability. Crust Render is a toy, physically-based path tracer written in safe Rust (edition 2024), inspired by PBRT, *Ray Tracing in One Weekend*, and Autodesk Standard Surface / OpenPBR. Scenes are loaded exclusively from **USD** (`.usda` / `.usdc` / `.usdz`) via the pure-Rust -[`openusd`](https://github.com/mxpv/openusd) crate (its GitHub `main`, patched over 0.8 in -the workspace `Cargo.toml`; typed schemas in `openusd-schemas`, which every stage must be -opened with — `usd_import::stage_builder()`). Do not add loaders for any other scene or mesh format. +[`openusd`](https://github.com/mxpv/openusd) crate (typed schemas in `openusd-schemas`, +which every stage must be opened with — `usd_import::stage_builder()`). The importer is +moving onto [Moho](https://github.com/doubleailes/Moho), a Hydra-2.0-style scene index over +openusd that Mantle's IPR and Obsidian also consume (`openspec/changes/moho-import`). Do not add loaders for any other scene or mesh format. + +**One openusd across the stack, pinned by rev.** `[patch.crates-io]` in the workspace +`Cargo.toml` pins openusd and openusd-schemas by `rev` to the exact commit Moho pins, and +`moho` is pinned by `rev` in `[workspace.dependencies]`. A `branch` and a `rev` are two +Cargo sources even at one commit, so any mismatch puts two openusd copies in the build; +`crust-core/tests/one_openusd.rs` then stops compiling. Bump in order: **Moho, then +crust-render (both revs), then Mantle**; `cargo update -p openusd` does not move the pin. +New import code names openusd through Moho's re-exports (`moho::openusd`, +`moho::openusd_schemas`). To co-develop with a local Moho checkout, pass a Cargo config +file with a path patch rather than editing `.cargo/config.toml` (it is tracked): + +```bash +printf '[patch."https://github.com/doubleailes/Moho"]\nmoho = { path = "../Moho/crates/moho" }\n' > /tmp/moho.toml +cargo --config /tmp/moho.toml test -p crust-core # rewrites Cargo.lock's moho entry: restore it before committing +``` ## Where things are documented diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 7c9bf6d5d..3d5284fa5 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -31,7 +31,7 @@ baselines recorded from the direct importer before anything migrated (group 2). Verify that it compiles and passes. Then check, once, that it fails to compile with the patch temporarily set back to `branch = "main"`, and record that in the test's doc comment. -- [ ] 1.4 Update `CLAUDE.md`'s openusd paragraph: pinned by rev, the Moho entry pinned +- [x] 1.4 Update `CLAUDE.md`'s openusd paragraph: pinned by rev, the Moho entry pinned by rev, one openusd across Moho, crust-render and Mantle, and the bump order. Document local co-development with Moho through a Cargo config file passed with `--config` (`[patch."https://github.com/doubleailes/Moho"] moho = { path = "../Moho/crates/moho" }`). From 717a0dffbbd52da7f22a66e4bce89f4bc688e8af Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 20:55:44 +0100 Subject: [PATCH 09/95] crust-core tests: one primvar fixture file per live test Two live tests rewrote `live_primvars.usda` while running in parallel, so one could read the other's half-written file ("Unexpected prim specifier"). Each test now writes its own. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- crates/crust-core/tests/live.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/crates/crust-core/tests/live.rs b/crates/crust-core/tests/live.rs index a100dad9b..0cf7530fa 100644 --- a/crates/crust-core/tests/live.rs +++ b/crates/crust-core/tests/live.rs @@ -523,10 +523,12 @@ def Xform "World" /// A stage with a mesh authoring `primvars:rest`, whose settings target /// `products` (one of `` and ``). -fn primvar_stage(products: &str) -> PathBuf { +fn primvar_stage(name: &str, products: &str) -> PathBuf { + // One file per test: tests run in parallel, and two rewriting one file + // let a third read it half-written. let dir = std::env::temp_dir().join("crust_live_tests"); std::fs::create_dir_all(&dir).expect("temp dir"); - let path = dir.join("live_primvars.usda"); + let path = dir.join(format!("live_primvars_{name}.usda")); std::fs::write( &path, format!( @@ -596,7 +598,7 @@ fn a_settings_change_asking_for_new_primvars_reimports() { settings: true, ..Default::default() }; - let path = primvar_stage(""); + let path = primvar_stage("retarget", ""); let scene = Scene::from_usd(&path).expect("load"); assert!(!scene.world.has_primvars()); let prov = scene.provenance.as_ref().expect("provenance"); @@ -611,7 +613,7 @@ fn a_settings_change_asking_for_new_primvars_reimports() { .map(|_| ()), Ok(()) ); - primvar_stage(""); + primvar_stage("retarget", ""); match prov.rebuild( &path, &crust_core::NoAssets, @@ -648,7 +650,7 @@ fn a_primvar_warning_does_not_block_a_settings_edit() { settings: true, ..Default::default() }; - let path = primvar_stage(""); + let path = primvar_stage("warnings", ""); let text = std::fs::read_to_string(&path).expect("read stage"); // `rest` moves to the mesh's parent (not inherited), and a second mesh // authors it with two components (a mismatch). From aa87554d97e959757f7110be1140f0814cf95046 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 20:56:04 +0100 Subject: [PATCH 10/95] crust-core: import parity against baselines from the direct importer The `parity` feature (test-only, on for crust-core's, crust-render's and crust-hydra's tests through dev-dependencies) ends every successful load_scene by comparing the scene's digest with a baseline under crust-core/tests/data/import_baselines/, panicking on the first differing line. The digest is stable text over the geometry in id order (pieces hashed bit for bit per ray category, material sharing and Signature, flags, side tables, motion), lights, volumes, camera, settings, AOVs, pass, warnings, provenance, layers and Source, with paths normalised. Baselines are keyed by the layers composed, the options, the switches and the importing test. CRUST_RECORD_BASELINES=1 records; CRUST_PARITY_IMAGES=1 adds a 16 spp image hash (meant for --release). crust-render/tests/import_parity.rs compares every committed sample's `crust check --json` report, import phases removed, with its baseline. All baselines here were recorded from the direct importer (tasks 2.1-2.3, images still to record in a release run). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- Cargo.lock | 1 + crates/crust-core/Cargo.toml | 7 + crates/crust-core/src/lib.rs | 3 + crates/crust-core/src/live.rs | 37 + crates/crust-core/src/parity.rs | 388 ++++++ crates/crust-core/src/rt_world.rs | 121 ++ crates/crust-core/src/scene/usd_import/mod.rs | 3 + ...ancedMedCity_usd-951317bf2ce0f6ed-1.digest | 17 + .../absorber_usda-e5a517b5b36fd7e1-1.digest | 22 + ...ive_bounded_usda-871964d811713ece-1.digest | 21 + ...e_unbounded_usda-6ab4975baebe18ef-1.digest | 21 + ...ture_height_usda-9d28c7b3a9cad9f9-1.digest | 30 + ...rture_width_usda-c50e2f84bef7e6b7-1.digest | 30 + ...s_with_spec_usda-985ed763a0957571-1.digest | 18 + .../anamorphic_usda-c23c78df222208eb-1.digest | 40 + .../ancestor_usda-3171d13289efaaff-1.digest | 27 + .../ancestor_usda-74843e3cc431dad3-1.digest | 21 + ..._no_shutter_usda-dc5451565381429f-1.digest | 21 + .../animated_usda-84baf2836991de3b-1.digest | 16 + .../animated_usda-e242162a2dbef33a-1.digest | 16 + .../animation_usda-0b34d79521209b48-1.digest | 33 + .../animation_usda-5446fd76cda9ed55-1.digest | 29 + .../animation_usda-7b809f697af333f7-1.digest | 34 + .../animation_usda-87536adca26db1ce-1.digest | 28 + .../animation_usda-a8098f0bc76c3026-1.digest | 34 + .../animation_usda-b620cb992a2b7c7d-1.digest | 29 + .../animation_usda-b620cb992a2b7c7d-2.digest | 29 + .../animation_usda-beee1323479cf47f-1.digest | 33 + .../animation_usda-cca20ab6197e3823-1.digest | 33 + .../animation_usda-cfe8a27d275b06f7-1.digest | 29 + .../animation_usda-d9cfa85be82eff7f-1.digest | 33 + .../animation_usda-dc0987b1e9c0a44b-1.digest | 33 + .../aov_format_usda-3d1985fd48e4fb2d-1.digest | 22 + ...ovs_lookdev_usda-4a2c1502ba0a175e-1.digest | 30 + ...ovs_lookdev_usda-5ec9a160b78f998f-1.digest | 30 + ...ovs_lookdev_usda-6a98ab5ed25ffa78-1.digest | 30 + ...ovs_lookdev_usda-6d6e4a8f31366652-1.digest | 30 + ...ovs_lookdev_usda-803d9a5b24ae0e42-1.digest | 30 + ...ovs_lookdev_usda-c88cebf77c02e1c8-1.digest | 30 + .../aovs_lpe_usda-96034a4139733157-1.digest | 41 + .../aovs_lpe_usda-a43dc2277f16c84f-1.digest | 41 + .../aovs_lpe_usda-a43dc2277f16c84f-2.digest | 41 + .../aovs_usda-8f7e50636c58d0eb-1.digest | 29 + .../aovs_usda-8f7e50636c58d0eb-2.digest | 29 + .../aovs_usda-90b4ce2557c1c46e-1.digest | 29 + .../aovs_usda-cd31a05d6e49ceda-1.digest | 29 + ...area_lights_usda-07bd34a97e44c0ab-1.digest | 25 + ...area_lights_usda-6989a4d471c724cf-1.digest | 25 + ...rea_nothing_usda-bf90dbc7327fa98c-1.digest | 19 + ...ing_visible_usda-2f4e016170ad5820-1.digest | 19 + ...set_lookdev_usda-3b3a8108b3e9fae9-1.digest | 23 + ...set_lookdev_usda-41ce6942a2d54582-1.digest | 25 + ...set_lookdev_usda-6567e83e5076f9db-1.digest | 25 + ...set_lookdev_usda-9934bec515530278-1.digest | 23 + ...set_lookdev_usda-e4930eb0174b9dd7-1.digest | 21 + ...set_lookdev_usda-e7566c662eda92b2-1.digest | 23 + ...set_lookdev_usda-ec05a5f1f38841c6-1.digest | 23 + ...set_lookdev_usda-f9c370778b865b50-1.digest | 23 + ...thored_only_usda-e3c97926a3d11ac4-1.digest | 21 + ...ome_light_1_usda-bda39b6574f6f444-1.digest | 21 + ...op_streamed_usda-5c630271a8fcfd44-1.digest | 23 + .../backdrop_usda-2757fcfd84c07e64-1.digest | 21 + .../backdrop_usda-3818c88f3ea1e994-1.digest | 21 + .../backdrop_usda-e17ddb582cb97b8c-1.digest | 21 + ...lit_diffuse_usda-3dfba11cda1cd7c6-1.digest | 24 + ...acklit_hair_usda-59f16e3a1a4f9b6d-1.digest | 24 + .../bad_length_usda-3ab7b93f882199a8-1.digest | 21 + .../bad_volume_usda-00cc0d19953cb7f6-1.digest | 18 + ...banded_dome_usda-03eaa43cee7b25ab-1.digest | 19 + .../binding_usda-3ec3b212bbee4e90-1.digest | 27 + .../black_usda-ca3475f9863dc283-1.digest | 25 + ...body_acescg_usda-e4fe8984977e4dc5-1.digest | 21 + ...lur_default_usda-d0c5474e0dfbe769-1.digest | 18 + .../blur_false_usda-8f6712fd58e3e7dd-1.digest | 18 + ...its_synonym_usda-8cbc9a895bc4da45-1.digest | 18 + ...product_off_usda-ad5ae20ae0e9dd8e-1.digest | 18 + ..._product_on_usda-9e081a22d073a61a-1.digest | 18 + ...ucts_differ_usda-97d616ea3858dc6c-1.digest | 19 + ...oducts_same_usda-f8c20e3d816829cd-1.digest | 18 + ...s_spellings_usda-e53f8c9eb1fa898a-1.digest | 19 + ...ttings_only_usda-57bf8b1f820d60e9-1.digest | 18 + ...lur_synonym_usda-5c4201bf40a84766-1.digest | 18 + ...ur_warnings_usda-560d69942e1e7771-1.digest | 18 + .../blurred_usda-152a0fdff5c8c9a3-1.digest | 19 + .../both_usda-4af15817dabdb39f-1.digest | 20 + .../boundary_usda-85fcb2406c56d725-1.digest | 22 + ...n_materials_usda-040c16d0365cbc63-1.digest | 23 + ...broken_mesh_usda-217190c267ddf4a1-1.digest | 19 + .../cage_three_usda-65204db7a7ccaed8-1.digest | 31 + .../cam__W_B_usda-1827f96f8b5d0db1-1.digest | 16 + .../cam__W_B_usda-1827f96f8b5d0db1-2.digest | 16 + .../cam__W_B_usda-7a2f1b2d8ea63036-1.digest | 16 + .../cam__W_B_usda-7a2f1b2d8ea63036-2.digest | 16 + ...cam__W_Nope_usda-a6a9c22824149e8e-1.digest | 17 + ...cam__W_Nope_usda-a6a9c22824149e8e-2.digest | 17 + ...cam__W_Nope_usda-a6a9c22824149e8e-3.digest | 17 + .../cam_narrow_usda-dcae36868790f279-1.digest | 16 + .../cam_none_usda-1ef9fbd129b9560a-1.digest | 16 + .../cam_none_usda-2cb27e460ee10e43-1.digest | 16 + .../cam_wide_usda-098c8afc4872dbb7-1.digest | 16 + .../camera_dof_usda-f69bc93db8900a0e-1.digest | 16 + ...amera_ortho_usda-21d5879ec7de6dbf-1.digest | 18 + ...ion_unknown_usda-8a8cac00719054ad-1.digest | 16 + .../camera_rot_usda-c74e88c7205b56e5-1.digest | 16 + .../camera_usda-2d8f34945903545d-1.digest | 18 + ..._visibility_usda-0af373522188190d-1.digest | 21 + ..._visibility_usda-5198be21d5bb35d1-1.digest | 21 + ..._zero_focus_usda-ad065540da61feb4-1.digest | 16 + .../capped_usda-de82c45ab5a80eb6-1.digest | 20 + ...entred_both_usda-06ae7e6ad41f5b45-1.digest | 19 + ...ntred_frame_usda-200d23d9927b7966-1.digest | 19 + ...entred_open_usda-75e668aa9e5ecb2d-1.digest | 19 + ..._constant_0_usda-16acce3a8ae23e69-1.digest | 22 + ..._constant_2_usda-51380ed7a7ea4305-1.digest | 22 + ...nauthored_0_usda-a6d6a93dda32caf2-1.digest | 22 + ...nauthored_2_usda-bad2637a6a91c73a-1.digest | 22 + ...p_uniform_0_usda-ffe6596ba2b6a108-1.digest | 22 + ...p_uniform_2_usda-815f4bb2830bedd0-1.digest | 22 + ...m_indexed_0_usda-a6e2151559aa05f1-1.digest | 22 + ...m_indexed_2_usda-49181df1e2a2d359-1.digest | 22 + .../check/PointInstancedMedCity.usd.json | 200 ++++ .../check/animation.usda.json | 183 +++ .../import_baselines/check/aovs.usda.json | 219 ++++ .../import_baselines/check/aovs_lpe.usda.json | 235 ++++ .../check/cornellbox.usda.json | 193 +++ .../check/cornellbox_guided.usda.json | 183 +++ .../import_baselines/check/curves.usda.json | 183 +++ .../check/displacement.usda.json | 197 +++ .../check/dome_backdrop.usda.json | 183 +++ .../check/domelight.usda.json | 183 +++ .../data/import_baselines/check/fog.usda.json | 183 +++ .../import_baselines/check/hair.usda.json | 183 +++ .../check/hair_variation.usda.json | 183 +++ .../check/implicit_shapes.usda.json | 183 +++ .../check/instancing.usda.json | 183 +++ .../check/light_linking.usda.json | 183 +++ .../check/light_visibility.usda.json | 183 +++ .../check/many_lights.usda.json | 183 +++ .../check/mass_spike.usda.json | 183 +++ .../check/materialx_basic.usda.json | 197 +++ .../check/materialx_cutout.usda.json | 183 +++ .../check/materialx_emissive.usda.json | 197 +++ .../check/materialx_lion.usda.json | 197 +++ .../check/materialx_showcase.usda.json | 197 +++ .../check/materialx_subsurface.usda.json | 183 +++ .../check/materialx_surfaces.usda.json | 183 +++ .../check/materialx_teapot.usda.json | 197 +++ .../check/materialx_volume.usda.json | 183 +++ .../check/motionblur.usda.json | 183 +++ .../check/motionvector.usda.json | 189 +++ .../check/nested_instancing.usda.json | 183 +++ .../check/openpbr_showcase.usda.json | 183 +++ .../import_baselines/check/precomp.usda.json | 217 ++++ .../check/primvar_aovs.usda.json | 195 +++ .../check/ptex_quads.usda.json | 183 +++ .../check/purpose_bindings.usda.json | 183 +++ .../check/pxr_displace.usda.json | 183 +++ .../check/rectlight.usda.json | 183 +++ .../check/render_passes.usda.json | 184 +++ .../import_baselines/check/smoke.usda.json | 183 +++ .../check/subdivision.usda.json | 197 +++ .../check/subdivision_adaptive.usda.json | 183 +++ .../check/thin_window.usda.json | 183 +++ .../import_baselines/check/usdlux.usda.json | 183 +++ .../check/usdpreview_textured.usda.json | 197 +++ .../check/veach_mis.usda.json | 183 +++ .../clean_usda-d4e60f418d0e5485-1.digest | 16 + .../clear_usda-487518c3a2bde507-1.digest | 26 + .../closest_usda-b1b06704b4564b8c-1.digest | 26 + ...r_space_api_usda-7258fb7a16ddde2f-1.digest | 25 + ...erature_off_usda-d2963845fd5e72c4-1.digest | 21 + ...temperature_usda-a7d9f5fccba89fff-1.digest | 21 + ...ation_alias_usda-ea168514e7b00460-1.digest | 16 + ...nsation_off_usda-37a366efa8d50980-1.digest | 16 + ...nstant_cage_usda-6838009dc4d51123-1.digest | 22 + ...nt_none_off_usda-4da7234b198fc34c-1.digest | 22 + ...nstant_none_usda-3f38201b0c964211-1.digest | 22 + .../convolve_usda-ae27710a0c217615-1.digest | 26 + .../copper_usda-856b7fd7384c75f6-1.digest | 20 + ...lbox_guided_usda-1f6a1535ca10a892-1.digest | 55 + ...lbox_guided_usda-7da4bd79d2eda8bf-1.digest | 55 + ...lbox_guided_usda-7da4bd79d2eda8bf-2.digest | 55 + ...lbox_guided_usda-9ca98c606b8b14bb-1.digest | 55 + ...lbox_guided_usda-9ca98c606b8b14bb-2.digest | 55 + ...lbox_guided_usda-dddcb8fd2ce59c1f-1.digest | 55 + ...box_lookdev_usda-28fa5fe21d50ecee-1.digest | 40 + ...box_lookdev_usda-8e3a0cbcd6f4b7b0-1.digest | 40 + ...box_lookdev_usda-937b5a30e0d1b2a9-1.digest | 40 + ...box_lookdev_usda-a0bb21684d68d231-1.digest | 40 + ...box_lookdev_usda-f5ac4ca7187d0afa-1.digest | 44 + .../cornellbox_usda-015a68615622d007-1.digest | 40 + .../cornellbox_usda-015a68615622d007-2.digest | 40 + .../cornellbox_usda-021e0477d02e8b56-1.digest | 40 + .../cornellbox_usda-08de1880a086a764-1.digest | 40 + .../cornellbox_usda-0c23ef94659b6f93-1.digest | 40 + .../cornellbox_usda-0c23ef94659b6f93-2.digest | 40 + .../cornellbox_usda-108152a6f960262b-1.digest | 40 + .../cornellbox_usda-108152a6f960262b-2.digest | 40 + .../cornellbox_usda-15e73f9974620a1a-1.digest | 39 + .../cornellbox_usda-16d2af5b91e595bd-1.digest | 40 + .../cornellbox_usda-1aeeae0fba6dbe97-1.digest | 39 + .../cornellbox_usda-211d55a31b3d62fa-1.digest | 40 + .../cornellbox_usda-211d55a31b3d62fa-2.digest | 40 + .../cornellbox_usda-248f67f6240f7680-1.digest | 40 + .../cornellbox_usda-254e9b608e6c20f0-1.digest | 39 + .../cornellbox_usda-265ef4c54c4d2534-1.digest | 40 + .../cornellbox_usda-2711a47b10d83a96-1.digest | 40 + .../cornellbox_usda-2772d706794ce66b-1.digest | 40 + .../cornellbox_usda-2772d706794ce66b-2.digest | 40 + .../cornellbox_usda-2772d706794ce66b-3.digest | 40 + .../cornellbox_usda-2772d706794ce66b-4.digest | 40 + .../cornellbox_usda-2772d706794ce66b-5.digest | 40 + .../cornellbox_usda-2772d706794ce66b-6.digest | 40 + .../cornellbox_usda-2cf51e7bf43f4fa8-1.digest | 39 + .../cornellbox_usda-2dd566e6043ed6b0-1.digest | 40 + .../cornellbox_usda-2dd566e6043ed6b0-2.digest | 40 + .../cornellbox_usda-2dd566e6043ed6b0-3.digest | 40 + .../cornellbox_usda-3a12e7835578a84e-1.digest | 39 + .../cornellbox_usda-3a2af9f3e570b458-1.digest | 39 + .../cornellbox_usda-3c316a1edd099ef0-1.digest | 39 + .../cornellbox_usda-3c74fafa1c66c123-1.digest | 40 + .../cornellbox_usda-3cac72b0550f05b3-1.digest | 39 + .../cornellbox_usda-450b164daa4e0f80-1.digest | 40 + .../cornellbox_usda-48a104b8a2799466-1.digest | 39 + .../cornellbox_usda-518e1fd5063f7227-1.digest | 40 + .../cornellbox_usda-563fb301d9f1f469-1.digest | 40 + ...cornellbox_usda-563fb301d9f1f469-10.digest | 40 + ...cornellbox_usda-563fb301d9f1f469-11.digest | 40 + ...cornellbox_usda-563fb301d9f1f469-12.digest | 40 + ...cornellbox_usda-563fb301d9f1f469-13.digest | 40 + ...cornellbox_usda-563fb301d9f1f469-14.digest | 40 + ...cornellbox_usda-563fb301d9f1f469-15.digest | 40 + ...cornellbox_usda-563fb301d9f1f469-16.digest | 40 + ...cornellbox_usda-563fb301d9f1f469-17.digest | 40 + ...cornellbox_usda-563fb301d9f1f469-18.digest | 40 + ...cornellbox_usda-563fb301d9f1f469-19.digest | 40 + .../cornellbox_usda-563fb301d9f1f469-2.digest | 40 + ...cornellbox_usda-563fb301d9f1f469-20.digest | 40 + ...cornellbox_usda-563fb301d9f1f469-21.digest | 40 + ...cornellbox_usda-563fb301d9f1f469-22.digest | 40 + ...cornellbox_usda-563fb301d9f1f469-23.digest | 40 + ...cornellbox_usda-563fb301d9f1f469-24.digest | 40 + ...cornellbox_usda-563fb301d9f1f469-25.digest | 40 + .../cornellbox_usda-563fb301d9f1f469-3.digest | 40 + .../cornellbox_usda-563fb301d9f1f469-4.digest | 40 + .../cornellbox_usda-563fb301d9f1f469-5.digest | 40 + .../cornellbox_usda-563fb301d9f1f469-6.digest | 40 + .../cornellbox_usda-563fb301d9f1f469-7.digest | 40 + .../cornellbox_usda-563fb301d9f1f469-8.digest | 40 + .../cornellbox_usda-563fb301d9f1f469-9.digest | 40 + .../cornellbox_usda-5d064faa753e9d7b-1.digest | 39 + .../cornellbox_usda-5e1b400d2f0d70bc-1.digest | 40 + .../cornellbox_usda-5ff835103ecfad3e-1.digest | 39 + .../cornellbox_usda-61a13a775605a0ce-1.digest | 39 + .../cornellbox_usda-61e87f520a6a2dff-1.digest | 39 + .../cornellbox_usda-63b1f6980e443f71-1.digest | 39 + .../cornellbox_usda-67753350f4f997a4-1.digest | 40 + .../cornellbox_usda-67d6afd449214b25-1.digest | 39 + .../cornellbox_usda-7300aa94ecae6c37-1.digest | 39 + .../cornellbox_usda-7478515f32354718-1.digest | 40 + .../cornellbox_usda-7ba56e4f79d4195f-1.digest | 40 + .../cornellbox_usda-7e55fcb3620f4663-1.digest | 40 + .../cornellbox_usda-7f63dd70a33e2183-1.digest | 40 + .../cornellbox_usda-816ed2710215c157-1.digest | 40 + .../cornellbox_usda-816ed2710215c157-2.digest | 40 + .../cornellbox_usda-816ed2710215c157-3.digest | 40 + .../cornellbox_usda-816ed2710215c157-4.digest | 40 + .../cornellbox_usda-88df24aa0618a335-1.digest | 39 + .../cornellbox_usda-88e25ed80282bc79-1.digest | 39 + .../cornellbox_usda-88eeabb6ac92eef4-1.digest | 39 + .../cornellbox_usda-89c626c1e078ca38-1.digest | 40 + .../cornellbox_usda-8d8e99f6790507a9-1.digest | 40 + .../cornellbox_usda-8d8e99f6790507a9-2.digest | 40 + .../cornellbox_usda-8e692f67a3c276f4-1.digest | 40 + .../cornellbox_usda-8ecb1db3e29a9e13-1.digest | 39 + .../cornellbox_usda-93e84687c267227a-1.digest | 40 + .../cornellbox_usda-9514c8683d2c9e4d-1.digest | 39 + .../cornellbox_usda-96761b8033e5fb3c-1.digest | 40 + .../cornellbox_usda-987ee05acd715dfa-1.digest | 39 + .../cornellbox_usda-99aef82ca410b677-1.digest | 40 + .../cornellbox_usda-9a0515f0d918dd40-1.digest | 40 + .../cornellbox_usda-9c84bf52ec0561b1-1.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-10.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-100.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-101.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-102.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-103.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-104.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-105.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-106.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-107.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-108.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-109.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-11.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-110.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-111.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-112.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-113.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-114.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-115.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-116.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-117.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-118.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-119.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-12.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-120.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-121.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-122.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-123.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-124.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-125.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-126.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-127.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-128.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-129.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-13.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-130.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-131.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-132.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-133.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-134.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-135.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-136.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-137.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-138.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-139.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-14.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-140.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-141.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-142.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-143.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-144.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-145.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-146.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-147.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-148.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-149.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-15.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-150.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-151.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-152.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-153.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-154.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-155.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-156.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-157.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-158.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-159.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-16.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-160.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-161.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-162.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-163.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-164.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-165.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-166.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-167.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-168.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-169.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-17.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-170.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-171.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-172.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-173.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-174.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-175.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-176.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-177.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-178.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-179.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-18.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-180.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-181.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-182.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-183.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-184.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-185.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-186.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-187.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-188.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-189.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-19.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-190.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-191.digest | 40 + ...ornellbox_usda-9c84bf52ec0561b1-192.digest | 40 + .../cornellbox_usda-9c84bf52ec0561b1-2.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-20.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-21.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-22.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-23.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-24.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-25.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-26.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-27.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-28.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-29.digest | 40 + .../cornellbox_usda-9c84bf52ec0561b1-3.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-30.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-31.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-32.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-33.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-34.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-35.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-36.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-37.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-38.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-39.digest | 40 + .../cornellbox_usda-9c84bf52ec0561b1-4.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-40.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-41.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-42.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-43.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-44.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-45.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-46.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-47.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-48.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-49.digest | 40 + .../cornellbox_usda-9c84bf52ec0561b1-5.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-50.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-51.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-52.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-53.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-54.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-55.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-56.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-57.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-58.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-59.digest | 40 + .../cornellbox_usda-9c84bf52ec0561b1-6.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-60.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-61.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-62.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-63.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-64.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-65.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-66.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-67.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-68.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-69.digest | 40 + .../cornellbox_usda-9c84bf52ec0561b1-7.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-70.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-71.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-72.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-73.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-74.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-75.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-76.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-77.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-78.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-79.digest | 40 + .../cornellbox_usda-9c84bf52ec0561b1-8.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-80.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-81.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-82.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-83.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-84.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-85.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-86.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-87.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-88.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-89.digest | 40 + .../cornellbox_usda-9c84bf52ec0561b1-9.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-90.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-91.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-92.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-93.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-94.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-95.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-96.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-97.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-98.digest | 40 + ...cornellbox_usda-9c84bf52ec0561b1-99.digest | 40 + .../cornellbox_usda-a06c636245c00028-1.digest | 39 + .../cornellbox_usda-a18d02fea0ac9ae3-1.digest | 40 + .../cornellbox_usda-a18d02fea0ac9ae3-2.digest | 40 + .../cornellbox_usda-a18d02fea0ac9ae3-3.digest | 40 + .../cornellbox_usda-a18d02fea0ac9ae3-4.digest | 40 + .../cornellbox_usda-a18d02fea0ac9ae3-5.digest | 40 + .../cornellbox_usda-a18d02fea0ac9ae3-6.digest | 40 + .../cornellbox_usda-a1b6b7b33175c629-1.digest | 40 + .../cornellbox_usda-a6c99e7589fd5bbe-1.digest | 40 + .../cornellbox_usda-b04eda6325f3cbbf-1.digest | 40 + .../cornellbox_usda-b04eda6325f3cbbf-2.digest | 40 + .../cornellbox_usda-b04eda6325f3cbbf-3.digest | 40 + .../cornellbox_usda-b04eda6325f3cbbf-4.digest | 40 + .../cornellbox_usda-b194c866668b8c75-1.digest | 40 + .../cornellbox_usda-b32b870ba5ca59f9-1.digest | 39 + .../cornellbox_usda-b3d2bc2ed9037c82-1.digest | 40 + .../cornellbox_usda-b62de59b31ca0e80-1.digest | 39 + .../cornellbox_usda-b6c7e44d8560abd5-1.digest | 40 + .../cornellbox_usda-bb1cc653d4ac376a-1.digest | 40 + .../cornellbox_usda-bb1cc653d4ac376a-2.digest | 40 + .../cornellbox_usda-bb1cc653d4ac376a-3.digest | 40 + .../cornellbox_usda-bb1cc653d4ac376a-4.digest | 40 + .../cornellbox_usda-bb1cc653d4ac376a-5.digest | 40 + .../cornellbox_usda-bba4bdda287871cf-1.digest | 40 + .../cornellbox_usda-bba4bdda287871cf-2.digest | 40 + .../cornellbox_usda-be34c0d526943796-1.digest | 40 + .../cornellbox_usda-cb7b0dee2139a326-1.digest | 40 + .../cornellbox_usda-cdab40c0e9cba23f-1.digest | 40 + .../cornellbox_usda-cf47b345f0453895-1.digest | 40 + .../cornellbox_usda-d3d144cf7b8b758b-1.digest | 39 + .../cornellbox_usda-d5734d22b9c37571-1.digest | 40 + .../cornellbox_usda-d5734d22b9c37571-2.digest | 40 + .../cornellbox_usda-da1f2707813489ef-1.digest | 39 + .../cornellbox_usda-df23dfac5ede9611-1.digest | 40 + .../cornellbox_usda-df23dfac5ede9611-2.digest | 40 + .../cornellbox_usda-df23dfac5ede9611-3.digest | 40 + .../cornellbox_usda-e82204be97718dbd-1.digest | 40 + .../cornellbox_usda-e82204be97718dbd-2.digest | 40 + .../cornellbox_usda-e82204be97718dbd-3.digest | 40 + .../cornellbox_usda-e82204be97718dbd-4.digest | 40 + .../cornellbox_usda-ec6907d7b5edc24c-1.digest | 39 + .../cornellbox_usda-ed05b9821202ec22-1.digest | 40 + .../cornellbox_usda-efc8f2e410ea1edf-1.digest | 39 + .../cornellbox_usda-f0235d211948c8ae-1.digest | 39 + .../cornellbox_usda-f0d9751b5af0e124-1.digest | 39 + .../cornellbox_usda-f3f2b534bfcc0db6-1.digest | 40 + .../cornellbox_usda-f3f2b534bfcc0db6-2.digest | 40 + .../cornellbox_usda-f3f2b534bfcc0db6-3.digest | 40 + .../cornellbox_usda-f3f2b534bfcc0db6-4.digest | 40 + .../cornellbox_usda-f52f4933a61a7b17-1.digest | 39 + .../cornellbox_usda-f72ab0ee474423bf-1.digest | 39 + .../cornellbox_usda-f74efd8c1a39793d-1.digest | 40 + .../cornellbox_usda-f74efd8c1a39793d-2.digest | 40 + .../cornellbox_usda-f74efd8c1a39793d-3.digest | 40 + .../cornellbox_usda-f91ae1b4cc3a5130-1.digest | 40 + .../cornellbox_usda-f91ae1b4cc3a5130-2.digest | 40 + .../cornellbox_usda-f91ae1b4cc3a5130-3.digest | 40 + .../cornellbox_usda-f91ae1b4cc3a5130-4.digest | 40 + .../cornellbox_usda-fc498f82a9cb979f-1.digest | 40 + .../counters_usda-4398822590228cb6-1.digest | 17 + .../curves_usda-49b1041fa43b5df8-1.digest | 20 + .../curves_usda-68ff2953cfbdeb73-1.digest | 31 + .../curves_usda-68ff2953cfbdeb73-2.digest | 31 + .../curves_usda-6c82e9cb233e7c1e-1.digest | 31 + .../curves_usda-bf538717464b4055-1.digest | 31 + .../curves_usda-e59f2a157a03b823-1.digest | 30 + .../cycle_usda-6c5127dceb205457-1.digest | 27 + .../cyl_far_usda-14bf93b40e3110ed-1.digest | 20 + .../cyl_near_usda-8880b5f4401667ce-1.digest | 20 + ...roto_nested_usda-337785a80bd25b4b-1.digest | 21 + ..._proto_once_usda-5861fac834a9592e-1.digest | 19 + ...proto_twice_usda-9d0b4387b8ae21e9-1.digest | 21 + ...cyl_unnamed_usda-6b8943ce79ec798b-1.digest | 20 + ...inder_light_usda-a8869b560165f646-1.digest | 21 + .../dangling_usda-33cdcee1c03a3f62-1.digest | 21 + ...fault_links_usda-fa4bfc17658672ca-1.digest | 23 + ...rate_lights_usda-c119df2817a52e22-1.digest | 17 + ...g_alone_ref_usda-ad2f6d6f9f5a6b34-1.digest | 20 + ...icing_alone_usda-d2a904287b895157-1.digest | 20 + ...dicing_near_usda-2b8cc53942e05573-1.digest | 20 + ...ing_nothing_usda-02863a7cb9ea2edb-1.digest | 21 + ...oduct_diced_usda-bde5502fcf67625f-1.digest | 20 + ...uct_ref_cam_usda-206ed631706e669f-1.digest | 20 + ...ct_ref_near_usda-a7f21d55b08b22eb-1.digest | 20 + ...ing_product_usda-0fe0e77ccc289c1f-1.digest | 20 + ...ng_property_usda-541c1a7591a9b5c0-1.digest | 21 + .../dicing_ref_usda-450597df8121a96c-1.digest | 20 + ...dicing_self_usda-9d54e5a1b138ff5e-1.digest | 20 + ...hrough_near_usda-43e145636209967d-1.digest | 20 + ..._unauthored_usda-d941af55d3f95425-1.digest | 20 + ...ing_unnamed_usda-1911d7362c693947-1.digest | 21 + ...icing_xform_usda-fdb39a50b9314e69-1.digest | 21 + ...bled_broken_usda-3e31009d90ef26ec-1.digest | 16 + .../disk_light_usda-720389dc27e2a4c4-1.digest | 21 + ...placed_rest_usda-d70fe6fb257dd183-1.digest | 23 + ...isplacement_usda-03e54e80075ba30c-1.digest | 36 + ...isplacement_usda-180936ed9cbacb0b-1.digest | 35 + ...isplacement_usda-4db664e792f21a27-1.digest | 35 + ...isplacement_usda-5e2aa9f4f1dfd37e-1.digest | 35 + ...isplacement_usda-f5f1d4dfaa9feea3-1.digest | 36 + ...isplacement_usda-f5f1d4dfaa9feea3-2.digest | 36 + ...efault_lens_usda-c199c396bb781cc0-1.digest | 16 + ...dof_default_usda-57e78e0586982b2f-1.digest | 18 + ...ed_bad_unit_usda-b76c543fc6398eaa-1.digest | 16 + ...of_disabled_usda-420b407ea5317d3e-1.digest | 16 + ...llback_lens_usda-bff40e44436746b1-1.digest | 17 + ...ack_pinhole_usda-c69160a93b244f8f-1.digest | 17 + ...product_off_usda-ec7655fdc64080b7-1.digest | 18 + ..._product_on_usda-642bf95d97820f23-1.digest | 16 + ..._product_on_usda-9b87c5f936703494-1.digest | 18 + ...ducts_agree_usda-1f54c058d539370a-1.digest | 18 + ...ucts_differ_usda-a379642f2edc4361-1.digest | 19 + ...ts_disagree_usda-8e35ec3ea864f596-1.digest | 17 + ...ttings_only_usda-dc3a7d2e89c34444-1.digest | 18 + ...me_backdrop_usda-06f3801d332f35bd-1.digest | 29 + ...me_backdrop_usda-1bbad8f86d8900fb-1.digest | 29 + ...me_backdrop_usda-1bbad8f86d8900fb-2.digest | 29 + ...me_backdrop_usda-2d5a500fad6dcfad-1.digest | 29 + ...me_backdrop_usda-4222ab94f00b4ba4-1.digest | 29 + ...me_backdrop_usda-43c08f98bb3b74e6-1.digest | 29 + ...me_backdrop_usda-7b71c02186033a9a-1.digest | 29 + ...me_backdrop_usda-88f2729f3b3188bb-1.digest | 29 + ...me_backdrop_usda-9d834df56ca3b1ac-1.digest | 29 + ...me_backdrop_usda-af5d67f7909dc65a-1.digest | 29 + ...me_backdrop_usda-b592bc76e2706492-1.digest | 29 + ...me_backdrop_usda-b9dc71e44c528187-1.digest | 29 + ..._camera_off_usda-b5a9eac417c3bdbb-1.digest | 21 + ..._crust_wins_usda-0bfe2eb5bc4f83c5-1.digest | 19 + ...ome_default_usda-7c13b46b00b734f8-1.digest | 19 + ...xclude_bsdf_usda-fb9c2dcc2b05783e-1.digest | 22 + ...clude_power_usda-a488dc90e33bf33b-1.digest | 22 + ..._scene_z_up_usda-4a3a839d045f42ae-1.digest | 19 + ...0_reference_usda-e3c0f10234d60e6f-1.digest | 19 + ...ht_1_pole_y_usda-b39274d8389c93ec-1.digest | 19 + ...ht_1_pole_z_usda-3ab2d43568c3a9ca-1.digest | 19 + ...t_1_rotated_usda-96a7a52ba96f792f-1.digest | 19 + ...scene_no_up_usda-db7f3549433e3ca1-1.digest | 19 + ..._scene_y_up_usda-cef3793797de068b-1.digest | 19 + ...ome_light_1_usda-771e6d7e193401ac-1.digest | 19 + ...ight_1_z_up_usda-d2385f77c8ec6eb4-1.digest | 19 + .../dome_light_usda-f46a39c15abcc98f-1.digest | 25 + ...e_no_assets_usda-b8800e7204db6d4a-1.digest | 19 + .../dome_power_usda-abfbd64e964dc44d-1.digest | 25 + ...e_ri_camera_usda-acf95ad397fe1930-1.digest | 19 + .../domelight_usda-22dcdc7630c52071-1.digest | 31 + .../domelight_usda-23290848cbd88d05-1.digest | 32 + .../domelight_usda-23290848cbd88d05-2.digest | 32 + .../domelight_usda-5a2a25c11957ed70-1.digest | 32 + .../domelight_usda-5d8f200125b9fd09-1.digest | 31 + .../domelight_usda-7f00a6c7fd4959fa-1.digest | 32 + .../drop_usda-214f7b543bee6df1-1.digest | 60 + .../drop_usda-4c62c449da4ae2d3-1.digest | 60 + .../edge_false_usda-dfb19c6c90615a56-1.digest | 26 + .../edge_true_usda-bddf6fe338522a86-1.digest | 26 + .../edges_usda-9743a0d0ff86dafe-1.digest | 26 + .../edits_usda-077b57f7b0804f19-1.digest | 40 + .../edits_usda-085dfd17ac95282d-1.digest | 29 + .../edits_usda-188f318a9146ce97-1.digest | 22 + .../edits_usda-1966e17597c3de42-1.digest | 22 + .../edits_usda-19a787b3bcc74617-1.digest | 26 + .../edits_usda-23003ea81a2d2024-1.digest | 45 + .../edits_usda-23fb1cff1e547a51-1.digest | 23 + .../edits_usda-24cc8ef3649b336a-1.digest | 40 + .../edits_usda-30c8f1f2b1117913-1.digest | 46 + .../edits_usda-339a76e50715bbe3-1.digest | 23 + .../edits_usda-3450a9d6105e89a6-1.digest | 45 + .../edits_usda-411d0a61690b9e71-1.digest | 22 + .../edits_usda-43a14b5e78154dda-1.digest | 44 + .../edits_usda-483e16501c86632a-1.digest | 44 + .../edits_usda-4966b50c696e8080-1.digest | 30 + .../edits_usda-4cf921963a4325e9-1.digest | 46 + .../edits_usda-4d3c65f04d4eaea9-1.digest | 23 + .../edits_usda-4dd694c9b20daa77-1.digest | 30 + .../edits_usda-516372ff4968411b-1.digest | 30 + .../edits_usda-53a62fecc28e0de7-1.digest | 30 + .../edits_usda-5521dd197a77f33e-1.digest | 39 + .../edits_usda-57fa1e33af4efac6-1.digest | 29 + .../edits_usda-5b418d865896d977-1.digest | 24 + .../edits_usda-5b418d865896d977-2.digest | 24 + .../edits_usda-5f2834619e774ab4-1.digest | 30 + .../edits_usda-6019827f6d635824-1.digest | 33 + .../edits_usda-65b79e09c14be76d-1.digest | 30 + .../edits_usda-662e56b1a93d2d66-1.digest | 44 + .../edits_usda-6deff31ef60f6033-1.digest | 23 + .../edits_usda-7239cb83230ea59e-1.digest | 23 + .../edits_usda-786eedaaaa2108bd-1.digest | 22 + .../edits_usda-8f9cca718b125c47-1.digest | 23 + .../edits_usda-8f9cca718b125c47-2.digest | 23 + .../edits_usda-939ae62aa1013f1f-1.digest | 29 + .../edits_usda-9785472850c84b20-1.digest | 30 + .../edits_usda-9829e1b01f60d251-1.digest | 43 + .../edits_usda-9829e1b01f60d251-2.digest | 43 + .../edits_usda-9f3ec2b0f2000d47-1.digest | 23 + .../edits_usda-a15a160797d16740-1.digest | 30 + .../edits_usda-a15f50a6d270c4d6-1.digest | 33 + .../edits_usda-a2d6c26d716466c1-1.digest | 29 + .../edits_usda-a693bfb772c311e2-1.digest | 21 + .../edits_usda-a9ea182c81eccd64-1.digest | 45 + .../edits_usda-aafb5513a53fa62e-1.digest | 46 + .../edits_usda-b0da370b544b77b5-1.digest | 46 + .../edits_usda-b14405d5563d3059-1.digest | 30 + .../edits_usda-b271371e2517722b-1.digest | 30 + .../edits_usda-b80eb10c2ba34178-1.digest | 33 + .../edits_usda-b8d0f20bfaa82329-1.digest | 23 + .../edits_usda-c0b43128dd170a60-1.digest | 22 + .../edits_usda-c1012e35073052d4-1.digest | 23 + .../edits_usda-c5e06d108f13878a-1.digest | 29 + .../edits_usda-c6a1743cb004bfc8-1.digest | 29 + .../edits_usda-cfa1cdf26c62d04e-1.digest | 40 + .../edits_usda-d51c63f9aa3e9706-1.digest | 39 + .../edits_usda-d6c1dd24567db6e1-1.digest | 23 + .../edits_usda-dcd2a1d09ecabfda-1.digest | 45 + .../edits_usda-e3a820d4d01acabc-1.digest | 45 + .../edits_usda-ea33d0579957ea29-1.digest | 41 + .../edits_usda-ec4aae2ab8a0f13f-1.digest | 33 + .../edits_usda-efadd5d5ae9b33c8-1.digest | 22 + .../edits_usda-f437292a1baf4562-1.digest | 33 + .../edits_usda-f7edbb7e619c3f5d-1.digest | 23 + .../edits_usda-fdfde88486c6dc74-1.digest | 21 + ...source_name_usda-acd517e82c0f53e1-1.digest | 18 + .../empty_usda-c1bba32cb87c83e9-1.digest | 17 + .../exposure_0_usda-c142af23c7dc6585-1.digest | 26 + .../exposure_2_usda-1ae682494eb4e641-1.digest | 26 + .../exposure_usda-0139c7326dc66b4b-1.digest | 21 + .../expression_usda-843ebd908965795b-1.digest | 32 + .../expression_usda-e90ffc3af7a5e58d-1.digest | 32 + .../fallback_usda-0dcbe995ba9d33f5-1.digest | 32 + .../fallbacks_usda-19de7bd844b31582-1.digest | 29 + ...ght_blocked_usda-ad271da815e04f1e-1.digest | 29 + ...light_clear_usda-4072c77a8d9198cd-1.digest | 25 + ...ight_dimmed_usda-8a326222fcc01e51-1.digest | 26 + .../filters_usda-c37f75b53580c4aa-1.digest | 18 + .../five_usda-1346633108536d3b-1.digest | 26 + .../five_usda-98f6c3806296ddf6-1.digest | 26 + .../fog_a_usda-c25ea86ab9b74771-1.digest | 25 + .../fog_b_usda-d165df586bcbb934-1.digest | 25 + .../fog_bsdf_usda-240806b5ed98a443-1.digest | 29 + ...cluded_bsdf_usda-9ebfc40e02ef831f-1.digest | 21 + ...luded_power_usda-a0c514c4c53c3bc4-1.digest | 21 + .../fog_light_usda-ac22cdb8dae42d75-1.digest | 29 + ...og_lit_bsdf_usda-4f776a8e8b44bb17-1.digest | 21 + ...g_lit_power_usda-cbade45198a3c38a-1.digest | 21 + .../fog_power_usda-c8d64f5dff77f2e7-1.digest | 29 + .../fog_usda-219213dd24619244-1.digest | 27 + .../fog_usda-4d459b664a7ea673-1.digest | 27 + .../fog_usda-4d459b664a7ea673-2.digest | 27 + .../fog_usda-509c893b29b09cb4-1.digest | 18 + .../fog_usda-54b48891484e98a0-1.digest | 27 + .../fog_usda-643d53c126eee84d-1.digest | 27 + .../fog_usda-85a4ccafddfcce6b-1.digest | 27 + .../fog_usda-85a4ccafddfcce6b-2.digest | 27 + .../fog_usda-85a4ccafddfcce6b-3.digest | 27 + .../fog_usda-85a4ccafddfcce6b-4.digest | 27 + .../fog_usda-85a4ccafddfcce6b-5.digest | 27 + .../fog_usda-c4be6859ecb41784-1.digest | 27 + .../fog_wall_usda-d41794b69bda1696-1.digest | 33 + ...oreign_mtlx_usda-1e9da30a7325ba81-1.digest | 20 + .../fov_cm_usda-aeeac260878050ff-1.digest | 16 + .../fov_m_usda-b134eebe4c048026-1.digest | 16 + .../frustum_usda-78a6eed72a138fc6-1.digest | 24 + ...ght_s_shape_usda-ca8302fa13315ae0-1.digest | 41 + ...a_transform_usda-b99d3970dc3191b0-1.digest | 41 + ...iced_rotate_usda-e8c2998b278e7b4c-1.digest | 44 + ...d_translate_usda-0b0bd3f1a63779cf-1.digest | 44 + ...ve_exposure_usda-6a1bc74cbd2099fa-1.digest | 46 + ...do_exposure_usda-8cd035220544928f-1.digest | 46 + ...base_colour_usda-185573627cdcf2a6-1.digest | 41 + ...carried_fog_usda-b5397418f77073c1-1.digest | 30 + ...ged_on_disk_usda-0c8b6f9bfb68059a-1.digest | 41 + ...lbox_rotate_usda-76b2e5fb271f6c0c-1.digest | 41 + ...x_translate_usda-ab7177593fd6f36b-1.digest | 41 + ..._demoted_K1_usda-e328a49ee95fd405-1.digest | 39 + ..._demoted_K4_usda-d0354a764756e3b4-1.digest | 39 + ...d__bad_unit_usda-bf5aa1ce7a54f9e2-1.digest | 23 + ...th_of_field_usda-61f50bc7be824751-1.digest | 23 + ...dden_rotate_usda-82abbe3ed6112a4c-1.digest | 29 + ...n_translate_usda-a8196d9e2f17ecbf-1.digest | 29 + ...ome_texture_usda-c3e04747e405ac6e-1.digest | 41 + .../full_drop_usda-a61417609925c673-1.digest | 78 ++ ...ll_exposure_usda-fe83c794ae61f2a2-1.digest | 41 + .../full_fixed_usda-adb1781d64f694c8-1.digest | 35 + ...base_colour_usda-dd47b7dff78ee58e-1.digest | 22 + ...mvar_undone_usda-318d40a5ee9b02d7-1.digest | 22 + ...its_primvar_usda-98bf5373a7d5697f-1.digest | 22 + ...linked_Fill_usda-cb706e1f9f991794-1.digest | 44 + ..._linked_Key_usda-db486cee2438fb3b-1.digest | 44 + ..._linked_Rim_usda-2874a091d25b590b-1.digest | 44 + ...d_undo_Fill_usda-a93137db50fd28c8-1.digest | 44 + ...ed_undo_Key_usda-1239d0ab4241ef3f-1.digest | 44 + ...ed_undo_Rim_usda-03ca7b9265c405f0-1.digest | 44 + ...l_max_depth_usda-1164faed927e051e-1.digest | 41 + ...shes_rotate_usda-402e98fde9a693c4-1.digest | 29 + ...s_translate_usda-ee4192f2a802af39-1.digest | 29 + ..._new_camera_usda-73f0dca6c14ef5d7-1.digest | 29 + ...iced_rotate_usda-d7adb4497350da61-1.digest | 23 + ...d_translate_usda-6bfd0fb9adcbe164-1.digest | 23 + ...en_exposure_usda-b0790c819b4e0d97-1.digest | 23 + ...do_exposure_usda-c40080b74d3fb5a6-1.digest | 23 + ...d_rewritten_usda-03a6e3d1a01a5551-1.digest | 35 + ...d_roughness_usda-498bc078c77be0a5-1.digest | 30 + ...o_roughness_usda-7143361153e7f548-1.digest | 30 + ...Pref_undone_usda-774a34f5226e3639-1.digest | 23 + ...s_with_Pref_usda-8674ccd68263fd36-1.digest | 23 + ...re_exported_usda-39edd0f167e79907-1.digest | 41 + ..._rect_light_usda-efc21afcf05d7959-1.digest | 41 + ...ll_reloaded_usda-5a765fd50dde24be-1.digest | 35 + ...sform_stack_usda-38a53b23a8f224c2-1.digest | 29 + ...ptive_scene_usda-bde6533023d6ccd8-1.digest | 46 + ...ptive_scene_usda-721dc26887b364a7-1.digest | 45 + ...duct_camera_usda-0a3badd9a91b1027-1.digest | 29 + ...ings_camera_usda-2b1ab3b4034d45bb-1.digest | 29 + ...ying_camera_usda-56381435fa6b51f5-1.digest | 33 + ...l_roughness_usda-a1ffe89d435678bc-1.digest | 41 + ...ull_sampler_usda-27ca674891cf7c52-1.digest | 41 + ...ull_scatter_usda-80ff37fcf1ff9f3c-1.digest | 585 +++++++++ ...ared_shader_usda-bcebf475c7d9ca1f-1.digest | 41 + ...t_the_frame_usda-06436b4d06eb2f5f-1.digest | 22 + ...utter_close_usda-ce0b12427cfd435b-1.digest | 22 + ...er_exposure_usda-36da172692d8936a-1.digest | 21 + ...r_rewritten_usda-2e79c887f2d55e88-1.digest | 35 + ...exture_file_usda-1fd2cfaf6e5de06c-1.digest | 41 + ...ght_s_shape_usda-f05814080b96dca5-1.digest | 41 + ...a_transform_usda-d26b3a02a093ce4f-1.digest | 41 + ...base_colour_usda-d814da72eab3f116-1.digest | 41 + ...d__bad_unit_usda-6419381399744bc7-1.digest | 24 + ...th_of_field_usda-3ef9a9cb1855677e-1.digest | 23 + ...ome_texture_usda-a17c02c0536bdc00-1.digest | 41 + ...do_exposure_usda-c9169e83397e3561-1.digest | 41 + ...o_max_depth_usda-a8a78eb6299a327a-1.digest | 41 + ..._rect_light_usda-2d6a907009434890-1.digest | 41 + ...o_roughness_usda-62c5e0d0879e604d-1.digest | 41 + ...ndo_sampler_usda-0d28664679d41bef-1.digest | 41 + ...utter_close_usda-f7c724218b21e98a-1.digest | 21 + ...exture_file_usda-d5aef4a622503f01-1.digest | 41 + ...ct_retarget_usda-1e1edebd41fde9bc-1.digest | 29 + ...o_the_reset_usda-7e7c9dbebb517c2f-1.digest | 29 + ..._the_rotate_usda-c1aa90b58073a573-1.digest | 29 + ...fter_reload_usda-b19199733b99fec2-1.digest | 35 + ...urnace_ball_usda-54ac5243ee332532-1.digest | 25 + .../furnace_usda-bbc6fe1cb946780f-1.digest | 22 + ...ar_bilinear_usda-8ca893f677c91586-1.digest | 22 + .../fvar_loop_usda-855199bacac38db5-1.digest | 22 + .../geometry_usda-3299cf85fca858a4-1.digest | 19 + .../glass_usda-6ef57f18257a3d7a-1.digest | 20 + ...sdf_false_1_usda-8cc43a3f4dae46fb-1.digest | 27 + ...sdf_false_2_usda-ff99772c18e0997c-1.digest | 27 + ...sdf_false_3_usda-8c8e2079502f800d-1.digest | 27 + ...sdf_false_4_usda-76914e768885b3e6-1.digest | 27 + ...ght_false_1_usda-7fde13de0abc769b-1.digest | 27 + ...ght_false_2_usda-58c418a757f93b46-1.digest | 27 + ...ght_false_3_usda-0e4d0c5d73f098b1-1.digest | 27 + ...ght_false_4_usda-db6287c220d2329c-1.digest | 27 + ...ight_true_1_usda-da25e07b06740551-1.digest | 27 + ...ight_true_2_usda-ddbe5a176c05cba2-1.digest | 27 + ...ight_true_3_usda-06ab9cf1d9f5303b-1.digest | 27 + ...ight_true_4_usda-bae142df171828c4-1.digest | 27 + ...wer_false_1_usda-8463e7fa7c167c7f-1.digest | 27 + ...wer_false_2_usda-dcf0f8d60a6084ce-1.digest | 27 + ...wer_false_3_usda-fedffe90ed130071-1.digest | 27 + ...wer_false_4_usda-654bf9f6d4073ca8-1.digest | 27 + ...sdf_false_1_usda-5434dbae8c19939f-1.digest | 25 + ...sdf_false_2_usda-bb9d9ab32ead4e0e-1.digest | 25 + ...sdf_false_3_usda-edc5ae56976f1ff1-1.digest | 25 + ...sdf_false_4_usda-b2e4ed7db6e6d9c8-1.digest | 25 + ...ght_false_1_usda-03a3c8316f39e87b-1.digest | 25 + ...ght_false_2_usda-33306f5e5e7489a0-1.digest | 25 + ...ght_false_3_usda-d3cf26f624795805-1.digest | 25 + ...ght_false_4_usda-bc3c2cc49389e192-1.digest | 25 + ...ight_true_1_usda-c5cb6d9f35a09a41-1.digest | 25 + ...ight_true_2_usda-4db04417a2f553bc-1.digest | 25 + ...ight_true_3_usda-8962360ec726337b-1.digest | 25 + ...ight_true_4_usda-704837282362091e-1.digest | 25 + ...wer_false_1_usda-b16be3e51935cdad-1.digest | 25 + ...wer_false_2_usda-9bd601062d2922a2-1.digest | 25 + ...wer_false_3_usda-af38f2deac1db5db-1.digest | 25 + ...wer_false_4_usda-e07f6fc2b4bb4c68-1.digest | 25 + ...var_light_1_usda-950756ddd9a80314-1.digest | 27 + ...var_light_2_usda-6aede4cf281248af-1.digest | 27 + ...var_power_1_usda-712adb9891f33818-1.digest | 27 + ...var_power_2_usda-ccbbda539b6109ff-1.digest | 27 + .../hair_usda-541c95fb5b2e8895-1.digest | 53 + .../hair_usda-541c95fb5b2e8895-2.digest | 53 + .../hair_usda-65dd84de0e473f00-1.digest | 52 + ...r_variation_usda-4ab3c7f511466a98-1.digest | 35 + ...r_variation_usda-921fbdca7fd9bc69-1.digest | 35 + ...r_variation_usda-921fbdca7fd9bc69-2.digest | 35 + ...r_variation_usda-aa2b773ff3d2e5c2-1.digest | 34 + ...rce_classes_usda-a9259268854e750e-1.digest | 37 + .../hidden_usda-9a2924a818f3fb98-1.digest | 90 ++ ..._zero_scale_usda-a4193f9a6324f7d0-1.digest | 19 + .../high_bits_usda-276acbda2859c899-1.digest | 19 + .../holdout_usda-fcfa139ef12785fd-1.digest | 26 + ...houdini_var_usda-c716d987aba001e4-1.digest | 18 + .../huge_blur_usda-2cc6d64af71f20b3-1.digest | 27 + ...huge_kernel_usda-a515683f6e1b404a-1.digest | 27 + .../ies_light_usda-9afaa60e27f14926-1.digest | 21 + ...ored_curves_usda-d8234281140f3b7d-1.digest | 19 + ...nored_light_usda-26909110fbe92be4-1.digest | 21 + ...d_prototype_usda-f94b3942ea16e527-1.digest | 21 + ...ored_volume_usda-32845f161c65c4a9-1.digest | 18 + ...t_Capsule_1_usda-751cd07d979a4d81-1.digest | 21 + ...cit_Capsule_usda-3ad3fb7cdd9a1902-1.digest | 21 + ...plicit_Cone_usda-024380e72d6d34a7-1.digest | 21 + ...plicit_Cube_usda-4bb89de99da949b6-1.digest | 21 + ..._Cylinder_1_usda-9964aa85919856f9-1.digest | 21 + ...it_Cylinder_usda-bee0e5841f0acf39-1.digest | 21 + ...licit_Plane_usda-77823213740cc6c2-1.digest | 21 + ...t_displaced_usda-395a4477685bb193-1.digest | 23 + ...licit_level_usda-e441bb0a849304c5-1.digest | 21 + ...plicit_lone_usda-8c73fbc5c6234554-1.digest | 21 + ...icit_moving_usda-2b9c98847f8ffdc5-1.digest | 21 + ..._prototypes_usda-754c2247d4091e78-1.digest | 26 + ...icit_scaled_usda-5918722b7152b9f3-1.digest | 21 + ...cit_shading_usda-b3809be67678f20f-1.digest | 21 + ...icit_shapes_usda-180b516d9253da53-1.digest | 68 ++ ...icit_shapes_usda-180b516d9253da53-2.digest | 68 ++ ...icit_shapes_usda-30852d50af72eb96-1.digest | 68 ++ ...icit_shapes_usda-41169aa3c303f69f-1.digest | 68 ++ ...licit_twins_usda-925c195d8a7f5a5c-1.digest | 24 + ...mport_plain_usda-37ba4c8eb30aefb6-1.digest | 27 + .../import_usda-a114cca514b1e2e9-1.digest | 27 + ...rted_motion_usda-98baf8cfec165d96-1.digest | 29 + .../inf_light_usda-fd28273b2a9da24d-1.digest | 21 + .../infinite_usda-6e15312bf55ca148-1.digest | 21 + .../inherits_usda-946600d02d8755e0-1.digest | 18 + .../input_usda-39af7a7dd8ccc053-1.digest | 22 + ...nced_curves_usda-4486def29adfc50e-1.digest | 20 + ...cer_primvar_usda-6d97a3b7a8db1d2d-1.digest | 26 + ...reset_child_usda-327d10b931ee4635-1.digest | 21 + ..._root_xform_usda-824b2432496695f2-1.digest | 20 + .../instancer_usda-24b4955bd587b7fc-1.digest | 27 + .../instancer_usda-b5460e79ed990f95-1.digest | 17 + .../instancer_usda-c51fcdc4de98cc87-1.digest | 21 + .../instances_usda-0e86a3f92c8bc5d3-1.digest | 22 + .../instances_usda-dd5f31a7c4515489-1.digest | 23 + .../instancing_usda-046f52337fabb1a4-1.digest | 48 + .../instancing_usda-1b870942bf28e01d-1.digest | 48 + .../instancing_usda-37ed91a3e61701fe-1.digest | 48 + .../instancing_usda-3c5cc93e1666982d-1.digest | 48 + .../instancing_usda-3c5cc93e1666982d-2.digest | 48 + .../instancing_usda-4c123aa1f400f41f-1.digest | 48 + .../instancing_usda-4d15fe3f4f1fa7d2-1.digest | 48 + .../instancing_usda-5aa111b242f25730-1.digest | 47 + .../instancing_usda-8afb1b2336afd39d-1.digest | 48 + .../instancing_usda-8afb1b2336afd39d-2.digest | 48 + .../instancing_usda-bee611607d893be7-1.digest | 48 + .../instancing_usda-c51a6942a8212cb9-1.digest | 48 + ...stantaneous_usda-3e155a939a6cc6cd-1.digest | 35 + .../int_id_usda-520c4dc179153d4f-1.digest | 22 + ...light_sizes_usda-9c386d5a319bfe23-1.digest | 22 + .../invalid_usda-d575a3c70872d8d6-1.digest | 19 + ...ariant_0_05_usda-adfdce9489c2fe04-1.digest | 26 + ...invariant_0_usda-4ea5be31deb326f6-1.digest | 26 + .../leaf_usda-be27c43b70391f12-1.digest | 22 + .../leaf_usda-be27c43b70391f12-2.digest | 22 + .../leaf_usda-c026046b07c5fbb8-1.digest | 22 + .../leaf_usda-d886c4e05035aaa7-1.digest | 22 + .../leaf_usda-e14e254e24f8bc2e-1.digest | 22 + ...anded_baked_usda-9363c3fa472cdcde-1.digest | 21 + ...d_instanced_usda-f9d8d0fbabf00605-1.digest | 24 + ...ed_mirrored_usda-b73e3433c9e6bccf-1.digest | 21 + ..._subdivided_usda-bd37842befe48e18-1.digest | 21 + ..._handed_tri_usda-ba795e2eb1c56aef-1.digest | 21 + .../lens_cm_usda-73dbd961c243712e-1.digest | 16 + .../lens_fstop_usda-da4d1cf71564d625-1.digest | 16 + .../lens_m_usda-983a5a6e5f39e694-1.digest | 16 + ..._unauthored_usda-24a6800a9f22c131-1.digest | 16 + .../level_two_usda-9004a66abae4e107-1.digest | 24 + ...ght_linking_usda-0a7e4d5176bc2b33-1.digest | 42 + ...ght_linking_usda-0a7e4d5176bc2b33-2.digest | 42 + ...ght_linking_usda-0df578a9208fb7cf-1.digest | 42 + ...ght_linking_usda-84012730e231d407-1.digest | 42 + ...ght_linking_usda-a83ba5cc073d5f22-1.digest | 42 + ...les_default_usda-6242aa388fa102a1-1.digest | 17 + ...amples_huge_usda-128d1881332e6fff-1.digest | 18 + ...amples_zero_usda-516355bd0568c89e-1.digest | 18 + ..._visibility_usda-01977678b305c007-1.digest | 32 + ..._visibility_usda-01977678b305c007-2.digest | 32 + ..._visibility_usda-2b8ba6eb3030d1ec-1.digest | 32 + ..._visibility_usda-3ea0aa2435326544-1.digest | 32 + ...d_bsdf_1024_usda-00c8472dfa9bd263-1.digest | 26 + ...ked_bsdf_16_usda-f488614962bd77c6-1.digest | 26 + ..._light_1024_usda-42bcc0ce33e153f3-1.digest | 26 + ...ed_light_16_usda-94637210b45ab59a-1.digest | 26 + ...ed_power_16_usda-eebb6febe29b133c-1.digest | 26 + .../listing_usda-3efcced39a72eaa9-1.digest | 24 + .../listing_usda-488ac4c542f2b8d8-1.digest | 24 + .../listing_usda-f960655cad0d43f4-1.digest | 24 + .../listing_usda-fd4c266bcdd26a9c-1.digest | 24 + .../live_cube_usda-4cf5f22f20fef745-1.digest | 20 + ...der_unnamed_usda-7b7e7a1709504194-1.digest | 20 + ...ve_cylinder_usda-07218dcdd495ca91-1.digest | 20 + ...moted_light_usda-16477f127e75566e-1.digest | 39 + ...moted_light_usda-16477f127e75566e-2.digest | 39 + ...dicing_none_usda-fde7cae55b0adc90-1.digest | 24 + ...ng_retarget_usda-682d6c0fca1a4c12-1.digest | 24 + ...live_dicing_usda-8bb261767fad5d1d-1.digest | 24 + ...live_dicing_usda-c3c9ffc84677f809-1.digest | 24 + ...ng_adaptive_usda-264a6722f87e2488-1.digest | 24 + ...ive_framing_usda-21ec0fb4edc0e3e0-1.digest | 20 + ...ive_framing_usda-6d7a1bccee33c035-1.digest | 20 + ...ive_framing_usda-6d7a1bccee33c035-2.digest | 20 + ...ar_warnings_usda-bb9c911d0ed38f94-1.digest | 26 + ...rs_retarget_usda-59fb6cd49cb76e6b-1.digest | 20 + ...rs_retarget_usda-f4742b8648291059-1.digest | 20 + ...et_adaptive_usda-df276969e17c075b-1.digest | 28 + ...arget_diced_usda-68dfaa2802aa4ba4-1.digest | 28 + ...arget_diced_usda-91fe8df867e8f0cc-1.digest | 28 + ...arget_empty_usda-6f96b70b05bd5238-1.digest | 24 + ...etarget_rig_usda-c517fabd0cfe3025-1.digest | 24 + ...target_slow_usda-abb2313197b2f2f6-1.digest | 24 + ...get_unnamed_usda-11fb9c8dd8a6685f-1.digest | 24 + ...ve_retarget_usda-443a3934a068f8e2-1.digest | 24 + ...ve_retarget_usda-de7ad4a8e0eab00a-1.digest | 24 + ...ve_retarget_usda-de7ad4a8e0eab00a-2.digest | 24 + ...ve_retarget_usda-de7ad4a8e0eab00a-3.digest | 24 + ...ve_retarget_usda-de7ad4a8e0eab00a-4.digest | 24 + .../live_usda-99c94ab20e276ccd-1.digest | 27 + .../live_usda-99c94ab20e276ccd-2.digest | 27 + .../live_usda-b329c13621e10111-1.digest | 27 + .../lookdev_usda-168fe99d44c7fbd8-1.digest | 30 + .../lookdev_usda-17804c08eb02feff-1.digest | 35 + .../lookdev_usda-17804c08eb02feff-2.digest | 35 + .../lookdev_usda-2df588e196076e2d-1.digest | 40 + .../lookdev_usda-37661541bc721de0-1.digest | 41 + .../lookdev_usda-451cadfaa7f8e528-1.digest | 40 + .../lookdev_usda-4e0b53f3e573c0d5-1.digest | 41 + .../lookdev_usda-5b22641b5a20aa26-1.digest | 35 + .../lookdev_usda-5b22641b5a20aa26-2.digest | 35 + .../lookdev_usda-619dbb27dff03edb-1.digest | 40 + .../lookdev_usda-6332af41b2f94037-1.digest | 41 + .../lookdev_usda-66e64ab7da1be7a8-1.digest | 35 + .../lookdev_usda-675a4c56d7da2e1a-1.digest | 40 + .../lookdev_usda-6a91390c6e2e8f32-1.digest | 41 + .../lookdev_usda-75d1c7f90fc366b6-1.digest | 41 + .../lookdev_usda-7ce0ae0f49d396d8-1.digest | 35 + .../lookdev_usda-7ed4ae42b2f80bd6-1.digest | 35 + .../lookdev_usda-83b2bc40e66e8d90-1.digest | 40 + .../lookdev_usda-84687138ca39f6d2-1.digest | 41 + .../lookdev_usda-889e2ebeaf6f6f43-1.digest | 50 + .../lookdev_usda-8bccb97f1cea35ce-1.digest | 35 + .../lookdev_usda-8bccb97f1cea35ce-2.digest | 35 + .../lookdev_usda-8e1d5d176c63c934-1.digest | 41 + .../lookdev_usda-96a10d1a1b799db6-1.digest | 41 + .../lookdev_usda-96b32b9e68a1ec9a-1.digest | 41 + .../lookdev_usda-9b73e2f3385f85a2-1.digest | 35 + .../lookdev_usda-a96810dec00d46d8-1.digest | 40 + .../lookdev_usda-ad6a0ecf2cf3c658-1.digest | 41 + .../lookdev_usda-b139810cbe0eac4c-1.digest | 35 + .../lookdev_usda-b1d2ea509cf7ee23-1.digest | 42 + .../lookdev_usda-b23ccdb4706d3d98-1.digest | 43 + .../lookdev_usda-bdef936e454d02c5-1.digest | 41 + .../lookdev_usda-c088c49aaf559905-1.digest | 35 + .../lookdev_usda-c8874f17309d40f1-1.digest | 41 + .../lookdev_usda-cab3bf60bc31d2f7-1.digest | 35 + .../lookdev_usda-cae9785463ecddf6-1.digest | 41 + .../lookdev_usda-d07bf630611d13b0-1.digest | 36 + .../lookdev_usda-d977f122a6f754f5-1.digest | 36 + .../lookdev_usda-da5095c5387fc6d5-1.digest | 40 + .../lookdev_usda-ddd9a472681fe394-1.digest | 35 + .../lookdev_usda-e6376a73c80d838f-1.digest | 35 + .../lookdev_usda-f0ebb00d074c9c96-1.digest | 30 + .../lookdev_usda-f374e5a4458830ba-1.digest | 36 + .../lookdev_usda-f374e5a4458830ba-2.digest | 36 + .../lookdev_usda-f4c4e13661091485-1.digest | 41 + .../lookdev_usda-fa7c6612a51b87e4-1.digest | 35 + .../lookdev_usda-fad17720e6382b8f-1.digest | 41 + .../loop_plain_usda-47275a5a5923eb53-1.digest | 21 + .../loop_ptex_usda-305da98d6891c0e8-1.digest | 24 + ...too_complex_usda-d110af4b6d4f2169-1.digest | 19 + ...pe_variance_usda-eb6b4998eed83db2-1.digest | 19 + .../lpe_vars_usda-4a1166013a93c744-1.digest | 19 + .../malformed_usda-6eca12ea39b96a60-1.digest | 31 + ...many_lights_usda-2896f3594596fed9-1.digest | 1062 +++++++++++++++++ ...many_lights_usda-492e76bd4d2bdc51-1.digest | 1062 +++++++++++++++++ ...many_lights_usda-492e76bd4d2bdc51-2.digest | 1062 +++++++++++++++++ .../marks_usda-92136ff2d6b2d34c-1.digest | 37 + .../masks_usda-0b1d6cd46ef5aa7b-1.digest | 23 + .../mass_spike_usda-41c01d82edccd4ad-1.digest | 26 + .../mass_spike_usda-41c01d82edccd4ad-2.digest | 26 + .../mass_spike_usda-dee5e21f531bb6c7-1.digest | 26 + ...rialx_basic_usda-2113b612a3c1746f-1.digest | 42 + ...rialx_basic_usda-2113b612a3c1746f-2.digest | 42 + ...rialx_basic_usda-47f44502b8b66093-1.digest | 42 + ...rialx_basic_usda-5e3c6402db738e98-1.digest | 41 + ...rialx_basic_usda-605f278bcaf83bcb-1.digest | 42 + ...rialx_basic_usda-7efe0aff05c6d47a-1.digest | 41 + ...rialx_basic_usda-ee87ad7ab34333f5-1.digest | 42 + ...ialx_cutout_usda-38de4138760ea72d-1.digest | 39 + ...ialx_cutout_usda-38de4138760ea72d-2.digest | 39 + ...ialx_cutout_usda-ae65df7de0c507fa-1.digest | 38 + ...lx_emissive_usda-37e54478999af2b3-1.digest | 36 + ...lx_emissive_usda-37e54478999af2b3-2.digest | 36 + ...lx_emissive_usda-3c55abed0c2329af-1.digest | 35 + ...lx_emissive_usda-746e6884e4aa1a13-1.digest | 36 + ...lx_emissive_usda-8dd82f7591e605f2-1.digest | 36 + ...erialx_lion_usda-a62e7b45a5b76dea-1.digest | 43 + ...erialx_lion_usda-f3e8e29236c1c73f-1.digest | 44 + ...erialx_lion_usda-f3e8e29236c1c73f-2.digest | 44 + ...lx_showcase_usda-1e9e0f7089dbbfd5-1.digest | 73 ++ ...lx_showcase_usda-3aaa54bfab01739a-1.digest | 74 ++ ...lx_showcase_usda-3aaa54bfab01739a-2.digest | 74 ++ ..._subsurface_usda-218ab79fb5de55b5-1.digest | 36 + ..._subsurface_usda-3b07bee1fa621b95-1.digest | 37 + ..._subsurface_usda-3b07bee1fa621b95-2.digest | 37 + ...lx_surfaces_usda-b446db21b7cb309b-1.digest | 42 + ...lx_surfaces_usda-b446db21b7cb309b-2.digest | 42 + ...lx_surfaces_usda-ca1ad78e541d4d41-1.digest | 41 + ...ialx_teapot_usda-2d8b448afc9a82e2-1.digest | 50 + ...ialx_teapot_usda-2d8b448afc9a82e2-2.digest | 50 + ...ialx_teapot_usda-6ea1bea03dbe6c0d-1.digest | 49 + ...ialx_volume_usda-0d615ee9e93f873e-1.digest | 41 + ...ialx_volume_usda-dbd96c41f0cfcd9f-1.digest | 40 + ...ialx_volume_usda-f4f640ec1f11b3d3-1.digest | 41 + ...ialx_volume_usda-f4f640ec1f11b3d3-2.digest | 41 + .../matrix_usda-9dd65c424c31f5e5-1.digest | 19 + .../matte_dome_usda-942a3b1e6f8ce42b-1.digest | 23 + .../matte_dome_usda-e3baadd4a9e3ffb7-1.digest | 23 + ...th_negative_usda-eec4c585057974f1-1.digest | 18 + ...x_depth_one_usda-0b2d301b9905817a-1.digest | 17 + ..._depth_zero_usda-931745fbe0c2c985-1.digest | 18 + .../membership_usda-e44fc1429c4b92d1-1.digest | 47 + ...esh_blurred_usda-13d48869156e4433-1.digest | 21 + .../mesh_both_usda-90fff2587206dcbe-1.digest | 21 + .../mesh_sharp_usda-98679e56cacbfa24-1.digest | 21 + .../mesh_track_usda-2da67447ace68ea3-1.digest | 21 + ...0_1_power_1_usda-d5e924c1e43088a2-1.digest | 27 + ...1_0_power_1_usda-0a224c171445c02a-1.digest | 27 + ...1_1_power_1_usda-3e1ca1268dde29a1-1.digest | 27 + .../mirror_usda-e5687a44290234b9-1.digest | 21 + ...smatch_same_usda-36f547d4088a73c8-1.digest | 17 + .../mismatch_usda-4938acb7109c81b3-1.digest | 23 + .../mismatch_usda-e42c92f5d05f1fcf-1.digest | 18 + .../missing_usda-048983dc2b7e8f66-1.digest | 17 + ...ed_hair_ref_usda-1bf6615be167a70b-1.digest | 24 + .../mixed_hair_usda-e643846eb6c6d950-1.digest | 24 + .../motionblur_usda-2ad099074d244fc2-1.digest | 36 + .../motionblur_usda-f2666f3e50d41453-1.digest | 37 + .../motionblur_usda-f2666f3e50d41453-2.digest | 37 + .../motionblur_usda-ff0d49c1a505d497-1.digest | 37 + ...tor_aliases_usda-8852d8dcf38ecf0d-1.digest | 19 + ...tor_blurred_usda-6d69c20d22e19877-1.digest | 34 + ...ector_types_usda-d2a10e1c91de57de-1.digest | 19 + ...otionvector_usda-0097c4dc99684b31-1.digest | 34 + ...otionvector_usda-2921a3a583a7af01-1.digest | 34 + ...otionvector_usda-37a40f3b6ac9aeab-1.digest | 34 + ...otionvector_usda-37a40f3b6ac9aeab-2.digest | 34 + ...otionvector_usda-43ed7e424bbaa4f7-1.digest | 34 + ...otionvector_usda-6dec65e3aa55dc9d-1.digest | 34 + ...otionvector_usda-c5f34f1e623349ba-1.digest | 34 + .../multiply_usda-8736676f00161943-1.digest | 23 + ...named_chart_usda-67761c5ec52139aa-1.digest | 22 + .../named_usda-455967a7b376e998-1.digest | 21 + .../named_usda-caf35125dfbdc7e1-1.digest | 21 + .../named_usda-d1e9bde789e7233a-1.digest | 21 + ...nan_shaping_usda-9e699df2d0518cc0-1.digest | 22 + .../native_usda-48df729899939992-1.digest | 231 ++++ .../native_usda-aa00109a0de726bd-1.digest | 24 + .../near_far_usda-378c724af4dad1fb-1.digest | 27 + .../nearest_usda-01bca6fa7666b1f3-1.digest | 21 + .../nearest_usda-6471e7e6d484d155-1.digest | 21 + ...ive_min_spp_usda-f445ea0383fc1875-1.digest | 18 + ...sted_direct_usda-e25d7da2b966c023-1.digest | 20 + ...sted_hidden_usda-0ea71f61bc0a58d6-1.digest | 21 + ..._root_xform_usda-95a505e1fa209779-1.digest | 19 + ..._instancing_usda-39f09e1523375345-1.digest | 55 + ..._instancing_usda-4b3ca108154f4935-1.digest | 55 + ..._instancing_usda-4b3ca108154f4935-2.digest | 55 + ..._instancing_usda-915b43a7369963b2-1.digest | 55 + ..._instancing_usda-df6640aca1d2b235-1.digest | 55 + ..._instancing_usda-e37604ffa926df8a-1.digest | 55 + ..._instancing_usda-fda6a6f1c2f5b28e-1.digest | 54 + ..._instancing_usda-fff87a8b52b8e069-1.digest | 55 + ...ot_composed_usda-c0a020bf777d3f88-1.digest | 24 + .../nested_one_usda-bc56793ff0720fdc-1.digest | 20 + ...ted_scatter_usda-4724aa4d383273d2-1.digest | 19 + ...d_translate_usda-31c01e41ce7e4eb3-1.digest | 19 + .../nested_two_usda-0fad6a8ff7f8520a-1.digest | 25 + .../nested_usda-dbe832b66063cf24-1.digest | 230 ++++ .../neural_usda-57a514ca820ab02c-1.digest | 28 + .../ngon_usda-573da62ad402526c-1.digest | 21 + ...form_lights_usda-181564afd75bc784-1.digest | 52 + .../no_camera_usda-08eaf78e1847bdbe-1.digest | 21 + .../no_camera_usda-2a7bfc7853b270c5-1.digest | 17 + .../no_camera_usda-5507d24332d7f188-1.digest | 19 + .../no_camera_usda-758b683c20791ceb-1.digest | 19 + .../no_camera_usda-ac160dc389201eeb-1.digest | 19 + .../no_camera_usda-af24412e492e9147-1.digest | 17 + .../no_camera_usda-f2e322198f5a52d6-1.digest | 19 + .../no_frame_usda-06c9736b1ee41555-1.digest | 25 + .../no_kernel_usda-250e185a51aff6c5-1.digest | 28 + ...no_products_usda-b2f39aa3f795faa2-1.digest | 18 + ...ar_authored_usda-7c630c4e6b264297-1.digest | 24 + ...no_var_bare_usda-0f6834e5d7411efd-1.digest | 24 + .../non_finite_usda-b38223b4cd532638-1.digest | 28 + .../none_usda-3500dce365c976fb-1.digest | 26 + .../none_usda-8ca1039ef6a1af13-1.digest | 23 + .../none_usda-b2626a5c29f30d06-1.digest | 16 + ...ff_cylinder_usda-cad3a8a0bec58113-1.digest | 21 + ...rm_off_disk_usda-d4ac49b171982a5d-1.digest | 21 + ...rm_off_rect_usda-7ca0616652c56bb1-1.digest | 21 + ..._off_sphere_usda-0abd6bba11da485f-1.digest | 21 + ...on_cylinder_usda-f3dd54fd2e0d1929-1.digest | 21 + ...orm_on_disk_usda-80da988892a29bff-1.digest | 21 + ...orm_on_rect_usda-0fb0cae5dd5fa17f-1.digest | 21 + ...m_on_sphere_usda-a4e34a4e4682e3b5-1.digest | 21 + .../normals_usda-eb98f1adc17331b3-1.digest | 25 + .../nothing_usda-05a76e84b550abac-1.digest | 30 + ...nurbs_clean_usda-362cea70cf67e6cc-1.digest | 18 + ...nurbs_empty_usda-af6c06cf5e078823-1.digest | 17 + .../nurbs_full_usda-ee811943aa635f36-1.digest | 19 + .../nurbs_half_usda-26730abe8461e1ee-1.digest | 19 + ...s_malformed_usda-edaffca17525a0db-1.digest | 22 + ...rbs_refused_usda-2cd12f986b06b3a5-1.digest | 21 + .../on_camera_usda-0e1653405c0b04b8-1.digest | 30 + ...once_direct_usda-87536582b2725522-1.digest | 20 + ...e_instanced_usda-cfe757ff670cf1a4-1.digest | 19 + .../opacity_usda-18ffcc13eb92677a-1.digest | 47 + ...br_showcase_usda-0f7c1eaf15ef6726-1.digest | 49 + ...br_showcase_usda-1dca66ecebc9d919-1.digest | 50 + ...br_showcase_usda-1dca66ecebc9d919-2.digest | 50 + ...br_showcase_usda-501b45e8f6131d21-1.digest | 50 + .../openpbr_usda-876563da4aa0a57a-1.digest | 20 + ...her_lookdev_usda-31ecdc884f3fb603-1.digest | 40 + .../other_op_usda-7a2444b60f22a636-1.digest | 23 + .../overflow_usda-c7dbcb2b55d9a450-1.digest | 202 ++++ .../override_usda-b67a66c0201ba59a-1.digest | 36 + .../overrides_usda-e08388bc2f33304d-1.digest | 19 + ...artial_link_usda-0b6b5eacc86557dc-1.digest | 23 + ...ass_payload_usda-08d0e4051511c08a-1.digest | 24 + ..._dome_twice_usda-0b80861de0309489-1.digest | 35 + ..._dome_twice_usda-bdae79d96585e6fd-1.digest | 35 + ..._dome_twice_usda-c05e0c1783414e94-1.digest | 35 + ..._dome_twice_usda-e9d62fba57fc58f7-1.digest | 35 + ...den_in_back_usda-5e69798956b67766-1.digest | 35 + ...den_in_back_usda-5e69798956b67766-2.digest | 35 + ...den_in_back_usda-ad65d77e744f59b2-1.digest | 35 + ...den_in_back_usda-ad65d77e744f59b2-2.digest | 35 + ...den_in_back_usda-e4f2c0c97dbe1a55-1.digest | 35 + ...den_in_back_usda-e4f2c0c97dbe1a55-2.digest | 35 + .../passes_usda-562a5b3a04949a47-1.digest | 26 + .../passes_usda-aaa6ef1b16e7d6b6-1.digest | 27 + ...load_camera_usda-ff33ccc1b50862a6-1.digest | 19 + ...yload_links_usda-f941f0e5247354e6-1.digest | 25 + ...photometric_usda-644b1d1ebbe4cb72-1.digest | 16 + ..._unauthored_usda-ecde60dead7180c2-1.digest | 16 + ...inhole_zero_usda-9f676d1852dc7168-1.digest | 16 + ...pivot_stack_usda-eabcdb11552ea0a9-1.digest | 21 + ...ixel_filter_usda-c618794e70f5ffe3-1.digest | 19 + .../place_once_usda-66a0c16b42b4539e-1.digest | 21 + ...place_twice_usda-c4ce4deb59d3727f-1.digest | 24 + .../placed_usda-000d21c7a8ef61e5-1.digest | 582 +++++++++ .../placed_usda-0ba3af4ffa595294-1.digest | 585 +++++++++ .../placed_usda-503a8ea6d52670c0-1.digest | 78 ++ .../placed_usda-63f0ce074fafa44d-1.digest | 78 ++ .../placed_usda-6fa96be933bc04d8-1.digest | 684 +++++++++++ .../placed_usda-7ad6f5aa95ba8499-1.digest | 78 ++ .../placed_usda-7c35981b427daf53-1.digest | 585 +++++++++ .../placed_usda-7c35981b427daf53-2.digest | 585 +++++++++ .../placed_usda-85cdaaa611ddcfb8-1.digest | 78 ++ .../placed_usda-94944664ab7e307d-1.digest | 78 ++ .../placed_usda-97fbc0f3fbe2c018-1.digest | 78 ++ .../placed_usda-b9e166293d4eb014-1.digest | 78 ++ .../placed_usda-c1f420d2f8074d9e-1.digest | 78 ++ .../placed_usda-c1f420d2f8074d9e-2.digest | 78 ++ .../placed_usda-c1f420d2f8074d9e-3.digest | 78 ++ .../placed_usda-c316df83883a2080-1.digest | 78 ++ .../placed_usda-d17077acbffaca45-1.digest | 78 ++ .../placed_usda-d4ecee5c0312cf96-1.digest | 78 ++ .../placed_usda-dc7b9c4f6886cafa-1.digest | 78 ++ .../placed_usda-f5c13f6f8bb66ab5-1.digest | 180 +++ .../placements_usda-275bfd0cb4688e5d-1.digest | 31 + .../plane_usda-e5035e45dccaf24c-1.digest | 18 + .../planes_usda-b941e449ca4a031a-1.digest | 19 + ..._0_1_bsdf_1_usda-bd800d4fcb330be2-1.digest | 27 + ...0_1_light_1_usda-a03210c9831fba26-1.digest | 27 + ...0_1_power_1_usda-482542fae980bf52-1.digest | 27 + ...25_3_bsdf_1_usda-36e5cb22b2676a41-1.digest | 27 + ...25_3_bsdf_1_usda-d38160b2be22e70c-1.digest | 27 + ...25_3_bsdf_2_usda-78a7411a4858bc6b-1.digest | 27 + ...25_3_bsdf_3_usda-f81a4b161903a8f2-1.digest | 27 + ...25_3_bsdf_4_usda-87a5b5e826a38a61-1.digest | 27 + ...5_3_light_1_usda-135d2f963daf2551-1.digest | 27 + ...5_3_light_1_usda-cf1431b5a2f0391c-1.digest | 27 + ...5_3_light_2_usda-c1e873bea9886ca9-1.digest | 27 + ...5_3_light_3_usda-0dc30546dc7303fa-1.digest | 27 + ...5_3_light_4_usda-306836af9dcd76c7-1.digest | 27 + ...5_3_power_1_usda-aeace9cae6e95285-1.digest | 27 + ...5_3_power_1_usda-f2feafce67b9cc18-1.digest | 27 + ...5_3_power_2_usda-9558069a3a6cb6c1-1.digest | 27 + ...5_3_power_3_usda-848bb8619ed104b2-1.digest | 27 + ...5_3_power_4_usda-13781e826c793feb-1.digest | 27 + ..._1_0_bsdf_1_usda-7392b4eece3d4ffa-1.digest | 27 + ...1_0_light_1_usda-e29b88fff3b5eede-1.digest | 27 + ...1_0_power_1_usda-db7be84c0c913b8a-1.digest | 27 + ..._1_1_bsdf_1_usda-1a655ee8a457375b-1.digest | 27 + ...1_1_light_1_usda-d608d0096c4c9293-1.digest | 27 + ...1_1_power_1_usda-dad1612ee907e657-1.digest | 27 + .../precomp_C_usda-ceae07fa5339bc4e-1.digest | 39 + ..._look_final_usda-46848a8dcf6250e4-1.digest | 39 + ...recomp_none_usda-749e88768dbe99b1-1.digest | 39 + .../precomp_usda-33f481698c3a3ce7-1.digest | 39 + .../precomp_usda-4339ddf5a07dea17-1.digest | 39 + .../precomp_usda-886c8d8bef125a6d-1.digest | 39 + .../precomp_usda-886c8d8bef125a6d-2.digest | 39 + .../precomp_usda-9c591dbe4a6a2374-1.digest | 39 + .../precomp_usda-d9d1e77cdf9ce71d-1.digest | 39 + .../precomp_usda-e1a87b662c5109e8-1.digest | 39 + .../precomp_usda-e28059e8e7dd2fb9-1.digest | 39 + ...eview_plain_usda-56c5917475bdaa40-1.digest | 20 + ...view_tagged_usda-21171eef0f915c9d-1.digest | 20 + .../preview_usda-6fa33b5d399ba28d-1.digest | 20 + ...rimvar_aovs_usda-1ceba2b5cd7da4fe-1.digest | 30 + ...rimvar_aovs_usda-b5e76a14b4ccb3db-1.digest | 30 + ...rimvar_aovs_usda-b5e76a14b4ccb3db-2.digest | 30 + ...rimvar_aovs_usda-e0e162475fa824e5-1.digest | 30 + ...ultisampled_usda-774c86244886ea5e-1.digest | 18 + ...rimvar_vars_usda-f6787f7fdf1eebf3-1.digest | 20 + ..._par_square_usda-6cb0d1de356675bd-1.digest | 19 + ...al_par_wide_usda-e65d9f21a141c052-1.digest | 20 + .../products_usda-e7ced79f762e48ff-1.digest | 21 + .../prune_usda-3bf02286156e9774-1.digest | 20 + .../prune_usda-d1a6b2f2900a3fc1-1.digest | 19 + .../prune_usda-f5ce85341275f544-1.digest | 20 + .../ptex_phase_usda-9d5b92d8c597babb-1.digest | 22 + .../ptex_quads_usda-c2d1b0153068d224-1.digest | 28 + .../ptex_quads_usda-ded3ea05445ff449-1.digest | 29 + .../ptex_quads_usda-ded3ea05445ff449-2.digest | 29 + ...se_bindings_usda-08709bdb4f451e59-1.digest | 37 + ...se_bindings_usda-08709bdb4f451e59-2.digest | 37 + ...se_bindings_usda-856ac5cdf233a681-1.digest | 37 + .../purpose_usda-bf0c2e782a7f7633-1.digest | 24 + ...xr_displace_usda-3eb2626e4111c003-1.digest | 26 + ...xr_displace_usda-744b2066d6ee31b4-1.digest | 25 + ...xr_displace_usda-aa614afb7e46c6eb-1.digest | 26 + ...xr_displace_usda-aa614afb7e46c6eb-2.digest | 26 + .../quad_usda-8a80e703a52aec63-1.digest | 21 + ...uiet_curves_usda-c001d1e165c273d4-1.digest | 18 + ...quiet_light_usda-c8a2428bb59d472f-1.digest | 20 + ...t_prototype_usda-4ee6edc155c4ce34-1.digest | 20 + ...uiet_volume_usda-5e752c5254e3ed36-1.digest | 17 + .../range_far_usda-4ecb448a88a6c818-1.digest | 18 + .../range_usda-bc6d3542e7333f02-1.digest | 18 + .../raw_dome_usda-e8a6497f6f3c05ee-1.digest | 19 + .../raw_light_usda-ea76f3df9a669477-1.digest | 20 + ...t_light_far_usda-89364d5e280ec883-1.digest | 25 + ..._light_near_usda-e8eb7549c9231ec8-1.digest | 25 + .../rect_light_usda-eadf17e73fc59819-1.digest | 21 + ...ect_texture_usda-fa043cce9d6338f4-1.digest | 21 + .../rectlight_usda-3885e18a97e5845d-1.digest | 26 + .../rectlight_usda-3885e18a97e5845d-2.digest | 26 + .../rectlight_usda-5482f82d359615b0-1.digest | 26 + .../rectlight_usda-e2a69198ab36729f-1.digest | 26 + .../refusals_usda-e2a11260371695e9-1.digest | 25 + .../refused_usda-0be9300cea6f944b-1.digest | 17 + ...nder_passes_usda-109738cee49991a5-1.digest | 35 + ...nder_passes_usda-109738cee49991a5-2.digest | 35 + ...nder_passes_usda-109738cee49991a5-3.digest | 35 + ...nder_passes_usda-15787cfcd05d1f32-1.digest | 35 + ...nder_passes_usda-15787cfcd05d1f32-2.digest | 35 + ...nder_passes_usda-2eed0231ac063823-1.digest | 35 + ...nder_passes_usda-5d8d12e685ddd56c-1.digest | 35 + ...nder_passes_usda-5d8d12e685ddd56c-2.digest | 35 + ...nder_passes_usda-c03e7c6702e31ad3-1.digest | 35 + ...nder_passes_usda-f5e51ff2422aa383-1.digest | 35 + ...nder_passes_usda-f5e51ff2422aa383-2.digest | 35 + ...nder_passes_usda-f98e72ee422221b6-1.digest | 35 + ...urce_camera_usda-d46ae988f6d9241c-1.digest | 17 + ...nder_source_usda-131b801caa122c43-1.digest | 16 + ...nder_source_usda-749a95594e279116-1.digest | 16 + ...nder_source_usda-b15267a29d9e4616-1.digest | 16 + .../reset_disk_usda-6e0b5adab74a3b7a-1.digest | 21 + ...on_negative_usda-0d18504e846cea31-1.digest | 17 + ...lution_zero_usda-e3f58678deb9aa30-1.digest | 17 + .../rest_usda-feaaa720bb9a30d2-1.digest | 22 + .../root_usda-00dd7b68b86c7168-1.digest | 48 + .../root_usda-00e8d0d9a2f465b9-1.digest | 41 + .../root_usda-1ddeac0a2964315c-1.digest | 43 + .../root_usda-2f86c31117cc8b58-1.digest | 43 + .../root_usda-43c385d7a2a21d1e-1.digest | 41 + .../root_usda-4aa136053cd56402-1.digest | 41 + .../root_usda-4b8c79cf557cf378-1.digest | 48 + .../root_usda-5042b0d1011805d6-1.digest | 41 + .../root_usda-5c84bdb62972ba25-1.digest | 42 + .../root_usda-63552b8e06717f62-1.digest | 40 + .../root_usda-642eeb8c5780c872-1.digest | 42 + .../root_usda-65bf0b61fd007f62-1.digest | 41 + .../root_usda-67d463deb3cd2295-1.digest | 40 + .../root_usda-7781d1893e2e23fd-1.digest | 41 + .../root_usda-7eba3de4e6efbf15-1.digest | 23 + .../root_usda-8099cbe59e22c4ff-1.digest | 41 + .../root_usda-834306f0b405a977-1.digest | 41 + .../root_usda-8c6dbffe8bcc7f5d-1.digest | 41 + .../root_usda-921d5e21a6ec411f-1.digest | 41 + .../root_usda-9d7d0e6b748bbe2f-1.digest | 18 + .../root_usda-a0c411ed1048de1a-1.digest | 50 + .../root_usda-a95c3cfeafbe744e-1.digest | 47 + .../root_usda-aa094b9d362ee4b9-1.digest | 42 + .../root_usda-bedb2af78f4c965d-1.digest | 20 + .../root_usda-bfc3cfdc3fb023a6-1.digest | 41 + .../root_usda-c51fa0d84e7325f7-1.digest | 42 + .../root_usda-c6c9d5036fcf5e6d-1.digest | 32 + .../root_usda-c6c9d5036fcf5e6d-2.digest | 32 + .../root_usda-c78a3b1a4bb10072-1.digest | 41 + .../root_usda-cc0a74d0f1a22c6a-1.digest | 49 + .../root_usda-ccefc9342ef07f81-1.digest | 45 + .../root_usda-ce726227b7d02261-1.digest | 47 + .../root_usda-cef90a6ad595b1b4-1.digest | 20 + .../root_usda-d2c312942e13c754-1.digest | 45 + .../root_usda-dcc0d192c2504171-1.digest | 42 + .../root_usda-df9ad38a08c60f60-1.digest | 41 + .../root_usda-e227181a4d86cdde-1.digest | 41 + .../root_usda-f3eca4e5e1cfc428-1.digest | 32 + .../root_usda-f3eca4e5e1cfc428-2.digest | 32 + .../root_usda-f4c8b443da714046-1.digest | 50 + .../root_usda-f7df8a9705f0748f-1.digest | 45 + ...tate_parent_usda-a0cc7d7c189a5bba-1.digest | 19 + .../s_usda-0006d97926014c1b-1.digest | 23 + ...ler_default_usda-6c4e4e80bde0b7e5-1.digest | 17 + ...pler_halton_usda-bcb88dc4e7395359-1.digest | 18 + ...ler_lattice_usda-83017538d7bb844b-1.digest | 17 + ...phere_light_usda-2dabd5a9f4c0f98e-1.digest | 21 + .../scaled_usda-308f36ce00bb3ea8-1.digest | 22 + .../scatter_usda-08c435043fb988f9-1.digest | 25 + .../scatter_usda-e62e321631ee4219-1.digest | 25 + ...color_space_usda-acd6f59e656731c0-1.digest | 22 + .../settings_usda-58e4038727242b7e-1.digest | 20 + .../settings_usda-8c1bce0acc8c2aa3-1.digest | 17 + ...all_blocked_usda-7a4aa722cf803335-1.digest | 26 + ...ll_excluded_usda-97e5af329ccc1a04-1.digest | 26 + ...fog_blocked_usda-02a2d7c4f4baa106-1.digest | 25 + ...og_excluded_usda-0f89cfc00df34be3-1.digest | 25 + ...shadow_open_usda-43f52a9430038a59-1.digest | 24 + ...shaped_rect_usda-2479a47c7797a66c-1.digest | 21 + ...ping_absent_usda-59ac6c6c6ed71036-1.digest | 21 + ...ing_applied_usda-b1b65b90122da6f7-1.digest | 21 + ...ared_points_usda-b97fa4512d46ed74-1.digest | 26 + .../shared_usda-9209cd8eb954e389-1.digest | 33 + .../shared_usda-b9af19ac4c829153-1.digest | 25 + .../sharp_usda-9bf0a09f5df9236e-1.digest | 19 + ...hot_lookdev_usda-13a3dd4f11de39b9-1.digest | 40 + ...hot_lookdev_usda-27651d6a015b04ab-1.digest | 41 + ...hot_lookdev_usda-369c0d66f45d39b9-1.digest | 40 + ...hot_lookdev_usda-6f33035f56110470-1.digest | 40 + ...hot_lookdev_usda-7003167a7a70688d-1.digest | 40 + ...hot_lookdev_usda-b26fdb3392c1eac3-1.digest | 40 + ...hot_lookdev_usda-bc9d89b7ffc91e9b-1.digest | 24 + ...hot_lookdev_usda-cac7cb8da11a9b99-1.digest | 41 + ...hot_lookdev_usda-e785595b364179c9-1.digest | 40 + ...hot_lookdev_usda-e82a725344733609-1.digest | 41 + ...hot_lookdev_usda-eaf3eeced61f0581-1.digest | 40 + ...hot_lookdev_usda-f697274eb781e181-1.digest | 40 + .../shot_usda-bc277892832ac542-1.digest | 31 + .../sibling_usda-ec40564c6bb9a56d-1.digest | 36 + .../single_usda-472ac6d4e19ff814-1.digest | 22 + .../smoke_grid_usda-64f278d7126815e0-1.digest | 20 + .../smoke_usda-8b219b9873531af2-1.digest | 27 + .../smoke_usda-c485b4550b7ac78b-1.digest | 27 + .../smoke_usda-e1b03a141b55e173-1.digest | 27 + .../smoke_usda-e1b03a141b55e173-2.digest | 27 + .../snapshot_usda-48d0c43b60eb99bd-1.digest | 26 + ...re_and_mesh_usda-0e0815d93400ffb5-1.digest | 24 + ...sphere_both_usda-e02008707f44acbc-1.digest | 19 + ..._crust_wins_usda-cfeb9931008a7ea6-1.digest | 21 + ...re_defaults_usda-8b8f061019318106-1.digest | 21 + ...phere_light_usda-4886e72703716517-1.digest | 21 + ...iform_scale_usda-4a3711274af76a73-1.digest | 19 + ...sphere_only_usda-71bd2f6a8198f0b8-1.digest | 20 + ...e_ri_camera_usda-47b1274be8232510-1.digest | 21 + ..._tiny_scale_usda-7eb2c16e3f3404d7-1.digest | 19 + ...phere_track_usda-9c13bacd8c4d2d91-1.digest | 19 + ...iform_scale_usda-afcce7d5fa243629-1.digest | 19 + .../sphere_usda-8366b90874a02778-1.digest | 19 + ..._zero_scale_usda-ac3436d07948ddb2-1.digest | 17 + ...ed_cylinder_usda-6bfde315320c4111-1.digest | 21 + ...uashed_disk_usda-e4a3093a38518998-1.digest | 21 + ...shed_sphere_usda-7bcbaa3c83aaf92c-1.digest | 21 + .../stack_0_usda-2dad0f5ec97c10b8-1.digest | 26 + .../stack_150_usda-9fc28daf7efcde9e-1.digest | 31 + .../stage_usda-0695b3612208bcf5-1.digest | 22 + .../stage_usda-08451a086997d754-1.digest | 20 + .../stage_usda-08f2605aa76f8c5a-1.digest | 23 + .../stage_usda-0a9a4fefc79d0b59-1.digest | 20 + .../stage_usda-0dae1afcf6927089-1.digest | 22 + .../stage_usda-137bf5b9bbcbaa09-1.digest | 20 + .../stage_usda-15ab0320e4168a3a-1.digest | 22 + .../stage_usda-1780ae5d9b4706f3-1.digest | 17 + .../stage_usda-18576b421133666c-1.digest | 24 + .../stage_usda-18d4c3c27061d1e0-1.digest | 20 + .../stage_usda-19c958e4224602c7-1.digest | 16 + .../stage_usda-1ad9de82b394044d-1.digest | 22 + .../stage_usda-22dd31756ff245fc-1.digest | 30 + .../stage_usda-22e94b531779cff1-1.digest | 22 + .../stage_usda-24ad7c66559e9c80-1.digest | 33 + .../stage_usda-26105365b1fd8dbc-1.digest | 24 + .../stage_usda-2912eb63656b3371-1.digest | 22 + .../stage_usda-2c5736e1f1ba1f8d-1.digest | 22 + .../stage_usda-2c8067fb553f81df-1.digest | 20 + .../stage_usda-2ce486f3dc966042-1.digest | 19 + .../stage_usda-2ffe73dbb471510a-1.digest | 20 + .../stage_usda-323a3e02a1f4d7b0-1.digest | 16 + .../stage_usda-340b07ebab8f9091-1.digest | 20 + .../stage_usda-3622e7d90bc81d34-1.digest | 17 + .../stage_usda-370b26846e2e31bd-1.digest | 20 + .../stage_usda-370b26846e2e31bd-2.digest | 20 + .../stage_usda-37a86d28c7d197ed-1.digest | 23 + .../stage_usda-3c67a25a0a341efb-1.digest | 21 + .../stage_usda-3effc82524d047c7-1.digest | 22 + .../stage_usda-3f9cd9ed5581414a-1.digest | 22 + .../stage_usda-41ded1a4c5604d81-1.digest | 22 + .../stage_usda-41ded1a4c5604d81-2.digest | 22 + .../stage_usda-48e70f6118b1f181-1.digest | 16 + .../stage_usda-49f9cb3e8a3fb9fb-1.digest | 20 + .../stage_usda-4a064c9610d45212-1.digest | 16 + .../stage_usda-4f30830cd0cff6cf-1.digest | 22 + .../stage_usda-520aa0db2cddfe4a-1.digest | 21 + .../stage_usda-54895eac26b3d68b-1.digest | 16 + .../stage_usda-5842de9c4816f088-1.digest | 21 + .../stage_usda-591315737502029a-1.digest | 22 + .../stage_usda-592ba3007488df6d-1.digest | 21 + .../stage_usda-59354f1aad350085-1.digest | 16 + .../stage_usda-5b237a71fd087753-1.digest | 22 + .../stage_usda-5cc80e16451809c9-1.digest | 22 + .../stage_usda-5dc19c72025a0150-1.digest | 20 + .../stage_usda-5f7140cec32f4f07-1.digest | 22 + .../stage_usda-604932e0d3e70494-1.digest | 20 + .../stage_usda-64b7039b1d43e540-1.digest | 16 + .../stage_usda-65ee13ae526ffeea-1.digest | 20 + .../stage_usda-67247fa59107a671-1.digest | 19 + .../stage_usda-6bf959c4a9ccd0b3-1.digest | 22 + .../stage_usda-6d5fe86af042b6e1-1.digest | 28 + .../stage_usda-71054a8e0c511721-1.digest | 16 + .../stage_usda-7c770edd10f5907e-1.digest | 20 + .../stage_usda-8088e3bfe6185392-1.digest | 22 + .../stage_usda-80aabe25c21585c0-1.digest | 26 + .../stage_usda-82538c264d2a03ab-1.digest | 20 + .../stage_usda-82538c264d2a03ab-2.digest | 20 + .../stage_usda-82a10c399a16cdfe-1.digest | 17 + .../stage_usda-8330e4bc297d2c11-1.digest | 20 + .../stage_usda-888072d0abcb4b7c-1.digest | 20 + .../stage_usda-8a23f56494af42b0-1.digest | 22 + .../stage_usda-8b53eb2ddb581089-1.digest | 20 + .../stage_usda-8bc1102225447b76-1.digest | 30 + .../stage_usda-8bcafd97dd44d415-1.digest | 20 + .../stage_usda-8c1801ab78070f29-1.digest | 23 + .../stage_usda-8cceeaf3cdd2ee51-1.digest | 20 + .../stage_usda-91c6c701cea6760c-1.digest | 21 + .../stage_usda-93b962ab026b22b8-1.digest | 20 + .../stage_usda-976234e8d4ff9d44-1.digest | 22 + .../stage_usda-9a4d212002571295-1.digest | 20 + .../stage_usda-9af3795f55319fa5-1.digest | 29 + .../stage_usda-9f427c13a5c51892-1.digest | 22 + .../stage_usda-a366debd179e59ca-1.digest | 21 + .../stage_usda-a5b1d711f3b9ea59-1.digest | 20 + .../stage_usda-a74b5f3cf6bce97e-1.digest | 20 + .../stage_usda-a7f91b5a6640999a-1.digest | 32 + .../stage_usda-a87fd805403755dc-1.digest | 20 + .../stage_usda-abb589be134471f7-1.digest | 20 + .../stage_usda-abeca91af484e4eb-1.digest | 20 + .../stage_usda-b0726246200d796c-1.digest | 21 + .../stage_usda-b091ac35593cb491-1.digest | 26 + .../stage_usda-b8974322f9c3c9a8-1.digest | 30 + .../stage_usda-bb51bbccac634602-1.digest | 16 + .../stage_usda-bc2640abb95a8689-1.digest | 22 + .../stage_usda-bdce5005dd991897-1.digest | 23 + .../stage_usda-c3555672a13627c7-1.digest | 25 + .../stage_usda-c469a696e567b939-1.digest | 20 + .../stage_usda-c7b4569174f0eec0-1.digest | 19 + .../stage_usda-cd83faa181eb1fd7-1.digest | 33 + .../stage_usda-cf6459f3f81ccc47-1.digest | 17 + .../stage_usda-cf8a4ab339090107-1.digest | 20 + .../stage_usda-d2ee2497345d697d-1.digest | 26 + .../stage_usda-d72f3f29bbbe2aac-1.digest | 20 + .../stage_usda-db5313ef5e73713b-1.digest | 20 + .../stage_usda-dbe57a2b9b304f79-1.digest | 24 + .../stage_usda-dc3f3fbeccf7b47a-1.digest | 20 + .../stage_usda-df6e87952da2ef59-1.digest | 20 + .../stage_usda-dfcbe85c1522e1a0-1.digest | 19 + .../stage_usda-e0281d61316ee28c-1.digest | 23 + .../stage_usda-e190342a381695b4-1.digest | 20 + .../stage_usda-e4221ab681d9d69c-1.digest | 22 + .../stage_usda-e515f767109d59fd-1.digest | 20 + .../stage_usda-e6a49698324053cb-1.digest | 17 + .../stage_usda-e725f8fd7bc55370-1.digest | 20 + .../stage_usda-eae49fc2a8ca60e5-1.digest | 22 + .../stage_usda-eb49e61d600c4d7e-1.digest | 20 + .../stage_usda-ebf6853a9256b461-1.digest | 20 + .../stage_usda-ef8a900692712be4-1.digest | 17 + .../stage_usda-f1cbf14d6569cda8-1.digest | 20 + .../stage_usda-f3300bdef5e06140-1.digest | 22 + .../stage_usda-f33567936d2468ed-1.digest | 33 + .../stage_usda-fbc457cd2253b427-1.digest | 20 + .../stage_usda-fec7a3f24112f4ad-1.digest | 21 + .../stage_usda-ffdbda6eb16c3b7d-1.digest | 22 + ...tic_vectors_usda-fae85e3b03a2883e-1.digest | 20 + ...static_with_usda-9af9d7b39f92f260-1.digest | 21 + ...tic_without_usda-cd73d9530ee2de09-1.digest | 21 + .../stats_usda-00e508bd2c5eb608-1.digest | 25 + .../stops_usda-f48d13a255e8b51e-1.digest | 16 + ...egy_balance_usda-bdbde883917b565d-1.digest | 17 + ...ategy_bogus_usda-ab14768d89b4fe10-1.digest | 18 + ...rategy_bsdf_usda-f7c53ec9f704be37-1.digest | 17 + ...ategy_light_usda-ec65e0dfb065b1f1-1.digest | 17 + ...ategy_power_usda-03788414ab51c35f-1.digest | 17 + .../streamed_usda-08988239fcd84b0c-1.digest | 28 + .../streamed_usda-274e7e68b089c3ac-1.digest | 22 + .../string_id_usda-4ef78239c4d0e1cc-1.digest | 22 + .../string_usda-edd62f0c52a0bd52-1.digest | 23 + ...trip_cracks_usda-5cdf0130b2848b76-1.digest | 20 + .../strip_usda-a747742859825b3a-1.digest | 20 + .../subdiv_0_usda-6db126ded01c4707-1.digest | 21 + .../subdiv_1_usda-bde0e042f33df4a5-1.digest | 21 + .../subdiv_2_usda-47f822571f7427d3-1.digest | 21 + ...iv_bilinear_usda-287ba8f91aef206f-1.digest | 21 + ...subdiv_cage_usda-17f666e1e5c6d08f-1.digest | 21 + ...div_clamped_usda-01685ab19e968980-1.digest | 22 + ...div_default_usda-be76976c79a95643-1.digest | 21 + ...ceted_first_usda-510113487f701e14-1.digest | 26 + ...mooth_first_usda-9375effdf17e1f42-1.digest | 26 + ...bdiv_legacy_usda-e769c33757ced97c-1.digest | 22 + ...bdiv_level0_usda-436132ac852dd08e-1.digest | 21 + ..._loop_quads_usda-1e8f941ca190d506-1.digest | 22 + ...one_faceted_usda-7ad44c4961677420-1.digest | 21 + ...subdiv_none_usda-38f763827a18343d-1.digest | 21 + ...subdiv_none_usda-aea9b45539bdf216-1.digest | 21 + ...iv_override_usda-347cb15990d5b2db-1.digest | 21 + ...iv_override_usda-4180b38ea57c9096-1.digest | 21 + ...iv_override_usda-633f8e7fec39c727-1.digest | 21 + ...div_rest_15_usda-dcdc5eeb73b7d3e8-1.digest | 22 + ...bdiv_rest_8_usda-c9f6f9ef6bd5e50d-1.digest | 22 + ...iv_rule_all_usda-7c4745bac0fe1ad7-1.digest | 22 + ..._boundaries_usda-3c0d79de547dbc49-1.digest | 22 + ...cornersOnly_usda-3a7940237cbe0a3d-1.digest | 22 + ...ornersPlus1_usda-10da8f737cfaea1d-1.digest | 22 + ...ornersPlus2_usda-7ab350be92df8201-1.digest | 22 + ...v_rule_none_usda-86622a148177c839-1.digest | 22 + ...bdiv_smooth_usda-ecacf29cbe8c3a69-1.digest | 21 + ...iv_streamed_usda-6897e2d021bbe857-1.digest | 30 + ..._unauthored_usda-1f8d567cba520aee-1.digest | 21 + ...ubdiv_uv_fv_usda-5e00e8c1f3e1cc34-1.digest | 22 + ...v_uv_vertex_usda-b6cc7115ae3418dd-1.digest | 22 + ...on_adaptive_usda-4b5883574262488d-1.digest | 45 + ...on_adaptive_usda-8765a889a888ae6b-1.digest | 45 + ...on_adaptive_usda-95a3e0a9db67a1fb-1.digest | 44 + ...on_adaptive_usda-de7625b66c9d664b-1.digest | 45 + ...on_adaptive_usda-de7625b66c9d664b-2.digest | 45 + ...subdivision_usda-093423ee46de2ab4-1.digest | 56 + ...subdivision_usda-59b7fc0fc3af435b-1.digest | 57 + ...subdivision_usda-59b7fc0fc3af435b-2.digest | 57 + ...subdivision_usda-c1e09f9374aaab81-1.digest | 57 + .../sun_delta_usda-ea8cdfc115606b89-1.digest | 19 + .../sun_lux_usda-f3cb39d866e6c449-1.digest | 19 + .../sun_narrow_usda-cc46151e1eb78ebf-1.digest | 19 + .../sun_nits_usda-8ccba3be0d36785e-1.digest | 19 + ...orted_types_usda-5cac3f5a887f68e8-1.digest | 55 + .../synonym_a_usda-c8543088a0bca8e3-1.digest | 19 + .../synonym_b_usda-5b26c8cc28a6baa8-1.digest | 19 + .../textured_usda-addde73d309fca5e-1.digest | 22 + ...thin_window_usda-61e111e4ca995610-1.digest | 35 + ...thin_window_usda-9e0a6257872a8f5f-1.digest | 35 + ...thin_window_usda-da2b075160721507-1.digest | 35 + ...thin_window_usda-da2b075160721507-2.digest | 35 + .../tiles_usda-63de672cd360cf69-1.digest | 26 + ...e_sampled_1_usda-ee3787d0222ab673-1.digest | 18 + ...e_sampled_2_usda-4dad1e9703710b97-1.digest | 18 + .../time_usda-a4ea088a5cd5b4c7-1.digest | 17 + ...nce_default_usda-3a112890c553cc1b-1.digest | 17 + ...lerance_nan_usda-22547c2684ba9e8c-1.digest | 18 + ...lerance_off_usda-f5f012b4db29329d-1.digest | 17 + ...slate_scale_usda-f3698f1a1411c8b2-1.digest | 21 + ...atex_curves_usda-65ef3846123d9b35-1.digest | 19 + ...slatex_disk_usda-9d38522639915278-1.digest | 21 + ...tuft_shadow_usda-1baacafb4242e12e-1.digest | 28 + .../twice_a_usda-0f943c80bd7e2c65-1.digest | 23 + .../twice_b_usda-b96b0ece9c5875aa-1.digest | 23 + ...roken_first_usda-3cb7946e1e445b8e-1.digest | 16 + ..._shot_first_usda-a7d808f7cd7c7a83-1.digest | 16 + ..._instancers_usda-287c7bdad0690e3b-1.digest | 21 + .../unauthored_usda-1a04ae4ebcf35cb8-1.digest | 18 + .../unauthored_usda-9a9d89c801b1b740-1.digest | 30 + .../unbindable_usda-a5d47f8d674e7ddd-1.digest | 27 + .../unbound_usda-19c17e4f548a50df-1.digest | 23 + .../unbound_usda-4ae577ca0b682f0f-1.digest | 27 + ...iform_cages_usda-2c90ea028524eadd-1.digest | 22 + ...iform_cages_usda-b6490d10d0de391f-1.digest | 22 + ...iform_cages_usda-d12f6f58167b27f9-1.digest | 22 + ...iform_cages_usda-d982dbb48b0da21b-1.digest | 22 + ...form_colour_usda-6a475987121a1476-1.digest | 22 + ...t_tiny_lens_usda-aa2efc45eecd1493-1.digest | 17 + ...unit_volume_usda-693980b7090e37bf-1.digest | 18 + ...t_zero_lens_usda-d1f56221f44bb692-1.digest | 17 + ..._zero_named_usda-9847ffecfd9df22b-1.digest | 17 + ...ero_pinhole_usda-af47867eeabcfd70-1.digest | 16 + ...own_display_usda-e75f3f3b8d756ec8-1.digest | 27 + ...nown_filter_usda-ed678783aa9ef74d-1.digest | 27 + .../unknown_op_usda-954c2bfc62b12357-1.digest | 27 + ...nknown_type_usda-d0386e0b10524625-1.digest | 19 + .../unnamed_usda-ed6b84994bc45537-1.digest | 16 + ...able_winner_usda-514f97ffe2814294-1.digest | 23 + ...n_prototype_usda-d2aca9633823884e-1.digest | 18 + ...ed_type_one_usda-61236dabf0bd2054-1.digest | 17 + ...orted_types_usda-4026b0fff876b77b-1.digest | 17 + ...unsupported_usda-25a7c1709e68a39b-1.digest | 27 + ...ble_texture_usda-0a21b6baa96879e3-1.digest | 23 + .../usdlux_usda-0d6669b552eae2be-1.digest | 56 + .../usdlux_usda-39cf98150f7f0d03-1.digest | 57 + .../usdlux_usda-39cf98150f7f0d03-2.digest | 57 + ...ew_textured_usda-36a3119df926a1de-1.digest | 42 + ...ew_textured_usda-7e17862f6c19bca4-1.digest | 42 + ...ew_textured_usda-ae16aa06d4e182b3-1.digest | 43 + ...ew_textured_usda-ae16aa06d4e182b3-2.digest | 43 + .../uv2_usda-a9136787dec77f95-1.digest | 22 + ..._dedup_same_usda-9ef71121455e022c-1.digest | 25 + .../uv_dedup_usda-3e327caf2288bcc5-1.digest | 26 + ...ar_authored_usda-30d82aafae5b77cb-1.digest | 24 + .../veach_mis_usda-30c729cf3e421f8c-1.digest | 61 + .../veach_mis_usda-30c729cf3e421f8c-2.digest | 61 + .../veach_mis_usda-324cce08805da6ff-1.digest | 61 + .../veach_mis_usda-3b12df225993b91b-1.digest | 61 + .../veach_mis_usda-3b12df225993b91b-2.digest | 61 + .../veach_mis_usda-3d8992b3ea4a144d-1.digest | 61 + .../veach_mis_usda-3fdc201d13c79fac-1.digest | 61 + .../veach_mis_usda-4f2fb0dc74121654-1.digest | 61 + .../veach_mis_usda-4f2fb0dc74121654-2.digest | 61 + .../veach_mis_usda-4f2fb0dc74121654-3.digest | 61 + .../veach_mis_usda-4f2fb0dc74121654-4.digest | 61 + .../veach_mis_usda-6dae75008d5ac94f-1.digest | 61 + .../veach_mis_usda-6dae75008d5ac94f-2.digest | 61 + .../veach_mis_usda-6dae75008d5ac94f-3.digest | 61 + .../veach_mis_usda-6dae75008d5ac94f-4.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-1.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-10.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-11.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-12.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-13.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-14.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-15.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-16.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-17.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-18.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-19.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-2.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-20.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-21.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-22.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-23.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-24.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-25.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-3.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-4.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-5.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-6.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-7.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-8.digest | 61 + .../veach_mis_usda-70c995e092ab1d61-9.digest | 61 + .../veach_mis_usda-7b2ec235dd7d06ba-1.digest | 61 + .../veach_mis_usda-8251e3de3f3f6069-1.digest | 61 + .../veach_mis_usda-8251e3de3f3f6069-10.digest | 61 + .../veach_mis_usda-8251e3de3f3f6069-11.digest | 61 + .../veach_mis_usda-8251e3de3f3f6069-2.digest | 61 + .../veach_mis_usda-8251e3de3f3f6069-3.digest | 61 + .../veach_mis_usda-8251e3de3f3f6069-4.digest | 61 + .../veach_mis_usda-8251e3de3f3f6069-5.digest | 61 + .../veach_mis_usda-8251e3de3f3f6069-6.digest | 61 + .../veach_mis_usda-8251e3de3f3f6069-7.digest | 61 + .../veach_mis_usda-8251e3de3f3f6069-8.digest | 61 + .../veach_mis_usda-8251e3de3f3f6069-9.digest | 61 + .../veach_mis_usda-918cd4cfc31f23ae-1.digest | 61 + .../veach_mis_usda-c455222f332b9874-1.digest | 61 + .../veach_mis_usda-c455222f332b9874-2.digest | 61 + .../veach_mis_usda-c455222f332b9874-3.digest | 61 + .../veach_mis_usda-ecedf2e2c801d4c5-1.digest | 61 + .../veach_mis_usda-ecedf2e2c801d4c5-2.digest | 61 + .../veach_mis_usda-ecedf2e2c801d4c5-3.digest | 61 + .../veach_mis_usda-eeb660d07679d619-1.digest | 61 + .../veach_mis_usda-f7c825bf3b0bac82-1.digest | 61 + .../visibility_usda-0f9ed9fc0b62a02c-1.digest | 27 + .../visibility_usda-2bf7c45881effd3f-1.digest | 29 + .../visibility_usda-d0c678c9c1d6a069-1.digest | 29 + .../visibility_usda-f7d5c6c9644dd6bb-1.digest | 29 + ...sible_light_usda-c593161971da5ec4-1.digest | 21 + ...n_prototype_usda-d6406b3b1214ee81-1.digest | 19 + .../volume_usda-a8034cd85e6f3de3-1.digest | 19 + .../volume_usda-bac87085eea27fa2-1.digest | 18 + .../volume_usda-dc3452b116e9581a-1.digest | 19 + .../wide_ok_usda-07bfe44a3376f28e-1.digest | 26 + .../wide_usda-98ba41961b37bb34-1.digest | 27 + ...tom_quarter_usda-3769adf96d53a2f1-1.digest | 18 + ..._boundaries_usda-8ec00fd05808f90e-1.digest | 18 + ...dow_centres_usda-5b25bbbab727a81b-1.digest | 18 + ...dow_default_usda-1d0d1bbb6d0e388d-1.digest | 18 + ...indow_empty_usda-c239bdc771be269c-1.digest | 19 + ..._unauthored_usda-6f84b7cb89845fa4-1.digest | 18 + ...ow_honoured_usda-0e440c93c494db71-1.digest | 18 + ...no_products_usda-9317bad8a6d2e63d-1.digest | 18 + ...w_off_frame_usda-0e5c269b6dd24fb6-1.digest | 19 + ...w_one_pixel_usda-66ddf756a5e443fe-1.digest | 18 + ...ow_overscan_usda-c27e01fde4009f5e-1.digest | 19 + ...t_overrides_usda-bb3b29ebf7dd99a8-1.digest | 18 + ...ucts_differ_usda-78414609fe85fc23-1.digest | 19 + ..._right_half_usda-c5f5b85f1946cb91-1.digest | 18 + ..._unauthored_usda-5d663894090b1282-1.digest | 18 + ...king_acescg_usda-453466808888f80c-1.digest | 25 + ...ing_default_usda-5aec729f1efbcf98-1.digest | 25 + ...orking_host_usda-964cb93fefda7817-1.digest | 17 + ...orking_srgb_usda-8fdff51064dc58c9-1.digest | 26 + .../x_usda-4b3ed4428fa191c7-1.digest | 40 + .../x_usda-4f6345f399f0a5af-1.digest | 40 + .../x_usda-a701d438407a1ca1-1.digest | 40 + .../x_usda-d5611726aa414464-1.digest | 40 + crates/crust-core/tests/layering.rs | 2 +- crates/crust-hydra/Cargo.toml | 5 + crates/crust-render/Cargo.toml | 3 + crates/crust-render/tests/import_parity.rs | 168 +++ .../moho-import/specs/import-parity/spec.md | 8 +- openspec/changes/moho-import/tasks.md | 68 +- 1789 files changed, 71786 insertions(+), 33 deletions(-) create mode 100644 crates/crust-core/src/parity.rs create mode 100644 crates/crust-core/tests/data/import_baselines/PointInstancedMedCity_usd-951317bf2ce0f6ed-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/absorber_usda-e5a517b5b36fd7e1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/adaptive_bounded_usda-871964d811713ece-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/adaptive_unbounded_usda-6ab4975baebe18ef-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/adjust_aperture_height_usda-9d28c7b3a9cad9f9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/adjust_aperture_width_usda-c50e2f84bef7e6b7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/agrees_with_spec_usda-985ed763a0957571-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/anamorphic_usda-c23c78df222208eb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/ancestor_usda-3171d13289efaaff-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/ancestor_usda-74843e3cc431dad3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/animated_no_shutter_usda-dc5451565381429f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/animated_usda-84baf2836991de3b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/animated_usda-e242162a2dbef33a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-0b34d79521209b48-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-5446fd76cda9ed55-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-7b809f697af333f7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-87536adca26db1ce-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-a8098f0bc76c3026-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-beee1323479cf47f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-cca20ab6197e3823-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-cfe8a27d275b06f7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-d9cfa85be82eff7f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-dc0987b1e9c0a44b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/aov_format_usda-3d1985fd48e4fb2d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-4a2c1502ba0a175e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-5ec9a160b78f998f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6a98ab5ed25ffa78-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6d6e4a8f31366652-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-803d9a5b24ae0e42-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-c88cebf77c02e1c8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-96034a4139733157-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_usda-90b4ce2557c1c46e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_usda-cd31a05d6e49ceda-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/area_lights_usda-07bd34a97e44c0ab-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/area_lights_usda-6989a4d471c724cf-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/area_nothing_usda-bf90dbc7327fa98c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/area_nothing_visible_usda-2f4e016170ad5820-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-3b3a8108b3e9fae9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-41ce6942a2d54582-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-6567e83e5076f9db-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-9934bec515530278-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e4930eb0174b9dd7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e7566c662eda92b2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-ec05a5f1f38841c6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-f9c370778b865b50-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/authored_only_usda-e3c97926a3d11ac4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/backdrop_dome_light_1_usda-bda39b6574f6f444-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/backdrop_streamed_usda-5c630271a8fcfd44-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/backdrop_usda-2757fcfd84c07e64-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/backdrop_usda-3818c88f3ea1e994-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/backdrop_usda-e17ddb582cb97b8c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/backlit_diffuse_usda-3dfba11cda1cd7c6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/backlit_hair_usda-59f16e3a1a4f9b6d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/bad_length_usda-3ab7b93f882199a8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/bad_volume_usda-00cc0d19953cb7f6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/banded_dome_usda-03eaa43cee7b25ab-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/binding_usda-3ec3b212bbee4e90-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/black_usda-ca3475f9863dc283-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/blackbody_acescg_usda-e4fe8984977e4dc5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/blur_default_usda-d0c5474e0dfbe769-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/blur_false_usda-8f6712fd58e3e7dd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/blur_product_inherits_synonym_usda-8cbc9a895bc4da45-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/blur_product_off_usda-ad5ae20ae0e9dd8e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/blur_product_on_usda-9e081a22d073a61a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/blur_products_differ_usda-97d616ea3858dc6c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/blur_products_same_usda-f8c20e3d816829cd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/blur_products_spellings_usda-e53f8c9eb1fa898a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/blur_settings_only_usda-57bf8b1f820d60e9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/blur_synonym_usda-5c4201bf40a84766-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/blur_warnings_usda-560d69942e1e7771-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/blurred_usda-152a0fdff5c8c9a3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/both_usda-4af15817dabdb39f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/boundary_usda-85fcb2406c56d725-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/broken_materials_usda-040c16d0365cbc63-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/broken_mesh_usda-217190c267ddf4a1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cage_three_usda-65204db7a7ccaed8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cam_narrow_usda-dcae36868790f279-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cam_none_usda-1ef9fbd129b9560a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cam_none_usda-2cb27e460ee10e43-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cam_wide_usda-098c8afc4872dbb7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/camera_dof_usda-f69bc93db8900a0e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/camera_ortho_usda-21d5879ec7de6dbf-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/camera_projection_unknown_usda-8a8cac00719054ad-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/camera_rot_usda-c74e88c7205b56e5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/camera_usda-2d8f34945903545d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/camera_visibility_usda-0af373522188190d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/camera_visibility_usda-5198be21d5bb35d1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/camera_zero_focus_usda-ad065540da61feb4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/capped_usda-de82c45ab5a80eb6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/centred_both_usda-06ae7e6ad41f5b45-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/centred_frame_usda-200d23d9927b7966-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/centred_open_usda-75e668aa9e5ecb2d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/chart_interp_constant_0_usda-16acce3a8ae23e69-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/chart_interp_constant_2_usda-51380ed7a7ea4305-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_0_usda-a6d6a93dda32caf2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_2_usda-bad2637a6a91c73a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/chart_interp_uniform_0_usda-ffe6596ba2b6a108-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/chart_interp_uniform_2_usda-815f4bb2830bedd0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_0_usda-a6e2151559aa05f1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_2_usda-49181df1e2a2d359-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/check/PointInstancedMedCity.usd.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/animation.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/aovs.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/aovs_lpe.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/cornellbox.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/cornellbox_guided.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/curves.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/displacement.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/dome_backdrop.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/domelight.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/fog.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/hair.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/hair_variation.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/implicit_shapes.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/instancing.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/light_linking.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/light_visibility.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/many_lights.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/mass_spike.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/materialx_basic.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/materialx_cutout.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/materialx_emissive.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/materialx_lion.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/materialx_showcase.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/materialx_subsurface.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/materialx_surfaces.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/materialx_teapot.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/materialx_volume.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/motionblur.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/motionvector.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/nested_instancing.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/openpbr_showcase.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/precomp.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/primvar_aovs.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/ptex_quads.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/purpose_bindings.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/pxr_displace.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/rectlight.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/render_passes.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/smoke.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/subdivision.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/subdivision_adaptive.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/thin_window.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/usdlux.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/usdpreview_textured.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/check/veach_mis.usda.json create mode 100644 crates/crust-core/tests/data/import_baselines/clean_usda-d4e60f418d0e5485-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/clear_usda-487518c3a2bde507-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/closest_usda-b1b06704b4564b8c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/color_space_api_usda-7258fb7a16ddde2f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/color_temperature_off_usda-d2963845fd5e72c4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/color_temperature_usda-a7d9f5fccba89fff-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/compensation_alias_usda-ea168514e7b00460-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/compensation_off_usda-37a366efa8d50980-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/constant_cage_usda-6838009dc4d51123-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/constant_none_off_usda-4da7234b198fc34c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/constant_none_usda-3f38201b0c964211-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/convolve_usda-ae27710a0c217615-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/copper_usda-856b7fd7384c75f6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-1f6a1535ca10a892-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-dddcb8fd2ce59c1f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-28fa5fe21d50ecee-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-8e3a0cbcd6f4b7b0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-937b5a30e0d1b2a9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-a0bb21684d68d231-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-f5ac4ca7187d0afa-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-021e0477d02e8b56-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-08de1880a086a764-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-15e73f9974620a1a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-16d2af5b91e595bd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-1aeeae0fba6dbe97-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-248f67f6240f7680-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-254e9b608e6c20f0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-265ef4c54c4d2534-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2711a47b10d83a96-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-4.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-5.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-6.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2cf51e7bf43f4fa8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a12e7835578a84e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a2af9f3e570b458-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c316a1edd099ef0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c74fafa1c66c123-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-3cac72b0550f05b3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-450b164daa4e0f80-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-48a104b8a2799466-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-518e1fd5063f7227-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-10.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-11.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-12.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-13.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-14.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-15.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-16.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-17.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-18.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-19.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-20.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-21.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-22.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-23.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-24.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-25.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-4.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-5.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-6.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-7.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-8.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-9.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-5d064faa753e9d7b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-5e1b400d2f0d70bc-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-5ff835103ecfad3e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-61a13a775605a0ce-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-61e87f520a6a2dff-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-63b1f6980e443f71-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-67753350f4f997a4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-67d6afd449214b25-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-7300aa94ecae6c37-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-7478515f32354718-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-7ba56e4f79d4195f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-7e55fcb3620f4663-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-7f63dd70a33e2183-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-4.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-88df24aa0618a335-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-88e25ed80282bc79-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-88eeabb6ac92eef4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-89c626c1e078ca38-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-8e692f67a3c276f4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-8ecb1db3e29a9e13-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-93e84687c267227a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9514c8683d2c9e4d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-96761b8033e5fb3c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-987ee05acd715dfa-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-99aef82ca410b677-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9a0515f0d918dd40-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-10.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-100.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-101.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-102.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-103.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-104.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-105.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-106.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-107.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-108.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-109.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-11.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-110.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-111.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-112.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-113.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-114.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-115.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-116.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-117.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-118.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-119.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-12.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-120.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-121.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-122.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-123.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-124.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-125.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-126.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-127.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-128.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-129.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-13.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-130.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-131.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-132.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-133.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-134.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-135.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-136.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-137.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-138.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-139.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-14.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-140.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-141.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-142.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-143.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-144.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-145.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-146.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-147.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-148.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-149.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-15.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-150.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-151.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-152.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-153.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-154.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-155.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-156.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-157.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-158.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-159.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-16.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-160.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-161.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-162.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-163.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-164.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-165.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-166.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-167.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-168.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-169.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-17.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-170.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-171.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-172.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-173.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-174.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-175.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-176.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-177.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-178.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-179.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-18.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-180.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-181.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-182.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-183.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-184.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-185.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-186.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-187.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-188.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-189.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-19.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-190.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-191.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-192.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-20.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-21.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-22.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-23.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-24.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-25.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-26.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-27.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-28.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-29.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-30.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-31.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-32.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-33.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-34.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-35.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-36.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-37.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-38.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-39.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-4.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-40.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-41.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-42.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-43.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-44.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-45.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-46.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-47.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-48.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-49.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-5.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-50.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-51.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-52.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-53.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-54.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-55.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-56.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-57.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-58.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-59.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-6.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-60.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-61.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-62.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-63.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-64.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-65.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-66.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-67.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-68.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-69.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-7.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-70.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-71.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-72.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-73.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-74.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-75.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-76.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-77.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-78.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-79.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-8.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-80.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-81.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-82.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-83.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-84.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-85.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-86.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-87.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-88.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-89.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-9.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-90.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-91.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-92.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-93.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-94.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-95.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-96.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-97.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-98.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-99.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-a06c636245c00028-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-4.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-5.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-6.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-a1b6b7b33175c629-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-a6c99e7589fd5bbe-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-4.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-b194c866668b8c75-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-b32b870ba5ca59f9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-b3d2bc2ed9037c82-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-b62de59b31ca0e80-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-b6c7e44d8560abd5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-4.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-5.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-be34c0d526943796-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-cb7b0dee2139a326-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-cdab40c0e9cba23f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-cf47b345f0453895-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-d3d144cf7b8b758b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-da1f2707813489ef-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-4.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-ec6907d7b5edc24c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-ed05b9821202ec22-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-efc8f2e410ea1edf-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0235d211948c8ae-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0d9751b5af0e124-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-4.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f52f4933a61a7b17-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f72ab0ee474423bf-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-4.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-fc498f82a9cb979f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/counters_usda-4398822590228cb6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/curves_usda-49b1041fa43b5df8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/curves_usda-6c82e9cb233e7c1e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/curves_usda-bf538717464b4055-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/curves_usda-e59f2a157a03b823-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cycle_usda-6c5127dceb205457-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cyl_far_usda-14bf93b40e3110ed-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cyl_near_usda-8880b5f4401667ce-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cyl_proto_nested_usda-337785a80bd25b4b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cyl_proto_once_usda-5861fac834a9592e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cyl_proto_twice_usda-9d0b4387b8ae21e9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cyl_unnamed_usda-6b8943ce79ec798b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/cylinder_light_usda-a8869b560165f646-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dangling_usda-33cdcee1c03a3f62-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/default_links_usda-fa4bfc17658672ca-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/degenerate_lights_usda-c119df2817a52e22-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_alone_ref_usda-ad2f6d6f9f5a6b34-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_alone_usda-d2a904287b895157-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_near_usda-2b8cc53942e05573-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_nothing_usda-02863a7cb9ea2edb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_product_diced_usda-bde5502fcf67625f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_product_ref_cam_usda-206ed631706e669f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_product_ref_near_usda-a7f21d55b08b22eb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_product_usda-0fe0e77ccc289c1f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_property_usda-541c1a7591a9b5c0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_ref_usda-450597df8121a96c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_self_usda-9d54e5a1b138ff5e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_through_near_usda-43e145636209967d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_unauthored_usda-d941af55d3f95425-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_unnamed_usda-1911d7362c693947-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_xform_usda-fdb39a50b9314e69-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/disabled_broken_usda-3e31009d90ef26ec-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/disk_light_usda-720389dc27e2a4c4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/displaced_rest_usda-d70fe6fb257dd183-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/displacement_usda-03e54e80075ba30c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/displacement_usda-180936ed9cbacb0b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/displacement_usda-4db664e792f21a27-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/displacement_usda-5e2aa9f4f1dfd37e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dof_default_lens_usda-c199c396bb781cc0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dof_default_usda-57e78e0586982b2f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dof_disabled_bad_unit_usda-b76c543fc6398eaa-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dof_disabled_usda-420b407ea5317d3e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dof_fallback_lens_usda-bff40e44436746b1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dof_fallback_pinhole_usda-c69160a93b244f8f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dof_product_off_usda-ec7655fdc64080b7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dof_product_on_usda-642bf95d97820f23-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dof_product_on_usda-9b87c5f936703494-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dof_products_agree_usda-1f54c058d539370a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dof_products_differ_usda-a379642f2edc4361-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dof_products_disagree_usda-8e35ec3ea864f596-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dof_settings_only_usda-dc3a7d2e89c34444-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-06f3801d332f35bd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-2d5a500fad6dcfad-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-4222ab94f00b4ba4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-43c08f98bb3b74e6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-7b71c02186033a9a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-88f2729f3b3188bb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-9d834df56ca3b1ac-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-af5d67f7909dc65a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b592bc76e2706492-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b9dc71e44c528187-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_camera_off_usda-b5a9eac417c3bdbb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_crust_wins_usda-0bfe2eb5bc4f83c5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_default_usda-7c13b46b00b734f8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_exclude_bsdf_usda-fb9c2dcc2b05783e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_exclude_power_usda-a488dc90e33bf33b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_0_pole_scene_z_up_usda-4a3a839d045f42ae-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_0_reference_usda-e3c0f10234d60e6f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_1_pole_y_usda-b39274d8389c93ec-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_1_pole_z_usda-3ab2d43568c3a9ca-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_1_rotated_usda-96a7a52ba96f792f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_1_scene_no_up_usda-db7f3549433e3ca1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_1_scene_y_up_usda-cef3793797de068b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_1_usda-771e6d7e193401ac-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_1_z_up_usda-d2385f77c8ec6eb4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_usda-f46a39c15abcc98f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_no_assets_usda-b8800e7204db6d4a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_power_usda-abfbd64e964dc44d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/dome_ri_camera_usda-acf95ad397fe1930-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/domelight_usda-22dcdc7630c52071-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/domelight_usda-5a2a25c11957ed70-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/domelight_usda-5d8f200125b9fd09-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/domelight_usda-7f00a6c7fd4959fa-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/drop_usda-214f7b543bee6df1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/drop_usda-4c62c449da4ae2d3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edge_false_usda-dfb19c6c90615a56-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edge_true_usda-bddf6fe338522a86-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edges_usda-9743a0d0ff86dafe-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-077b57f7b0804f19-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-085dfd17ac95282d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-188f318a9146ce97-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-1966e17597c3de42-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-19a787b3bcc74617-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-23003ea81a2d2024-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-23fb1cff1e547a51-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-24cc8ef3649b336a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-30c8f1f2b1117913-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-339a76e50715bbe3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-3450a9d6105e89a6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-411d0a61690b9e71-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-43a14b5e78154dda-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-483e16501c86632a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-4966b50c696e8080-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-4cf921963a4325e9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-4d3c65f04d4eaea9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-4dd694c9b20daa77-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-516372ff4968411b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-53a62fecc28e0de7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-5521dd197a77f33e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-57fa1e33af4efac6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-5f2834619e774ab4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-6019827f6d635824-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-65b79e09c14be76d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-662e56b1a93d2d66-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-6deff31ef60f6033-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-7239cb83230ea59e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-786eedaaaa2108bd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-939ae62aa1013f1f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-9785472850c84b20-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-9829e1b01f60d251-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-9829e1b01f60d251-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-9f3ec2b0f2000d47-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-a15a160797d16740-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-a15f50a6d270c4d6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-a2d6c26d716466c1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-a693bfb772c311e2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-a9ea182c81eccd64-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-aafb5513a53fa62e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-b0da370b544b77b5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-b14405d5563d3059-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-b271371e2517722b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-b80eb10c2ba34178-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-b8d0f20bfaa82329-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-c0b43128dd170a60-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-c1012e35073052d4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-c5e06d108f13878a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-c6a1743cb004bfc8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-cfa1cdf26c62d04e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-d51c63f9aa3e9706-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-d6c1dd24567db6e1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-dcd2a1d09ecabfda-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-e3a820d4d01acabc-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-ea33d0579957ea29-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-ec4aae2ab8a0f13f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-efadd5d5ae9b33c8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-f437292a1baf4562-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-f7edbb7e619c3f5d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-fdfde88486c6dc74-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/empty_source_name_usda-acd517e82c0f53e1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/empty_usda-c1bba32cb87c83e9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/exposure_0_usda-c142af23c7dc6585-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/exposure_2_usda-1ae682494eb4e641-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/exposure_usda-0139c7326dc66b4b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/expression_usda-843ebd908965795b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/expression_usda-e90ffc3af7a5e58d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fallback_usda-0dcbe995ba9d33f5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fallbacks_usda-19de7bd844b31582-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/far_light_blocked_usda-ad271da815e04f1e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/far_light_clear_usda-4072c77a8d9198cd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/far_light_dimmed_usda-8a326222fcc01e51-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/filters_usda-c37f75b53580c4aa-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/five_usda-1346633108536d3b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/five_usda-98f6c3806296ddf6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_a_usda-c25ea86ab9b74771-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_b_usda-d165df586bcbb934-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_bsdf_usda-240806b5ed98a443-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_excluded_bsdf_usda-9ebfc40e02ef831f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_excluded_power_usda-a0c514c4c53c3bc4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_light_usda-ac22cdb8dae42d75-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_lit_bsdf_usda-4f776a8e8b44bb17-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_lit_power_usda-cbade45198a3c38a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_power_usda-c8d64f5dff77f2e7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-219213dd24619244-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-509c893b29b09cb4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-54b48891484e98a0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-643d53c126eee84d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-4.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-5.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-c4be6859ecb41784-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fog_wall_usda-d41794b69bda1696-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/foreign_mtlx_usda-1e9da30a7325ba81-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fov_cm_usda-aeeac260878050ff-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fov_m_usda-b134eebe4c048026-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/frustum_usda-78a6eed72a138fc6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_a_light_s_shape_usda-ca8302fa13315ae0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_a_transform_usda-b99d3970dc3191b0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_adaptive_diced_rotate_usda-e8c2998b278e7b4c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_adaptive_diced_translate_usda-0b0bd3f1a63779cf-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_adaptive_exposure_usda-6a1bc74cbd2099fa-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_adaptive_undo_exposure_usda-8cd035220544928f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_base_colour_usda-185573627cdcf2a6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_carried_fog_usda-b5397418f77073c1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_changed_on_disk_usda-0c8b6f9bfb68059a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_cornellbox_rotate_usda-76b2e5fb271f6c0c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_cornellbox_translate_usda-ab7177593fd6f36b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_demoted_K1_usda-e328a49ee95fd405-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_demoted_K4_usda-d0354a764756e3b4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field__bad_unit_usda-bf5aa1ce7a54f9e2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field_usda-61f50bc7be824751-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_dome_hidden_rotate_usda-82abbe3ed6112a4c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_dome_hidden_translate_usda-a8196d9e2f17ecbf-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_dome_texture_usda-c3e04747e405ac6e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_drop_usda-a61417609925c673-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_exposure_usda-fe83c794ae61f2a2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_fixed_usda-adb1781d64f694c8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_groom_base_colour_usda-dd47b7dff78ee58e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_groom_primvar_undone_usda-318d40a5ee9b02d7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_groom_reads_its_primvar_usda-98bf5373a7d5697f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_linked_Fill_usda-cb706e1f9f991794-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_linked_Key_usda-db486cee2438fb3b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_linked_Rim_usda-2874a091d25b590b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_linked_undo_Fill_usda-a93137db50fd28c8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_linked_undo_Key_usda-1239d0ab4241ef3f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_linked_undo_Rim_usda-03ca7b9265c405f0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_max_depth_usda-1164faed927e051e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_meshes_rotate_usda-402e98fde9a693c4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_meshes_translate_usda-ee4192f2a802af39-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_move_the_new_camera_usda-73f0dca6c14ef5d7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_on_screen_diced_rotate_usda-d7adb4497350da61-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_on_screen_diced_translate_usda-6bfd0fb9adcbe164-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_on_screen_exposure_usda-b0790c819b4e0d97-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_on_screen_undo_exposure_usda-c40080b74d3fb5a6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_payload_rewritten_usda-03a6e3d1a01a5551-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_payload_roughness_usda-498bc078c77be0a5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_payload_undo_roughness_usda-7143361153e7f548-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_products_with_Pref_undone_usda-774a34f5226e3639-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_products_with_Pref_usda-8674ccd68263fd36-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_re_exported_usda-39edd0f167e79907-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_rect_light_usda-efc21afcf05d7959-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_reloaded_usda-5a765fd50dde24be-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_reset_the_camera_s_transform_stack_usda-38a53b23a8f224c2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_retarget_a_diced_adaptive_scene_usda-bde6533023d6ccd8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_retarget_an_adaptive_scene_usda-721dc26887b364a7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_retarget_the_product_camera_usda-0a3badd9a91b1027-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_retarget_the_settings_camera_usda-2b1ab3b4034d45bb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_retarget_to_a_carrying_camera_usda-56381435fa6b51f5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_roughness_usda-a1ffe89d435678bc-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_sampler_usda-27ca674891cf7c52-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_scatter_usda-80ff37fcf1ff9f3c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_shared_shader_usda-bcebf475c7d9ca1f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_sharp_at_the_frame_usda-06436b4d06eb2f5f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_shutter_close_usda-ce0b12427cfd435b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_shutter_exposure_usda-36da172692d8936a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_sublayer_rewritten_usda-2e79c887f2d55e88-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_texture_file_usda-1fd2cfaf6e5de06c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_a_light_s_shape_usda-f05814080b96dca5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_a_transform_usda-d26b3a02a093ce4f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_base_colour_usda-d814da72eab3f116-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field__bad_unit_usda-6419381399744bc7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field_usda-3ef9a9cb1855677e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_dome_texture_usda-a17c02c0536bdc00-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_exposure_usda-c9169e83397e3561-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_max_depth_usda-a8a78eb6299a327a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_rect_light_usda-2d6a907009434890-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_roughness_usda-62c5e0d0879e604d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_sampler_usda-0d28664679d41bef-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_shutter_close_usda-f7c724218b21e98a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_texture_file_usda-d5aef4a622503f01-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_the_product_retarget_usda-1e1edebd41fde9bc-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_the_reset_usda-7e7c9dbebb517c2f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_the_rotate_usda-c1aa90b58073a573-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/full_undone_after_reload_usda-b19199733b99fec2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/furnace_ball_usda-54ac5243ee332532-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/furnace_usda-bbc6fe1cb946780f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fvar_bilinear_usda-8ca893f677c91586-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/fvar_loop_usda-855199bacac38db5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/geometry_usda-3299cf85fca858a4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glass_usda-6ef57f18257a3d7a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_1_usda-8cc43a3f4dae46fb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_2_usda-ff99772c18e0997c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_3_usda-8c8e2079502f800d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_4_usda-76914e768885b3e6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_1_usda-7fde13de0abc769b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_2_usda-58c418a757f93b46-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_3_usda-0e4d0c5d73f098b1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_4_usda-db6287c220d2329c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_1_usda-da25e07b06740551-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_2_usda-ddbe5a176c05cba2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_3_usda-06ab9cf1d9f5303b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_4_usda-bae142df171828c4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_1_usda-8463e7fa7c167c7f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_2_usda-dcf0f8d60a6084ce-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_3_usda-fedffe90ed130071-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_4_usda-654bf9f6d4073ca8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_1_usda-5434dbae8c19939f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_2_usda-bb9d9ab32ead4e0e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_3_usda-edc5ae56976f1ff1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_4_usda-b2e4ed7db6e6d9c8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_1_usda-03a3c8316f39e87b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_2_usda-33306f5e5e7489a0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_3_usda-d3cf26f624795805-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_4_usda-bc3c2cc49389e192-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_1_usda-c5cb6d9f35a09a41-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_2_usda-4db04417a2f553bc-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_3_usda-8962360ec726337b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_4_usda-704837282362091e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_1_usda-b16be3e51935cdad-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_2_usda-9bd601062d2922a2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_3_usda-af38f2deac1db5db-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_4_usda-e07f6fc2b4bb4c68-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_var_light_1_usda-950756ddd9a80314-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_var_light_2_usda-6aede4cf281248af-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_var_power_1_usda-712adb9891f33818-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_var_power_2_usda-ccbbda539b6109ff-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/hair_usda-65dd84de0e473f00-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/hair_variation_usda-4ab3c7f511466a98-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/hair_variation_usda-aa2b773ff3d2e5c2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/hidden_source_classes_usda-a9259268854e750e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/hidden_usda-9a2924a818f3fb98-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/hidden_zero_scale_usda-a4193f9a6324f7d0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/high_bits_usda-276acbda2859c899-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/holdout_usda-fcfa139ef12785fd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/houdini_var_usda-c716d987aba001e4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/huge_blur_usda-2cc6d64af71f20b3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/huge_kernel_usda-a515683f6e1b404a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/ies_light_usda-9afaa60e27f14926-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/ignored_curves_usda-d8234281140f3b7d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/ignored_light_usda-26909110fbe92be4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/ignored_prototype_usda-f94b3942ea16e527-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/ignored_volume_usda-32845f161c65c4a9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_Capsule_1_usda-751cd07d979a4d81-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_Capsule_usda-3ad3fb7cdd9a1902-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_Cone_usda-024380e72d6d34a7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_Cube_usda-4bb89de99da949b6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_Cylinder_1_usda-9964aa85919856f9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_Cylinder_usda-bee0e5841f0acf39-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_Plane_usda-77823213740cc6c2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_displaced_usda-395a4477685bb193-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_level_usda-e441bb0a849304c5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_lone_usda-8c73fbc5c6234554-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_moving_usda-2b9c98847f8ffdc5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_prototypes_usda-754c2247d4091e78-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_scaled_usda-5918722b7152b9f3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_shading_usda-b3809be67678f20f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-30852d50af72eb96-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-41169aa3c303f69f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_twins_usda-925c195d8a7f5a5c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/import_plain_usda-37ba4c8eb30aefb6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/import_usda-a114cca514b1e2e9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/imported_motion_usda-98baf8cfec165d96-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/inf_light_usda-fd28273b2a9da24d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/infinite_usda-6e15312bf55ca148-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/inherits_usda-946600d02d8755e0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/input_usda-39af7a7dd8ccc053-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instanced_curves_usda-4486def29adfc50e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instancer_primvar_usda-6d97a3b7a8db1d2d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instancer_proto_root_reset_child_usda-327d10b931ee4635-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instancer_proto_root_xform_usda-824b2432496695f2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instancer_usda-24b4955bd587b7fc-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instancer_usda-b5460e79ed990f95-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instancer_usda-c51fcdc4de98cc87-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instances_usda-0e86a3f92c8bc5d3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instances_usda-dd5f31a7c4515489-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-046f52337fabb1a4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-1b870942bf28e01d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-37ed91a3e61701fe-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-4c123aa1f400f41f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-4d15fe3f4f1fa7d2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-5aa111b242f25730-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-bee611607d893be7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-c51a6942a8212cb9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instantaneous_usda-3e155a939a6cc6cd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/int_id_usda-520c4dc179153d4f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/invalid_light_sizes_usda-9c386d5a319bfe23-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/invalid_usda-d575a3c70872d8d6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/invariant_0_05_usda-adfdce9489c2fe04-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/invariant_0_usda-4ea5be31deb326f6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/leaf_usda-c026046b07c5fbb8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/leaf_usda-d886c4e05035aaa7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/leaf_usda-e14e254e24f8bc2e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/left_handed_baked_usda-9363c3fa472cdcde-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/left_handed_instanced_usda-f9d8d0fbabf00605-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/left_handed_mirrored_usda-b73e3433c9e6bccf-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/left_handed_subdivided_usda-bd37842befe48e18-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/left_handed_tri_usda-ba795e2eb1c56aef-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lens_cm_usda-73dbd961c243712e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lens_fstop_usda-da4d1cf71564d625-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lens_m_usda-983a5a6e5f39e694-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lens_unauthored_usda-24a6800a9f22c131-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/level_two_usda-9004a66abae4e107-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/light_linking_usda-0df578a9208fb7cf-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/light_linking_usda-84012730e231d407-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/light_linking_usda-a83ba5cc073d5f22-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/light_samples_default_usda-6242aa388fa102a1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/light_samples_huge_usda-128d1881332e6fff-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/light_samples_zero_usda-516355bd0568c89e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/light_visibility_usda-2b8ba6eb3030d1ec-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/light_visibility_usda-3ea0aa2435326544-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/linked_bsdf_1024_usda-00c8472dfa9bd263-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/linked_bsdf_16_usda-f488614962bd77c6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/linked_light_1024_usda-42bcc0ce33e153f3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/linked_light_16_usda-94637210b45ab59a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/linked_power_16_usda-eebb6febe29b133c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/listing_usda-3efcced39a72eaa9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/listing_usda-488ac4c542f2b8d8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/listing_usda-f960655cad0d43f4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/listing_usda-fd4c266bcdd26a9c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_cube_usda-4cf5f22f20fef745-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_cylinder_unnamed_usda-7b7e7a1709504194-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_cylinder_usda-07218dcdd495ca91-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_dicing_none_usda-fde7cae55b0adc90-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_dicing_retarget_usda-682d6c0fca1a4c12-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_dicing_usda-8bb261767fad5d1d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_dicing_usda-c3c9ffc84677f809-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_framing_adaptive_usda-264a6722f87e2488-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_framing_usda-21ec0fb4edc0e3e0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_primvar_warnings_usda-bb9c911d0ed38f94-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-59fb6cd49cb76e6b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-f4742b8648291059-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_adaptive_usda-df276969e17c075b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-68dfaa2802aa4ba4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-91fe8df867e8f0cc-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_empty_usda-6f96b70b05bd5238-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_rig_usda-c517fabd0cfe3025-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_slow_usda-abb2313197b2f2f6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_unnamed_usda-11fb9c8dd8a6685f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_usda-443a3934a068f8e2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-4.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/live_usda-b329c13621e10111-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-168fe99d44c7fbd8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-2df588e196076e2d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-37661541bc721de0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-451cadfaa7f8e528-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-4e0b53f3e573c0d5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-619dbb27dff03edb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-6332af41b2f94037-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-66e64ab7da1be7a8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-675a4c56d7da2e1a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-6a91390c6e2e8f32-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-75d1c7f90fc366b6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-7ce0ae0f49d396d8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-7ed4ae42b2f80bd6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-83b2bc40e66e8d90-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-84687138ca39f6d2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-889e2ebeaf6f6f43-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-8e1d5d176c63c934-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-96a10d1a1b799db6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-96b32b9e68a1ec9a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-9b73e2f3385f85a2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-a96810dec00d46d8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-ad6a0ecf2cf3c658-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-b139810cbe0eac4c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-b1d2ea509cf7ee23-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-b23ccdb4706d3d98-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-bdef936e454d02c5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-c088c49aaf559905-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-c8874f17309d40f1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-cab3bf60bc31d2f7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-cae9785463ecddf6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-d07bf630611d13b0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-d977f122a6f754f5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-da5095c5387fc6d5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-ddd9a472681fe394-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-e6376a73c80d838f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-f0ebb00d074c9c96-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-f4c4e13661091485-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-fa7c6612a51b87e4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-fad17720e6382b8f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/loop_plain_usda-47275a5a5923eb53-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/loop_ptex_usda-305da98d6891c0e8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lpe_too_complex_usda-d110af4b6d4f2169-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lpe_variance_usda-eb6b4998eed83db2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/lpe_vars_usda-4a1166013a93c744-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/malformed_usda-6eca12ea39b96a60-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/many_lights_usda-2896f3594596fed9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/marks_usda-92136ff2d6b2d34c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/masks_usda-0b1d6cd46ef5aa7b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/mass_spike_usda-dee5e21f531bb6c7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_basic_usda-47f44502b8b66093-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_basic_usda-5e3c6402db738e98-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_basic_usda-605f278bcaf83bcb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_basic_usda-7efe0aff05c6d47a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_basic_usda-ee87ad7ab34333f5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-ae65df7de0c507fa-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-3c55abed0c2329af-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-746e6884e4aa1a13-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-8dd82f7591e605f2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_lion_usda-a62e7b45a5b76dea-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-1e9e0f7089dbbfd5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-218ab79fb5de55b5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-ca1ad78e541d4d41-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-6ea1bea03dbe6c0d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_volume_usda-0d615ee9e93f873e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_volume_usda-dbd96c41f0cfcd9f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/matrix_usda-9dd65c424c31f5e5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/matte_dome_usda-942a3b1e6f8ce42b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/matte_dome_usda-e3baadd4a9e3ffb7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/max_depth_negative_usda-eec4c585057974f1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/max_depth_one_usda-0b2d301b9905817a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/max_depth_zero_usda-931745fbe0c2c985-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/membership_usda-e44fc1429c4b92d1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/mesh_blurred_usda-13d48869156e4433-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/mesh_both_usda-90fff2587206dcbe-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/mesh_sharp_usda-98679e56cacbfa24-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/mesh_track_usda-2da67447ace68ea3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/metal_0_1_power_1_usda-d5e924c1e43088a2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/metal_1_0_power_1_usda-0a224c171445c02a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/metal_1_1_power_1_usda-3e1ca1268dde29a1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/mirror_usda-e5687a44290234b9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/mismatch_same_usda-36f547d4088a73c8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/mismatch_usda-4938acb7109c81b3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/mismatch_usda-e42c92f5d05f1fcf-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/missing_usda-048983dc2b7e8f66-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/mixed_hair_ref_usda-1bf6615be167a70b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/mixed_hair_usda-e643846eb6c6d950-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/motionblur_usda-2ad099074d244fc2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/motionblur_usda-ff0d49c1a505d497-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_aliases_usda-8852d8dcf38ecf0d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_blurred_usda-6d69c20d22e19877-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_types_usda-d2a10e1c91de57de-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_usda-0097c4dc99684b31-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_usda-2921a3a583a7af01-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_usda-43ed7e424bbaa4f7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_usda-6dec65e3aa55dc9d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_usda-c5f34f1e623349ba-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/multiply_usda-8736676f00161943-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/named_chart_usda-67761c5ec52139aa-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/named_usda-455967a7b376e998-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/named_usda-caf35125dfbdc7e1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/named_usda-d1e9bde789e7233a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nan_shaping_usda-9e699df2d0518cc0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/native_usda-48df729899939992-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/native_usda-aa00109a0de726bd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/near_far_usda-378c724af4dad1fb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nearest_usda-01bca6fa7666b1f3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nearest_usda-6471e7e6d484d155-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/negative_min_spp_usda-f445ea0383fc1875-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_direct_usda-e25d7da2b966c023-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_hidden_usda-0ea71f61bc0a58d6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancer_proto_root_xform_usda-95a505e1fa209779-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancing_usda-39f09e1523375345-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancing_usda-915b43a7369963b2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancing_usda-df6640aca1d2b235-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancing_usda-e37604ffa926df8a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fda6a6f1c2f5b28e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fff87a8b52b8e069-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-c0a020bf777d3f88-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_one_usda-bc56793ff0720fdc-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_scatter_usda-4724aa4d383273d2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_translate_usda-31c01e41ce7e4eb3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_two_usda-0fad6a8ff7f8520a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_usda-dbe832b66063cf24-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/neural_usda-57a514ca820ab02c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/ngon_usda-573da62ad402526c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nine_uniform_lights_usda-181564afd75bc784-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/no_camera_usda-08eaf78e1847bdbe-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/no_camera_usda-2a7bfc7853b270c5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/no_camera_usda-5507d24332d7f188-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/no_camera_usda-758b683c20791ceb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/no_camera_usda-ac160dc389201eeb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/no_camera_usda-af24412e492e9147-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/no_camera_usda-f2e322198f5a52d6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/no_frame_usda-06c9736b1ee41555-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/no_kernel_usda-250e185a51aff6c5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/no_products_usda-b2f39aa3f795faa2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/no_var_authored_usda-7c630c4e6b264297-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/no_var_bare_usda-0f6834e5d7411efd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/non_finite_usda-b38223b4cd532638-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/none_usda-3500dce365c976fb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/none_usda-8ca1039ef6a1af13-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/none_usda-b2626a5c29f30d06-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/norm_off_cylinder_usda-cad3a8a0bec58113-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/norm_off_disk_usda-d4ac49b171982a5d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/norm_off_rect_usda-7ca0616652c56bb1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/norm_off_sphere_usda-0abd6bba11da485f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/norm_on_cylinder_usda-f3dd54fd2e0d1929-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/norm_on_disk_usda-80da988892a29bff-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/norm_on_rect_usda-0fb0cae5dd5fa17f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/norm_on_sphere_usda-a4e34a4e4682e3b5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/normals_usda-eb98f1adc17331b3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nothing_usda-05a76e84b550abac-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nurbs_clean_usda-362cea70cf67e6cc-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nurbs_empty_usda-af6c06cf5e078823-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nurbs_full_usda-ee811943aa635f36-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nurbs_half_usda-26730abe8461e1ee-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nurbs_malformed_usda-edaffca17525a0db-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nurbs_refused_usda-2cd12f986b06b3a5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/on_camera_usda-0e1653405c0b04b8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/once_direct_usda-87536582b2725522-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/once_instanced_usda-cfe757ff670cf1a4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/opacity_usda-18ffcc13eb92677a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-0f7c1eaf15ef6726-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-501b45e8f6131d21-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/openpbr_usda-876563da4aa0a57a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/other_lookdev_usda-31ecdc884f3fb603-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/other_op_usda-7a2444b60f22a636-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/overflow_usda-c7dbcb2b55d9a450-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/override_usda-b67a66c0201ba59a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/overrides_usda-e08388bc2f33304d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/partial_link_usda-0b6b5eacc86557dc-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/pass_payload_usda-08d0e4051511c08a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-0b80861de0309489-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-bdae79d96585e6fd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-c05e0c1783414e94-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-e9d62fba57fc58f7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/passes_usda-562a5b3a04949a47-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/passes_usda-aaa6ef1b16e7d6b6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/payload_camera_usda-ff33ccc1b50862a6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/payload_links_usda-f941f0e5247354e6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/photometric_usda-644b1d1ebbe4cb72-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/pinhole_unauthored_usda-ecde60dead7180c2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/pinhole_zero_usda-9f676d1852dc7168-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/pivot_stack_usda-eabcdb11552ea0a9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/pixel_filter_usda-c618794e70f5ffe3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/place_once_usda-66a0c16b42b4539e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/place_twice_usda-c4ce4deb59d3727f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-000d21c7a8ef61e5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-0ba3af4ffa595294-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-503a8ea6d52670c0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-63f0ce074fafa44d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-6fa96be933bc04d8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-7ad6f5aa95ba8499-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-85cdaaa611ddcfb8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-94944664ab7e307d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-97fbc0f3fbe2c018-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-b9e166293d4eb014-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-c316df83883a2080-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-d17077acbffaca45-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-d4ecee5c0312cf96-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-dc7b9c4f6886cafa-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-f5c13f6f8bb66ab5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/placements_usda-275bfd0cb4688e5d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plane_usda-e5035e45dccaf24c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/planes_usda-b941e449ca4a031a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_1_bsdf_1_usda-bd800d4fcb330be2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_1_light_1_usda-a03210c9831fba26-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_1_power_1_usda-482542fae980bf52-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-36e5cb22b2676a41-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-d38160b2be22e70c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_2_usda-78a7411a4858bc6b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_3_usda-f81a4b161903a8f2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_4_usda-87a5b5e826a38a61-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-135d2f963daf2551-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-cf1431b5a2f0391c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_2_usda-c1e873bea9886ca9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_3_usda-0dc30546dc7303fa-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_4_usda-306836af9dcd76c7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-aeace9cae6e95285-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-f2feafce67b9cc18-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_2_usda-9558069a3a6cb6c1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_3_usda-848bb8619ed104b2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_4_usda-13781e826c793feb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_1_0_bsdf_1_usda-7392b4eece3d4ffa-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_1_0_light_1_usda-e29b88fff3b5eede-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_1_0_power_1_usda-db7be84c0c913b8a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_1_1_bsdf_1_usda-1a655ee8a457375b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_1_1_light_1_usda-d608d0096c4c9293-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_1_1_power_1_usda-dad1612ee907e657-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_C_usda-ceae07fa5339bc4e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_look_final_usda-46848a8dcf6250e4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_none_usda-749e88768dbe99b1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_usda-33f481698c3a3ce7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_usda-4339ddf5a07dea17-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_usda-9c591dbe4a6a2374-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_usda-d9d1e77cdf9ce71d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_usda-e1a87b662c5109e8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_usda-e28059e8e7dd2fb9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/preview_plain_usda-56c5917475bdaa40-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/preview_tagged_usda-21171eef0f915c9d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/preview_usda-6fa33b5d399ba28d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-1ceba2b5cd7da4fe-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-e0e162475fa824e5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/primvar_multisampled_usda-774c86244886ea5e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/primvar_vars_usda-f6787f7fdf1eebf3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/procedural_par_square_usda-6cb0d1de356675bd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/procedural_par_wide_usda-e65d9f21a141c052-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/products_usda-e7ced79f762e48ff-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/prune_usda-3bf02286156e9774-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/prune_usda-d1a6b2f2900a3fc1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/prune_usda-f5ce85341275f544-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/ptex_phase_usda-9d5b92d8c597babb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/ptex_quads_usda-c2d1b0153068d224-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-856ac5cdf233a681-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/purpose_usda-bf0c2e782a7f7633-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/pxr_displace_usda-3eb2626e4111c003-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/pxr_displace_usda-744b2066d6ee31b4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/quad_usda-8a80e703a52aec63-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/quiet_curves_usda-c001d1e165c273d4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/quiet_light_usda-c8a2428bb59d472f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/quiet_prototype_usda-4ee6edc155c4ce34-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/quiet_volume_usda-5e752c5254e3ed36-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/range_far_usda-4ecb448a88a6c818-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/range_usda-bc6d3542e7333f02-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/raw_dome_usda-e8a6497f6f3c05ee-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/raw_light_usda-ea76f3df9a669477-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/rect_light_far_usda-89364d5e280ec883-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/rect_light_near_usda-e8eb7549c9231ec8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/rect_light_usda-eadf17e73fc59819-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/rect_texture_usda-fa043cce9d6338f4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/rectlight_usda-5482f82d359615b0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/rectlight_usda-e2a69198ab36729f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/refusals_usda-e2a11260371695e9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/refused_usda-0be9300cea6f944b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-2eed0231ac063823-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-c03e7c6702e31ad3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-f98e72ee422221b6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_source_camera_usda-d46ae988f6d9241c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_source_usda-131b801caa122c43-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_source_usda-749a95594e279116-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_source_usda-b15267a29d9e4616-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/reset_disk_usda-6e0b5adab74a3b7a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/resolution_negative_usda-0d18504e846cea31-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/resolution_zero_usda-e3f58678deb9aa30-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/rest_usda-feaaa720bb9a30d2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-00dd7b68b86c7168-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-00e8d0d9a2f465b9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-1ddeac0a2964315c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-2f86c31117cc8b58-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-43c385d7a2a21d1e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-4aa136053cd56402-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-4b8c79cf557cf378-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-5042b0d1011805d6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-5c84bdb62972ba25-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-63552b8e06717f62-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-642eeb8c5780c872-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-65bf0b61fd007f62-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-67d463deb3cd2295-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-7781d1893e2e23fd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-7eba3de4e6efbf15-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-8099cbe59e22c4ff-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-834306f0b405a977-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-8c6dbffe8bcc7f5d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-921d5e21a6ec411f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-9d7d0e6b748bbe2f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-a0c411ed1048de1a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-a95c3cfeafbe744e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-aa094b9d362ee4b9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-bedb2af78f4c965d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-bfc3cfdc3fb023a6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-c51fa0d84e7325f7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-c78a3b1a4bb10072-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-cc0a74d0f1a22c6a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-ccefc9342ef07f81-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-ce726227b7d02261-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-cef90a6ad595b1b4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-d2c312942e13c754-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-dcc0d192c2504171-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-df9ad38a08c60f60-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-e227181a4d86cdde-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-f4c8b443da714046-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-f7df8a9705f0748f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/rotate_parent_usda-a0cc7d7c189a5bba-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/s_usda-0006d97926014c1b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sampler_default_usda-6c4e4e80bde0b7e5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sampler_halton_usda-bcb88dc4e7395359-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sampler_lattice_usda-83017538d7bb844b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/scaled_sphere_light_usda-2dabd5a9f4c0f98e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/scaled_usda-308f36ce00bb3ea8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/scatter_usda-08c435043fb988f9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/scatter_usda-e62e321631ee4219-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/scope_color_space_usda-acd6f59e656731c0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/settings_usda-58e4038727242b7e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/settings_usda-8c1bce0acc8c2aa3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shadow_ball_blocked_usda-7a4aa722cf803335-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shadow_ball_excluded_usda-97e5af329ccc1a04-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shadow_fog_blocked_usda-02a2d7c4f4baa106-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shadow_fog_excluded_usda-0f89cfc00df34be3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shadow_open_usda-43f52a9430038a59-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shaped_rect_usda-2479a47c7797a66c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shaping_absent_usda-59ac6c6c6ed71036-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shaping_applied_usda-b1b65b90122da6f7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shared_points_usda-b97fa4512d46ed74-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shared_usda-9209cd8eb954e389-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shared_usda-b9af19ac4c829153-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sharp_usda-9bf0a09f5df9236e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-13a3dd4f11de39b9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-27651d6a015b04ab-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-369c0d66f45d39b9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-6f33035f56110470-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-7003167a7a70688d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-b26fdb3392c1eac3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-bc9d89b7ffc91e9b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-cac7cb8da11a9b99-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e785595b364179c9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e82a725344733609-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-eaf3eeced61f0581-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-f697274eb781e181-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shot_usda-bc277892832ac542-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sibling_usda-ec40564c6bb9a56d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/single_usda-472ac6d4e19ff814-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/smoke_grid_usda-64f278d7126815e0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/smoke_usda-8b219b9873531af2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/smoke_usda-c485b4550b7ac78b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/snapshot_usda-48d0c43b60eb99bd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_and_mesh_usda-0e0815d93400ffb5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_both_usda-e02008707f44acbc-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_crust_wins_usda-cfeb9931008a7ea6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_defaults_usda-8b8f061019318106-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_light_usda-4886e72703716517-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_nonuniform_scale_usda-4a3711274af76a73-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_only_usda-71bd2f6a8198f0b8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_ri_camera_usda-47b1274be8232510-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_tiny_scale_usda-7eb2c16e3f3404d7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_track_usda-9c13bacd8c4d2d91-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_uniform_scale_usda-afcce7d5fa243629-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_usda-8366b90874a02778-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_zero_scale_usda-ac3436d07948ddb2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/squashed_cylinder_usda-6bfde315320c4111-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/squashed_disk_usda-e4a3093a38518998-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/squashed_sphere_usda-7bcbaa3c83aaf92c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stack_0_usda-2dad0f5ec97c10b8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stack_150_usda-9fc28daf7efcde9e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-0695b3612208bcf5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-08451a086997d754-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-08f2605aa76f8c5a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-0a9a4fefc79d0b59-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-0dae1afcf6927089-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-137bf5b9bbcbaa09-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-15ab0320e4168a3a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-1780ae5d9b4706f3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-18576b421133666c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-18d4c3c27061d1e0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-19c958e4224602c7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-1ad9de82b394044d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-22dd31756ff245fc-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-22e94b531779cff1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-24ad7c66559e9c80-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-26105365b1fd8dbc-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-2912eb63656b3371-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-2c5736e1f1ba1f8d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-2c8067fb553f81df-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-2ce486f3dc966042-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-2ffe73dbb471510a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-323a3e02a1f4d7b0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-340b07ebab8f9091-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-3622e7d90bc81d34-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-37a86d28c7d197ed-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-3c67a25a0a341efb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-3effc82524d047c7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-3f9cd9ed5581414a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-48e70f6118b1f181-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-49f9cb3e8a3fb9fb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-4a064c9610d45212-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-4f30830cd0cff6cf-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-520aa0db2cddfe4a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-54895eac26b3d68b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-5842de9c4816f088-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-591315737502029a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-592ba3007488df6d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-59354f1aad350085-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-5b237a71fd087753-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-5cc80e16451809c9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-5dc19c72025a0150-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-5f7140cec32f4f07-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-604932e0d3e70494-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-64b7039b1d43e540-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-65ee13ae526ffeea-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-67247fa59107a671-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-6bf959c4a9ccd0b3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-6d5fe86af042b6e1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-71054a8e0c511721-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-7c770edd10f5907e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-8088e3bfe6185392-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-80aabe25c21585c0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-82a10c399a16cdfe-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-8330e4bc297d2c11-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-888072d0abcb4b7c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-8a23f56494af42b0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-8b53eb2ddb581089-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-8bc1102225447b76-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-8bcafd97dd44d415-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-8c1801ab78070f29-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-8cceeaf3cdd2ee51-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-91c6c701cea6760c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-93b962ab026b22b8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-976234e8d4ff9d44-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-9a4d212002571295-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-9af3795f55319fa5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-9f427c13a5c51892-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-a366debd179e59ca-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-a5b1d711f3b9ea59-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-a74b5f3cf6bce97e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-a7f91b5a6640999a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-a87fd805403755dc-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-abb589be134471f7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-abeca91af484e4eb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-b0726246200d796c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-b091ac35593cb491-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-b8974322f9c3c9a8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-bb51bbccac634602-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-bc2640abb95a8689-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-bdce5005dd991897-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-c3555672a13627c7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-c469a696e567b939-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-c7b4569174f0eec0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-cd83faa181eb1fd7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-cf6459f3f81ccc47-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-cf8a4ab339090107-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-d2ee2497345d697d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-d72f3f29bbbe2aac-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-db5313ef5e73713b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-dbe57a2b9b304f79-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-dc3f3fbeccf7b47a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-df6e87952da2ef59-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-dfcbe85c1522e1a0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-e0281d61316ee28c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-e190342a381695b4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-e4221ab681d9d69c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-e515f767109d59fd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-e6a49698324053cb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-e725f8fd7bc55370-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-eae49fc2a8ca60e5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-eb49e61d600c4d7e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-ebf6853a9256b461-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-ef8a900692712be4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-f1cbf14d6569cda8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-f3300bdef5e06140-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-f33567936d2468ed-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-fbc457cd2253b427-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-fec7a3f24112f4ad-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-ffdbda6eb16c3b7d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/static_vectors_usda-fae85e3b03a2883e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/static_with_usda-9af9d7b39f92f260-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/static_without_usda-cd73d9530ee2de09-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stats_usda-00e508bd2c5eb608-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stops_usda-f48d13a255e8b51e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/strategy_balance_usda-bdbde883917b565d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/strategy_bogus_usda-ab14768d89b4fe10-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/strategy_bsdf_usda-f7c53ec9f704be37-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/strategy_light_usda-ec65e0dfb065b1f1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/strategy_power_usda-03788414ab51c35f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/streamed_usda-08988239fcd84b0c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/streamed_usda-274e7e68b089c3ac-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/string_id_usda-4ef78239c4d0e1cc-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/string_usda-edd62f0c52a0bd52-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/strip_cracks_usda-5cdf0130b2848b76-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/strip_usda-a747742859825b3a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_0_usda-6db126ded01c4707-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_1_usda-bde0e042f33df4a5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_2_usda-47f822571f7427d3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_bilinear_usda-287ba8f91aef206f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_cage_usda-17f666e1e5c6d08f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_clamped_usda-01685ab19e968980-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_default_usda-be76976c79a95643-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_key_faceted_first_usda-510113487f701e14-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_key_smooth_first_usda-9375effdf17e1f42-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_legacy_usda-e769c33757ced97c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_level0_usda-436132ac852dd08e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_loop_quads_usda-1e8f941ca190d506-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_none_faceted_usda-7ad44c4961677420-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_none_usda-38f763827a18343d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_none_usda-aea9b45539bdf216-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_override_usda-347cb15990d5b2db-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_override_usda-4180b38ea57c9096-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_override_usda-633f8e7fec39c727-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_rest_15_usda-dcdc5eeb73b7d3e8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_rest_8_usda-c9f6f9ef6bd5e50d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_rule_all_usda-7c4745bac0fe1ad7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_rule_boundaries_usda-3c0d79de547dbc49-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersOnly_usda-3a7940237cbe0a3d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus1_usda-10da8f737cfaea1d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus2_usda-7ab350be92df8201-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_rule_none_usda-86622a148177c839-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_smooth_usda-ecacf29cbe8c3a69-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_streamed_usda-6897e2d021bbe857-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_unauthored_usda-1f8d567cba520aee-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_uv_fv_usda-5e00e8c1f3e1cc34-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_uv_vertex_usda-b6cc7115ae3418dd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-4b5883574262488d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-8765a889a888ae6b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-95a3e0a9db67a1fb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdivision_usda-093423ee46de2ab4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/subdivision_usda-c1e09f9374aaab81-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sun_delta_usda-ea8cdfc115606b89-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sun_lux_usda-f3cb39d866e6c449-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sun_narrow_usda-cc46151e1eb78ebf-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/sun_nits_usda-8ccba3be0d36785e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/supported_types_usda-5cac3f5a887f68e8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/synonym_a_usda-c8543088a0bca8e3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/synonym_b_usda-5b26c8cc28a6baa8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/textured_usda-addde73d309fca5e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/thin_window_usda-61e111e4ca995610-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/thin_window_usda-9e0a6257872a8f5f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/tiles_usda-63de672cd360cf69-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/time_sampled_1_usda-ee3787d0222ab673-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/time_sampled_2_usda-4dad1e9703710b97-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/time_usda-a4ea088a5cd5b4c7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/tolerance_default_usda-3a112890c553cc1b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/tolerance_nan_usda-22547c2684ba9e8c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/tolerance_off_usda-f5f012b4db29329d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/translate_scale_usda-f3698f1a1411c8b2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/translatex_curves_usda-65ef3846123d9b35-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/translatex_disk_usda-9d38522639915278-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/tuft_shadow_usda-1baacafb4242e12e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/twice_a_usda-0f943c80bd7e2c65-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/twice_b_usda-b96b0ece9c5875aa-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/two_cameras_broken_first_usda-3cb7946e1e445b8e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/two_cameras_shot_first_usda-a7d808f7cd7c7a83-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/two_instancers_usda-287c7bdad0690e3b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unauthored_usda-1a04ae4ebcf35cb8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unauthored_usda-9a9d89c801b1b740-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unbindable_usda-a5d47f8d674e7ddd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unbound_usda-19c17e4f548a50df-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unbound_usda-4ae577ca0b682f0f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/uniform_cages_usda-2c90ea028524eadd-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/uniform_cages_usda-b6490d10d0de391f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d12f6f58167b27f9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d982dbb48b0da21b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/uniform_colour_usda-6a475987121a1476-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unit_tiny_lens_usda-aa2efc45eecd1493-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unit_volume_usda-693980b7090e37bf-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unit_zero_lens_usda-d1f56221f44bb692-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unit_zero_named_usda-9847ffecfd9df22b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unit_zero_pinhole_usda-af47867eeabcfd70-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unknown_display_usda-e75f3f3b8d756ec8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unknown_filter_usda-ed678783aa9ef74d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unknown_op_usda-954c2bfc62b12357-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unknown_type_usda-d0386e0b10524625-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unnamed_usda-ed6b84994bc45537-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unresolvable_winner_usda-514f97ffe2814294-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unsupported_in_prototype_usda-d2aca9633823884e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unsupported_type_one_usda-61236dabf0bd2054-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unsupported_types_usda-4026b0fff876b77b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unsupported_usda-25a7c1709e68a39b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/unusable_texture_usda-0a21b6baa96879e3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/usdlux_usda-0d6669b552eae2be-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-36a3119df926a1de-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-7e17862f6c19bca4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/uv2_usda-a9136787dec77f95-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/uv_dedup_same_usda-9ef71121455e022c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/uv_dedup_usda-3e327caf2288bcc5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/var_authored_usda-30d82aafae5b77cb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-324cce08805da6ff-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-3d8992b3ea4a144d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-3fdc201d13c79fac-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-4.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-4.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-10.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-11.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-12.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-13.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-14.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-15.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-16.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-17.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-18.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-19.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-20.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-21.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-22.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-23.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-24.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-25.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-4.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-5.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-6.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-7.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-8.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-9.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-7b2ec235dd7d06ba-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-10.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-11.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-4.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-5.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-6.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-7.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-8.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-9.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-918cd4cfc31f23ae-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-2.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-3.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-eeb660d07679d619-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-f7c825bf3b0bac82-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/visibility_usda-0f9ed9fc0b62a02c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/visibility_usda-2bf7c45881effd3f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/visibility_usda-d0c678c9c1d6a069-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/visibility_usda-f7d5c6c9644dd6bb-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/visible_light_usda-c593161971da5ec4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/volume_in_prototype_usda-d6406b3b1214ee81-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/volume_usda-a8034cd85e6f3de3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/volume_usda-bac87085eea27fa2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/volume_usda-dc3452b116e9581a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/wide_ok_usda-07bfe44a3376f28e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/wide_usda-98ba41961b37bb34-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/window_bottom_quarter_usda-3769adf96d53a2f1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/window_boundaries_usda-8ec00fd05808f90e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/window_centres_usda-5b25bbbab727a81b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/window_default_usda-1d0d1bbb6d0e388d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/window_empty_usda-c239bdc771be269c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/window_full_vs_unauthored_usda-6f84b7cb89845fa4-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/window_honoured_usda-0e440c93c494db71-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/window_no_products_usda-9317bad8a6d2e63d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/window_off_frame_usda-0e5c269b6dd24fb6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/window_one_pixel_usda-66ddf756a5e443fe-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/window_overscan_usda-c27e01fde4009f5e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/window_product_overrides_usda-bb3b29ebf7dd99a8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/window_products_differ_usda-78414609fe85fc23-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/window_right_half_usda-c5f5b85f1946cb91-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/window_unauthored_usda-5d663894090b1282-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/working_acescg_usda-453466808888f80c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/working_default_usda-5aec729f1efbcf98-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/working_host_usda-964cb93fefda7817-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/working_srgb_usda-8fdff51064dc58c9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/x_usda-4b3ed4428fa191c7-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/x_usda-4f6345f399f0a5af-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/x_usda-a701d438407a1ca1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/x_usda-d5611726aa414464-1.digest create mode 100644 crates/crust-render/tests/import_parity.rs diff --git a/Cargo.lock b/Cargo.lock index 2b87621b4..d974088b9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -599,6 +599,7 @@ name = "crust-core" version = "0.8.0" dependencies = [ "criterion", + "crust-core", "crust-jit", "crust-mtlx", "crust-nn", diff --git a/crates/crust-core/Cargo.toml b/crates/crust-core/Cargo.toml index 670b3c488..7cc4a0db5 100644 --- a/crates/crust-core/Cargo.toml +++ b/crates/crust-core/Cargo.toml @@ -27,6 +27,11 @@ jit = ["dep:crust-jit"] # openusd's own `mmap`, and with it `memmap2`, is compiled in only with this # feature: openusd has no default features since 0.8. mmap = ["openusd/mmap"] +# Test-only: every import is compared with the baseline recorded from the +# direct importer (`src/parity.rs`, the `moho-import` change). Turned on for +# this crate's tests by the dev-dependency on itself below, and for +# crust-render's by its own; never by a build that ships. +parity = [] [dependencies] utils = { path = "../utils" } @@ -73,6 +78,8 @@ serde = { version = "1.0.229", features = ["derive"] } serde_json = "1.0.151" [dev-dependencies] +# The import-parity check (`parity` feature) on for every test of this crate. +crust-core = { path = ".", features = ["parity"] } criterion = "0.8" # `std` for `tracing::subscriber::with_default`, which the import tests use # to check which warnings a stage's render settings produce. diff --git a/crates/crust-core/src/lib.rs b/crates/crust-core/src/lib.rs index 5ae719ca7..3ad508f4b 100644 --- a/crates/crust-core/src/lib.rs +++ b/crates/crust-core/src/lib.rs @@ -41,6 +41,9 @@ mod lux; mod material; mod medium; pub mod names; +/// Import parity against the direct importer's baselines; test-only. +#[cfg(feature = "parity")] +pub mod parity; mod pdf; pub mod place; pub mod precomp; diff --git a/crates/crust-core/src/live.rs b/crates/crust-core/src/live.rs index 20fc84b80..7bc4c87af 100644 --- a/crates/crust-core/src/live.rs +++ b/crates/crust-core/src/live.rs @@ -85,6 +85,43 @@ pub struct Provenance { pub(crate) stage: StageFacts, } +#[cfg(feature = "parity")] +impl Provenance { + /// Writes the provenance into an import-parity digest + /// ([`crate::parity`]), maps sorted by key so it is stable text. + pub(crate) fn parity_digest(&self, out: &mut String) { + use std::fmt::Write as _; + let mut materials: Vec<_> = self.materials.iter().collect(); + materials.sort_by(|a, b| a.0.cmp(b.0)); + for (path, origin) in materials { + let _ = writeln!(out, "provenance material {path}: {origin:?}"); + } + for read in &self.material_reads { + let _ = writeln!(out, "provenance material read: {read:?}"); + } + for source in &self.arc_sources { + let _ = writeln!(out, "provenance arc source: {source}"); + } + let mut lights: Vec<_> = self.lights.iter().collect(); + lights.sort_by(|a, b| a.0.cmp(b.0)); + for (path, origin) in lights { + let _ = writeln!(out, "provenance light {path}: {origin:?}"); + } + for (ids, path) in &self.geometry { + let _ = writeln!(out, "provenance geometry {ids:?}: {path}"); + } + for mesh in &self.meshes { + let _ = writeln!(out, "provenance mesh: {mesh:?}"); + } + for (i, slot) in self.mesh_slots.iter().enumerate() { + let _ = writeln!(out, "provenance mesh slot {i}: {slot:?}"); + } + let _ = writeln!(out, "provenance spheres: {:?}", self.spheres); + let _ = writeln!(out, "provenance volumes: {:?}", self.volumes); + let _ = writeln!(out, "provenance stage: {:?}", self.stage); + } +} + /// The slots one material fills. #[derive(Clone, Debug, Default, PartialEq, Eq)] pub struct MaterialOrigin { diff --git a/crates/crust-core/src/parity.rs b/crates/crust-core/src/parity.rs new file mode 100644 index 000000000..d2e82a83b --- /dev/null +++ b/crates/crust-core/src/parity.rs @@ -0,0 +1,388 @@ +//! Import parity: every import compared with a baseline recorded from Crust's +//! direct importer (the `moho-import` change, spec `import-parity`). +//! +//! Compiled only with the test-only `parity` feature, which crust-core's and +//! crust-render's tests turn on through a dev-dependency. With it, every +//! successful [`load_scene`](crate::scene) ends in [`check_import`]: the scene's +//! [`digest`] is compared with the baseline recorded for that stage and those +//! options under `crust-core/tests/data/import_baselines/`, and any difference +//! panics on the importing thread, naming the stage and the first line that +//! differs. So every import a test performs — a committed sample, a fixture a +//! test writes, a live session's re-import — is checked, without a call site +//! having to ask. +//! +//! - `CRUST_RECORD_BASELINES=1` writes the baselines instead of comparing. It +//! recorded them from the direct importer before anything migrated; after +//! that it is a behavioural change of its own, never a way to accept a +//! migration's difference. +//! - `CRUST_PARITY_IMAGES=1` also imports the stage a second time and renders +//! it at 16 spp with the indirect clamp off, comparing a hash of its pixels +//! (the `.image` baseline). Meant for `cargo test --release`: an unoptimised +//! build renders too slowly for every import of the suite. +//! +//! A baseline is keyed by a hash of every layer the import composed (paths and +//! text, with the stage's directory written as `$DIR`), the import options, the +//! environment switches and the importing test (its thread's name), so a +//! fixture written to a fresh temporary directory finds its baseline again. +//! Tests run on their own named threads, as libtest runs them by default; with +//! `--test-threads=1` they share one, and the keys move. + +use std::cell::Cell; +use std::fmt::Write as _; +use std::path::{Path, PathBuf}; + +use crate::rt_world::Fnv; +use crate::scene::Scene; + +/// Where the baselines live. +pub fn baseline_dir() -> PathBuf { + Path::new(env!("CARGO_MANIFEST_DIR")).join("tests/data/import_baselines") +} + +thread_local! { + /// Set while [`check_import`] re-imports a stage to render it, so the + /// nested import is not itself checked. + static NESTED: Cell = const { Cell::new(false) }; +} + +/// Whether `CRUST_RECORD_BASELINES` asks to record rather than compare. +fn recording() -> bool { + std::env::var("CRUST_RECORD_BASELINES").is_ok_and(|v| v == "1") +} + +/// Whether `CRUST_PARITY_IMAGES` asks for the 16 spp image hash too. +fn with_images() -> bool { + std::env::var("CRUST_PARITY_IMAGES").is_ok_and(|v| v == "1") +} + +/// Rewrites the machine- and run-specific paths in `text`: the stage's +/// directory as `$DIR`, the workspace as `$ROOT`, the temporary directory as +/// `$TMP`, so a digest recorded on one machine compares on another. +pub fn normalise(text: &str, stage: &Path) -> String { + let mut out = text.to_owned(); + let mut dirs: Vec<(String, &str)> = Vec::new(); + if let Some(dir) = stage.parent().filter(|d| !d.as_os_str().is_empty()) { + if let Ok(abs) = std::path::absolute(dir) { + dirs.push((abs.display().to_string(), "$DIR")); + } + if let Ok(canon) = dir.canonicalize() { + dirs.push((canon.display().to_string(), "$DIR")); + } + dirs.push((dir.display().to_string(), "$DIR")); + } + let root = Path::new(env!("CARGO_MANIFEST_DIR")).join("../.."); + if let Ok(root) = root.canonicalize() { + dirs.push((root.display().to_string(), "$ROOT")); + } + let tmp = std::env::temp_dir(); + if let Ok(canon) = tmp.canonicalize() { + dirs.push((canon.display().to_string(), "$TMP")); + } + dirs.push((tmp.display().to_string(), "$TMP")); + // Longest first, so a directory inside another is replaced before it. + dirs.sort_by_key(|(d, _)| std::cmp::Reverse(d.len())); + for (dir, name) in dirs { + if dir.len() > 1 { + out = out.replace(&dir, name); + } + } + out +} + +/// The scene's import-parity digest, as stable text: one fact per line, so +/// two digests are compared by their first differing line. +/// +/// It covers the geometry in id order ([`crate::World`]'s pieces, materials, +/// flags and side tables), the light list, the volumes, the camera, the +/// settings, the AOV request, the warnings in order, the provenance, the +/// layers and the scene's [`crate::scene::Source`]. A material's parameters +/// and a light's radiance are not in it — no material or light describes +/// itself — and are covered by the 16 spp image (`CRUST_PARITY_IMAGES=1`). +pub fn digest(scene: &Scene, stage: &Path) -> String { + let mut out = String::new(); + let _ = writeln!(out, "time: {:?}", scene.time); + let _ = writeln!(out, "working space: {}", scene.working_space.name()); + let _ = writeln!(out, "camera path: {:?}", scene.camera_path); + let _ = writeln!(out, "camera: {:?}", scene.camera); + let _ = writeln!(out, "settings prim: {:?}", scene.settings_prim); + let _ = writeln!(out, "settings: {:?}", scene.settings); + let _ = writeln!(out, "aovs: {:?}", scene.aovs); + let _ = writeln!(out, "pass: {:?}", scene.pass); + let _ = writeln!(out, "source: {:?}", scene.source); + for layer in &scene.layers { + let _ = writeln!(out, "layer: {}", layer.display()); + } + for w in &scene.warnings { + let _ = writeln!(out, "warning: {w:?}"); + } + let lights = &scene.lights; + let _ = writeln!(out, "lights: {}", lights.count()); + for i in 0..lights.count() { + let kind = match lights.light(i) { + crate::light::LightKind::Area(_) => "area", + crate::light::LightKind::Distant(_) => "distant", + crate::light::LightKind::Dome(_) => "dome", + }; + let _ = writeln!( + out, + "light {i}: {kind} name {:?} lpe {:?} pmf {:?} shadow {:?} restricted {} nee-only {} \ + twinned {} gains {:?}", + lights.name(i), + lights.lpe_tag(i), + lights.pmf(i), + lights.shadow_mask(i), + lights.restricted(i), + lights.nee_only(i), + lights.twinned(i), + lights.lobe_gains(i), + ); + } + let _ = writeln!(out, "volumes: {}", scene.volumes.len()); + for (i, v) in scene.volumes.iter().enumerate() { + let _ = writeln!( + out, + "volume {i}: sigma_s {:?} sigma_a {:?} g {:?} emission {:?} mask {:?} class {} \ + homogeneous {}", + v.sigma_s, + v.sigma_a, + v.g, + v.emission, + v.mask, + v.light_class, + v.is_homogeneous(), + ); + } + scene.world.parity_digest(&mut out); + if let Some(p) = &scene.provenance { + p.parity_digest(&mut out); + } + normalise(&out, stage) +} + +/// The first line where `actual` differs from `expected`, with its number; +/// `None` when they are equal. +pub fn first_difference(expected: &str, actual: &str) -> Option { + let mut a = expected.lines(); + let mut b = actual.lines(); + let mut n = 1; + loop { + match (a.next(), b.next()) { + (None, None) => return None, + (x, y) if x == y => n += 1, + (x, y) => { + return Some(format!( + "line {n}:\n baseline: {}\n import: {}", + x.unwrap_or(""), + y.unwrap_or("") + )); + } + } + } +} + +/// The key a stage's baselines are stored under. Its inputs: every layer the +/// import composed (its path and text, directories normalised), the import +/// options and the environment switches ([`crate::config`]); and who imported +/// it — the test, by its thread's name, or for a `crust` process the command +/// line — since a host's asset loader and colour config are not in the +/// options. A test importing the same files twice numbers the imports. +pub fn key(stage: &Path, options: &crate::UsdImportOptions, scene: &Scene) -> String { + let mut hash = Fnv::default(); + let mut layers: Vec<&Path> = scene.layers.iter().map(PathBuf::as_path).collect(); + if !layers.contains(&stage) { + layers.push(stage); + } + for layer in layers { + hash.bytes(normalise(&layer.display().to_string(), stage).as_bytes()); + let text = std::fs::read(layer).unwrap_or_default(); + hash.bytes(normalise(&String::from_utf8_lossy(&text), stage).as_bytes()); + } + hash.bytes(normalise(&format!("{options:?}"), stage).as_bytes()); + hash.bytes(format!("{:?}", crate::config()).as_bytes()); + let thread = std::thread::current() + .name() + .unwrap_or("unnamed") + .to_owned(); + hash.bytes(thread.as_bytes()); + if thread == "main" { + let args: Vec = std::env::args().skip(1).collect(); + hash.bytes(normalise(&args.join(" "), stage).as_bytes()); + } + let content = hash.0; + let nth = SEEN.with(|seen| { + let mut seen = seen.borrow_mut(); + let n = seen.entry(content).or_insert(0u32); + *n += 1; + *n + }); + let name = stage + .file_name() + .map(|n| { + n.to_string_lossy() + .replace(|c: char| !c.is_ascii_alphanumeric(), "_") + }) + .unwrap_or_default(); + format!("{name}-{content:016x}-{nth}") +} + +thread_local! { + /// How many times this thread imported each key's inputs. + static SEEN: std::cell::RefCell> = Default::default(); +} + +/// The 16 spp image of a freshly imported `scene`, indirect clamp off, as a +/// hash of its pixels. +fn image_hash(scene: Scene) -> String { + let settings = scene + .settings + .with_samples_per_pixel(16) + .with_indirect_clamp(0.0); + let (w, h) = settings.get_dimensions(); + let renderer = crate::Renderer::new(scene.camera, scene.world, scene.lights, settings) + .with_volumes(scene.volumes); + let buffer = renderer.render(); + let mut hash = Fnv::default(); + for y in 0..h { + for x in 0..w { + hash.floats(&buffer.get_pixel(x, y).to_array()); + } + } + format!("{w}x{h} 16spp clamp-off {:016x}\n", hash.0) +} + +/// Compares `scene`, just imported from `stage` with `options`, with its +/// baselines, or records them (module docs). `reimport` imports the stage +/// again, for the image. +/// +/// # Panics +/// On any difference from the baseline, or a missing baseline: this is a +/// test-only check, and a panic fails the test that imported the stage. +pub fn check_import( + stage: &Path, + options: &crate::UsdImportOptions, + scene: &Scene, + reimport: &dyn Fn() -> Result, +) { + if NESTED.with(Cell::get) { + return; + } + let dir = baseline_dir(); + let key = key(stage, options, scene); + let mut files = vec![(dir.join(format!("{key}.digest")), digest(scene, stage))]; + if with_images() { + NESTED.with(|n| n.set(true)); + let again = reimport(); + NESTED.with(|n| n.set(false)); + match again { + Ok(again) => files.push((dir.join(format!("{key}.image")), image_hash(again))), + Err(e) => panic!( + "parity: re-importing {} for its image failed: {e}", + stage.display() + ), + } + } + for (file, actual) in files { + if recording() { + if let Err(e) = + std::fs::create_dir_all(&dir).and_then(|()| std::fs::write(&file, actual)) + { + panic!("parity: cannot record {}: {e}", file.display()); + } + continue; + } + let Ok(expected) = std::fs::read_to_string(&file) else { + panic!( + "parity: no baseline {} for {} — record the direct importer's with \ + CRUST_RECORD_BASELINES=1", + file.display(), + stage.display() + ); + }; + if let Some(diff) = first_difference(&expected, &actual) { + panic!( + "parity: importing {} differs from its baseline {}, {diff}", + stage.display(), + file.display() + ); + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn the_first_difference_is_named() { + let a = "camera: x\ngeom 0: a\ngeom 1: b\n"; + let b = "camera: x\ngeom 0: b\ngeom 1: a\n"; + let diff = first_difference(a, b).expect("they differ"); + assert!(diff.starts_with("line 2:"), "{diff}"); + assert!( + diff.contains("geom 0: a") && diff.contains("geom 0: b"), + "{diff}" + ); + assert_eq!(first_difference(a, a), None); + assert!(first_difference(a, "camera: x\n").is_some()); + } + + /// Two scenes with the same two spheres attached in the other order. + fn two_spheres(swapped: bool) -> Scene { + use crate::rt::Geometry; + let mut world = crate::WorldBuilder::new(); + let mut spheres = [ + Geometry::Sphere { + center: glam::Vec3A::ZERO, + radius: 1.0, + }, + Geometry::Sphere { + center: glam::Vec3A::X, + radius: 0.5, + }, + ]; + if swapped { + spheres.reverse(); + } + for s in spheres { + world.attach( + s, + std::sync::Arc::new(crate::OpenPBR::diffuse(glam::Vec3A::splat(0.5))), + ); + } + let camera = crate::Camera::new( + glam::Vec3A::new(0.0, 0.0, 5.0), + glam::Vec3A::ZERO, + glam::Vec3A::Y, + 40.0, + 1.0, + 0.0, + 5.0, + ); + Scene::new( + camera, + world.commit(), + crate::LightList::new(), + Default::default(), + ) + } + + #[test] + fn a_reordered_geometry_is_named_by_its_id() { + let stage = Path::new("scene.usda"); + let a = digest(&two_spheres(false), stage); + let b = digest(&two_spheres(true), stage); + let diff = first_difference(&a, &b).expect("the order differs"); + assert!(diff.contains("geom 0:"), "{diff}"); + assert_eq!( + first_difference(&a, &digest(&two_spheres(false), stage)), + None + ); + } + + #[test] + fn paths_are_written_relative_to_the_stage() { + let stage = std::env::temp_dir().join("parity-test/scene.usda"); + let text = format!("layer: {}", stage.display()); + assert_eq!(normalise(&text, &stage), "layer: $DIR/scene.usda"); + } +} diff --git a/crates/crust-core/src/rt_world.rs b/crates/crust-core/src/rt_world.rs index cb45ec7f0..9f7e0f22f 100644 --- a/crates/crust-core/src/rt_world.rs +++ b/crates/crust-core/src/rt_world.rs @@ -1926,6 +1926,127 @@ impl World { } } +#[cfg(feature = "parity")] +impl World { + /// Writes every geometry of the world into an import-parity digest + /// ([`crate::parity`]), one line per `geom_id`: the material, by the + /// order its `Arc` was first met and its [`Signature`]; the light class, + /// holdout and transparent-emitter flags; the side tables' presence, + /// sharing and mirrored flag; the placement scale; the motion; and a hash + /// of every piece a ray of each category sees, in world space at shutter + /// open (an instance's pieces included, through its transform). + pub(crate) fn parity_digest(&self, out: &mut String) { + use std::fmt::Write as _; + let mut materials: std::collections::HashMap = Default::default(); + let mut tables: std::collections::HashMap = Default::default(); + let ordinal = |seen: &mut std::collections::HashMap, ptr: usize| { + let n = seen.len(); + *seen.entry(ptr).or_insert(n) + }; + let masks = [ + ("all", MASK_ALL), + ("camera", crust_rt::MASK_CAMERA), + ("shadow", crust_rt::MASK_SHADOW), + ("indirect", crust_rt::MASK_INDIRECT), + ]; + let _ = writeln!( + out, + "world: {} geometries, {:?} top level, {:?} unique, motion {}", + self.count(), + self.primitive_breakdown(), + self.unique_primitive_breakdown(), + self.has_motion() + ); + for id in 0..self.count() as u32 { + let m = &self.materials[id as usize]; + let mat = ordinal(&mut materials, Arc::as_ptr(m) as *const () as usize); + let t = &self.faces[id as usize]; + let mut table = |a: Option| a.map(|p| ordinal(&mut tables, p)); + let map = table(t.map.as_ref().map(|a| Arc::as_ptr(a) as usize)); + let uv = table(t.uv.as_ref().map(|a| Arc::as_ptr(a) as usize)); + let shading = table(t.shading.as_ref().map(|a| Arc::as_ptr(a) as usize)); + let strands = table(t.strands.as_ref().map(|a| Arc::as_ptr(a) as usize)); + let aov = self + .primvars + .binary_search_by_key(&id, |(i, ..)| *i) + .ok() + .map(|i| { + ( + table(Some(Arc::as_ptr(&self.primvars[i].1) as usize)), + self.primvars[i].2, + ) + }); + let motion: Vec<&Motion> = self + .motion + .iter() + .filter(|(a, b, _)| (*a..=*b).contains(&id)) + .map(|(.., m)| m) + .collect(); + let mut pieces = String::new(); + for (name, mask) in masks { + let mut hash = Fnv::default(); + let mut n = 0u64; + self.scene.visit(id..id + 1, mask, |_, piece| { + n += 1; + match piece { + crust_rt::Piece::Triangle(v) => { + for p in v { + hash.floats(&p.to_array()); + } + } + crust_rt::Piece::Bounds(b) => { + hash.floats(&b.minimum.to_array()); + hash.floats(&b.maximum.to_array()); + } + } + }); + let _ = write!(pieces, " {name}={n}:{:016x}", hash.0); + } + let _ = writeln!( + out, + "geom {id}: material #{mat} {:?} class {} holdout {} transparent {} map {map:?} uv \ + {uv:?} shading {shading:?} strands {strands:?} aov {aov:?} swapped {} curves {} scale {:?} motion \ + {motion:?} pieces{pieces}", + Signature::of(m.as_ref(), t.curves), + self.light_class(id), + self.is_holdout(id), + self.is_transparent_emitter(id), + t.swapped, + t.curves, + t.scale, + ); + } + } +} + +/// FNV-1a over the bit patterns of floats: exact, and stable across runs and +/// machines, as an import-parity digest needs ([`World::parity_digest`]). +#[cfg(feature = "parity")] +pub(crate) struct Fnv(pub(crate) u64); + +#[cfg(feature = "parity")] +impl Default for Fnv { + fn default() -> Self { + Fnv(0xcbf2_9ce4_8422_2325) + } +} + +#[cfg(feature = "parity")] +impl Fnv { + pub(crate) fn bytes(&mut self, bytes: &[u8]) { + for b in bytes { + self.0 ^= u64::from(*b); + self.0 = self.0.wrapping_mul(0x0000_0100_0000_01b3); + } + } + + pub(crate) fn floats(&mut self, floats: &[f32]) { + for f in floats { + self.bytes(&f.to_bits().to_le_bytes()); + } + } +} + /// The properties of a material the world and the geometry were built on: /// two materials with the same signature can swap slots without a re-import. #[derive(Debug, PartialEq)] diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index 41b4d3a46..a640d4aa7 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -1422,6 +1422,9 @@ pub(crate) fn load_scene( mtlx_library: ctx.caches.materials.library.clone(), }, }); + // Test builds only: compare the scene with the direct importer's baseline. + #[cfg(feature = "parity")] + crate::parity::check_import(path, options, &scene, &|| load_scene(path, assets, options)); Ok(scene) } diff --git a/crates/crust-core/tests/data/import_baselines/PointInstancedMedCity_usd-951317bf2ce0f6ed-1.digest b/crates/crust-core/tests/data/import_baselines/PointInstancedMedCity_usd-951317bf2ce0f6ed-1.digest new file mode 100644 index 000000000..e45f1a654 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/PointInstancedMedCity_usd-951317bf2ce0f6ed-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/Cameras/main_cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-0.27183646, -0.15290801, -1.0), horizontal: Vec3A(0.5436729, 0.0, 0.0), vertical: Vec3A(0.0, 0.30581602, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, -1.0)), far: Some(Vec4(0.0, 0.0, 1.0, 1000000.0)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 0.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/PointInstancedMedCity.usd"], invisible_overrides: Some(0) } +layer: $DIR/PointInstancedMedCity.usd +warning: Warning { code: InstancingEmptyPrototype, kind: Skipped, count: 8, prims: ["/MediterraneanHills/Buildings/Prototypes/prototype_0", "/MediterraneanHills/Buildings/Prototypes/prototype_1", "/MediterraneanHills/Buildings/Prototypes/prototype_2", "/MediterraneanHills/Buildings/Prototypes/prototype_3", "/MediterraneanHills/Buildings/Prototypes/prototype_4", "/MediterraneanHills/Buildings/Prototypes/prototype_5", "/MediterraneanHills/Buildings/Prototypes/prototype_6", "/MediterraneanHills/Buildings/Prototypes/prototype_7"], message: "Prototype /MediterraneanHills/Buildings/Prototypes/prototype_0 contributed no geometry" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/Cameras/main_cam"), cameras: ["/Cameras/main_cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/Cameras/main_cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/absorber_usda-e5a517b5b36fd7e1-1.digest b/crates/crust-core/tests/data/import_baselines/absorber_usda-e5a517b5b36fd7e1-1.digest new file mode 100644 index 000000000..11726be65 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/absorber_usda-e5a517b5b36fd7e1-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/absorber.usda"], invisible_overrides: Some(0) } +layer: $DIR/absorber.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: true, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Fog: MaterialOrigin { slots: [0], displaced: false } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/adaptive_bounded_usda-871964d811713ece-1.digest b/crates/crust-core/tests/data/import_baselines/adaptive_bounded_usda-871964d811713ece-1.digest new file mode 100644 index 000000000..47c72e2a8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/adaptive_bounded_usda-871964d811713ece-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/adaptive_bounded.usda"], invisible_overrides: Some(0) } +layer: $DIR/adaptive_bounded.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 128, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 128, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:19ba5b802c764acd camera=128:19ba5b802c764acd shadow=128:19ba5b802c764acd indirect=128:19ba5b802c764acd +provenance material /World/Height: MaterialOrigin { slots: [0], displaced: true } +provenance geometry 0..1: /World/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11414414559242978054, n_points: 81, n_indices: 384, n_uvs: Some(81), smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1142105526, 0, 0, 0, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1082130432, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/adaptive_unbounded_usda-6ab4975baebe18ef-1.digest b/crates/crust-core/tests/data/import_baselines/adaptive_unbounded_usda-6ab4975baebe18ef-1.digest new file mode 100644 index 000000000..b62f73461 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/adaptive_unbounded_usda-6ab4975baebe18ef-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/adaptive_unbounded.usda"], invisible_overrides: Some(0) } +layer: $DIR/adaptive_unbounded.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 128, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 128, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:19ba5b802c764acd camera=128:19ba5b802c764acd shadow=128:19ba5b802c764acd indirect=128:19ba5b802c764acd +provenance material /World/Height: MaterialOrigin { slots: [0], displaced: true } +provenance geometry 0..1: /World/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11414414559242978054, n_points: 81, n_indices: 384, n_uvs: Some(81), smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1142105526, 0, 0, 0, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1082130432, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/adjust_aperture_height_usda-9d28c7b3a9cad9f9-1.digest b/crates/crust-core/tests/data/import_baselines/adjust_aperture_height_usda-9d28c7b3a9cad9f9-1.digest new file mode 100644 index 000000000..49d57fe56 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/adjust_aperture_height_usda-9d28c7b3a9cad9f9-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-3.7419648, -1.1915421, -1.1075726), horizontal: Vec3A(7.4839296, -0.0, 0.0), vertical: Vec3A(0.0, 4.1996217, -0.59021837), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 8, width: 240, height: 136, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 136 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 13.97], aperture_offset: [0.0, 0.0], conform: "adjustApertureHeight", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/adjust_aperture_height.usda", "$ROOT/samples/dome_backdrop.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/dome_backdrop.usda +layer: $DIR/adjust_aperture_height.usda +lights: 1 +light 0: dome name Some("/World/Hdri") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Hdri: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Mirror +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/adjust_aperture_width_usda-c50e2f84bef7e6b7-1.digest b/crates/crust-core/tests/data/import_baselines/adjust_aperture_width_usda-c50e2f84bef7e6b7-1.digest new file mode 100644 index 000000000..acc1902c7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/adjust_aperture_width_usda-c50e2f84bef7e6b7-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.4023113, -1.5620966, -1.0554943), horizontal: Vec3A(8.804623, -0.0, 0.0), vertical: Vec3A(0.0, 4.9407306, -0.6943745), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 8, width: 240, height: 136, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 136 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 13.97], aperture_offset: [0.0, 0.0], conform: "adjustApertureWidth", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/adjust_aperture_width.usda", "$ROOT/samples/dome_backdrop.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/dome_backdrop.usda +layer: $DIR/adjust_aperture_width.usda +lights: 1 +light 0: dome name Some("/World/Hdri") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Hdri: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Mirror +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/agrees_with_spec_usda-985ed763a0957571-1.digest b/crates/crust-core/tests/data/import_baselines/agrees_with_spec_usda-985ed763a0957571-1.digest new file mode 100644 index 000000000..0ca641702 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/agrees_with_spec_usda-985ed763a0957571-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 5.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -5.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 32, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/a", name: "a.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }], attributes: [] }, AovProduct { prim_path: "/Render/b", name: "b.exr", vars: [AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/normal", name: "normal", channel_prefix: None, source: Normal, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/agrees_with_spec.usda"], invisible_overrides: Some(0) } +layer: $DIR/agrees_with_spec.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/anamorphic_usda-c23c78df222208eb-1.digest b/crates/crust-core/tests/data/import_baselines/anamorphic_usda-c23c78df222208eb-1.digest new file mode 100644 index 000000000..ed41785b3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/anamorphic_usda-c23c78df222208eb-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-4.9925594, -3.0086517, -0.98669434), horizontal: Vec3A(9.999988, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 32, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 16 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "adjustPixelAspectRatio", pixel_aspect: 0.5, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/anamorphic.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/anamorphic.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/ancestor_usda-3171d13289efaaff-1.digest b/crates/crust-core/tests/data/import_baselines/ancestor_usda-3171d13289efaaff-1.digest new file mode 100644 index 000000000..8b0e0251e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ancestor_usda-3171d13289efaaff-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/objectId", name: "objectId", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Integer }), components: 1, precision: Uint, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/ancestor.usda"], invisible_overrides: Some(0) } +layer: $DIR/ancestor.usda +warning: Warning { code: PrimvarNotInherited, kind: Skipped, count: 1, prims: ["/World/group"], message: "/Render/objectId asks for primvar \"objectId\", which an ancestor authors on /World/group above /World/group/b; crust does not inherit primvars yet, so the prims it would reach read the clear value" } +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:309fb8964eb82c56 camera=2:309fb8964eb82c56 shadow=2:309fb8964eb82c56 indirect=2:309fb8964eb82c56 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:24553fcc736621f6 camera=2:24553fcc736621f6 shadow=2:24553fcc736621f6 indirect=2:24553fcc736621f6 +provenance light /World/dome: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/group/b +provenance geometry 1..2: /World/group/a +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16274330774750285532, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15356501520211640585, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("objectId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/ancestor_usda-74843e3cc431dad3-1.digest b/crates/crust-core/tests/data/import_baselines/ancestor_usda-74843e3cc431dad3-1.digest new file mode 100644 index 000000000..8e31943ce --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ancestor_usda-74843e3cc431dad3-1.digest @@ -0,0 +1,21 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: true, layer_stack: ["$DIR/ancestor.usda"], invisible_overrides: Some(0) } +layer: $DIR/ancestor.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Affine([Affine3A { matrix3: Mat3A { x_axis: Vec3A(0.76604444, 0.0, -0.64278764), y_axis: Vec3A(0.0, 1.0, 0.0), z_axis: Vec3A(0.64278764, 0.0, 0.76604444) }, translation: Vec3A(1.5320889, 0.0, -1.2855753) }, Affine3A { matrix3: Mat3A { x_axis: Vec3A(0.6427876, 0.0, -0.7660445), y_axis: Vec3A(0.0, 1.0, 0.0), z_axis: Vec3A(0.7660445, 0.0, 0.6427876) }, translation: Vec3A(1.2855752, 0.0, -1.532089) }])] pieces all=2:a71a231fb19189b0 camera=2:a71a231fb19189b0 shadow=2:a71a231fb19189b0 indirect=2:a71a231fb19189b0 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Turn/Card +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/animated_no_shutter_usda-dc5451565381429f-1.digest b/crates/crust-core/tests/data/import_baselines/animated_no_shutter_usda-dc5451565381429f-1.digest new file mode 100644 index 000000000..2662c649f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animated_no_shutter_usda-dc5451565381429f-1.digest @@ -0,0 +1,21 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/animated_no_shutter.usda"], invisible_overrides: Some(0) } +layer: $DIR/animated_no_shutter.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8f5d9187c4202473 camera=2:8f5d9187c4202473 shadow=2:8f5d9187c4202473 indirect=2:8f5d9187c4202473 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Card +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/animated_usda-84baf2836991de3b-1.digest b/crates/crust-core/tests/data/import_baselines/animated_usda-84baf2836991de3b-1.digest new file mode 100644 index 000000000..6264b819c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animated_usda-84baf2836991de3b-1.digest @@ -0,0 +1,16 @@ +time: Some(1.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 1, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/animated.usda"], invisible_overrides: Some(0) } +layer: $DIR/animated.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(1.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/animated_usda-e242162a2dbef33a-1.digest b/crates/crust-core/tests/data/import_baselines/animated_usda-e242162a2dbef33a-1.digest new file mode 100644 index 000000000..f0c9f65a0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animated_usda-e242162a2dbef33a-1.digest @@ -0,0 +1,16 @@ +time: Some(2.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 2, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/animated.usda"], invisible_overrides: Some(0) } +layer: $DIR/animated.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(2.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-0b34d79521209b48-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-0b34d79521209b48-1.digest new file mode 100644 index 000000000..d12bccbc7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-0b34d79521209b48-1.digest @@ -0,0 +1,33 @@ +time: Some(5.5) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/animation.usda"], invisible_overrides: Some(0) } +layer: $DIR/animation.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7fcf304865720e38 camera=2:7fcf304865720e38 shadow=2:7fcf304865720e38 indirect=2:7fcf304865720e38 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bea3e18521bb41f8 camera=1:bea3e18521bb41f8 shadow=1:bea3e18521bb41f8 indirect=1:bea3e18521bb41f8 +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 4..4 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Card +provenance geometry 3..4: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16017878447611219219, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-5446fd76cda9ed55-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-5446fd76cda9ed55-1.digest new file mode 100644 index 000000000..575330a44 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-5446fd76cda9ed55-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/animation.usda"], invisible_overrides: Some(0) } +layer: $DIR/animation.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a0eb7837d255c041 camera=1:a0eb7837d255c041 shadow=1:a0eb7837d255c041 indirect=1:a0eb7837d255c041 +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 3..3 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-7b809f697af333f7-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-7b809f697af333f7-1.digest new file mode 100644 index 000000000..ecae148f9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-7b809f697af333f7-1.digest @@ -0,0 +1,34 @@ +time: Some(25.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 25, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/animation.usda"], invisible_overrides: Some(0) } +layer: $DIR/animation.usda +warning: Warning { code: TimeOutsideRange, kind: Approximated, count: 1, prims: [], message: "Frame 25 is outside the stage's time range [1, 10]; animated attributes hold their nearest time sample" } +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ed529345c66d7d38 camera=2:ed529345c66d7d38 shadow=2:ed529345c66d7d38 indirect=2:ed529345c66d7d38 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f4cee44c409d25a6 camera=1:f4cee44c409d25a6 shadow=1:f4cee44c409d25a6 indirect=1:f4cee44c409d25a6 +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 4..4 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Card +provenance geometry 3..4: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 646954679051529708, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(25.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-87536adca26db1ce-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-87536adca26db1ce-1.digest new file mode 100644 index 000000000..12988ccf3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-87536adca26db1ce-1.digest @@ -0,0 +1,28 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/animation.usda"], invisible_overrides: Some(0) } +layer: $DIR/animation.usda +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a0eb7837d255c041 camera=1:a0eb7837d255c041 shadow=1:a0eb7837d255c041 indirect=1:a0eb7837d255c041 +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 3..3 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-a8098f0bc76c3026-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-a8098f0bc76c3026-1.digest new file mode 100644 index 000000000..62f7818bd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-a8098f0bc76c3026-1.digest @@ -0,0 +1,34 @@ +time: Some(-3.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: -3, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/animation.usda"], invisible_overrides: Some(0) } +layer: $DIR/animation.usda +warning: Warning { code: TimeOutsideRange, kind: Approximated, count: 1, prims: [], message: "Frame -3 is outside the stage's time range [1, 10]; animated attributes hold their nearest time sample" } +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:94f018d9446ce468 camera=2:94f018d9446ce468 shadow=2:94f018d9446ce468 indirect=2:94f018d9446ce468 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:18f450b5add08702 camera=1:18f450b5add08702 shadow=1:18f450b5add08702 indirect=1:18f450b5add08702 +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 4..4 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Card +provenance geometry 3..4: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6200305205315686865, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(-3.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-1.digest new file mode 100644 index 000000000..575330a44 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/animation.usda"], invisible_overrides: Some(0) } +layer: $DIR/animation.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a0eb7837d255c041 camera=1:a0eb7837d255c041 shadow=1:a0eb7837d255c041 indirect=1:a0eb7837d255c041 +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 3..3 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-2.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-2.digest new file mode 100644 index 000000000..575330a44 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-2.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/animation.usda"], invisible_overrides: Some(0) } +layer: $DIR/animation.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a0eb7837d255c041 camera=1:a0eb7837d255c041 shadow=1:a0eb7837d255c041 indirect=1:a0eb7837d255c041 +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 3..3 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-beee1323479cf47f-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-beee1323479cf47f-1.digest new file mode 100644 index 000000000..61b99cdfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-beee1323479cf47f-1.digest @@ -0,0 +1,33 @@ +time: Some(7.75) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 7, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/animation.usda"], invisible_overrides: Some(0) } +layer: $DIR/animation.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:54de9d04136a3278 camera=2:54de9d04136a3278 shadow=2:54de9d04136a3278 indirect=2:54de9d04136a3278 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e024edb0d5760ea2 camera=1:e024edb0d5760ea2 shadow=1:e024edb0d5760ea2 indirect=1:e024edb0d5760ea2 +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 4..4 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Card +provenance geometry 3..4: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6253865641669692558, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(7.75), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-cca20ab6197e3823-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-cca20ab6197e3823-1.digest new file mode 100644 index 000000000..e5c3821c0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-cca20ab6197e3823-1.digest @@ -0,0 +1,33 @@ +time: Some(1.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 1, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/animation.usda"], invisible_overrides: Some(0) } +layer: $DIR/animation.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:94f018d9446ce468 camera=2:94f018d9446ce468 shadow=2:94f018d9446ce468 indirect=2:94f018d9446ce468 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:18f450b5add08702 camera=1:18f450b5add08702 shadow=1:18f450b5add08702 indirect=1:18f450b5add08702 +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 4..4 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Card +provenance geometry 3..4: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6200305205315686865, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(1.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-cfe8a27d275b06f7-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-cfe8a27d275b06f7-1.digest new file mode 100644 index 000000000..575330a44 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-cfe8a27d275b06f7-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/animation.usda"], invisible_overrides: Some(0) } +layer: $DIR/animation.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a0eb7837d255c041 camera=1:a0eb7837d255c041 shadow=1:a0eb7837d255c041 indirect=1:a0eb7837d255c041 +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 3..3 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-d9cfa85be82eff7f-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-d9cfa85be82eff7f-1.digest new file mode 100644 index 000000000..c71d6ee87 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-d9cfa85be82eff7f-1.digest @@ -0,0 +1,33 @@ +time: Some(7.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 7, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/animation.usda"], invisible_overrides: Some(0) } +layer: $DIR/animation.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ec853032364bd1b8 camera=2:ec853032364bd1b8 shadow=2:ec853032364bd1b8 indirect=2:ec853032364bd1b8 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f2c930e2e985552c camera=1:f2c930e2e985552c shadow=1:f2c930e2e985552c indirect=1:f2c930e2e985552c +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 4..4 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Card +provenance geometry 3..4: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16263365991131358083, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(7.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-dc0987b1e9c0a44b-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-dc0987b1e9c0a44b-1.digest new file mode 100644 index 000000000..7ca7e6051 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-dc0987b1e9c0a44b-1.digest @@ -0,0 +1,33 @@ +time: Some(10.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 10, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/animation.usda"], invisible_overrides: Some(0) } +layer: $DIR/animation.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ed529345c66d7d38 camera=2:ed529345c66d7d38 shadow=2:ed529345c66d7d38 indirect=2:ed529345c66d7d38 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f4cee44c409d25a6 camera=1:f4cee44c409d25a6 shadow=1:f4cee44c409d25a6 indirect=1:f4cee44c409d25a6 +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 4..4 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Card +provenance geometry 3..4: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 646954679051529708, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/aov_format_usda-3d1985fd48e4fb2d-1.digest b/crates/crust-core/tests/data/import_baselines/aov_format_usda-3d1985fd48e4fb2d-1.digest new file mode 100644 index 000000000..ea3b065ba --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aov_format_usda-3d1985fd48e4fb2d-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Pref_h", name: "Pref_h", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Half, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Pref_f", name: "Pref_f", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Cd_h", name: "Cd_h", channel_prefix: None, source: Primvar(PrimvarSource { index: 1, components: 3, role: Color }), components: 3, precision: Half, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/aov_format.usda"], invisible_overrides: Some(0) } +layer: $DIR/aov_format.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:32f1a52c797bfee5 camera=2:32f1a52c797bfee5 shadow=2:32f1a52c797bfee5 indirect=2:32f1a52c797bfee5 +provenance light /World/dome: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14779366758744255248, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-4a2c1502ba0a175e-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-4a2c1502ba0a175e-1.digest new file mode 100644 index 000000000..c65ee423b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-4a2c1502ba0a175e-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-5.6632595, -1.9855835, -4.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/beauty", name: "renders/aovs_beauty.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sampleCount", name: "sampleCount", channel_prefix: None, source: SampleCount, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [("artist", "crust samples")] }, AovProduct { prim_path: "/Render/Products/data", name: "renders/aovs_data.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/Z", name: "Z", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/distance", name: "distance", channel_prefix: None, source: Distance, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Peye", name: "Peye", channel_prefix: None, source: Peye, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Half, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Neye", name: "Neye", channel_prefix: None, source: Neye, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/st", name: "st", channel_prefix: None, source: St, components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/alpha", name: "alpha", channel_prefix: None, source: Alpha, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/aovs_lookdev.usda", "$ROOT/samples/aovs.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/aovs.usda +layer: $DIR/aovs_lookdev.usda +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 1, prims: ["/Render/Products/Vars/diffuse_direct"], message: "/Render/Products/Vars/diffuse_direct: unknown raw source \"diffuse_direct\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cadf82024fa5b745 camera=2:cadf82024fa5b745 shadow=2:cadf82024fa5b745 indirect=2:cadf82024fa5b745 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-5ec9a160b78f998f-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-5ec9a160b78f998f-1.digest new file mode 100644 index 000000000..c65ee423b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-5ec9a160b78f998f-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-5.6632595, -1.9855835, -4.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/beauty", name: "renders/aovs_beauty.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sampleCount", name: "sampleCount", channel_prefix: None, source: SampleCount, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [("artist", "crust samples")] }, AovProduct { prim_path: "/Render/Products/data", name: "renders/aovs_data.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/Z", name: "Z", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/distance", name: "distance", channel_prefix: None, source: Distance, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Peye", name: "Peye", channel_prefix: None, source: Peye, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Half, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Neye", name: "Neye", channel_prefix: None, source: Neye, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/st", name: "st", channel_prefix: None, source: St, components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/alpha", name: "alpha", channel_prefix: None, source: Alpha, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/aovs_lookdev.usda", "$ROOT/samples/aovs.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/aovs.usda +layer: $DIR/aovs_lookdev.usda +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 1, prims: ["/Render/Products/Vars/diffuse_direct"], message: "/Render/Products/Vars/diffuse_direct: unknown raw source \"diffuse_direct\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cadf82024fa5b745 camera=2:cadf82024fa5b745 shadow=2:cadf82024fa5b745 indirect=2:cadf82024fa5b745 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6a98ab5ed25ffa78-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6a98ab5ed25ffa78-1.digest new file mode 100644 index 000000000..c18f48374 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6a98ab5ed25ffa78-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-5.6632595, -1.9855835, -4.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/beauty", name: "final/beauty.$F4.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sampleCount", name: "sampleCount", channel_prefix: None, source: SampleCount, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [("artist", "crust samples")] }, AovProduct { prim_path: "/Render/Products/data", name: "renders/aovs_data.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/Z", name: "Z", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/distance", name: "distance", channel_prefix: None, source: Distance, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Peye", name: "Peye", channel_prefix: None, source: Peye, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Half, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Neye", name: "Neye", channel_prefix: None, source: Neye, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/st", name: "st", channel_prefix: None, source: St, components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/alpha", name: "alpha", channel_prefix: None, source: Alpha, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/aovs_lookdev.usda", "$ROOT/samples/aovs.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/aovs.usda +layer: $DIR/aovs_lookdev.usda +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 1, prims: ["/Render/Products/Vars/diffuse_direct"], message: "/Render/Products/Vars/diffuse_direct: unknown raw source \"diffuse_direct\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cadf82024fa5b745 camera=2:cadf82024fa5b745 shadow=2:cadf82024fa5b745 indirect=2:cadf82024fa5b745 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6d6e4a8f31366652-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6d6e4a8f31366652-1.digest new file mode 100644 index 000000000..c8402ace0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6d6e4a8f31366652-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-5.6632595, -1.9855835, -4.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/beauty", name: "final/beauty.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sampleCount", name: "sampleCount", channel_prefix: None, source: SampleCount, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [("artist", "crust samples")] }, AovProduct { prim_path: "/Render/Products/data", name: "renders/aovs_data.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/Z", name: "Z", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/distance", name: "distance", channel_prefix: None, source: Distance, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Peye", name: "Peye", channel_prefix: None, source: Peye, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Half, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Neye", name: "Neye", channel_prefix: None, source: Neye, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/st", name: "st", channel_prefix: None, source: St, components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/alpha", name: "alpha", channel_prefix: None, source: Alpha, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/aovs_lookdev.usda", "$ROOT/samples/aovs.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/aovs.usda +layer: $DIR/aovs_lookdev.usda +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 1, prims: ["/Render/Products/Vars/diffuse_direct"], message: "/Render/Products/Vars/diffuse_direct: unknown raw source \"diffuse_direct\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cadf82024fa5b745 camera=2:cadf82024fa5b745 shadow=2:cadf82024fa5b745 indirect=2:cadf82024fa5b745 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-803d9a5b24ae0e42-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-803d9a5b24ae0e42-1.digest new file mode 100644 index 000000000..f2ac85eb6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-803d9a5b24ae0e42-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-5.6632595, -1.9855835, -4.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/beauty", name: "final/beauty.$F4.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sampleCount", name: "sampleCount", channel_prefix: None, source: SampleCount, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [("artist", "crust samples")] }, AovProduct { prim_path: "/Render/Products/data", name: "renders/aovs_data.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/Z", name: "Z", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/distance", name: "distance", channel_prefix: None, source: Distance, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Peye", name: "Peye", channel_prefix: None, source: Peye, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Half, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Neye", name: "Neye", channel_prefix: None, source: Neye, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/st", name: "st", channel_prefix: None, source: St, components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/alpha", name: "alpha", channel_prefix: None, source: Alpha, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/aovs_lookdev.usda", "$ROOT/samples/aovs.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/aovs.usda +layer: $DIR/aovs_lookdev.usda +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 1, prims: ["/Render/Products/Vars/diffuse_direct"], message: "/Render/Products/Vars/diffuse_direct: unknown raw source \"diffuse_direct\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cadf82024fa5b745 camera=2:cadf82024fa5b745 shadow=2:cadf82024fa5b745 indirect=2:cadf82024fa5b745 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-c88cebf77c02e1c8-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-c88cebf77c02e1c8-1.digest new file mode 100644 index 000000000..a30640158 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-c88cebf77c02e1c8-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-5.6632595, -1.9855835, -4.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/beauty", name: "final/beauty.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sampleCount", name: "sampleCount", channel_prefix: None, source: SampleCount, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [("artist", "crust samples")] }, AovProduct { prim_path: "/Render/Products/data", name: "renders/aovs_data.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/Z", name: "Z", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/distance", name: "distance", channel_prefix: None, source: Distance, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Peye", name: "Peye", channel_prefix: None, source: Peye, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Half, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Neye", name: "Neye", channel_prefix: None, source: Neye, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/st", name: "st", channel_prefix: None, source: St, components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/alpha", name: "alpha", channel_prefix: None, source: Alpha, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/aovs_lookdev.usda", "$ROOT/samples/aovs.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/aovs.usda +layer: $DIR/aovs_lookdev.usda +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 1, prims: ["/Render/Products/Vars/diffuse_direct"], message: "/Render/Products/Vars/diffuse_direct: unknown raw source \"diffuse_direct\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cadf82024fa5b745 camera=2:cadf82024fa5b745 shadow=2:cadf82024fa5b745 indirect=2:cadf82024fa5b745 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-96034a4139733157-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-96034a4139733157-1.digest new file mode 100644 index 000000000..0d9ae696a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-96034a4139733157-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/lpe", name: "renders/aovs_lpe.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/diffuse_direct", name: "diffuse_direct", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/diffuse_indirect", name: "diffuse_indirect", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.+[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/glossy_direct", name: "glossy_direct", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/glossy_indirect", name: "glossy_indirect", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.+[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/specular", name: "specular", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/transmission", name: "transmission", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/volume", name: "volume", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/emission", name: "emission", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/key", name: "key", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/fill", name: "fill", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sky_and_glow", name: "sky_and_glow", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*(|O)"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/coat", name: "coat", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/albedo", name: "albedo", channel_prefix: None, source: Albedo, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/rawLight", name: "rawLight", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C[LO]"), raw: true, variance: false }, AovVar { prim_path: "/Render/Products/Vars/rawGI", name: "rawGI", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.+[LO]"), raw: true, variance: false }, AovVar { prim_path: "/Render/Products/Vars/diffuse_albedo", name: "diffuse_albedo", channel_prefix: None, source: DiffuseFilter, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/aovs_lpe.usda"], invisible_overrides: Some(0) } +layer: $DIR/aovs_lpe.usda +lights: 3 +light 0: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe Some("fill") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe Some("key") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.25, 0.25, 0.25) sigma_a Vec3A(0.02, 0.02, 0.02) g 0.2 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 6 geometries, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c97b221493d1a870 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c97b221493d1a870 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:98380669d7d30875 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:98380669d7d30875 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0d00d12a04370041 camera=1:0d00d12a04370041 shadow=1:0d00d12a04370041 indirect=1:0d00d12a04370041 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:58be77f6c22f1464 camera=1:58be77f6c22f1464 shadow=1:58be77f6c22f1464 indirect=1:58be77f6c22f1464 +geom 4: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7040eda5700d5570 camera=1:7040eda5700d5570 shadow=1:7040eda5700d5570 indirect=1:7040eda5700d5570 +geom 5: material #5 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6e02baf63b264ec5 camera=2:6e02baf63b264ec5 shadow=2:6e02baf63b264ec5 indirect=2:6e02baf63b264ec5 +provenance material /World/Materials/floor: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Materials/glass: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/glow: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/paint: MaterialOrigin { slots: [4], displaced: false } +provenance light /World/Fill: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 1..2 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Fill +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Glow +provenance geometry 3..4: /World/Glass +provenance geometry 4..5: /World/Painted +provenance geometry 5..6: /World/Floor +provenance mesh: MeshOrigin { geom_id: 5, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4179031546807817238, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2, 3, 4] +provenance volumes: ["/World/Haze"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-1.digest new file mode 100644 index 000000000..4bfb827a2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/lpe", name: "renders/aovs_lpe.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/diffuse_direct", name: "diffuse_direct", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/diffuse_indirect", name: "diffuse_indirect", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.+[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/glossy_direct", name: "glossy_direct", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/glossy_indirect", name: "glossy_indirect", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.+[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/specular", name: "specular", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/transmission", name: "transmission", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/volume", name: "volume", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/emission", name: "emission", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/key", name: "key", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/fill", name: "fill", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sky_and_glow", name: "sky_and_glow", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*(|O)"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/coat", name: "coat", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/albedo", name: "albedo", channel_prefix: None, source: Albedo, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/rawLight", name: "rawLight", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C[LO]"), raw: true, variance: false }, AovVar { prim_path: "/Render/Products/Vars/rawGI", name: "rawGI", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.+[LO]"), raw: true, variance: false }, AovVar { prim_path: "/Render/Products/Vars/diffuse_albedo", name: "diffuse_albedo", channel_prefix: None, source: DiffuseFilter, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/aovs_lpe.usda"], invisible_overrides: Some(0) } +layer: $DIR/aovs_lpe.usda +lights: 3 +light 0: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe Some("fill") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe Some("key") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.25, 0.25, 0.25) sigma_a Vec3A(0.02, 0.02, 0.02) g 0.2 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 6 geometries, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c97b221493d1a870 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c97b221493d1a870 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:98380669d7d30875 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:98380669d7d30875 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0d00d12a04370041 camera=1:0d00d12a04370041 shadow=1:0d00d12a04370041 indirect=1:0d00d12a04370041 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:58be77f6c22f1464 camera=1:58be77f6c22f1464 shadow=1:58be77f6c22f1464 indirect=1:58be77f6c22f1464 +geom 4: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7040eda5700d5570 camera=1:7040eda5700d5570 shadow=1:7040eda5700d5570 indirect=1:7040eda5700d5570 +geom 5: material #5 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6e02baf63b264ec5 camera=2:6e02baf63b264ec5 shadow=2:6e02baf63b264ec5 indirect=2:6e02baf63b264ec5 +provenance material /World/Materials/floor: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Materials/glass: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/glow: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/paint: MaterialOrigin { slots: [4], displaced: false } +provenance light /World/Fill: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 1..2 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Fill +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Glow +provenance geometry 3..4: /World/Glass +provenance geometry 4..5: /World/Painted +provenance geometry 5..6: /World/Floor +provenance mesh: MeshOrigin { geom_id: 5, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4179031546807817238, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2, 3, 4] +provenance volumes: ["/World/Haze"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-2.digest b/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-2.digest new file mode 100644 index 000000000..4bfb827a2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-2.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/lpe", name: "renders/aovs_lpe.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/diffuse_direct", name: "diffuse_direct", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/diffuse_indirect", name: "diffuse_indirect", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.+[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/glossy_direct", name: "glossy_direct", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/glossy_indirect", name: "glossy_indirect", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.+[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/specular", name: "specular", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/transmission", name: "transmission", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/volume", name: "volume", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/emission", name: "emission", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/key", name: "key", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/fill", name: "fill", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sky_and_glow", name: "sky_and_glow", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*(|O)"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/coat", name: "coat", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/albedo", name: "albedo", channel_prefix: None, source: Albedo, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/rawLight", name: "rawLight", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C[LO]"), raw: true, variance: false }, AovVar { prim_path: "/Render/Products/Vars/rawGI", name: "rawGI", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.+[LO]"), raw: true, variance: false }, AovVar { prim_path: "/Render/Products/Vars/diffuse_albedo", name: "diffuse_albedo", channel_prefix: None, source: DiffuseFilter, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/aovs_lpe.usda"], invisible_overrides: Some(0) } +layer: $DIR/aovs_lpe.usda +lights: 3 +light 0: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe Some("fill") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe Some("key") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.25, 0.25, 0.25) sigma_a Vec3A(0.02, 0.02, 0.02) g 0.2 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 6 geometries, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c97b221493d1a870 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c97b221493d1a870 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:98380669d7d30875 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:98380669d7d30875 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0d00d12a04370041 camera=1:0d00d12a04370041 shadow=1:0d00d12a04370041 indirect=1:0d00d12a04370041 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:58be77f6c22f1464 camera=1:58be77f6c22f1464 shadow=1:58be77f6c22f1464 indirect=1:58be77f6c22f1464 +geom 4: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7040eda5700d5570 camera=1:7040eda5700d5570 shadow=1:7040eda5700d5570 indirect=1:7040eda5700d5570 +geom 5: material #5 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6e02baf63b264ec5 camera=2:6e02baf63b264ec5 shadow=2:6e02baf63b264ec5 indirect=2:6e02baf63b264ec5 +provenance material /World/Materials/floor: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Materials/glass: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/glow: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/paint: MaterialOrigin { slots: [4], displaced: false } +provenance light /World/Fill: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 1..2 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Fill +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Glow +provenance geometry 3..4: /World/Glass +provenance geometry 4..5: /World/Painted +provenance geometry 5..6: /World/Floor +provenance mesh: MeshOrigin { geom_id: 5, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4179031546807817238, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2, 3, 4] +provenance volumes: ["/World/Haze"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-1.digest new file mode 100644 index 000000000..7a03945e7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-5.6632595, -1.9855835, -4.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/beauty", name: "renders/aovs_beauty.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sampleCount", name: "sampleCount", channel_prefix: None, source: SampleCount, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [("artist", "crust samples")] }, AovProduct { prim_path: "/Render/Products/data", name: "renders/aovs_data.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/Z", name: "Z", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/distance", name: "distance", channel_prefix: None, source: Distance, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Peye", name: "Peye", channel_prefix: None, source: Peye, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Half, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Neye", name: "Neye", channel_prefix: None, source: Neye, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/st", name: "st", channel_prefix: None, source: St, components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/alpha", name: "alpha", channel_prefix: None, source: Alpha, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/aovs.usda"], invisible_overrides: Some(0) } +layer: $DIR/aovs.usda +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 1, prims: ["/Render/Products/Vars/diffuse_direct"], message: "/Render/Products/Vars/diffuse_direct: unknown raw source \"diffuse_direct\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cadf82024fa5b745 camera=2:cadf82024fa5b745 shadow=2:cadf82024fa5b745 indirect=2:cadf82024fa5b745 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-2.digest b/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-2.digest new file mode 100644 index 000000000..7a03945e7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-2.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-5.6632595, -1.9855835, -4.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/beauty", name: "renders/aovs_beauty.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sampleCount", name: "sampleCount", channel_prefix: None, source: SampleCount, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [("artist", "crust samples")] }, AovProduct { prim_path: "/Render/Products/data", name: "renders/aovs_data.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/Z", name: "Z", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/distance", name: "distance", channel_prefix: None, source: Distance, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Peye", name: "Peye", channel_prefix: None, source: Peye, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Half, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Neye", name: "Neye", channel_prefix: None, source: Neye, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/st", name: "st", channel_prefix: None, source: St, components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/alpha", name: "alpha", channel_prefix: None, source: Alpha, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/aovs.usda"], invisible_overrides: Some(0) } +layer: $DIR/aovs.usda +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 1, prims: ["/Render/Products/Vars/diffuse_direct"], message: "/Render/Products/Vars/diffuse_direct: unknown raw source \"diffuse_direct\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cadf82024fa5b745 camera=2:cadf82024fa5b745 shadow=2:cadf82024fa5b745 indirect=2:cadf82024fa5b745 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/aovs_usda-90b4ce2557c1c46e-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_usda-90b4ce2557c1c46e-1.digest new file mode 100644 index 000000000..0a3623409 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_usda-90b4ce2557c1c46e-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-5.6632595, -1.9855835, -4.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/beauty", name: "renders/aovs_beauty.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sampleCount", name: "sampleCount", channel_prefix: None, source: SampleCount, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [("artist", "crust samples")] }, AovProduct { prim_path: "/Render/Products/data", name: "renders/aovs_data.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/Z", name: "Z", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/distance", name: "distance", channel_prefix: None, source: Distance, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Peye", name: "Peye", channel_prefix: None, source: Peye, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Half, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Neye", name: "Neye", channel_prefix: None, source: Neye, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/st", name: "st", channel_prefix: None, source: St, components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/alpha", name: "alpha", channel_prefix: None, source: Alpha, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/aovs.usda"], invisible_overrides: Some(0) } +layer: $DIR/aovs.usda +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 1, prims: ["/Render/Products/Vars/diffuse_direct"], message: "/Render/Products/Vars/diffuse_direct: unknown raw source \"diffuse_direct\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cadf82024fa5b745 camera=2:cadf82024fa5b745 shadow=2:cadf82024fa5b745 indirect=2:cadf82024fa5b745 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/aovs_usda-cd31a05d6e49ceda-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_usda-cd31a05d6e49ceda-1.digest new file mode 100644 index 000000000..0a3623409 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_usda-cd31a05d6e49ceda-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-5.6632595, -1.9855835, -4.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/beauty", name: "renders/aovs_beauty.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sampleCount", name: "sampleCount", channel_prefix: None, source: SampleCount, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [("artist", "crust samples")] }, AovProduct { prim_path: "/Render/Products/data", name: "renders/aovs_data.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/Z", name: "Z", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/distance", name: "distance", channel_prefix: None, source: Distance, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Peye", name: "Peye", channel_prefix: None, source: Peye, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Half, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Neye", name: "Neye", channel_prefix: None, source: Neye, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/st", name: "st", channel_prefix: None, source: St, components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/alpha", name: "alpha", channel_prefix: None, source: Alpha, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/aovs.usda"], invisible_overrides: Some(0) } +layer: $DIR/aovs.usda +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 1, prims: ["/Render/Products/Vars/diffuse_direct"], message: "/Render/Products/Vars/diffuse_direct: unknown raw source \"diffuse_direct\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cadf82024fa5b745 camera=2:cadf82024fa5b745 shadow=2:cadf82024fa5b745 indirect=2:cadf82024fa5b745 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/area_lights_usda-07bd34a97e44c0ab-1.digest b/crates/crust-core/tests/data/import_baselines/area_lights_usda-07bd34a97e44c0ab-1.digest new file mode 100644 index 000000000..e301ab85a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/area_lights_usda-07bd34a97e44c0ab-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/area_lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/area_lights.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 2 +light 0: area name Some("/World/Panel") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Bulb") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:894b34b3fec45c98 camera=2:894b34b3fec45c98 shadow=2:894b34b3fec45c98 indirect=2:894b34b3fec45c98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d23ac7aa026facc8 +provenance light /World/Bulb: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Panel: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Panel +provenance geometry 1..2: /World/Bulb +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/area_lights_usda-6989a4d471c724cf-1.digest b/crates/crust-core/tests/data/import_baselines/area_lights_usda-6989a4d471c724cf-1.digest new file mode 100644 index 000000000..cf82e1b31 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/area_lights_usda-6989a4d471c724cf-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/pass", holdouts: 0, camera_hidden: 1 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/area_lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/area_lights.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 2 +light 0: area name Some("/World/Panel") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Bulb") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:894b34b3fec45c98 camera=0:cbf29ce484222325 shadow=2:894b34b3fec45c98 indirect=2:894b34b3fec45c98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d23ac7aa026facc8 +provenance light /World/Bulb: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Panel: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Panel +provenance geometry 1..2: /World/Bulb +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pass"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/area_nothing_usda-bf90dbc7327fa98c-1.digest b/crates/crust-core/tests/data/import_baselines/area_nothing_usda-bf90dbc7327fa98c-1.digest new file mode 100644 index 000000000..dd4afc79e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/area_nothing_usda-bf90dbc7327fa98c-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/area_nothing.usda"], invisible_overrides: Some(0) } +layer: $DIR/area_nothing.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +provenance geometry 0..1: /World/L +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/area_nothing_visible_usda-2f4e016170ad5820-1.digest b/crates/crust-core/tests/data/import_baselines/area_nothing_visible_usda-2f4e016170ad5820-1.digest new file mode 100644 index 000000000..783a5dcdf --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/area_nothing_visible_usda-2f4e016170ad5820-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/area_nothing_visible.usda"], invisible_overrides: Some(0) } +layer: $DIR/area_nothing_visible.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +provenance geometry 0..1: /World/L +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-3b3a8108b3e9fae9-1.digest b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-3b3a8108b3e9fae9-1.digest new file mode 100644 index 000000000..4c032d717 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-3b3a8108b3e9fae9-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, 0.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/asset_lookdev.usda", "$DIR/asset.usda"], invisible_overrides: Some(0) } +layer: $DIR/asset.usda +layer: $DIR/asset_lookdev.usda +lights: 1 +light 0: area name Some("/World/key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fec033f5f7a969c5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fec033f5f7a969c5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance light /World/key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/key +provenance geometry 1..2: /World/asset/ball +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-41ce6942a2d54582-1.digest b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-41ce6942a2d54582-1.digest new file mode 100644 index 000000000..5716a34c0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-41ce6942a2d54582-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, 0.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/asset_lookdev.usda", "$DIR/asset.usda"], invisible_overrides: Some(0) } +layer: $DIR/asset.usda +layer: $DIR/asset_lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/World/Looks/red"], message: "Material /World/Looks/red has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: area name Some("/World/key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fec033f5f7a969c5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fec033f5f7a969c5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Looks/red: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/key +provenance geometry 1..2: /World/asset/ball +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-6567e83e5076f9db-1.digest b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-6567e83e5076f9db-1.digest new file mode 100644 index 000000000..1e699680b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-6567e83e5076f9db-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, 0.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/asset_lookdev.usda", "$DIR/asset.usda"], invisible_overrides: Some(0) } +layer: $DIR/asset.usda +layer: $DIR/asset_lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/World/Looks/red"], message: "Material /World/Looks/red has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: area name Some("/World/key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fec033f5f7a969c5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fec033f5f7a969c5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d5fa2ac5108a1585 camera=1:d5fa2ac5108a1585 shadow=1:d5fa2ac5108a1585 indirect=1:d5fa2ac5108a1585 +provenance material /World/Looks/red: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/key +provenance geometry 1..2: /World/asset/ball +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-9934bec515530278-1.digest b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-9934bec515530278-1.digest new file mode 100644 index 000000000..4c032d717 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-9934bec515530278-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, 0.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/asset_lookdev.usda", "$DIR/asset.usda"], invisible_overrides: Some(0) } +layer: $DIR/asset.usda +layer: $DIR/asset_lookdev.usda +lights: 1 +light 0: area name Some("/World/key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fec033f5f7a969c5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fec033f5f7a969c5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance light /World/key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/key +provenance geometry 1..2: /World/asset/ball +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e4930eb0174b9dd7-1.digest b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e4930eb0174b9dd7-1.digest new file mode 100644 index 000000000..242a43b5b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e4930eb0174b9dd7-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, 0.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/asset_lookdev.usda", "$DIR/asset.usda"], invisible_overrides: Some(0) } +layer: $DIR/asset.usda +layer: $DIR/asset_lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/World/Looks/red"], message: "Material /World/Looks/red has no surface shader — using default grey OpenPBR" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d5fa2ac5108a1585 camera=1:d5fa2ac5108a1585 shadow=1:d5fa2ac5108a1585 indirect=1:d5fa2ac5108a1585 +provenance material /World/Looks/red: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/asset/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e7566c662eda92b2-1.digest b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e7566c662eda92b2-1.digest new file mode 100644 index 000000000..4c032d717 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e7566c662eda92b2-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, 0.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/asset_lookdev.usda", "$DIR/asset.usda"], invisible_overrides: Some(0) } +layer: $DIR/asset.usda +layer: $DIR/asset_lookdev.usda +lights: 1 +light 0: area name Some("/World/key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fec033f5f7a969c5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fec033f5f7a969c5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance light /World/key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/key +provenance geometry 1..2: /World/asset/ball +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-ec05a5f1f38841c6-1.digest b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-ec05a5f1f38841c6-1.digest new file mode 100644 index 000000000..0409f2474 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-ec05a5f1f38841c6-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, 0.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/asset_lookdev.usda", "$DIR/asset.usda"], invisible_overrides: Some(0) } +layer: $DIR/asset.usda +layer: $DIR/asset_lookdev.usda +lights: 1 +light 0: area name Some("/World/key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fec033f5f7a969c5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fec033f5f7a969c5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d5fa2ac5108a1585 camera=1:d5fa2ac5108a1585 shadow=1:d5fa2ac5108a1585 indirect=1:d5fa2ac5108a1585 +provenance light /World/key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/key +provenance geometry 1..2: /World/asset/ball +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-f9c370778b865b50-1.digest b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-f9c370778b865b50-1.digest new file mode 100644 index 000000000..4c032d717 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-f9c370778b865b50-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, 0.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/asset_lookdev.usda", "$DIR/asset.usda"], invisible_overrides: Some(0) } +layer: $DIR/asset.usda +layer: $DIR/asset_lookdev.usda +lights: 1 +light 0: area name Some("/World/key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fec033f5f7a969c5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fec033f5f7a969c5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance light /World/key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/key +provenance geometry 1..2: /World/asset/ball +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/authored_only_usda-e3c97926a3d11ac4-1.digest b/crates/crust-core/tests/data/import_baselines/authored_only_usda-e3c97926a3d11ac4-1.digest new file mode 100644 index 000000000..0a5d62ba2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/authored_only_usda-e3c97926a3d11ac4-1.digest @@ -0,0 +1,21 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/authored_only.usda"], invisible_overrides: Some(0) } +layer: $DIR/authored_only.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.0, 0.0, 0.0))] pieces all=2:8f5d9187c4202473 camera=2:8f5d9187c4202473 shadow=2:8f5d9187c4202473 indirect=2:8f5d9187c4202473 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Card +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/backdrop_dome_light_1_usda-bda39b6574f6f444-1.digest b/crates/crust-core/tests/data/import_baselines/backdrop_dome_light_1_usda-bda39b6574f6f444-1.digest new file mode 100644 index 000000000..46dd93186 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/backdrop_dome_light_1_usda-bda39b6574f6f444-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/backdrop_dome_light_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/backdrop_dome_light_1.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Hdri") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance light /World/Hdri: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/backdrop_streamed_usda-5c630271a8fcfd44-1.digest b/crates/crust-core/tests/data/import_baselines/backdrop_streamed_usda-5c630271a8fcfd44-1.digest new file mode 100644 index 000000000..39817ac02 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/backdrop_streamed_usda-5c630271a8fcfd44-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/backdrop_streamed.usda"], invisible_overrides: Some(0) } +layer: $DIR/backdrop_streamed.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 0, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/A +provenance geometry 1..2: /World/B +provenance geometry 2..3: /World/C/Deep +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/backdrop_usda-2757fcfd84c07e64-1.digest b/crates/crust-core/tests/data/import_baselines/backdrop_usda-2757fcfd84c07e64-1.digest new file mode 100644 index 000000000..5ed30dfce --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/backdrop_usda-2757fcfd84c07e64-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/backdrop.usda"], invisible_overrides: Some(0) } +layer: $DIR/backdrop.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Hdri") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance light /World/Hdri: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/backdrop_usda-3818c88f3ea1e994-1.digest b/crates/crust-core/tests/data/import_baselines/backdrop_usda-3818c88f3ea1e994-1.digest new file mode 100644 index 000000000..f06173dfa --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/backdrop_usda-3818c88f3ea1e994-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/pass", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/backdrop.usda"], invisible_overrides: Some(0) } +layer: $DIR/backdrop.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2f65027762d8ffb5 camera=2:2f65027762d8ffb5 shadow=2:2f65027762d8ffb5 indirect=2:2f65027762d8ffb5 +provenance geometry 0..1: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11147341635340358220, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pass"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/backdrop_usda-e17ddb582cb97b8c-1.digest b/crates/crust-core/tests/data/import_baselines/backdrop_usda-e17ddb582cb97b8c-1.digest new file mode 100644 index 000000000..62da037cd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/backdrop_usda-e17ddb582cb97b8c-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/backdrop.usda"], invisible_overrides: Some(0) } +layer: $DIR/backdrop.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2f65027762d8ffb5 camera=2:2f65027762d8ffb5 shadow=2:2f65027762d8ffb5 indirect=2:2f65027762d8ffb5 +provenance geometry 0..1: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11147341635340358220, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/backlit_diffuse_usda-3dfba11cda1cd7c6-1.digest b/crates/crust-core/tests/data/import_baselines/backlit_diffuse_usda-3dfba11cda1cd7c6-1.digest new file mode 100644 index 000000000..285e1f2c6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/backlit_diffuse_usda-3dfba11cda1cd7c6-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/backlit_diffuse.usda"], invisible_overrides: Some(0) } +layer: $DIR/backlit_diffuse.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/Back") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5964020bd0c96e6d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5964020bd0c96e6d +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=1:f23ffa0170dacb65 camera=1:f23ffa0170dacb65 shadow=1:f23ffa0170dacb65 indirect=1:f23ffa0170dacb65 +provenance material /World/Looks/mtlx_diffuse_twin: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Back: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Back +provenance geometry 1..2: /World/Strand +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/backlit_hair_usda-59f16e3a1a4f9b6d-1.digest b/crates/crust-core/tests/data/import_baselines/backlit_hair_usda-59f16e3a1a4f9b6d-1.digest new file mode 100644 index 000000000..a72dfa718 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/backlit_hair_usda-59f16e3a1a4f9b6d-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/backlit_hair.usda"], invisible_overrides: Some(0) } +layer: $DIR/backlit_hair.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/Back") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5964020bd0c96e6d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5964020bd0c96e6d +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=1:f23ffa0170dacb65 camera=1:f23ffa0170dacb65 shadow=1:f23ffa0170dacb65 indirect=1:f23ffa0170dacb65 +provenance material /World/Looks/mtlx_hair_clear: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Back: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Back +provenance geometry 1..2: /World/Strand +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/bad_length_usda-3ab7b93f882199a8-1.digest b/crates/crust-core/tests/data/import_baselines/bad_length_usda-3ab7b93f882199a8-1.digest new file mode 100644 index 000000000..3463c4149 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/bad_length_usda-3ab7b93f882199a8-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/bad_length.usda"], invisible_overrides: Some(0) } +layer: $DIR/bad_length.usda +warning: Warning { code: SubdivInvalidSetting, kind: Refused, count: 1, prims: [], message: "Subdivision edge length -2 from crust:subdivisionEdgeLength is not a positive pixel length — ignored" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:8a43bbedf6dc6f25 camera=12:8a43bbedf6dc6f25 shadow=12:8a43bbedf6dc6f25 indirect=12:8a43bbedf6dc6f25 +provenance geometry 0..1: /W/Near +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/bad_volume_usda-00cc0d19953cb7f6-1.digest b/crates/crust-core/tests/data/import_baselines/bad_volume_usda-00cc0d19953cb7f6-1.digest new file mode 100644 index 000000000..fc5e41aee --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/bad_volume_usda-00cc0d19953cb7f6-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/bad_volume.usda"], invisible_overrides: Some(0) } +layer: $DIR/bad_volume.usda +warning: Warning { code: VolumeUnknownType, kind: Skipped, count: 1, prims: ["/World/Mystery"], message: "Volume at /World/Mystery: unknown crust:volume:type \"plasma\" (expected homogeneous | smoke | grid) — skipped" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/banded_dome_usda-03eaa43cee7b25ab-1.digest b/crates/crust-core/tests/data/import_baselines/banded_dome_usda-03eaa43cee7b25ab-1.digest new file mode 100644 index 000000000..104ad9195 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/banded_dome_usda-03eaa43cee7b25ab-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/banded_dome.usda"], invisible_overrides: Some(0) } +layer: $DIR/banded_dome.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/binding_usda-3ec3b212bbee4e90-1.digest b/crates/crust-core/tests/data/import_baselines/binding_usda-3ec3b212bbee4e90-1.digest new file mode 100644 index 000000000..2bb2c8dd7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/binding_usda-3ec3b212bbee4e90-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/binding.usda"], invisible_overrides: Some(0) } +layer: $DIR/binding.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e52d9a39978026c5 camera=2:e52d9a39978026c5 shadow=2:e52d9a39978026c5 indirect=2:e52d9a39978026c5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:584690846f530915 camera=2:584690846f530915 shadow=2:584690846f530915 indirect=2:584690846f530915 +provenance material /W/Looks/All: MaterialOrigin { slots: [0], displaced: false } +provenance material /W/Looks/Full: MaterialOrigin { slots: [1], displaced: false } +provenance geometry 0..1: /W/Geo/AllPurpose/B +provenance geometry 1..2: /W/Geo/Purposed/Nested/A +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 204846636954257726, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4700795505077783238, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/black_usda-ca3475f9863dc283-1.digest b/crates/crust-core/tests/data/import_baselines/black_usda-ca3475f9863dc283-1.digest new file mode 100644 index 000000000..310de3af2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/black_usda-ca3475f9863dc283-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/look_out", name: "look_out", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/look"], display_filters: [], display: "beauty" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/black.usda"], invisible_overrides: Some(0) } +layer: $DIR/black.usda +warning: Warning { code: PrecompBlackBeauty, kind: Approximated, count: 1, prims: [], message: "The stage has a precomp but no light, so its beauty is black: adaptive sampling stops every pixel at crust:minSamplesPerPixel. Author crust:minSamplesPerPixel = crust:samplesPerPixel for the precomp to take every sample" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/blackbody_acescg_usda-e4fe8984977e4dc5-1.digest b/crates/crust-core/tests/data/import_baselines/blackbody_acescg_usda-e4fe8984977e4dc5-1.digest new file mode 100644 index 000000000..d3ff07924 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blackbody_acescg_usda-e4fe8984977e4dc5-1.digest @@ -0,0 +1,21 @@ +time: None +working space: ACEScg +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/blackbody_acescg.usda"], invisible_overrides: Some(0) } +layer: $DIR/blackbody_acescg.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/S") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:984632b55acb5495 +provenance light /World/S: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/S +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(5)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/blur_default_usda-d0c5474e0dfbe769-1.digest b/crates/crust-core/tests/data/import_baselines/blur_default_usda-d0c5474e0dfbe769-1.digest new file mode 100644 index 000000000..3a93b155b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_default_usda-d0c5474e0dfbe769-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/blur_default.usda"], invisible_overrides: Some(0) } +layer: $DIR/blur_default.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/blur_false_usda-8f6712fd58e3e7dd-1.digest b/crates/crust-core/tests/data/import_baselines/blur_false_usda-8f6712fd58e3e7dd-1.digest new file mode 100644 index 000000000..8318070e4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_false_usda-8f6712fd58e3e7dd-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/blur_false.usda"], invisible_overrides: Some(0) } +layer: $DIR/blur_false.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/blur_product_inherits_synonym_usda-8cbc9a895bc4da45-1.digest b/crates/crust-core/tests/data/import_baselines/blur_product_inherits_synonym_usda-8cbc9a895bc4da45-1.digest new file mode 100644 index 000000000..574271ef2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_product_inherits_synonym_usda-8cbc9a895bc4da45-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/blur_product_inherits_synonym.usda"], invisible_overrides: Some(0) } +layer: $DIR/blur_product_inherits_synonym.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/blur_product_off_usda-ad5ae20ae0e9dd8e-1.digest b/crates/crust-core/tests/data/import_baselines/blur_product_off_usda-ad5ae20ae0e9dd8e-1.digest new file mode 100644 index 000000000..9168cac4c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_product_off_usda-ad5ae20ae0e9dd8e-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/blur_product_off.usda"], invisible_overrides: Some(0) } +layer: $DIR/blur_product_off.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/blur_product_on_usda-9e081a22d073a61a-1.digest b/crates/crust-core/tests/data/import_baselines/blur_product_on_usda-9e081a22d073a61a-1.digest new file mode 100644 index 000000000..fc19598c3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_product_on_usda-9e081a22d073a61a-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/blur_product_on.usda"], invisible_overrides: Some(0) } +layer: $DIR/blur_product_on.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/blur_products_differ_usda-97d616ea3858dc6c-1.digest b/crates/crust-core/tests/data/import_baselines/blur_products_differ_usda-97d616ea3858dc6c-1.digest new file mode 100644 index 000000000..e927887ec --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_products_differ_usda-97d616ea3858dc6c-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/a", name: "a.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }, AovProduct { prim_path: "/Render/b", name: "b.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/blur_products_differ.usda"], invisible_overrides: Some(0) } +layer: $DIR/blur_products_differ.usda +warning: Warning { code: ProductMotionBlurMismatch, kind: Approximated, count: 1, prims: ["/Render/b"], message: "/Render/b: asks for motion blur on, but the render has it off (sharp at the frame) (the first product's); its file is written with that" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/blur_products_same_usda-f8c20e3d816829cd-1.digest b/crates/crust-core/tests/data/import_baselines/blur_products_same_usda-f8c20e3d816829cd-1.digest new file mode 100644 index 000000000..e3ad3d35d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_products_same_usda-f8c20e3d816829cd-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/a", name: "a.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }, AovProduct { prim_path: "/Render/b", name: "b.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/blur_products_same.usda"], invisible_overrides: Some(0) } +layer: $DIR/blur_products_same.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/blur_products_spellings_usda-e53f8c9eb1fa898a-1.digest b/crates/crust-core/tests/data/import_baselines/blur_products_spellings_usda-e53f8c9eb1fa898a-1.digest new file mode 100644 index 000000000..39c529102 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_products_spellings_usda-e53f8c9eb1fa898a-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/a", name: "a.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }, AovProduct { prim_path: "/Render/b", name: "b.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/blur_products_spellings.usda"], invisible_overrides: Some(0) } +layer: $DIR/blur_products_spellings.usda +warning: Warning { code: ProductMotionBlurMismatch, kind: Approximated, count: 1, prims: ["/Render/b"], message: "/Render/b: asks for motion blur off (sharp at shutter open), but the render has it off (sharp at the frame) (the first product's); its file is written with that" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/blur_settings_only_usda-57bf8b1f820d60e9-1.digest b/crates/crust-core/tests/data/import_baselines/blur_settings_only_usda-57bf8b1f820d60e9-1.digest new file mode 100644 index 000000000..44168fd2a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_settings_only_usda-57bf8b1f820d60e9-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/blur_settings_only.usda"], invisible_overrides: Some(0) } +layer: $DIR/blur_settings_only.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/blur_synonym_usda-5c4201bf40a84766-1.digest b/crates/crust-core/tests/data/import_baselines/blur_synonym_usda-5c4201bf40a84766-1.digest new file mode 100644 index 000000000..68b1c1120 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_synonym_usda-5c4201bf40a84766-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/blur_synonym.usda"], invisible_overrides: Some(0) } +layer: $DIR/blur_synonym.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/blur_warnings_usda-560d69942e1e7771-1.digest b/crates/crust-core/tests/data/import_baselines/blur_warnings_usda-560d69942e1e7771-1.digest new file mode 100644 index 000000000..282c5568a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_warnings_usda-560d69942e1e7771-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: false, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/blur_warnings.usda"], invisible_overrides: Some(0) } +layer: $DIR/blur_warnings.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/blurred_usda-152a0fdff5c8c9a3-1.digest b/crates/crust-core/tests/data/import_baselines/blurred_usda-152a0fdff5c8c9a3-1.digest new file mode 100644 index 000000000..35016cca1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blurred_usda-152a0fdff5c8c9a3-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/blurred.usda"], invisible_overrides: Some(0) } +layer: $DIR/blurred.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.2, 0.0, 0.0))] pieces all=1:6246e4b1bcdf2dac camera=1:6246e4b1bcdf2dac shadow=1:6246e4b1bcdf2dac indirect=1:6246e4b1bcdf2dac +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Mover +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/both_usda-4af15817dabdb39f-1.digest b/crates/crust-core/tests/data/import_baselines/both_usda-4af15817dabdb39f-1.digest new file mode 100644 index 000000000..30d407247 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/both_usda-4af15817dabdb39f-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/both.usda"], invisible_overrides: Some(0) } +layer: $DIR/both.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Both: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/boundary_usda-85fcb2406c56d725-1.digest b/crates/crust-core/tests/data/import_baselines/boundary_usda-85fcb2406c56d725-1.digest new file mode 100644 index 000000000..5a24d7a48 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/boundary_usda-85fcb2406c56d725-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/boundary.usda"], invisible_overrides: Some(0) } +layer: $DIR/boundary.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: true, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Fog: MaterialOrigin { slots: [0], displaced: false } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/broken_materials_usda-040c16d0365cbc63-1.digest b/crates/crust-core/tests/data/import_baselines/broken_materials_usda-040c16d0365cbc63-1.digest new file mode 100644 index 000000000..6e861c8c5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/broken_materials_usda-040c16d0365cbc63-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/broken_materials.usda"], invisible_overrides: Some(0) } +layer: $DIR/broken_materials.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 2, prims: ["/World/Empty", "/World/Alien"], message: "Material /World/Empty has no surface shader — using default grey OpenPBR" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Alien: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Empty: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/a +provenance geometry 1..2: /World/b +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/broken_mesh_usda-217190c267ddf4a1-1.digest b/crates/crust-core/tests/data/import_baselines/broken_mesh_usda-217190c267ddf4a1-1.digest new file mode 100644 index 000000000..f903341a7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/broken_mesh_usda-217190c267ddf4a1-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/broken_mesh.usda"], invisible_overrides: Some(0) } +layer: $DIR/broken_mesh.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/Ok +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cage_three_usda-65204db7a7ccaed8-1.digest b/crates/crust-core/tests/data/import_baselines/cage_three_usda-65204db7a7ccaed8-1.digest new file mode 100644 index 000000000..ea3b49d21 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cage_three_usda-65204db7a7ccaed8-1.digest @@ -0,0 +1,31 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/cage_three.usda"], invisible_overrides: Some(0) } +layer: $DIR/cage_three.usda +warning: Warning { code: MeshDisplacedAtCage, kind: Approximated, count: 3, prims: ["/World/Geo/C", "/World/Geo/B", "/World/Geo/A"], message: "Mesh at /World/Geo/C is displaced at its cage resolution, so only cage vertices move — raise --subdiv-level or set --subdiv-edge-length to dice it finer (further occurrences are counted in the import's warnings)" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:81959c020ab9ceb1 camera=2:81959c020ab9ceb1 shadow=2:81959c020ab9ceb1 indirect=2:81959c020ab9ceb1 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1577b24741d25eb1 camera=2:1577b24741d25eb1 shadow=2:1577b24741d25eb1 indirect=2:1577b24741d25eb1 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1544d80c71da0331 camera=2:1544d80c71da0331 shadow=2:1544d80c71da0331 indirect=2:1544d80c71da0331 +provenance material /World/Height: MaterialOrigin { slots: [0, 1, 2], displaced: true } +provenance geometry 0..1: /World/Geo/C +provenance geometry 1..2: /World/Geo/B +provenance geometry 2..3: /World/Geo/A +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9212292991607620213, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14276920328025598633, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6133730724842206255, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-1.digest b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-1.digest new file mode 100644 index 000000000..d97396533 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/A") +camera: Camera { origin: Vec3A(0.0, 0.0, 5.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -5.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cam__W_B.usda"], invisible_overrides: Some(0) } +layer: $DIR/cam__W_B.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/A"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/A"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/A"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-2.digest b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-2.digest new file mode 100644 index 000000000..d97396533 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-2.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/A") +camera: Camera { origin: Vec3A(0.0, 0.0, 5.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -5.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cam__W_B.usda"], invisible_overrides: Some(0) } +layer: $DIR/cam__W_B.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/A"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/A"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/A"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-1.digest b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-1.digest new file mode 100644 index 000000000..d0c9e8294 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/B") +camera: Camera { origin: Vec3A(10.0, 0.0, 5.0), lower_left_corner: Vec3A(7.2816353, -1.5290802, -5.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cam__W_B.usda"], invisible_overrides: Some(0) } +layer: $DIR/cam__W_B.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/B"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/B"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-2.digest b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-2.digest new file mode 100644 index 000000000..d0c9e8294 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-2.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/B") +camera: Camera { origin: Vec3A(10.0, 0.0, 5.0), lower_left_corner: Vec3A(7.2816353, -1.5290802, -5.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cam__W_B.usda"], invisible_overrides: Some(0) } +layer: $DIR/cam__W_B.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/B"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/B"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-1.digest b/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-1.digest new file mode 100644 index 000000000..6f4270177 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/B") +camera: Camera { origin: Vec3A(10.0, 0.0, 5.0), lower_left_corner: Vec3A(7.2816353, -1.5290802, -5.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cam__W_Nope.usda"], invisible_overrides: Some(0) } +layer: $DIR/cam__W_Nope.usda +warning: Warning { code: CameraNotACamera, kind: Refused, count: 1, prims: ["/W/Nope"], message: "RenderSettings.camera targets /W/Nope, which is not a camera on this stage — rendering through /W/B instead" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/B"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/B"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-2.digest b/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-2.digest new file mode 100644 index 000000000..6f4270177 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-2.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/B") +camera: Camera { origin: Vec3A(10.0, 0.0, 5.0), lower_left_corner: Vec3A(7.2816353, -1.5290802, -5.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cam__W_Nope.usda"], invisible_overrides: Some(0) } +layer: $DIR/cam__W_Nope.usda +warning: Warning { code: CameraNotACamera, kind: Refused, count: 1, prims: ["/W/Nope"], message: "RenderSettings.camera targets /W/Nope, which is not a camera on this stage — rendering through /W/B instead" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/B"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/B"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-3.digest b/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-3.digest new file mode 100644 index 000000000..6f4270177 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-3.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/B") +camera: Camera { origin: Vec3A(10.0, 0.0, 5.0), lower_left_corner: Vec3A(7.2816353, -1.5290802, -5.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cam__W_Nope.usda"], invisible_overrides: Some(0) } +layer: $DIR/cam__W_Nope.usda +warning: Warning { code: CameraNotACamera, kind: Refused, count: 1, prims: ["/W/Nope"], message: "RenderSettings.camera targets /W/Nope, which is not a camera on this stage — rendering through /W/B instead" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/B"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/B"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cam_narrow_usda-dcae36868790f279-1.digest b/crates/crust-core/tests/data/import_baselines/cam_narrow_usda-dcae36868790f279-1.digest new file mode 100644 index 000000000..c26416acd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam_narrow_usda-dcae36868790f279-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-1.0, -0.5625, -10.0), horizontal: Vec3A(2.0, 0.0, 0.0), vertical: Vec3A(0.0, 1.125, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [10.0, 5.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cam_narrow.usda"], invisible_overrides: Some(0) } +layer: $DIR/cam_narrow.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cam_none_usda-1ef9fbd129b9560a-1.digest b/crates/crust-core/tests/data/import_baselines/cam_none_usda-1ef9fbd129b9560a-1.digest new file mode 100644 index 000000000..488ce537e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam_none_usda-1ef9fbd129b9560a-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/A") +camera: Camera { origin: Vec3A(0.0, 0.0, 5.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -5.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cam_none.usda"], invisible_overrides: Some(0) } +layer: $DIR/cam_none.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/A"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/A"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/A"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cam_none_usda-2cb27e460ee10e43-1.digest b/crates/crust-core/tests/data/import_baselines/cam_none_usda-2cb27e460ee10e43-1.digest new file mode 100644 index 000000000..9c2f299e7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam_none_usda-2cb27e460ee10e43-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/B") +camera: Camera { origin: Vec3A(10.0, 0.0, 5.0), lower_left_corner: Vec3A(7.2816353, -1.5290802, -5.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cam_none.usda"], invisible_overrides: Some(0) } +layer: $DIR/cam_none.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/B"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/B"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/B"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cam_wide_usda-098c8afc4872dbb7-1.digest b/crates/crust-core/tests/data/import_baselines/cam_wide_usda-098c8afc4872dbb7-1.digest new file mode 100644 index 000000000..7f9fce58d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam_wide_usda-098c8afc4872dbb7-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-4.0, -2.25, -10.0), horizontal: Vec3A(8.0, 0.0, 0.0), vertical: Vec3A(0.0, 4.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [40.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cam_wide.usda"], invisible_overrides: Some(0) } +layer: $DIR/cam_wide.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/camera_dof_usda-f69bc93db8900a0e-1.digest b/crates/crust-core/tests/data/import_baselines/camera_dof_usda-f69bc93db8900a0e-1.digest new file mode 100644 index 000000000..f9f287d5f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_dof_usda-f69bc93db8900a0e-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 5.0), lower_left_corner: Vec3A(-1.3591824, -0.7645401, 0.0), horizontal: Vec3A(2.7183647, 0.0, 0.0), vertical: Vec3A(0.0, 1.5290802, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 1.25, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 5.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/camera_dof.usda"], invisible_overrides: Some(0) } +layer: $DIR/camera_dof.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/camera_ortho_usda-21d5879ec7de6dbf-1.digest b/crates/crust-core/tests/data/import_baselines/camera_ortho_usda-21d5879ec7de6dbf-1.digest new file mode 100644 index 000000000..6c07f82ea --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_ortho_usda-21d5879ec7de6dbf-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/top") +camera: Camera { origin: Vec3A(0.0, 0.0, 20.0), lower_left_corner: Vec3A(-5.0, -5.0, 20.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 10.0, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: true, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 64, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 64 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [100.0, 100.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/camera_ortho.usda"], invisible_overrides: Some(0) } +layer: $DIR/camera_ortho.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/top"), cameras: ["/World/top"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/top"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/camera_projection_unknown_usda-8a8cac00719054ad-1.digest b/crates/crust-core/tests/data/import_baselines/camera_projection_unknown_usda-8a8cac00719054ad-1.digest new file mode 100644 index 000000000..b74e6fd8d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_projection_unknown_usda-8a8cac00719054ad-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/camera_projection_unknown.usda"], invisible_overrides: Some(0) } +layer: $DIR/camera_projection_unknown.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/camera_rot_usda-c74e88c7205b56e5-1.digest b/crates/crust-core/tests/data/import_baselines/camera_rot_usda-c74e88c7205b56e5-1.digest new file mode 100644 index 000000000..347b0c70d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_rot_usda-c74e88c7205b56e5-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(10.0, -1.5290802, -2.7183647), horizontal: Vec3A(1.2071964e-15, -0.0, 5.4367294), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(2.220446e-16, -0.0, 1.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/camera_rot.usda"], invisible_overrides: Some(0) } +layer: $DIR/camera_rot.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/camera_usda-2d8f34945903545d-1.digest b/crates/crust-core/tests/data/import_baselines/camera_usda-2d8f34945903545d-1.digest new file mode 100644 index 000000000..eaae3e559 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_usda-2d8f34945903545d-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 5.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -5.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/camera.usda"], invisible_overrides: Some(0) } +layer: $DIR/camera.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-0af373522188190d-1.digest b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-0af373522188190d-1.digest new file mode 100644 index 000000000..a3a724906 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-0af373522188190d-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/pass", holdouts: 0, camera_hidden: 1 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/camera_visibility.usda"], invisible_overrides: Some(0) } +layer: $DIR/camera_visibility.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=0:cbf29ce484222325 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=0:cbf29ce484222325 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..1: /World/Masked +provenance geometry 1..2: /World/Blocker +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pass"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-5198be21d5bb35d1-1.digest b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-5198be21d5bb35d1-1.digest new file mode 100644 index 000000000..1ddd822d2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-5198be21d5bb35d1-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/camera_visibility.usda"], invisible_overrides: Some(0) } +layer: $DIR/camera_visibility.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=0:cbf29ce484222325 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..1: /World/Masked +provenance geometry 1..2: /World/Blocker +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/camera_zero_focus_usda-ad065540da61feb4-1.digest b/crates/crust-core/tests/data/import_baselines/camera_zero_focus_usda-ad065540da61feb4-1.digest new file mode 100644 index 000000000..0d5fbc354 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_zero_focus_usda-ad065540da61feb4-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 5.0), lower_left_corner: Vec3A(-0.27183646, -0.15290801, 4.0), horizontal: Vec3A(0.5436729, 0.0, 0.0), vertical: Vec3A(0.0, 0.30581602, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 0.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/camera_zero_focus.usda"], invisible_overrides: Some(0) } +layer: $DIR/camera_zero_focus.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/capped_usda-de82c45ab5a80eb6-1.digest b/crates/crust-core/tests/data/import_baselines/capped_usda-de82c45ab5a80eb6-1.digest new file mode 100644 index 000000000..1b3ebed9d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/capped_usda-de82c45ab5a80eb6-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/capped.usda"], invisible_overrides: Some(0) } +layer: $DIR/capped.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:1eae59518f3f3e89 camera=192:1eae59518f3f3e89 shadow=192:1eae59518f3f3e89 indirect=192:1eae59518f3f3e89 +provenance geometry 0..1: /W/Near +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: Some(2.0), skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 2])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/centred_both_usda-06ae7e6ad41f5b45-1.digest b/crates/crust-core/tests/data/import_baselines/centred_both_usda-06ae7e6ad41f5b45-1.digest new file mode 100644 index 000000000..5883eb627 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/centred_both_usda-06ae7e6ad41f5b45-1.digest @@ -0,0 +1,19 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/centred_both.usda"], invisible_overrides: Some(0) } +layer: $DIR/centred_both.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.5, 0.0, 0.0))] pieces all=1:f548d1d419575bc7 camera=1:f548d1d419575bc7 shadow=1:f548d1d419575bc7 indirect=1:f548d1d419575bc7 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Ball +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [13821547256400052224, 4598175219545276416], interval: Some([4617034042984890368, 4617596992938311680]), query: true, frame_pose: true } } diff --git a/crates/crust-core/tests/data/import_baselines/centred_frame_usda-200d23d9927b7966-1.digest b/crates/crust-core/tests/data/import_baselines/centred_frame_usda-200d23d9927b7966-1.digest new file mode 100644 index 000000000..6491403bb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/centred_frame_usda-200d23d9927b7966-1.digest @@ -0,0 +1,19 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/centred_frame.usda"], invisible_overrides: Some(0) } +layer: $DIR/centred_frame.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.5, 0.0, 0.0))] pieces all=1:f548d1d419575bc7 camera=1:f548d1d419575bc7 shadow=1:f548d1d419575bc7 indirect=1:f548d1d419575bc7 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Ball +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [13821547256400052224, 4598175219545276416], interval: Some([4617034042984890368, 4617596992938311680]), query: true, frame_pose: true } } diff --git a/crates/crust-core/tests/data/import_baselines/centred_open_usda-75e668aa9e5ecb2d-1.digest b/crates/crust-core/tests/data/import_baselines/centred_open_usda-75e668aa9e5ecb2d-1.digest new file mode 100644 index 000000000..649c42ba0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/centred_open_usda-75e668aa9e5ecb2d-1.digest @@ -0,0 +1,19 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/centred_open.usda"], invisible_overrides: Some(0) } +layer: $DIR/centred_open.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.5, 0.0, 0.0))] pieces all=1:83f6790befe7ce92 camera=1:83f6790befe7ce92 shadow=1:83f6790befe7ce92 indirect=1:83f6790befe7ce92 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Ball +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [13821547256400052224, 4598175219545276416], interval: Some([4617034042984890368, 4617596992938311680]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_constant_0_usda-16acce3a8ae23e69-1.digest b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_0_usda-16acce3a8ae23e69-1.digest new file mode 100644 index 000000000..09c828675 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_0_usda-16acce3a8ae23e69-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/chart_interp_constant_0.usda"], invisible_overrides: Some(0) } +layer: $DIR/chart_interp_constant_0.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/Mtl: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quads +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5101156695740804468, n_points: 6, n_indices: 8, n_uvs: Some(1), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_constant_2_usda-51380ed7a7ea4305-1.digest b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_2_usda-51380ed7a7ea4305-1.digest new file mode 100644 index 000000000..5df971f57 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_2_usda-51380ed7a7ea4305-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/chart_interp_constant_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/chart_interp_constant_2.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=64:0a26ae71e3afd805 camera=64:0a26ae71e3afd805 shadow=64:0a26ae71e3afd805 indirect=64:0a26ae71e3afd805 +provenance material /World/Looks/Mtl: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quads +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10918591713586360571, n_points: 45, n_indices: 128, n_uvs: Some(45), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_0_usda-a6d6a93dda32caf2-1.digest b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_0_usda-a6d6a93dda32caf2-1.digest new file mode 100644 index 000000000..c2762f869 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_0_usda-a6d6a93dda32caf2-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/chart_interp_constant_unauthored_0.usda"], invisible_overrides: Some(0) } +layer: $DIR/chart_interp_constant_unauthored_0.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/Mtl: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quads +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7809041330809037802, n_points: 6, n_indices: 8, n_uvs: Some(1), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_2_usda-bad2637a6a91c73a-1.digest b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_2_usda-bad2637a6a91c73a-1.digest new file mode 100644 index 000000000..0af313428 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_2_usda-bad2637a6a91c73a-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/chart_interp_constant_unauthored_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/chart_interp_constant_unauthored_2.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=64:0a26ae71e3afd805 camera=64:0a26ae71e3afd805 shadow=64:0a26ae71e3afd805 indirect=64:0a26ae71e3afd805 +provenance material /World/Looks/Mtl: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quads +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7344855212322573385, n_points: 45, n_indices: 128, n_uvs: Some(45), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_0_usda-ffe6596ba2b6a108-1.digest b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_0_usda-ffe6596ba2b6a108-1.digest new file mode 100644 index 000000000..f02b7fcec --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_0_usda-ffe6596ba2b6a108-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/chart_interp_uniform_0.usda"], invisible_overrides: Some(0) } +layer: $DIR/chart_interp_uniform_0.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/Mtl: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quads +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13034384031579772522, n_points: 6, n_indices: 8, n_uvs: Some(2), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_2_usda-815f4bb2830bedd0-1.digest b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_2_usda-815f4bb2830bedd0-1.digest new file mode 100644 index 000000000..64d3d038a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_2_usda-815f4bb2830bedd0-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/chart_interp_uniform_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/chart_interp_uniform_2.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=64:0a26ae71e3afd805 camera=64:0a26ae71e3afd805 shadow=64:0a26ae71e3afd805 indirect=64:0a26ae71e3afd805 +provenance material /World/Looks/Mtl: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quads +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3987959077027510578, n_points: 45, n_indices: 128, n_uvs: Some(50), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_0_usda-a6e2151559aa05f1-1.digest b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_0_usda-a6e2151559aa05f1-1.digest new file mode 100644 index 000000000..ba61972af --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_0_usda-a6e2151559aa05f1-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/chart_interp_uniform_indexed_0.usda"], invisible_overrides: Some(0) } +layer: $DIR/chart_interp_uniform_indexed_0.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/Mtl: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quads +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8720951475160740329, n_points: 6, n_indices: 8, n_uvs: Some(2), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_2_usda-49181df1e2a2d359-1.digest b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_2_usda-49181df1e2a2d359-1.digest new file mode 100644 index 000000000..79a827dbb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_2_usda-49181df1e2a2d359-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/chart_interp_uniform_indexed_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/chart_interp_uniform_indexed_2.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=64:0a26ae71e3afd805 camera=64:0a26ae71e3afd805 shadow=64:0a26ae71e3afd805 indirect=64:0a26ae71e3afd805 +provenance material /World/Looks/Mtl: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quads +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9116079468203776378, n_points: 45, n_indices: 128, n_uvs: Some(50), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/check/PointInstancedMedCity.usd.json b/crates/crust-core/tests/data/import_baselines/check/PointInstancedMedCity.usd.json new file mode 100644 index 000000000..635f2cb8d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/PointInstancedMedCity.usd.json @@ -0,0 +1,200 @@ +{ + "counts": { + "geometries": 0, + "kernel_memory": { + "bvh_nodes_bytes": 0, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 0, + "indices_bytes": 0, + "instances_bytes": 0, + "lanes": 0, + "lanes_filled": 0, + "leaves_bytes": 0, + "packets_bytes": 0, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 0, + "total_bytes": 0, + "triangle_records_bytes": 0, + "vertex_normals_bytes": 0, + "vertices_bytes": 0 + }, + "lights": 0, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 0 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 0 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "128" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "32" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/Cameras/main_cam", + "frame": null, + "path": "$ROOT/samples/PointInstancedMedCity.usd", + "region": null, + "resolution": [ + 640, + 360 + ] + }, + "settings": null, + "warnings": [ + { + "code": "instancing.empty_prototype", + "count": 8, + "kind": "skipped", + "message": "Prototype /MediterraneanHills/Buildings/Prototypes/prototype_0 contributed no geometry", + "prims": [ + "/MediterraneanHills/Buildings/Prototypes/prototype_0", + "/MediterraneanHills/Buildings/Prototypes/prototype_1", + "/MediterraneanHills/Buildings/Prototypes/prototype_2", + "/MediterraneanHills/Buildings/Prototypes/prototype_3", + "/MediterraneanHills/Buildings/Prototypes/prototype_4", + "/MediterraneanHills/Buildings/Prototypes/prototype_5", + "/MediterraneanHills/Buildings/Prototypes/prototype_6", + "/MediterraneanHills/Buildings/Prototypes/prototype_7" + ] + } + ] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/animation.usda.json b/crates/crust-core/tests/data/import_baselines/check/animation.usda.json new file mode 100644 index 000000000..e49ec0e58 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/animation.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 3, + "kernel_memory": { + "bvh_nodes_bytes": 128, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 36, + "indices_bytes": 4, + "instances_bytes": 0, + "lanes": 8, + "lanes_filled": 4, + "leaves_bytes": 48, + "packets_bytes": 384, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 64, + "total_bytes": 856, + "triangle_records_bytes": 96, + "vertex_normals_bytes": 0, + "vertices_bytes": 96 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 1, + "triangles": 4 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 1, + "triangles": 4 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "16" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "4" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/animation.usda", + "region": null, + "resolution": [ + 96, + 54 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/aovs.usda.json b/crates/crust-core/tests/data/import_baselines/check/aovs.usda.json new file mode 100644 index 000000000..45c0ce22b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/aovs.usda.json @@ -0,0 +1,219 @@ +{ + "counts": { + "geometries": 3, + "kernel_memory": { + "bvh_nodes_bytes": 128, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 36, + "indices_bytes": 4, + "instances_bytes": 0, + "lanes": 8, + "lanes_filled": 4, + "leaves_bytes": 48, + "packets_bytes": 384, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 64, + "total_bytes": 856, + "triangle_records_bytes": 96, + "vertex_normals_bytes": 0, + "vertices_bytes": 96 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 1, + "triangles": 4 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 1, + "triangles": 4 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "16" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "4" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "8" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B", + "A", + "sampleCount", + "variance" + ], + "file": "renders/aovs_beauty.exr", + "prim": "/Render/Products/beauty" + }, + { + "channels": [ + "Z", + "distance", + "P.X", + "P.Y", + "P.Z", + "Peye.X", + "Peye.Y", + "Peye.Z", + "N.X", + "N.Y", + "N.Z", + "Neye.X", + "Neye.Y", + "Neye.Z", + "st.U", + "st.V", + "alpha" + ], + "file": "renders/aovs_data.exr", + "prim": "/Render/Products/data" + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/aovs.usda", + "region": null, + "resolution": [ + 160, + 90 + ] + }, + "settings": "/Render/settings", + "warnings": [ + { + "code": "aov.unknown_source", + "count": 1, + "kind": "skipped", + "message": "/Render/Products/Vars/diffuse_direct: unknown raw source \"diffuse_direct\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)", + "prims": [ + "/Render/Products/Vars/diffuse_direct" + ] + } + ] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/aovs_lpe.usda.json b/crates/crust-core/tests/data/import_baselines/check/aovs_lpe.usda.json new file mode 100644 index 000000000..a60b94d1c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/aovs_lpe.usda.json @@ -0,0 +1,235 @@ +{ + "counts": { + "geometries": 6, + "kernel_memory": { + "bvh_nodes_bytes": 128, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 72, + "indices_bytes": 20, + "instances_bytes": 0, + "lanes": 4, + "lanes_filled": 2, + "leaves_bytes": 64, + "packets_bytes": 192, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 320, + "total_bytes": 892, + "triangle_records_bytes": 48, + "vertex_normals_bytes": 0, + "vertices_bytes": 48 + }, + "lights": 3, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 5, + "triangles": 2 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 5, + "triangles": 2 + }, + "volumes": 1 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "64" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "8" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "16" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B", + "A", + "diffuse_direct.R", + "diffuse_direct.G", + "diffuse_direct.B", + "diffuse_indirect.R", + "diffuse_indirect.G", + "diffuse_indirect.B", + "glossy_direct.R", + "glossy_direct.G", + "glossy_direct.B", + "glossy_indirect.R", + "glossy_indirect.G", + "glossy_indirect.B", + "specular.R", + "specular.G", + "specular.B", + "transmission.R", + "transmission.G", + "transmission.B", + "volume.R", + "volume.G", + "volume.B", + "emission.R", + "emission.G", + "emission.B", + "key.R", + "key.G", + "key.B", + "fill.R", + "fill.G", + "fill.B", + "sky_and_glow.R", + "sky_and_glow.G", + "sky_and_glow.B", + "coat.R", + "coat.G", + "coat.B", + "albedo.R", + "albedo.G", + "albedo.B", + "N.X", + "N.Y", + "N.Z", + "rawLight.R", + "rawLight.G", + "rawLight.B", + "rawGI.R", + "rawGI.G", + "rawGI.B", + "diffuse_albedo.R", + "diffuse_albedo.G", + "diffuse_albedo.B" + ], + "file": "renders/aovs_lpe.exr", + "prim": "/Render/Products/lpe" + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/aovs_lpe.usda", + "region": null, + "resolution": [ + 320, + 180 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/cornellbox.usda.json b/crates/crust-core/tests/data/import_baselines/check/cornellbox.usda.json new file mode 100644 index 000000000..197291ee9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/cornellbox.usda.json @@ -0,0 +1,193 @@ +{ + "counts": { + "geometries": 5, + "kernel_memory": { + "bvh_nodes_bytes": 24064, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 72, + "indices_bytes": 12, + "instances_bytes": 192, + "lanes": 2144, + "lanes_filled": 1714, + "leaves_bytes": 6384, + "packets_bytes": 102912, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 0, + "total_bytes": 181180, + "triangle_records_bytes": 37968, + "vertex_normals_bytes": 0, + "vertices_bytes": 9576 + }, + "lights": 1, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 2, + "spheres": 0, + "triangles": 822 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 2, + "spheres": 0, + "triangles": 1582 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "128" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "32" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/scene/camera1", + "frame": null, + "path": "$ROOT/samples/cornellbox.usda", + "region": null, + "resolution": [ + 640, + 360 + ] + }, + "settings": null, + "warnings": [ + { + "code": "material.fallback_default", + "count": 1, + "kind": "skipped", + "message": "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR", + "prims": [ + "/scene/Looks/initialShadingGroup" + ] + } + ] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/cornellbox_guided.usda.json b/crates/crust-core/tests/data/import_baselines/check/cornellbox_guided.usda.json new file mode 100644 index 000000000..f636fb1fc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/cornellbox_guided.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 10, + "kernel_memory": { + "bvh_nodes_bytes": 512, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 120, + "indices_bytes": 12, + "instances_bytes": 0, + "lanes": 28, + "lanes_filled": 14, + "leaves_bytes": 160, + "packets_bytes": 1344, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 192, + "total_bytes": 3012, + "triangle_records_bytes": 336, + "vertex_normals_bytes": 0, + "vertices_bytes": 336 + }, + "lights": 1, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 3, + "triangles": 14 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 3, + "triangles": 14 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "64" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "8" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "true" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "16" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/cornellbox_guided.usda", + "region": null, + "resolution": [ + 512, + 512 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/curves.usda.json b/crates/crust-core/tests/data/import_baselines/check/curves.usda.json new file mode 100644 index 000000000..13675cdda --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/curves.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 4, + "kernel_memory": { + "bvh_nodes_bytes": 384, + "cubic_spans_bytes": 288, + "geometry_tables_bytes": 72, + "indices_bytes": 32, + "instances_bytes": 192, + "lanes": 8, + "lanes_filled": 4, + "leaves_bytes": 128, + "packets_bytes": 384, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 192, + "total_bytes": 1864, + "triangle_records_bytes": 96, + "vertex_normals_bytes": 0, + "vertices_bytes": 96 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 2, + "spheres": 0, + "triangles": 4 + }, + "unique": { + "cubic_curve_spans": 3, + "curve_segments": 3, + "cylinders": 0, + "disks": 0, + "instances": 2, + "spheres": 0, + "triangles": 4 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "8" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "4" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "4" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/curves.usda", + "region": null, + "resolution": [ + 64, + 64 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/displacement.usda.json b/crates/crust-core/tests/data/import_baselines/check/displacement.usda.json new file mode 100644 index 000000000..572a7dd7f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/displacement.usda.json @@ -0,0 +1,197 @@ +{ + "counts": { + "geometries": 3, + "kernel_memory": { + "bvh_nodes_bytes": 837376, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 36, + "indices_bytes": 0, + "instances_bytes": 0, + "lanes": 69976, + "lanes_filled": 65640, + "leaves_bytes": 204896, + "packets_bytes": 3358848, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 0, + "total_bytes": 6766692, + "triangle_records_bytes": 1572864, + "vertex_normals_bytes": 396336, + "vertices_bytes": 396336 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 65536 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 65536 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "64" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "4" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "16" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [ + { + "action": { + "flag": "--auto-tx", + "usd_attribute": null, + "value": "on" + }, + "evidence": { + "textures": 1.0 + }, + "id": "textures_without_tx", + "kind": "time", + "summary": "1 UV texture(s) have no .tx beside them: each is decoded whole at import and held resident instead of streamed" + } + ], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/displacement.usda", + "region": null, + "resolution": [ + 320, + 180 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/dome_backdrop.usda.json b/crates/crust-core/tests/data/import_baselines/check/dome_backdrop.usda.json new file mode 100644 index 000000000..66a27db6f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/dome_backdrop.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 3, + "kernel_memory": { + "bvh_nodes_bytes": 128, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 36, + "indices_bytes": 8, + "instances_bytes": 0, + "lanes": 4, + "lanes_filled": 2, + "leaves_bytes": 48, + "packets_bytes": 192, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 128, + "total_bytes": 636, + "triangle_records_bytes": 48, + "vertex_normals_bytes": 0, + "vertices_bytes": 48 + }, + "lights": 1, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 2, + "triangles": 2 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 2, + "triangles": 2 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "32" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "8" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.02" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "16" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/dome_backdrop.usda", + "region": null, + "resolution": [ + 240, + 136 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/domelight.usda.json b/crates/crust-core/tests/data/import_baselines/check/domelight.usda.json new file mode 100644 index 000000000..5dd7773a7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/domelight.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 3, + "kernel_memory": { + "bvh_nodes_bytes": 128, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 36, + "indices_bytes": 8, + "instances_bytes": 0, + "lanes": 4, + "lanes_filled": 2, + "leaves_bytes": 48, + "packets_bytes": 192, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 128, + "total_bytes": 636, + "triangle_records_bytes": 48, + "vertex_normals_bytes": 0, + "vertices_bytes": 48 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 2, + "triangles": 2 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 2, + "triangles": 2 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "96" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "8" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.02" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/domelight.usda", + "region": null, + "resolution": [ + 480, + 270 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/fog.usda.json b/crates/crust-core/tests/data/import_baselines/check/fog.usda.json new file mode 100644 index 000000000..c03c2a2e6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/fog.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 3, + "kernel_memory": { + "bvh_nodes_bytes": 256, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 36, + "indices_bytes": 4, + "instances_bytes": 0, + "lanes": 20, + "lanes_filled": 12, + "leaves_bytes": 96, + "packets_bytes": 960, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 64, + "total_bytes": 1992, + "triangle_records_bytes": 288, + "vertex_normals_bytes": 0, + "vertices_bytes": 288 + }, + "lights": 1, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 1, + "triangles": 12 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 1, + "triangles": 12 + }, + "volumes": 1 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "64" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "16" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "16" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/fog.usda", + "region": null, + "resolution": [ + 320, + 180 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/hair.usda.json b/crates/crust-core/tests/data/import_baselines/check/hair.usda.json new file mode 100644 index 000000000..8a8b68d34 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/hair.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 10, + "kernel_memory": { + "bvh_nodes_bytes": 24832, + "cubic_spans_bytes": 64512, + "geometry_tables_bytes": 204, + "indices_bytes": 2720, + "instances_bytes": 672, + "lanes": 8, + "lanes_filled": 4, + "leaves_bytes": 6736, + "packets_bytes": 384, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 64, + "total_bytes": 100316, + "triangle_records_bytes": 96, + "vertex_normals_bytes": 0, + "vertices_bytes": 96 + }, + "lights": 3, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 7, + "spheres": 1, + "triangles": 4 + }, + "unique": { + "cubic_curve_spans": 672, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 7, + "spheres": 1, + "triangles": 4 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "16" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "8" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "8" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/hair.usda", + "region": null, + "resolution": [ + 192, + 64 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/hair_variation.usda.json b/crates/crust-core/tests/data/import_baselines/check/hair_variation.usda.json new file mode 100644 index 000000000..3b3320bfa --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/hair_variation.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 4, + "kernel_memory": { + "bvh_nodes_bytes": 9472, + "cubic_spans_bytes": 23040, + "geometry_tables_bytes": 60, + "indices_bytes": 968, + "instances_bytes": 96, + "lanes": 8, + "lanes_filled": 4, + "leaves_bytes": 2432, + "packets_bytes": 384, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 64, + "total_bytes": 36708, + "triangle_records_bytes": 96, + "vertex_normals_bytes": 0, + "vertices_bytes": 96 + }, + "lights": 3, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 3952, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 1, + "spheres": 1, + "triangles": 4 + }, + "unique": { + "cubic_curve_spans": 240, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 1, + "spheres": 1, + "triangles": 4 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "16" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "8" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "8" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/hair_variation.usda", + "region": null, + "resolution": [ + 320, + 160 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/implicit_shapes.usda.json b/crates/crust-core/tests/data/import_baselines/check/implicit_shapes.usda.json new file mode 100644 index 000000000..b8282fc0a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/implicit_shapes.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 11, + "kernel_memory": { + "bvh_nodes_bytes": 20736, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 132, + "indices_bytes": 0, + "instances_bytes": 0, + "lanes": 1880, + "lanes_filled": 1506, + "leaves_bytes": 5088, + "packets_bytes": 90240, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 0, + "total_bytes": 171492, + "triangle_records_bytes": 33672, + "vertex_normals_bytes": 10716, + "vertices_bytes": 10908 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 1403 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 1403 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "64" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "32" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/implicit_shapes.usda", + "region": null, + "resolution": [ + 960, + 540 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/instancing.usda.json b/crates/crust-core/tests/data/import_baselines/check/instancing.usda.json new file mode 100644 index 000000000..d70b6bff3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/instancing.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 13, + "kernel_memory": { + "bvh_nodes_bytes": 768, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 192, + "indices_bytes": 44, + "instances_bytes": 1056, + "lanes": 48, + "lanes_filled": 36, + "leaves_bytes": 240, + "packets_bytes": 2304, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 0, + "total_bytes": 5828, + "triangle_records_bytes": 864, + "vertex_normals_bytes": 0, + "vertices_bytes": 360 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 11, + "spheres": 0, + "triangles": 4 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 11, + "spheres": 0, + "triangles": 36 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "48" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "8" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.02" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "16" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/instancing.usda", + "region": null, + "resolution": [ + 480, + 270 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/light_linking.usda.json b/crates/crust-core/tests/data/import_baselines/check/light_linking.usda.json new file mode 100644 index 000000000..710749579 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/light_linking.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 8, + "kernel_memory": { + "bvh_nodes_bytes": 512, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 96, + "indices_bytes": 24, + "instances_bytes": 0, + "lanes": 28, + "lanes_filled": 17, + "leaves_bytes": 160, + "packets_bytes": 1344, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 384, + "total_bytes": 3000, + "triangle_records_bytes": 336, + "vertex_normals_bytes": 0, + "vertices_bytes": 144 + }, + "lights": 3, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 6, + "triangles": 14 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 6, + "triangles": 14 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "64" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "4" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "16" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/light_linking.usda", + "region": null, + "resolution": [ + 160, + 90 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/light_visibility.usda.json b/crates/crust-core/tests/data/import_baselines/check/light_visibility.usda.json new file mode 100644 index 000000000..1d7f1c91b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/light_visibility.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 4, + "kernel_memory": { + "bvh_nodes_bytes": 256, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 48, + "indices_bytes": 12, + "instances_bytes": 0, + "lanes": 12, + "lanes_filled": 5, + "leaves_bytes": 80, + "packets_bytes": 576, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 192, + "total_bytes": 1260, + "triangle_records_bytes": 48, + "vertex_normals_bytes": 0, + "vertices_bytes": 48 + }, + "lights": 3, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 3, + "triangles": 2 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 3, + "triangles": 2 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "8" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "4" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "4" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/light_visibility.usda", + "region": null, + "resolution": [ + 64, + 64 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/many_lights.usda.json b/crates/crust-core/tests/data/import_baselines/check/many_lights.usda.json new file mode 100644 index 000000000..62be23c2f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/many_lights.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 262, + "kernel_memory": { + "bvh_nodes_bytes": 13568, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 3156, + "indices_bytes": 716, + "instances_bytes": 480, + "lanes": 524, + "lanes_filled": 262, + "leaves_bytes": 3856, + "packets_bytes": 25152, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 10240, + "total_bytes": 66864, + "triangle_records_bytes": 4944, + "vertex_normals_bytes": 0, + "vertices_bytes": 4752 + }, + "lights": 257, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 5, + "spheres": 160, + "triangles": 194 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 5, + "spheres": 160, + "triangles": 206 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "64" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "4" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/many_lights.usda", + "region": null, + "resolution": [ + 480, + 270 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/mass_spike.usda.json b/crates/crust-core/tests/data/import_baselines/check/mass_spike.usda.json new file mode 100644 index 000000000..029cc83d7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/mass_spike.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 3, + "kernel_memory": { + "bvh_nodes_bytes": 11136, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 72, + "indices_bytes": 1152, + "instances_bytes": 288, + "lanes": 0, + "lanes_filled": 0, + "leaves_bytes": 2736, + "packets_bytes": 0, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 18240, + "total_bytes": 33624, + "triangle_records_bytes": 0, + "vertex_normals_bytes": 0, + "vertices_bytes": 0 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 3, + "spheres": 0, + "triangles": 0 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 285, + "cylinders": 0, + "disks": 0, + "instances": 3, + "spheres": 0, + "triangles": 0 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "128" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "32" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Camera", + "frame": null, + "path": "$ROOT/samples/mass_spike.usda", + "region": null, + "resolution": [ + 640, + 360 + ] + }, + "settings": null, + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/materialx_basic.usda.json b/crates/crust-core/tests/data/import_baselines/check/materialx_basic.usda.json new file mode 100644 index 000000000..3497de3d9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/materialx_basic.usda.json @@ -0,0 +1,197 @@ +{ + "counts": { + "geometries": 5, + "kernel_memory": { + "bvh_nodes_bytes": 128, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 60, + "indices_bytes": 0, + "instances_bytes": 0, + "lanes": 12, + "lanes_filled": 10, + "leaves_bytes": 48, + "packets_bytes": 576, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 0, + "total_bytes": 1292, + "triangle_records_bytes": 240, + "vertex_normals_bytes": 0, + "vertices_bytes": 240 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 10 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 10 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "64" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "8" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [ + { + "action": { + "flag": "--auto-tx", + "usd_attribute": null, + "value": "on" + }, + "evidence": { + "textures": 3.0 + }, + "id": "textures_without_tx", + "kind": "time", + "summary": "3 UV texture(s) have no .tx beside them: each is decoded whole at import and held resident instead of streamed" + } + ], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/ShotCam", + "frame": null, + "path": "$ROOT/samples/materialx_basic.usda", + "region": null, + "resolution": [ + 640, + 360 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/materialx_cutout.usda.json b/crates/crust-core/tests/data/import_baselines/check/materialx_cutout.usda.json new file mode 100644 index 000000000..0c871effd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/materialx_cutout.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 5, + "kernel_memory": { + "bvh_nodes_bytes": 256, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 60, + "indices_bytes": 12, + "instances_bytes": 0, + "lanes": 8, + "lanes_filled": 4, + "leaves_bytes": 80, + "packets_bytes": 384, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 192, + "total_bytes": 1176, + "triangle_records_bytes": 96, + "vertex_normals_bytes": 0, + "vertices_bytes": 96 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 3, + "triangles": 4 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 3, + "triangles": 4 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "64" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "12" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/ShotCam", + "frame": null, + "path": "$ROOT/samples/materialx_cutout.usda", + "region": null, + "resolution": [ + 640, + 320 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/materialx_emissive.usda.json b/crates/crust-core/tests/data/import_baselines/check/materialx_emissive.usda.json new file mode 100644 index 000000000..6116c5ea3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/materialx_emissive.usda.json @@ -0,0 +1,197 @@ +{ + "counts": { + "geometries": 4, + "kernel_memory": { + "bvh_nodes_bytes": 128, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 48, + "indices_bytes": 0, + "instances_bytes": 0, + "lanes": 8, + "lanes_filled": 8, + "leaves_bytes": 16, + "packets_bytes": 384, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 0, + "total_bytes": 960, + "triangle_records_bytes": 192, + "vertex_normals_bytes": 0, + "vertices_bytes": 192 + }, + "lights": 0, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 8 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 8 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "256" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "8" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [ + { + "action": { + "flag": "--auto-tx", + "usd_attribute": null, + "value": "on" + }, + "evidence": { + "textures": 1.0 + }, + "id": "textures_without_tx", + "kind": "time", + "summary": "1 UV texture(s) have no .tx beside them: each is decoded whole at import and held resident instead of streamed" + } + ], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/ShotCam", + "frame": null, + "path": "$ROOT/samples/materialx_emissive.usda", + "region": null, + "resolution": [ + 480, + 270 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/materialx_lion.usda.json b/crates/crust-core/tests/data/import_baselines/check/materialx_lion.usda.json new file mode 100644 index 000000000..56a0e9052 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/materialx_lion.usda.json @@ -0,0 +1,197 @@ +{ + "counts": { + "geometries": 5, + "kernel_memory": { + "bvh_nodes_bytes": 14773760, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 60, + "indices_bytes": 0, + "instances_bytes": 0, + "lanes": 1324368, + "lanes_filled": 1085404, + "leaves_bytes": 3823344, + "packets_bytes": 63569664, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 0, + "total_bytes": 120336596, + "triangle_records_bytes": 25446432, + "vertex_normals_bytes": 6361596, + "vertices_bytes": 6361740 + }, + "lights": 3, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 1060268 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 1060268 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "128" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "12" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.02" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [ + { + "action": { + "flag": "--auto-tx", + "usd_attribute": null, + "value": "on" + }, + "evidence": { + "textures": 7.0 + }, + "id": "textures_without_tx", + "kind": "time", + "summary": "7 UV texture(s) have no .tx beside them: each is decoded whole at import and held resident instead of streamed" + } + ], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/ShotCam", + "frame": null, + "path": "$ROOT/samples/materialx_lion.usda", + "region": null, + "resolution": [ + 960, + 540 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/materialx_showcase.usda.json b/crates/crust-core/tests/data/import_baselines/check/materialx_showcase.usda.json new file mode 100644 index 000000000..4c9d27ace --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/materialx_showcase.usda.json @@ -0,0 +1,197 @@ +{ + "counts": { + "geometries": 11, + "kernel_memory": { + "bvh_nodes_bytes": 17155584, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 132, + "indices_bytes": 0, + "instances_bytes": 0, + "lanes": 1607064, + "lanes_filled": 1321344, + "leaves_bytes": 4431152, + "packets_bytes": 77139072, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 0, + "total_bytes": 146252756, + "triangle_records_bytes": 31684416, + "vertex_normals_bytes": 7920780, + "vertices_bytes": 7921620 + }, + "lights": 5, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 1320184 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 1320184 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "128" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "12" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.02" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [ + { + "action": { + "flag": "--auto-tx", + "usd_attribute": null, + "value": "on" + }, + "evidence": { + "textures": 22.0 + }, + "id": "textures_without_tx", + "kind": "time", + "summary": "22 UV texture(s) have no .tx beside them: each is decoded whole at import and held resident instead of streamed" + } + ], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/ShotCam", + "frame": null, + "path": "$ROOT/samples/materialx_showcase.usda", + "region": null, + "resolution": [ + 1920, + 1080 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/materialx_subsurface.usda.json b/crates/crust-core/tests/data/import_baselines/check/materialx_subsurface.usda.json new file mode 100644 index 000000000..123197068 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/materialx_subsurface.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 5, + "kernel_memory": { + "bvh_nodes_bytes": 256, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 60, + "indices_bytes": 16, + "instances_bytes": 0, + "lanes": 8, + "lanes_filled": 4, + "leaves_bytes": 80, + "packets_bytes": 384, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 256, + "total_bytes": 1148, + "triangle_records_bytes": 48, + "vertex_normals_bytes": 0, + "vertices_bytes": 48 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 4, + "triangles": 2 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 4, + "triangles": 2 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "64" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "12" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/ShotCam", + "frame": null, + "path": "$ROOT/samples/materialx_subsurface.usda", + "region": null, + "resolution": [ + 640, + 320 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/materialx_surfaces.usda.json b/crates/crust-core/tests/data/import_baselines/check/materialx_surfaces.usda.json new file mode 100644 index 000000000..d0126a12e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/materialx_surfaces.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 7, + "kernel_memory": { + "bvh_nodes_bytes": 256, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 84, + "indices_bytes": 24, + "instances_bytes": 0, + "lanes": 8, + "lanes_filled": 4, + "leaves_bytes": 80, + "packets_bytes": 384, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 384, + "total_bytes": 1308, + "triangle_records_bytes": 48, + "vertex_normals_bytes": 0, + "vertices_bytes": 48 + }, + "lights": 1, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 6, + "triangles": 2 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 6, + "triangles": 2 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "64" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "12" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/ShotCam", + "frame": null, + "path": "$ROOT/samples/materialx_surfaces.usda", + "region": null, + "resolution": [ + 640, + 400 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/materialx_teapot.usda.json b/crates/crust-core/tests/data/import_baselines/check/materialx_teapot.usda.json new file mode 100644 index 000000000..2ab4ad577 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/materialx_teapot.usda.json @@ -0,0 +1,197 @@ +{ + "counts": { + "geometries": 6, + "kernel_memory": { + "bvh_nodes_bytes": 3418624, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 72, + "indices_bytes": 0, + "instances_bytes": 0, + "lanes": 333976, + "lanes_filled": 274687, + "leaves_bytes": 890704, + "packets_bytes": 16030848, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 0, + "total_bytes": 29695640, + "triangle_records_bytes": 6236880, + "vertex_normals_bytes": 1559184, + "vertices_bytes": 1559328 + }, + "lights": 3, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 259870 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 259870 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "128" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "12" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.02" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [ + { + "action": { + "flag": "--auto-tx", + "usd_attribute": null, + "value": "on" + }, + "evidence": { + "textures": 15.0 + }, + "id": "textures_without_tx", + "kind": "time", + "summary": "15 UV texture(s) have no .tx beside them: each is decoded whole at import and held resident instead of streamed" + } + ], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/ShotCam", + "frame": null, + "path": "$ROOT/samples/materialx_teapot.usda", + "region": null, + "resolution": [ + 960, + 540 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/materialx_volume.usda.json b/crates/crust-core/tests/data/import_baselines/check/materialx_volume.usda.json new file mode 100644 index 000000000..e56bf60b9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/materialx_volume.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 6, + "kernel_memory": { + "bvh_nodes_bytes": 384, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 72, + "indices_bytes": 16, + "instances_bytes": 0, + "lanes": 28, + "lanes_filled": 14, + "leaves_bytes": 160, + "packets_bytes": 1344, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 256, + "total_bytes": 2712, + "triangle_records_bytes": 336, + "vertex_normals_bytes": 0, + "vertices_bytes": 144 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 4, + "triangles": 14 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 4, + "triangles": 14 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "64" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "16" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/ShotCam", + "frame": null, + "path": "$ROOT/samples/materialx_volume.usda", + "region": null, + "resolution": [ + 640, + 320 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/motionblur.usda.json b/crates/crust-core/tests/data/import_baselines/check/motionblur.usda.json new file mode 100644 index 000000000..a7bead002 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/motionblur.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 5, + "kernel_memory": { + "bvh_nodes_bytes": 512, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 84, + "indices_bytes": 12, + "instances_bytes": 448, + "lanes": 28, + "lanes_filled": 18, + "leaves_bytes": 144, + "packets_bytes": 1344, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 64, + "total_bytes": 3280, + "triangle_records_bytes": 432, + "vertex_normals_bytes": 0, + "vertices_bytes": 240 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 2, + "spheres": 0, + "triangles": 6 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 2, + "spheres": 1, + "triangles": 18 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "16" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "4" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "8" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/motionblur.usda", + "region": null, + "resolution": [ + 96, + 54 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/motionvector.usda.json b/crates/crust-core/tests/data/import_baselines/check/motionvector.usda.json new file mode 100644 index 000000000..5bb39e64b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/motionvector.usda.json @@ -0,0 +1,189 @@ +{ + "counts": { + "geometries": 5, + "kernel_memory": { + "bvh_nodes_bytes": 640, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 108, + "indices_bytes": 24, + "instances_bytes": 896, + "lanes": 12, + "lanes_filled": 6, + "leaves_bytes": 128, + "packets_bytes": 576, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 128, + "total_bytes": 2788, + "triangle_records_bytes": 144, + "vertex_normals_bytes": 0, + "vertices_bytes": 144 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 4, + "spheres": 0, + "triangles": 2 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 4, + "spheres": 2, + "triangles": 6 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "16" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "4" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "16" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B", + "A", + "P.X", + "P.Y", + "P.Z", + "forward.u", + "forward.v" + ], + "file": "renders/motionvector.exr", + "prim": "/Render/Products/comp" + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/motionvector.usda", + "region": null, + "resolution": [ + 128, + 72 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/nested_instancing.usda.json b/crates/crust-core/tests/data/import_baselines/check/nested_instancing.usda.json new file mode 100644 index 000000000..ab9ff942b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/nested_instancing.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 21, + "kernel_memory": { + "bvh_nodes_bytes": 1280, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 384, + "indices_bytes": 72, + "instances_bytes": 1440, + "lanes": 40, + "lanes_filled": 28, + "leaves_bytes": 304, + "packets_bytes": 1920, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 192, + "total_bytes": 6552, + "triangle_records_bytes": 672, + "vertex_normals_bytes": 0, + "vertices_bytes": 288 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 9, + "spheres": 0, + "triangles": 4 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 15, + "spheres": 3, + "triangles": 28 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "48" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "8" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.02" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "16" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/nested_instancing.usda", + "region": null, + "resolution": [ + 480, + 270 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/openpbr_showcase.usda.json b/crates/crust-core/tests/data/import_baselines/check/openpbr_showcase.usda.json new file mode 100644 index 000000000..e05befbe4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/openpbr_showcase.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 10, + "kernel_memory": { + "bvh_nodes_bytes": 384, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 120, + "indices_bytes": 40, + "instances_bytes": 0, + "lanes": 0, + "lanes_filled": 0, + "leaves_bytes": 112, + "packets_bytes": 0, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 640, + "total_bytes": 1296, + "triangle_records_bytes": 0, + "vertex_normals_bytes": 0, + "vertices_bytes": 0 + }, + "lights": 3, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 10, + "triangles": 0 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 10, + "triangles": 0 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "4096" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "32" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/openpbr_showcase.usda", + "region": null, + "resolution": [ + 1280, + 720 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/precomp.usda.json b/crates/crust-core/tests/data/import_baselines/check/precomp.usda.json new file mode 100644 index 000000000..8689cc2df --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/precomp.usda.json @@ -0,0 +1,217 @@ +{ + "counts": { + "geometries": 6, + "kernel_memory": { + "bvh_nodes_bytes": 10240, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 84, + "indices_bytes": 12, + "instances_bytes": 320, + "lanes": 844, + "lanes_filled": 774, + "leaves_bytes": 2400, + "packets_bytes": 40512, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 64, + "total_bytes": 81616, + "triangle_records_bytes": 18576, + "vertex_normals_bytes": 4632, + "vertices_bytes": 4776 + }, + "lights": 3, + "primvar_tables_bytes": 16, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 2, + "spheres": 1, + "triangles": 6 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 2, + "spheres": 1, + "triangles": 774 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "16" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "4" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": { + "display": "look_final", + "display_filters": [ + "/Render/Precomp/glow", + "/Render/Precomp/bloom", + "/Render/Precomp/speed" + ], + "filters": [ + "sample /Render/Precomp/look: outputs [out], inputs [matte = var /Render/Products/Vars/matte, key = var /Render/Products/Vars/key, fill = var /Render/Products/Vars/fill, rim = var /Render/Products/Vars/rim]", + "display /Render/Precomp/glow: crust:blur of var /Render/Products/Vars/look (radius 9)", + "display /Render/Precomp/bloom: crust:merge Plus of var /Render/Products/Vars/look and /Render/Precomp/glow", + "display /Render/Precomp/speed: crust:vectorBlur of /Render/Precomp/bloom along var /Render/Products/Vars/motion (24 taps)" + ], + "sample_filters": [ + "/Render/Precomp/look" + ] + }, + "products": [ + { + "channels": [ + "R", + "G", + "B", + "key.R", + "key.G", + "key.B", + "fill.R", + "fill.G", + "fill.B", + "rim.R", + "rim.G", + "rim.B", + "matte", + "motion.u", + "motion.v", + "look.R", + "look.G", + "look.B", + "look_final.R", + "look_final.G", + "look_final.B" + ], + "file": "renders/precomp.exr", + "prim": "/Render/Products/precomp" + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/precomp.usda", + "region": null, + "resolution": [ + 320, + 180 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/primvar_aovs.usda.json b/crates/crust-core/tests/data/import_baselines/check/primvar_aovs.usda.json new file mode 100644 index 000000000..206d43f48 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/primvar_aovs.usda.json @@ -0,0 +1,195 @@ +{ + "counts": { + "geometries": 3, + "kernel_memory": { + "bvh_nodes_bytes": 2048, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 36, + "indices_bytes": 0, + "instances_bytes": 0, + "lanes": 236, + "lanes_filled": 196, + "leaves_bytes": 640, + "packets_bytes": 11328, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 0, + "total_bytes": 21204, + "triangle_records_bytes": 4704, + "vertex_normals_bytes": 1176, + "vertices_bytes": 1272 + }, + "lights": 2, + "primvar_tables_bytes": 9376, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 196 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 196 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "16" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "4" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B", + "A", + "P.X", + "P.Y", + "P.Z", + "Pref.X", + "Pref.Y", + "Pref.Z", + "uv2.U", + "uv2.V", + "Cd.R", + "Cd.G", + "Cd.B" + ], + "file": "renders/primvar_aovs.exr", + "prim": "/Render/Products/primvars" + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/primvar_aovs.usda", + "region": null, + "resolution": [ + 160, + 90 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/ptex_quads.usda.json b/crates/crust-core/tests/data/import_baselines/check/ptex_quads.usda.json new file mode 100644 index 000000000..f32e63a13 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/ptex_quads.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 2, + "kernel_memory": { + "bvh_nodes_bytes": 128, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 24, + "indices_bytes": 0, + "instances_bytes": 0, + "lanes": 12, + "lanes_filled": 12, + "leaves_bytes": 32, + "packets_bytes": 576, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 0, + "total_bytes": 1228, + "triangle_records_bytes": 288, + "vertex_normals_bytes": 0, + "vertices_bytes": 180 + }, + "lights": 1, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 12 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 12 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "16" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "3" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "16" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/ptex_quads.usda", + "region": null, + "resolution": [ + 320, + 180 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/purpose_bindings.usda.json b/crates/crust-core/tests/data/import_baselines/check/purpose_bindings.usda.json new file mode 100644 index 000000000..763b22fdf --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/purpose_bindings.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 4, + "kernel_memory": { + "bvh_nodes_bytes": 640, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 72, + "indices_bytes": 8, + "instances_bytes": 192, + "lanes": 56, + "lanes_filled": 40, + "leaves_bytes": 208, + "packets_bytes": 2688, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 0, + "total_bytes": 5056, + "triangle_records_bytes": 912, + "vertex_normals_bytes": 0, + "vertices_bytes": 336 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 2, + "spheres": 0, + "triangles": 14 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 2, + "spheres": 0, + "triangles": 38 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "128" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "32" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/purpose_bindings.usda", + "region": null, + "resolution": [ + 640, + 360 + ] + }, + "settings": null, + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/pxr_displace.usda.json b/crates/crust-core/tests/data/import_baselines/check/pxr_displace.usda.json new file mode 100644 index 000000000..cbe2c9235 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/pxr_displace.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 1, + "kernel_memory": { + "bvh_nodes_bytes": 3200, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 12, + "indices_bytes": 0, + "instances_bytes": 0, + "lanes": 256, + "lanes_filled": 256, + "leaves_bytes": 1024, + "packets_bytes": 12288, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 0, + "total_bytes": 26340, + "triangle_records_bytes": 6144, + "vertex_normals_bytes": 1836, + "vertices_bytes": 1836 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 256 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 256 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "32" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "4" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/pxr_displace.usda", + "region": null, + "resolution": [ + 240, + 160 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/rectlight.usda.json b/crates/crust-core/tests/data/import_baselines/check/rectlight.usda.json new file mode 100644 index 000000000..b903ed4f8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/rectlight.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 3, + "kernel_memory": { + "bvh_nodes_bytes": 128, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 36, + "indices_bytes": 4, + "instances_bytes": 0, + "lanes": 8, + "lanes_filled": 4, + "leaves_bytes": 48, + "packets_bytes": 384, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 64, + "total_bytes": 856, + "triangle_records_bytes": 96, + "vertex_normals_bytes": 0, + "vertices_bytes": 96 + }, + "lights": 1, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 1, + "triangles": 4 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 1, + "triangles": 4 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "8" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "4" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "4" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/rectlight.usda", + "region": null, + "resolution": [ + 64, + 64 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/render_passes.usda.json b/crates/crust-core/tests/data/import_baselines/check/render_passes.usda.json new file mode 100644 index 000000000..3ef4bfe3c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/render_passes.usda.json @@ -0,0 +1,184 @@ +{ + "counts": { + "geometries": 5, + "kernel_memory": { + "bvh_nodes_bytes": 256, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 60, + "indices_bytes": 12, + "instances_bytes": 0, + "lanes": 24, + "lanes_filled": 16, + "leaves_bytes": 112, + "packets_bytes": 1152, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 192, + "total_bytes": 2264, + "triangle_records_bytes": 336, + "vertex_normals_bytes": 0, + "vertices_bytes": 144 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 3, + "triangles": 14 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 3, + "triangles": 14 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "64" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "4" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B", + "A" + ], + "file": "props.exr", + "prim": "/Render/Products/props" + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/render_passes.usda", + "region": null, + "resolution": [ + 160, + 90 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/smoke.usda.json b/crates/crust-core/tests/data/import_baselines/check/smoke.usda.json new file mode 100644 index 000000000..3973bf66e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/smoke.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 2, + "kernel_memory": { + "bvh_nodes_bytes": 128, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 24, + "indices_bytes": 0, + "instances_bytes": 0, + "lanes": 16, + "lanes_filled": 12, + "leaves_bytes": 48, + "packets_bytes": 768, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 0, + "total_bytes": 1544, + "triangle_records_bytes": 288, + "vertex_normals_bytes": 0, + "vertices_bytes": 288 + }, + "lights": 1, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 12 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 12 + }, + "volumes": 3 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "64" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "16" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "16" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/smoke.usda", + "region": null, + "resolution": [ + 320, + 180 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/subdivision.usda.json b/crates/crust-core/tests/data/import_baselines/check/subdivision.usda.json new file mode 100644 index 000000000..3f90451f0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/subdivision.usda.json @@ -0,0 +1,197 @@ +{ + "counts": { + "geometries": 8, + "kernel_memory": { + "bvh_nodes_bytes": 14848, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 96, + "indices_bytes": 0, + "instances_bytes": 0, + "lanes": 1144, + "lanes_filled": 976, + "leaves_bytes": 3856, + "packets_bytes": 54912, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 0, + "total_bytes": 109088, + "triangle_records_bytes": 23424, + "vertex_normals_bytes": 5880, + "vertices_bytes": 6072 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 976 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 976 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "64" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "4" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "16" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [ + { + "action": { + "flag": "--auto-tx", + "usd_attribute": null, + "value": "on" + }, + "evidence": { + "textures": 1.0 + }, + "id": "textures_without_tx", + "kind": "time", + "summary": "1 UV texture(s) have no .tx beside them: each is decoded whole at import and held resident instead of streamed" + } + ], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/subdivision.usda", + "region": null, + "resolution": [ + 320, + 180 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/subdivision_adaptive.usda.json b/crates/crust-core/tests/data/import_baselines/check/subdivision_adaptive.usda.json new file mode 100644 index 000000000..bbd495238 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/subdivision_adaptive.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 6, + "kernel_memory": { + "bvh_nodes_bytes": 13824, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 84, + "indices_bytes": 8, + "instances_bytes": 192, + "lanes": 1108, + "lanes_filled": 1022, + "leaves_bytes": 2960, + "packets_bytes": 53184, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 0, + "total_bytes": 107260, + "triangle_records_bytes": 24528, + "vertex_normals_bytes": 6216, + "vertices_bytes": 6264 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 2, + "spheres": 0, + "triangles": 254 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 2, + "spheres": 0, + "triangles": 1022 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "64" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "4" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "16" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/subdivision_adaptive.usda", + "region": null, + "resolution": [ + 320, + 180 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/thin_window.usda.json b/crates/crust-core/tests/data/import_baselines/check/thin_window.usda.json new file mode 100644 index 000000000..0d823fa2f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/thin_window.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 4, + "kernel_memory": { + "bvh_nodes_bytes": 128, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 48, + "indices_bytes": 4, + "instances_bytes": 0, + "lanes": 12, + "lanes_filled": 6, + "leaves_bytes": 64, + "packets_bytes": 576, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 64, + "total_bytes": 1172, + "triangle_records_bytes": 144, + "vertex_normals_bytes": 0, + "vertices_bytes": 144 + }, + "lights": 1, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 1, + "triangles": 6 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 1, + "triangles": 6 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "64" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "8" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/ShotCam", + "frame": null, + "path": "$ROOT/samples/thin_window.usda", + "region": null, + "resolution": [ + 480, + 270 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/usdlux.usda.json b/crates/crust-core/tests/data/import_baselines/check/usdlux.usda.json new file mode 100644 index 000000000..f63bf39b5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/usdlux.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 11, + "kernel_memory": { + "bvh_nodes_bytes": 640, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 144, + "indices_bytes": 32, + "instances_bytes": 96, + "lanes": 16, + "lanes_filled": 8, + "leaves_bytes": 160, + "packets_bytes": 768, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 448, + "total_bytes": 2672, + "triangle_records_bytes": 192, + "vertex_normals_bytes": 0, + "vertices_bytes": 192 + }, + "lights": 7, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 1, + "disks": 1, + "instances": 1, + "spheres": 4, + "triangles": 8 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 1, + "disks": 1, + "instances": 1, + "spheres": 5, + "triangles": 8 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "256" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "6" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.02" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/usdlux.usda", + "region": null, + "resolution": [ + 640, + 360 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/usdpreview_textured.usda.json b/crates/crust-core/tests/data/import_baselines/check/usdpreview_textured.usda.json new file mode 100644 index 000000000..a2c9eb361 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/usdpreview_textured.usda.json @@ -0,0 +1,197 @@ +{ + "counts": { + "geometries": 5, + "kernel_memory": { + "bvh_nodes_bytes": 128, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 60, + "indices_bytes": 0, + "instances_bytes": 0, + "lanes": 12, + "lanes_filled": 10, + "leaves_bytes": 48, + "packets_bytes": 576, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 0, + "total_bytes": 1292, + "triangle_records_bytes": 240, + "vertex_normals_bytes": 0, + "vertices_bytes": 240 + }, + "lights": 2, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 10 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 0, + "triangles": 10 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "64" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "8" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "power" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0.05" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [ + { + "action": { + "flag": "--auto-tx", + "usd_attribute": null, + "value": "on" + }, + "evidence": { + "textures": 5.0 + }, + "id": "textures_without_tx", + "kind": "time", + "summary": "5 UV texture(s) have no .tx beside them: each is decoded whole at import and held resident instead of streamed" + } + ], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/ShotCam", + "frame": null, + "path": "$ROOT/samples/usdpreview_textured.usda", + "region": null, + "resolution": [ + 640, + 360 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/check/veach_mis.usda.json b/crates/crust-core/tests/data/import_baselines/check/veach_mis.usda.json new file mode 100644 index 000000000..23712d26b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/check/veach_mis.usda.json @@ -0,0 +1,183 @@ +{ + "counts": { + "geometries": 10, + "kernel_memory": { + "bvh_nodes_bytes": 256, + "cubic_spans_bytes": 0, + "geometry_tables_bytes": 120, + "indices_bytes": 16, + "instances_bytes": 0, + "lanes": 16, + "lanes_filled": 12, + "leaves_bytes": 80, + "packets_bytes": 768, + "packets_indexed_bytes": 0, + "prim_nodes_bytes": 256, + "total_bytes": 2072, + "triangle_records_bytes": 288, + "vertex_normals_bytes": 0, + "vertices_bytes": 288 + }, + "lights": 4, + "primvar_tables_bytes": 0, + "strand_tables_bytes": 0, + "top_level": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 4, + "triangles": 12 + }, + "unique": { + "cubic_curve_spans": 0, + "curve_segments": 0, + "cylinders": 0, + "disks": 0, + "instances": 0, + "spheres": 4, + "triangles": 12 + }, + "volumes": 0 + }, + "crust_version": "0.8.0", + "denied": [], + "effective_settings": [ + { + "flag": "-s", + "name": "samples_per_pixel", + "usd_attribute": "crust:samplesPerPixel", + "value": "128" + }, + { + "flag": null, + "name": "max_depth", + "usd_attribute": "crust:maxDepth", + "value": "8" + }, + { + "flag": "--strategy", + "name": "sampling_strategy", + "usd_attribute": "crust:samplingStrategy", + "value": "balance" + }, + { + "flag": "--light-selection", + "name": "light_selection", + "usd_attribute": "crust:lightSelection", + "value": "power" + }, + { + "flag": "--light-samples", + "name": "light_samples", + "usd_attribute": "crust:lightSamples", + "value": "1" + }, + { + "flag": "--light-samples-indirect", + "name": "light_samples_indirect", + "usd_attribute": "crust:lightSamplesIndirect", + "value": "1" + }, + { + "flag": "--indirect-clamp", + "name": "indirect_clamp", + "usd_attribute": "crust:indirectClamp", + "value": "10" + }, + { + "flag": null, + "name": "exposure_scale", + "usd_attribute": null, + "value": "1" + }, + { + "flag": "--filter", + "name": "pixel_filter", + "usd_attribute": "crust:pixelFilter", + "value": "triangle" + }, + { + "flag": "--filter-radius", + "name": "pixel_filter_radius", + "usd_attribute": "crust:pixelFilterRadius", + "value": "1" + }, + { + "flag": "--sampler", + "name": "sampler", + "usd_attribute": "crust:sampler", + "value": "sobol" + }, + { + "flag": null, + "name": "path_guiding", + "usd_attribute": "crust:pathGuiding", + "value": "false" + }, + { + "flag": "--variance-threshold", + "name": "variance_threshold", + "usd_attribute": "crust:varianceThreshold", + "value": "0" + }, + { + "flag": "--min-samples", + "name": "min_samples_per_pixel", + "usd_attribute": "crust:minSamplesPerPixel", + "value": "32" + }, + { + "flag": "--neighbour-tolerance", + "name": "adaptive_neighbour_tolerance", + "usd_attribute": "crust:adaptiveNeighbourTolerance", + "value": "1" + }, + { + "flag": "--subdiv-level", + "name": "subdivision_level", + "usd_attribute": "crust:subdivisionLevel", + "value": "stage" + }, + { + "flag": "--subdiv-edge-length", + "name": "subdivision_edge_length", + "usd_attribute": "crust:subdivisionEdgeLength", + "value": "stage" + }, + { + "flag": "--auto-tx", + "name": "auto_tx", + "usd_attribute": null, + "value": "false" + } + ], + "findings": [], + "format": "crust-check/2", + "pass": null, + "precomp": null, + "products": [ + { + "channels": [ + "R", + "G", + "B" + ], + "file": "output.exr", + "prim": null + } + ], + "scene": { + "camera": "/World/Cam", + "frame": null, + "path": "$ROOT/samples/veach_mis.usda", + "region": null, + "resolution": [ + 960, + 540 + ] + }, + "settings": "/Render/settings", + "warnings": [] +} diff --git a/crates/crust-core/tests/data/import_baselines/clean_usda-d4e60f418d0e5485-1.digest b/crates/crust-core/tests/data/import_baselines/clean_usda-d4e60f418d0e5485-1.digest new file mode 100644 index 000000000..0e5cf4f0b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/clean_usda-d4e60f418d0e5485-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/clean.usda"], invisible_overrides: Some(0) } +layer: $DIR/clean.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/clear_usda-487518c3a2bde507-1.digest b/crates/crust-core/tests/data/import_baselines/clear_usda-487518c3a2bde507-1.digest new file mode 100644 index 000000000..c4e1aa2ff --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/clear_usda-487518c3a2bde507-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: -7.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/clear.usda"], invisible_overrides: Some(0) } +layer: $DIR/clear.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:694d4e60220ed61b camera=2:694d4e60220ed61b shadow=2:694d4e60220ed61b indirect=2:694d4e60220ed61b +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:efd96df60225be8b camera=2:efd96df60225be8b shadow=2:efd96df60225be8b indirect=2:efd96df60225be8b +provenance light /World/dome: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/without +provenance geometry 1..2: /World/with +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8133482610442327411, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9785711415941569612, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/closest_usda-b1b06704b4564b8c-1.digest b/crates/crust-core/tests/data/import_baselines/closest_usda-b1b06704b4564b8c-1.digest new file mode 100644 index 000000000..61e4cb26c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/closest_usda-b1b06704b4564b8c-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/z_out", name: "z_out", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 1, radiance: false }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/z"], display_filters: [], display: "beauty" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/closest.usda"], invisible_overrides: Some(0) } +layer: $DIR/closest.usda +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/color_space_api_usda-7258fb7a16ddde2f-1.digest b/crates/crust-core/tests/data/import_baselines/color_space_api_usda-7258fb7a16ddde2f-1.digest new file mode 100644 index 000000000..34fde441c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/color_space_api_usda-7258fb7a16ddde2f-1.digest @@ -0,0 +1,25 @@ +time: None +working space: ACEScg +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/color_space_api.usda"], invisible_overrides: Some(0) } +layer: $DIR/color_space_api.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 2 +light 0: area name Some("/World/Rec709Rig/Inner/Overrides") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Rec709Rig/Inner/Inherits") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:984632b55acb5495 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:984632b55acb5495 +provenance light /World/Rec709Rig/Inner/Inherits: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Rec709Rig/Inner/Overrides: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rec709Rig/Inner/Overrides +provenance geometry 1..2: /World/Rec709Rig/Inner/Inherits +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(5)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/color_temperature_off_usda-d2963845fd5e72c4-1.digest b/crates/crust-core/tests/data/import_baselines/color_temperature_off_usda-d2963845fd5e72c4-1.digest new file mode 100644 index 000000000..6b8a5e51d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/color_temperature_off_usda-d2963845fd5e72c4-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/color_temperature_off.usda"], invisible_overrides: Some(0) } +layer: $DIR/color_temperature_off.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/S") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:984632b55acb5495 +provenance light /World/S: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/S +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/color_temperature_usda-a7d9f5fccba89fff-1.digest b/crates/crust-core/tests/data/import_baselines/color_temperature_usda-a7d9f5fccba89fff-1.digest new file mode 100644 index 000000000..ccaf679d0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/color_temperature_usda-a7d9f5fccba89fff-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/color_temperature.usda"], invisible_overrides: Some(0) } +layer: $DIR/color_temperature.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/S") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:984632b55acb5495 +provenance light /World/S: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/S +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/compensation_alias_usda-ea168514e7b00460-1.digest b/crates/crust-core/tests/data/import_baselines/compensation_alias_usda-ea168514e7b00460-1.digest new file mode 100644 index 000000000..f79f645ea --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/compensation_alias_usda-ea168514e7b00460-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 4.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/compensation_alias.usda"], invisible_overrides: Some(0) } +layer: $DIR/compensation_alias.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/compensation_off_usda-37a366efa8d50980-1.digest b/crates/crust-core/tests/data/import_baselines/compensation_off_usda-37a366efa8d50980-1.digest new file mode 100644 index 000000000..e8750991b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/compensation_off_usda-37a366efa8d50980-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/compensation_off.usda"], invisible_overrides: Some(0) } +layer: $DIR/compensation_off.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/constant_cage_usda-6838009dc4d51123-1.digest b/crates/crust-core/tests/data/import_baselines/constant_cage_usda-6838009dc4d51123-1.digest new file mode 100644 index 000000000..54048fc2a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/constant_cage_usda-6838009dc4d51123-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/constant_cage.usda"], invisible_overrides: Some(0) } +layer: $DIR/constant_cage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1cb3e7b03a982bc5 camera=2:1cb3e7b03a982bc5 shadow=2:1cb3e7b03a982bc5 indirect=2:1cb3e7b03a982bc5 +provenance material /World/Up: MaterialOrigin { slots: [0], displaced: true } +provenance geometry 0..1: /World/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17961869511521861346, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/constant_none_off_usda-4da7234b198fc34c-1.digest b/crates/crust-core/tests/data/import_baselines/constant_none_off_usda-4da7234b198fc34c-1.digest new file mode 100644 index 000000000..1be488529 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/constant_none_off_usda-4da7234b198fc34c-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/constant_none_off.usda"], invisible_overrides: Some(0) } +layer: $DIR/constant_none_off.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d9d066c6f09ee5 camera=2:58d9d066c6f09ee5 shadow=2:58d9d066c6f09ee5 indirect=2:58d9d066c6f09ee5 +provenance material /World/Flat: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17961869511521861346, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/constant_none_usda-3f38201b0c964211-1.digest b/crates/crust-core/tests/data/import_baselines/constant_none_usda-3f38201b0c964211-1.digest new file mode 100644 index 000000000..33b9a535a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/constant_none_usda-3f38201b0c964211-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/constant_none.usda"], invisible_overrides: Some(0) } +layer: $DIR/constant_none.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=32:93e9e3bbfdd5e005 camera=32:93e9e3bbfdd5e005 shadow=32:93e9e3bbfdd5e005 indirect=32:93e9e3bbfdd5e005 +provenance material /World/Up: MaterialOrigin { slots: [0], displaced: true } +provenance geometry 0..1: /World/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8084853767877771290, n_points: 25, n_indices: 64, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/convolve_usda-ae27710a0c217615-1.digest b/crates/crust-core/tests/data/import_baselines/convolve_usda-ae27710a0c217615-1.digest new file mode 100644 index 000000000..6dcacac14 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/convolve_usda-ae27710a0c217615-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/soft_out", name: "soft_out", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 0, output: 0, components: 1, radiance: false }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: [], display_filters: ["/Render/soft"], display: "beauty" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/convolve.usda"], invisible_overrides: Some(0) } +layer: $DIR/convolve.usda +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/copper_usda-856b7fd7384c75f6-1.digest b/crates/crust-core/tests/data/import_baselines/copper_usda-856b7fd7384c75f6-1.digest new file mode 100644 index 000000000..2bea292a5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/copper_usda-856b7fd7384c75f6-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/copper.usda"], invisible_overrides: Some(0) } +layer: $DIR/copper.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Copper: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-1f6a1535ca10a892-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-1f6a1535ca10a892-1.digest new file mode 100644 index 000000000..b3f94a4c4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-1f6a1535ca10a892-1.digest @@ -0,0 +1,55 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 1.7), lower_left_corner: Vec3A(-2.775, -0.7750001, -2.0), horizontal: Vec3A(5.55, 0.0, 0.0), vertical: Vec3A(0.0, 5.55, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 512, height: 512, region: PixelRect { x0: 0, y0: 0, x1: 512, y1: 512 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: true, guiding_train_iterations: 8, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [36.0, 36.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 3.7 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox_guided.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox_guided.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:419a50918c7d235b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:419a50918c7d235b +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:60772e24e8c542a8 camera=1:60772e24e8c542a8 shadow=1:60772e24e8c542a8 indirect=1:60772e24e8c542a8 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7eb5757351d59586 camera=1:7eb5757351d59586 shadow=1:7eb5757351d59586 indirect=1:7eb5757351d59586 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fbb55a7458a52f85 camera=2:fbb55a7458a52f85 shadow=2:fbb55a7458a52f85 indirect=2:fbb55a7458a52f85 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d43f32f1840fba05 camera=2:d43f32f1840fba05 shadow=2:d43f32f1840fba05 indirect=2:d43f32f1840fba05 +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4230312a0dbf0605 camera=2:4230312a0dbf0605 shadow=2:4230312a0dbf0605 indirect=2:4230312a0dbf0605 +geom 6: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:bfb975da92c3f105 camera=2:bfb975da92c3f105 shadow=2:bfb975da92c3f105 indirect=2:bfb975da92c3f105 +geom 7: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7f51da6ec1b06205 camera=2:7f51da6ec1b06205 shadow=2:7f51da6ec1b06205 indirect=2:7f51da6ec1b06205 +geom 8: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:43f88c3c27bb79c5 camera=2:43f88c3c27bb79c5 shadow=2:43f88c3c27bb79c5 indirect=2:43f88c3c27bb79c5 +geom 9: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5e2dadb9f5581d45 camera=2:5e2dadb9f5581d45 shadow=2:5e2dadb9f5581d45 indirect=2:5e2dadb9f5581d45 +provenance material /World/Materials/green: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/red: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Materials/white: MaterialOrigin { slots: [1, 2, 3, 6, 7, 8, 9], displaced: false } +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Contents/small_sphere +provenance geometry 2..3: /World/Contents/big_sphere +provenance geometry 3..4: /World/Box/light_shroud +provenance geometry 4..5: /World/Box/right_wall +provenance geometry 5..6: /World/Box/left_wall +provenance geometry 6..7: /World/Box/front_wall +provenance geometry 7..8: /World/Box/back_wall +provenance geometry 8..9: /World/Box/ceiling +provenance geometry 9..10: /World/Box/floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11264607570582347183, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12306339853125749494, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13622236926475232614, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4681087188537491404, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4369631221849632513, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1690375821915330156, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2685769528314553797, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-1.digest new file mode 100644 index 000000000..f0e9111c0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-1.digest @@ -0,0 +1,55 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 1.7), lower_left_corner: Vec3A(-2.775, -0.7750001, -2.0), horizontal: Vec3A(5.55, 0.0, 0.0), vertical: Vec3A(0.0, 5.55, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 512, height: 512, region: PixelRect { x0: 0, y0: 0, x1: 512, y1: 512 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: true, guiding_train_iterations: 8, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [36.0, 36.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 3.7 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox_guided.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox_guided.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:419a50918c7d235b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:419a50918c7d235b +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:60772e24e8c542a8 camera=1:60772e24e8c542a8 shadow=1:60772e24e8c542a8 indirect=1:60772e24e8c542a8 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7eb5757351d59586 camera=1:7eb5757351d59586 shadow=1:7eb5757351d59586 indirect=1:7eb5757351d59586 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fbb55a7458a52f85 camera=2:fbb55a7458a52f85 shadow=2:fbb55a7458a52f85 indirect=2:fbb55a7458a52f85 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d43f32f1840fba05 camera=2:d43f32f1840fba05 shadow=2:d43f32f1840fba05 indirect=2:d43f32f1840fba05 +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4230312a0dbf0605 camera=2:4230312a0dbf0605 shadow=2:4230312a0dbf0605 indirect=2:4230312a0dbf0605 +geom 6: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:bfb975da92c3f105 camera=2:bfb975da92c3f105 shadow=2:bfb975da92c3f105 indirect=2:bfb975da92c3f105 +geom 7: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7f51da6ec1b06205 camera=2:7f51da6ec1b06205 shadow=2:7f51da6ec1b06205 indirect=2:7f51da6ec1b06205 +geom 8: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:43f88c3c27bb79c5 camera=2:43f88c3c27bb79c5 shadow=2:43f88c3c27bb79c5 indirect=2:43f88c3c27bb79c5 +geom 9: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5e2dadb9f5581d45 camera=2:5e2dadb9f5581d45 shadow=2:5e2dadb9f5581d45 indirect=2:5e2dadb9f5581d45 +provenance material /World/Materials/green: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/red: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Materials/white: MaterialOrigin { slots: [1, 2, 3, 6, 7, 8, 9], displaced: false } +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Contents/small_sphere +provenance geometry 2..3: /World/Contents/big_sphere +provenance geometry 3..4: /World/Box/light_shroud +provenance geometry 4..5: /World/Box/right_wall +provenance geometry 5..6: /World/Box/left_wall +provenance geometry 6..7: /World/Box/front_wall +provenance geometry 7..8: /World/Box/back_wall +provenance geometry 8..9: /World/Box/ceiling +provenance geometry 9..10: /World/Box/floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11264607570582347183, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12306339853125749494, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13622236926475232614, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4681087188537491404, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4369631221849632513, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1690375821915330156, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2685769528314553797, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-2.digest new file mode 100644 index 000000000..f0e9111c0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-2.digest @@ -0,0 +1,55 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 1.7), lower_left_corner: Vec3A(-2.775, -0.7750001, -2.0), horizontal: Vec3A(5.55, 0.0, 0.0), vertical: Vec3A(0.0, 5.55, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 512, height: 512, region: PixelRect { x0: 0, y0: 0, x1: 512, y1: 512 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: true, guiding_train_iterations: 8, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [36.0, 36.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 3.7 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox_guided.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox_guided.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:419a50918c7d235b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:419a50918c7d235b +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:60772e24e8c542a8 camera=1:60772e24e8c542a8 shadow=1:60772e24e8c542a8 indirect=1:60772e24e8c542a8 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7eb5757351d59586 camera=1:7eb5757351d59586 shadow=1:7eb5757351d59586 indirect=1:7eb5757351d59586 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fbb55a7458a52f85 camera=2:fbb55a7458a52f85 shadow=2:fbb55a7458a52f85 indirect=2:fbb55a7458a52f85 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d43f32f1840fba05 camera=2:d43f32f1840fba05 shadow=2:d43f32f1840fba05 indirect=2:d43f32f1840fba05 +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4230312a0dbf0605 camera=2:4230312a0dbf0605 shadow=2:4230312a0dbf0605 indirect=2:4230312a0dbf0605 +geom 6: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:bfb975da92c3f105 camera=2:bfb975da92c3f105 shadow=2:bfb975da92c3f105 indirect=2:bfb975da92c3f105 +geom 7: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7f51da6ec1b06205 camera=2:7f51da6ec1b06205 shadow=2:7f51da6ec1b06205 indirect=2:7f51da6ec1b06205 +geom 8: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:43f88c3c27bb79c5 camera=2:43f88c3c27bb79c5 shadow=2:43f88c3c27bb79c5 indirect=2:43f88c3c27bb79c5 +geom 9: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5e2dadb9f5581d45 camera=2:5e2dadb9f5581d45 shadow=2:5e2dadb9f5581d45 indirect=2:5e2dadb9f5581d45 +provenance material /World/Materials/green: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/red: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Materials/white: MaterialOrigin { slots: [1, 2, 3, 6, 7, 8, 9], displaced: false } +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Contents/small_sphere +provenance geometry 2..3: /World/Contents/big_sphere +provenance geometry 3..4: /World/Box/light_shroud +provenance geometry 4..5: /World/Box/right_wall +provenance geometry 5..6: /World/Box/left_wall +provenance geometry 6..7: /World/Box/front_wall +provenance geometry 7..8: /World/Box/back_wall +provenance geometry 8..9: /World/Box/ceiling +provenance geometry 9..10: /World/Box/floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11264607570582347183, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12306339853125749494, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13622236926475232614, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4681087188537491404, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4369631221849632513, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1690375821915330156, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2685769528314553797, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-1.digest new file mode 100644 index 000000000..f0e9111c0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-1.digest @@ -0,0 +1,55 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 1.7), lower_left_corner: Vec3A(-2.775, -0.7750001, -2.0), horizontal: Vec3A(5.55, 0.0, 0.0), vertical: Vec3A(0.0, 5.55, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 512, height: 512, region: PixelRect { x0: 0, y0: 0, x1: 512, y1: 512 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: true, guiding_train_iterations: 8, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [36.0, 36.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 3.7 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox_guided.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox_guided.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:419a50918c7d235b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:419a50918c7d235b +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:60772e24e8c542a8 camera=1:60772e24e8c542a8 shadow=1:60772e24e8c542a8 indirect=1:60772e24e8c542a8 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7eb5757351d59586 camera=1:7eb5757351d59586 shadow=1:7eb5757351d59586 indirect=1:7eb5757351d59586 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fbb55a7458a52f85 camera=2:fbb55a7458a52f85 shadow=2:fbb55a7458a52f85 indirect=2:fbb55a7458a52f85 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d43f32f1840fba05 camera=2:d43f32f1840fba05 shadow=2:d43f32f1840fba05 indirect=2:d43f32f1840fba05 +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4230312a0dbf0605 camera=2:4230312a0dbf0605 shadow=2:4230312a0dbf0605 indirect=2:4230312a0dbf0605 +geom 6: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:bfb975da92c3f105 camera=2:bfb975da92c3f105 shadow=2:bfb975da92c3f105 indirect=2:bfb975da92c3f105 +geom 7: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7f51da6ec1b06205 camera=2:7f51da6ec1b06205 shadow=2:7f51da6ec1b06205 indirect=2:7f51da6ec1b06205 +geom 8: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:43f88c3c27bb79c5 camera=2:43f88c3c27bb79c5 shadow=2:43f88c3c27bb79c5 indirect=2:43f88c3c27bb79c5 +geom 9: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5e2dadb9f5581d45 camera=2:5e2dadb9f5581d45 shadow=2:5e2dadb9f5581d45 indirect=2:5e2dadb9f5581d45 +provenance material /World/Materials/green: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/red: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Materials/white: MaterialOrigin { slots: [1, 2, 3, 6, 7, 8, 9], displaced: false } +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Contents/small_sphere +provenance geometry 2..3: /World/Contents/big_sphere +provenance geometry 3..4: /World/Box/light_shroud +provenance geometry 4..5: /World/Box/right_wall +provenance geometry 5..6: /World/Box/left_wall +provenance geometry 6..7: /World/Box/front_wall +provenance geometry 7..8: /World/Box/back_wall +provenance geometry 8..9: /World/Box/ceiling +provenance geometry 9..10: /World/Box/floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11264607570582347183, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12306339853125749494, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13622236926475232614, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4681087188537491404, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4369631221849632513, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1690375821915330156, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2685769528314553797, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-2.digest new file mode 100644 index 000000000..f0e9111c0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-2.digest @@ -0,0 +1,55 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 1.7), lower_left_corner: Vec3A(-2.775, -0.7750001, -2.0), horizontal: Vec3A(5.55, 0.0, 0.0), vertical: Vec3A(0.0, 5.55, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 512, height: 512, region: PixelRect { x0: 0, y0: 0, x1: 512, y1: 512 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: true, guiding_train_iterations: 8, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [36.0, 36.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 3.7 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox_guided.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox_guided.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:419a50918c7d235b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:419a50918c7d235b +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:60772e24e8c542a8 camera=1:60772e24e8c542a8 shadow=1:60772e24e8c542a8 indirect=1:60772e24e8c542a8 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7eb5757351d59586 camera=1:7eb5757351d59586 shadow=1:7eb5757351d59586 indirect=1:7eb5757351d59586 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fbb55a7458a52f85 camera=2:fbb55a7458a52f85 shadow=2:fbb55a7458a52f85 indirect=2:fbb55a7458a52f85 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d43f32f1840fba05 camera=2:d43f32f1840fba05 shadow=2:d43f32f1840fba05 indirect=2:d43f32f1840fba05 +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4230312a0dbf0605 camera=2:4230312a0dbf0605 shadow=2:4230312a0dbf0605 indirect=2:4230312a0dbf0605 +geom 6: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:bfb975da92c3f105 camera=2:bfb975da92c3f105 shadow=2:bfb975da92c3f105 indirect=2:bfb975da92c3f105 +geom 7: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7f51da6ec1b06205 camera=2:7f51da6ec1b06205 shadow=2:7f51da6ec1b06205 indirect=2:7f51da6ec1b06205 +geom 8: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:43f88c3c27bb79c5 camera=2:43f88c3c27bb79c5 shadow=2:43f88c3c27bb79c5 indirect=2:43f88c3c27bb79c5 +geom 9: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5e2dadb9f5581d45 camera=2:5e2dadb9f5581d45 shadow=2:5e2dadb9f5581d45 indirect=2:5e2dadb9f5581d45 +provenance material /World/Materials/green: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/red: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Materials/white: MaterialOrigin { slots: [1, 2, 3, 6, 7, 8, 9], displaced: false } +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Contents/small_sphere +provenance geometry 2..3: /World/Contents/big_sphere +provenance geometry 3..4: /World/Box/light_shroud +provenance geometry 4..5: /World/Box/right_wall +provenance geometry 5..6: /World/Box/left_wall +provenance geometry 6..7: /World/Box/front_wall +provenance geometry 7..8: /World/Box/back_wall +provenance geometry 8..9: /World/Box/ceiling +provenance geometry 9..10: /World/Box/floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11264607570582347183, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12306339853125749494, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13622236926475232614, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4681087188537491404, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4369631221849632513, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1690375821915330156, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2685769528314553797, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-dddcb8fd2ce59c1f-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-dddcb8fd2ce59c1f-1.digest new file mode 100644 index 000000000..f0e9111c0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-dddcb8fd2ce59c1f-1.digest @@ -0,0 +1,55 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 1.7), lower_left_corner: Vec3A(-2.775, -0.7750001, -2.0), horizontal: Vec3A(5.55, 0.0, 0.0), vertical: Vec3A(0.0, 5.55, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 512, height: 512, region: PixelRect { x0: 0, y0: 0, x1: 512, y1: 512 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: true, guiding_train_iterations: 8, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [36.0, 36.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 3.7 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox_guided.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox_guided.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:419a50918c7d235b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:419a50918c7d235b +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:60772e24e8c542a8 camera=1:60772e24e8c542a8 shadow=1:60772e24e8c542a8 indirect=1:60772e24e8c542a8 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7eb5757351d59586 camera=1:7eb5757351d59586 shadow=1:7eb5757351d59586 indirect=1:7eb5757351d59586 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fbb55a7458a52f85 camera=2:fbb55a7458a52f85 shadow=2:fbb55a7458a52f85 indirect=2:fbb55a7458a52f85 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d43f32f1840fba05 camera=2:d43f32f1840fba05 shadow=2:d43f32f1840fba05 indirect=2:d43f32f1840fba05 +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4230312a0dbf0605 camera=2:4230312a0dbf0605 shadow=2:4230312a0dbf0605 indirect=2:4230312a0dbf0605 +geom 6: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:bfb975da92c3f105 camera=2:bfb975da92c3f105 shadow=2:bfb975da92c3f105 indirect=2:bfb975da92c3f105 +geom 7: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7f51da6ec1b06205 camera=2:7f51da6ec1b06205 shadow=2:7f51da6ec1b06205 indirect=2:7f51da6ec1b06205 +geom 8: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:43f88c3c27bb79c5 camera=2:43f88c3c27bb79c5 shadow=2:43f88c3c27bb79c5 indirect=2:43f88c3c27bb79c5 +geom 9: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5e2dadb9f5581d45 camera=2:5e2dadb9f5581d45 shadow=2:5e2dadb9f5581d45 indirect=2:5e2dadb9f5581d45 +provenance material /World/Materials/green: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/red: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Materials/white: MaterialOrigin { slots: [1, 2, 3, 6, 7, 8, 9], displaced: false } +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Contents/small_sphere +provenance geometry 2..3: /World/Contents/big_sphere +provenance geometry 3..4: /World/Box/light_shroud +provenance geometry 4..5: /World/Box/right_wall +provenance geometry 5..6: /World/Box/left_wall +provenance geometry 6..7: /World/Box/front_wall +provenance geometry 7..8: /World/Box/back_wall +provenance geometry 8..9: /World/Box/ceiling +provenance geometry 9..10: /World/Box/floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11264607570582347183, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12306339853125749494, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13622236926475232614, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4681087188537491404, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4369631221849632513, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1690375821915330156, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2685769528314553797, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-28fa5fe21d50ecee-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-28fa5fe21d50ecee-1.digest new file mode 100644 index 000000000..32d801135 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-28fa5fe21d50ecee-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 32, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox_lookdev.usda", "$TMP/crust_mcp_cli/worked_session/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $TMP/crust_mcp_cli/worked_session/cornellbox.usda +layer: $DIR/cornellbox_lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-8e3a0cbcd6f4b7b0-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-8e3a0cbcd6f4b7b0-1.digest new file mode 100644 index 000000000..4aa5e56c4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-8e3a0cbcd6f4b7b0-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 32, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox_lookdev.usda", "$TMP/crust_mcp_cli/worked_session/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $TMP/crust_mcp_cli/worked_session/cornellbox.usda +layer: $DIR/cornellbox_lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-937b5a30e0d1b2a9-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-937b5a30e0d1b2a9-1.digest new file mode 100644 index 000000000..e3ee26e2b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-937b5a30e0d1b2a9-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox_lookdev.usda", "$TMP/crust_mcp_cli/worked_session/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $TMP/crust_mcp_cli/worked_session/cornellbox.usda +layer: $DIR/cornellbox_lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-a0bb21684d68d231-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-a0bb21684d68d231-1.digest new file mode 100644 index 000000000..e3ee26e2b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-a0bb21684d68d231-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox_lookdev.usda", "$TMP/crust_mcp_cli/worked_session/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $TMP/crust_mcp_cli/worked_session/cornellbox.usda +layer: $DIR/cornellbox_lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-f5ac4ca7187d0afa-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-f5ac4ca7187d0afa-1.digest new file mode 100644 index 000000000..b4c98896c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-f5ac4ca7187d0afa-1.digest @@ -0,0 +1,44 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox_lookdev.usda", "$TMP/crust_mcp_cli/worked_session/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $TMP/crust_mcp_cli/worked_session/cornellbox.usda +layer: $DIR/cornellbox_lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 2 +light 0: dome name Some("/scene/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/scene/key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 824, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1584, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 5: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f2afad713c5cb01d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:f2afad713c5cb01d +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance light /scene/key: LightOrigin { index: 1, geoms: 5..6 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance geometry 5..6: /scene/key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-021e0477d02e8b56-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-021e0477d02e8b56-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-021e0477d02e8b56-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-08de1880a086a764-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-08de1880a086a764-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-08de1880a086a764-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-15e73f9974620a1a-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-15e73f9974620a1a-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-15e73f9974620a1a-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-16d2af5b91e595bd-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-16d2af5b91e595bd-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-16d2af5b91e595bd-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-1aeeae0fba6dbe97-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-1aeeae0fba6dbe97-1.digest new file mode 100644 index 000000000..23ff98f56 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-1aeeae0fba6dbe97-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-248f67f6240f7680-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-248f67f6240f7680-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-248f67f6240f7680-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-254e9b608e6c20f0-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-254e9b608e6c20f0-1.digest new file mode 100644 index 000000000..953b46543 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-254e9b608e6c20f0-1.digest @@ -0,0 +1,39 @@ +time: None +working space: lin_rec709 +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-265ef4c54c4d2534-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-265ef4c54c4d2534-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-265ef4c54c4d2534-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2711a47b10d83a96-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2711a47b10d83a96-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2711a47b10d83a96-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-3.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-3.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-4.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-4.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-5.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-5.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-5.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-6.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-6.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-6.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2cf51e7bf43f4fa8-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2cf51e7bf43f4fa8-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2cf51e7bf43f4fa8-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-3.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-3.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a12e7835578a84e-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a12e7835578a84e-1.digest new file mode 100644 index 000000000..99a6fa0f0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a12e7835578a84e-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a2af9f3e570b458-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a2af9f3e570b458-1.digest new file mode 100644 index 000000000..7ab7c87a1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a2af9f3e570b458-1.digest @@ -0,0 +1,39 @@ +time: Some(10.5) +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 10, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c316a1edd099ef0-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c316a1edd099ef0-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c316a1edd099ef0-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c74fafa1c66c123-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c74fafa1c66c123-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c74fafa1c66c123-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3cac72b0550f05b3-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3cac72b0550f05b3-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3cac72b0550f05b3-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-450b164daa4e0f80-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-450b164daa4e0f80-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-450b164daa4e0f80-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-48a104b8a2799466-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-48a104b8a2799466-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-48a104b8a2799466-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-518e1fd5063f7227-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-518e1fd5063f7227-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-518e1fd5063f7227-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-10.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-10.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-10.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-11.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-11.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-11.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-12.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-12.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-12.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-13.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-13.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-13.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-14.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-14.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-14.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-15.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-15.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-15.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-16.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-16.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-16.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-17.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-17.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-17.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-18.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-18.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-18.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-19.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-19.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-19.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-20.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-20.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-20.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-21.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-21.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-21.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-22.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-22.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-22.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-23.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-23.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-23.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-24.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-24.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-24.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-25.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-25.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-25.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-3.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-3.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-4.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-4.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-5.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-5.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-5.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-6.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-6.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-6.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-7.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-7.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-7.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-8.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-8.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-8.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-9.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-9.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-9.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5d064faa753e9d7b-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5d064faa753e9d7b-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5d064faa753e9d7b-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5e1b400d2f0d70bc-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5e1b400d2f0d70bc-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5e1b400d2f0d70bc-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5ff835103ecfad3e-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5ff835103ecfad3e-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5ff835103ecfad3e-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61a13a775605a0ce-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61a13a775605a0ce-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61a13a775605a0ce-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61e87f520a6a2dff-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61e87f520a6a2dff-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61e87f520a6a2dff-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-63b1f6980e443f71-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-63b1f6980e443f71-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-63b1f6980e443f71-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67753350f4f997a4-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67753350f4f997a4-1.digest new file mode 100644 index 000000000..9d760267f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67753350f4f997a4-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MtlxLibraryUnreadable, kind: Skipped, count: 1, prims: [], message: "PXR_MTLX_PLUGIN_SEARCH_PATHS: $TMP/crust_check_cli/mtlx_library/lib/broken.mtlx cannot be read (malformed XML: the root node was opened but never closed) — its MaterialX node definitions are not loaded" } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [NodeDef { name: "studio_mix", node: "studio_mix", inputs: [DefInput { name: "fg_color", type_name: "color3", value: Some(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 3 }), text: Some("0, 0, 0") }, DefInput { name: "bg_color", type_name: "color3", value: Some(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 3 }), text: Some("0, 0, 0") }, DefInput { name: "amount", type_name: "float", value: Some(Val { v: [0.5, 0.5, 0.5, 0.5], arity: 1 }), text: Some("0.5") }], outputs: [DefOutput { name: "blended", type_name: "color3" }], inherit: None, version: None, default_version: false }], by_name: {"studio_mix": 0}, impls: {"studio_mix": Implementation { name: "NG_studio_mix", nodedef: "studio_mix", nodes: [Node { category: "mix", name: "mix", type_name: "color3", inputs: [Input { name: "bg", type_name: "color3", source: Value(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 1 }), colorspace: None, text: None, interface: Some("bg_color") }, Input { name: "fg", type_name: "color3", source: Value(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 1 }), colorspace: None, text: None, interface: Some("fg_color") }, Input { name: "mix", type_name: "float", source: Value(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 1 }), colorspace: None, text: None, interface: Some("amount") }], graph: Some("NG_studio_mix"), version: None, colorspace: None }], outputs: [ImplOutput { name: "blended", type_name: "color3", node: "mix", output: None }] }}, files: ["$TMP/crust_check_cli/mtlx_library/lib/studio/studio_nodes.mtlx"] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67d6afd449214b25-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67d6afd449214b25-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67d6afd449214b25-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7300aa94ecae6c37-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7300aa94ecae6c37-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7300aa94ecae6c37-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7478515f32354718-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7478515f32354718-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7478515f32354718-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7ba56e4f79d4195f-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7ba56e4f79d4195f-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7ba56e4f79d4195f-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7e55fcb3620f4663-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7e55fcb3620f4663-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7e55fcb3620f4663-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7f63dd70a33e2183-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7f63dd70a33e2183-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7f63dd70a33e2183-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-3.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-3.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-4.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-4.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88df24aa0618a335-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88df24aa0618a335-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88df24aa0618a335-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88e25ed80282bc79-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88e25ed80282bc79-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88e25ed80282bc79-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88eeabb6ac92eef4-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88eeabb6ac92eef4-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88eeabb6ac92eef4-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-89c626c1e078ca38-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-89c626c1e078ca38-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-89c626c1e078ca38-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8e692f67a3c276f4-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8e692f67a3c276f4-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8e692f67a3c276f4-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8ecb1db3e29a9e13-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8ecb1db3e29a9e13-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8ecb1db3e29a9e13-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-93e84687c267227a-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-93e84687c267227a-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-93e84687c267227a-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9514c8683d2c9e4d-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9514c8683d2c9e4d-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9514c8683d2c9e4d-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-96761b8033e5fb3c-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-96761b8033e5fb3c-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-96761b8033e5fb3c-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-987ee05acd715dfa-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-987ee05acd715dfa-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-987ee05acd715dfa-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-99aef82ca410b677-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-99aef82ca410b677-1.digest new file mode 100644 index 000000000..35aa92aab --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-99aef82ca410b677-1.digest @@ -0,0 +1,40 @@ +time: Some(42.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 42, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(42.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9a0515f0d918dd40-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9a0515f0d918dd40-1.digest new file mode 100644 index 000000000..db8cffa50 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9a0515f0d918dd40-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-10.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-10.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-10.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-100.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-100.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-100.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-101.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-101.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-101.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-102.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-102.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-102.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-103.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-103.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-103.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-104.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-104.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-104.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-105.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-105.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-105.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-106.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-106.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-106.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-107.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-107.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-107.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-108.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-108.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-108.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-109.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-109.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-109.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-11.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-11.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-11.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-110.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-110.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-110.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-111.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-111.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-111.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-112.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-112.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-112.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-113.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-113.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-113.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-114.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-114.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-114.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-115.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-115.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-115.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-116.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-116.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-116.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-117.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-117.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-117.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-118.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-118.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-118.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-119.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-119.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-119.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-12.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-12.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-12.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-120.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-120.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-120.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-121.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-121.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-121.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-122.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-122.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-122.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-123.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-123.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-123.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-124.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-124.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-124.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-125.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-125.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-125.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-126.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-126.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-126.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-127.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-127.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-127.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-128.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-128.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-128.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-129.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-129.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-129.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-13.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-13.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-13.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-130.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-130.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-130.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-131.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-131.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-131.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-132.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-132.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-132.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-133.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-133.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-133.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-134.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-134.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-134.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-135.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-135.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-135.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-136.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-136.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-136.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-137.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-137.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-137.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-138.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-138.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-138.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-139.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-139.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-139.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-14.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-14.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-14.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-140.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-140.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-140.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-141.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-141.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-141.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-142.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-142.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-142.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-143.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-143.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-143.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-144.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-144.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-144.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-145.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-145.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-145.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-146.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-146.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-146.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-147.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-147.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-147.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-148.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-148.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-148.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-149.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-149.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-149.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-15.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-15.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-15.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-150.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-150.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-150.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-151.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-151.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-151.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-152.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-152.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-152.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-153.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-153.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-153.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-154.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-154.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-154.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-155.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-155.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-155.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-156.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-156.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-156.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-157.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-157.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-157.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-158.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-158.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-158.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-159.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-159.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-159.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-16.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-16.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-16.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-160.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-160.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-160.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-161.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-161.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-161.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-162.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-162.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-162.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-163.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-163.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-163.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-164.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-164.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-164.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-165.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-165.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-165.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-166.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-166.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-166.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-167.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-167.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-167.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-168.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-168.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-168.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-169.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-169.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-169.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-17.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-17.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-17.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-170.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-170.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-170.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-171.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-171.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-171.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-172.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-172.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-172.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-173.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-173.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-173.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-174.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-174.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-174.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-175.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-175.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-175.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-176.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-176.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-176.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-177.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-177.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-177.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-178.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-178.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-178.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-179.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-179.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-179.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-18.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-18.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-18.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-180.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-180.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-180.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-181.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-181.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-181.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-182.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-182.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-182.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-183.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-183.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-183.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-184.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-184.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-184.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-185.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-185.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-185.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-186.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-186.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-186.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-187.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-187.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-187.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-188.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-188.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-188.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-189.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-189.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-189.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-19.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-19.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-19.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-190.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-190.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-190.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-191.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-191.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-191.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-192.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-192.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-192.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-20.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-20.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-20.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-21.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-21.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-21.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-22.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-22.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-22.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-23.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-23.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-23.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-24.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-24.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-24.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-25.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-25.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-25.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-26.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-26.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-26.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-27.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-27.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-27.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-28.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-28.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-28.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-29.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-29.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-29.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-3.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-3.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-30.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-30.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-30.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-31.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-31.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-31.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-32.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-32.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-32.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-33.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-33.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-33.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-34.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-34.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-34.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-35.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-35.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-35.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-36.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-36.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-36.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-37.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-37.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-37.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-38.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-38.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-38.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-39.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-39.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-39.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-4.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-4.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-40.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-40.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-40.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-41.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-41.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-41.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-42.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-42.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-42.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-43.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-43.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-43.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-44.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-44.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-44.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-45.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-45.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-45.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-46.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-46.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-46.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-47.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-47.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-47.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-48.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-48.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-48.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-49.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-49.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-49.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-5.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-5.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-5.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-50.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-50.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-50.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-51.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-51.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-51.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-52.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-52.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-52.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-53.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-53.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-53.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-54.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-54.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-54.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-55.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-55.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-55.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-56.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-56.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-56.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-57.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-57.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-57.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-58.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-58.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-58.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-59.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-59.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-59.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-6.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-6.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-6.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-60.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-60.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-60.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-61.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-61.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-61.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-62.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-62.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-62.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-63.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-63.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-63.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-64.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-64.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-64.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-65.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-65.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-65.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-66.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-66.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-66.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-67.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-67.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-67.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-68.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-68.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-68.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-69.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-69.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-69.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-7.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-7.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-7.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-70.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-70.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-70.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-71.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-71.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-71.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-72.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-72.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-72.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-73.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-73.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-73.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-74.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-74.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-74.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-75.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-75.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-75.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-76.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-76.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-76.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-77.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-77.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-77.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-78.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-78.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-78.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-79.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-79.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-79.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-8.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-8.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-8.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-80.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-80.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-80.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-81.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-81.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-81.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-82.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-82.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-82.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-83.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-83.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-83.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-84.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-84.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-84.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-85.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-85.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-85.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-86.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-86.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-86.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-87.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-87.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-87.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-88.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-88.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-88.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-89.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-89.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-89.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-9.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-9.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-9.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-90.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-90.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-90.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-91.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-91.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-91.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-92.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-92.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-92.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-93.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-93.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-93.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-94.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-94.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-94.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-95.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-95.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-95.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-96.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-96.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-96.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-97.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-97.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-97.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-98.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-98.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-98.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-99.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-99.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-99.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a06c636245c00028-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a06c636245c00028-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a06c636245c00028-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-3.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-3.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-4.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-4.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-5.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-5.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-5.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-6.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-6.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-6.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a1b6b7b33175c629-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a1b6b7b33175c629-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a1b6b7b33175c629-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a6c99e7589fd5bbe-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a6c99e7589fd5bbe-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a6c99e7589fd5bbe-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-3.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-3.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-4.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-4.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b194c866668b8c75-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b194c866668b8c75-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b194c866668b8c75-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b32b870ba5ca59f9-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b32b870ba5ca59f9-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b32b870ba5ca59f9-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b3d2bc2ed9037c82-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b3d2bc2ed9037c82-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b3d2bc2ed9037c82-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b62de59b31ca0e80-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b62de59b31ca0e80-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b62de59b31ca0e80-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b6c7e44d8560abd5-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b6c7e44d8560abd5-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b6c7e44d8560abd5-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-3.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-3.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-4.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-4.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-5.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-5.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-5.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-be34c0d526943796-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-be34c0d526943796-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-be34c0d526943796-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cb7b0dee2139a326-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cb7b0dee2139a326-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cb7b0dee2139a326-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cdab40c0e9cba23f-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cdab40c0e9cba23f-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cdab40c0e9cba23f-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cf47b345f0453895-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cf47b345f0453895-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cf47b345f0453895-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d3d144cf7b8b758b-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d3d144cf7b8b758b-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d3d144cf7b8b758b-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-da1f2707813489ef-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-da1f2707813489ef-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-da1f2707813489ef-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-3.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-3.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-3.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-3.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-4.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-4.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ec6907d7b5edc24c-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ec6907d7b5edc24c-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ec6907d7b5edc24c-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ed05b9821202ec22-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ed05b9821202ec22-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ed05b9821202ec22-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-efc8f2e410ea1edf-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-efc8f2e410ea1edf-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-efc8f2e410ea1edf-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0235d211948c8ae-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0235d211948c8ae-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0235d211948c8ae-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0d9751b5af0e124-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0d9751b5af0e124-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0d9751b5af0e124-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-3.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-3.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-4.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-4.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f52f4933a61a7b17-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f52f4933a61a7b17-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f52f4933a61a7b17-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f72ab0ee474423bf-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f72ab0ee474423bf-1.digest new file mode 100644 index 000000000..e24e32db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f72ab0ee474423bf-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-3.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-3.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-2.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-2.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-3.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-3.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-4.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-4.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-fc498f82a9cb979f-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-fc498f82a9cb979f-1.digest new file mode 100644 index 000000000..96a44f5fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-fc498f82a9cb979f-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $DIR/cornellbox.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/counters_usda-4398822590228cb6-1.digest b/crates/crust-core/tests/data/import_baselines/counters_usda-4398822590228cb6-1.digest new file mode 100644 index 000000000..ec3270392 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/counters_usda-4398822590228cb6-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 7, max_depth: 3, width: 32, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 16 }, min_samples_per_pixel: 2, variance_threshold: 0.1, adaptive_neighbour_tolerance: 1.0, frame: 4, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Gaussian { radius: 2.5 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 4, light_samples_indirect: 2, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/counters.usda"], invisible_overrides: Some(0) } +layer: $DIR/counters.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/curves_usda-49b1041fa43b5df8-1.digest b/crates/crust-core/tests/data/import_baselines/curves_usda-49b1041fa43b5df8-1.digest new file mode 100644 index 000000000..b652b8b8a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/curves_usda-49b1041fa43b5df8-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Cd", name: "Cd", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Color }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/curves.usda"], invisible_overrides: Some(0) } +layer: $DIR/curves.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 2, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=2:44e8865770fd46d9 camera=2:44e8865770fd46d9 shadow=2:44e8865770fd46d9 indirect=2:44e8865770fd46d9 +provenance light /World/dome: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/hair +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-1.digest b/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-1.digest new file mode 100644 index 000000000..d627e2603 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-1.digest @@ -0,0 +1,31 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 5.0), lower_left_corner: Vec3A(-4.365625, -3.1656249, -5.0), horizontal: Vec3A(8.73125, 0.0, 0.0), vertical: Vec3A(0.0, 8.73125, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 8, max_depth: 4, width: 64, height: 64, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 64 }, min_samples_per_pixel: 4, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/curves.usda"], invisible_overrides: Some(0) } +layer: $DIR/curves.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 3, cubic_curve_spans: 3, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=3:5349774d74e4fa10 camera=3:5349774d74e4fa10 shadow=3:5349774d74e4fa10 indirect=3:5349774d74e4fa10 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=3:e84a09b0d8770e4b camera=3:e84a09b0d8770e4b shadow=3:e84a09b0d8770e4b indirect=3:e84a09b0d8770e4b +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 4..4 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Tripod +provenance geometry 3..4: /World/Tuft +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-2.digest b/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-2.digest new file mode 100644 index 000000000..d627e2603 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-2.digest @@ -0,0 +1,31 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 5.0), lower_left_corner: Vec3A(-4.365625, -3.1656249, -5.0), horizontal: Vec3A(8.73125, 0.0, 0.0), vertical: Vec3A(0.0, 8.73125, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 8, max_depth: 4, width: 64, height: 64, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 64 }, min_samples_per_pixel: 4, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/curves.usda"], invisible_overrides: Some(0) } +layer: $DIR/curves.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 3, cubic_curve_spans: 3, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=3:5349774d74e4fa10 camera=3:5349774d74e4fa10 shadow=3:5349774d74e4fa10 indirect=3:5349774d74e4fa10 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=3:e84a09b0d8770e4b camera=3:e84a09b0d8770e4b shadow=3:e84a09b0d8770e4b indirect=3:e84a09b0d8770e4b +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 4..4 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Tripod +provenance geometry 3..4: /World/Tuft +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/curves_usda-6c82e9cb233e7c1e-1.digest b/crates/crust-core/tests/data/import_baselines/curves_usda-6c82e9cb233e7c1e-1.digest new file mode 100644 index 000000000..d627e2603 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/curves_usda-6c82e9cb233e7c1e-1.digest @@ -0,0 +1,31 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 5.0), lower_left_corner: Vec3A(-4.365625, -3.1656249, -5.0), horizontal: Vec3A(8.73125, 0.0, 0.0), vertical: Vec3A(0.0, 8.73125, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 8, max_depth: 4, width: 64, height: 64, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 64 }, min_samples_per_pixel: 4, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/curves.usda"], invisible_overrides: Some(0) } +layer: $DIR/curves.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 3, cubic_curve_spans: 3, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=3:5349774d74e4fa10 camera=3:5349774d74e4fa10 shadow=3:5349774d74e4fa10 indirect=3:5349774d74e4fa10 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=3:e84a09b0d8770e4b camera=3:e84a09b0d8770e4b shadow=3:e84a09b0d8770e4b indirect=3:e84a09b0d8770e4b +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 4..4 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Tripod +provenance geometry 3..4: /World/Tuft +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/curves_usda-bf538717464b4055-1.digest b/crates/crust-core/tests/data/import_baselines/curves_usda-bf538717464b4055-1.digest new file mode 100644 index 000000000..d627e2603 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/curves_usda-bf538717464b4055-1.digest @@ -0,0 +1,31 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 5.0), lower_left_corner: Vec3A(-4.365625, -3.1656249, -5.0), horizontal: Vec3A(8.73125, 0.0, 0.0), vertical: Vec3A(0.0, 8.73125, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 8, max_depth: 4, width: 64, height: 64, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 64 }, min_samples_per_pixel: 4, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/curves.usda"], invisible_overrides: Some(0) } +layer: $DIR/curves.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 3, cubic_curve_spans: 3, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=3:5349774d74e4fa10 camera=3:5349774d74e4fa10 shadow=3:5349774d74e4fa10 indirect=3:5349774d74e4fa10 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=3:e84a09b0d8770e4b camera=3:e84a09b0d8770e4b shadow=3:e84a09b0d8770e4b indirect=3:e84a09b0d8770e4b +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 4..4 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Tripod +provenance geometry 3..4: /World/Tuft +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/curves_usda-e59f2a157a03b823-1.digest b/crates/crust-core/tests/data/import_baselines/curves_usda-e59f2a157a03b823-1.digest new file mode 100644 index 000000000..717e1fe49 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/curves_usda-e59f2a157a03b823-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 5.0), lower_left_corner: Vec3A(-4.365625, -3.1656249, -5.0), horizontal: Vec3A(8.73125, 0.0, 0.0), vertical: Vec3A(0.0, 8.73125, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 8, max_depth: 4, width: 64, height: 64, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 64 }, min_samples_per_pixel: 4, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/curves.usda"], invisible_overrides: Some(0) } +layer: $DIR/curves.usda +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 3, cubic_curve_spans: 3, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=3:5349774d74e4fa10 camera=3:5349774d74e4fa10 shadow=3:5349774d74e4fa10 indirect=3:5349774d74e4fa10 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=3:e84a09b0d8770e4b camera=3:e84a09b0d8770e4b shadow=3:e84a09b0d8770e4b indirect=3:e84a09b0d8770e4b +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 4..4 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Tripod +provenance geometry 3..4: /World/Tuft +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cycle_usda-6c5127dceb205457-1.digest b/crates/crust-core/tests/data/import_baselines/cycle_usda-6c5127dceb205457-1.digest new file mode 100644 index 000000000..eb99622bc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cycle_usda-6c5127dceb205457-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: [], display_filters: ["/Render/first", "/Render/second"], display: "beauty" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cycle.usda"], invisible_overrides: Some(0) } +layer: $DIR/cycle.usda +warning: Warning { code: PrecompCycle, kind: Refused, count: 1, prims: ["/Render/first"], message: "/Render/first: input \"in\" = \"second\" reads a display filter that runs at or after this one; it reads its clear value" } +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cyl_far_usda-14bf93b40e3110ed-1.digest b/crates/crust-core/tests/data/import_baselines/cyl_far_usda-14bf93b40e3110ed-1.digest new file mode 100644 index 000000000..7bc29c051 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cyl_far_usda-14bf93b40e3110ed-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cyl_far.usda"], invisible_overrides: Some(0) } +layer: $DIR/cyl_far.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=64:10101a617316464d camera=64:10101a617316464d shadow=64:10101a617316464d indirect=64:10101a617316464d +provenance geometry 0..1: /W/C +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13212365895451826409, n_points: 66, n_indices: 160, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cyl_near_usda-8880b5f4401667ce-1.digest b/crates/crust-core/tests/data/import_baselines/cyl_near_usda-8880b5f4401667ce-1.digest new file mode 100644 index 000000000..a648382ff --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cyl_near_usda-8880b5f4401667ce-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cyl_near.usda"], invisible_overrides: Some(0) } +layer: $DIR/cyl_near.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 164, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 164, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=164:ab38c1554f88762d camera=164:ab38c1554f88762d shadow=164:ab38c1554f88762d indirect=164:ab38c1554f88762d +provenance geometry 0..1: /W/C +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14166617919414075720, n_points: 166, n_indices: 410, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cyl_proto_nested_usda-337785a80bd25b4b-1.digest b/crates/crust-core/tests/data/import_baselines/cyl_proto_nested_usda-337785a80bd25b4b-1.digest new file mode 100644 index 000000000..5f14ac9a3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cyl_proto_nested_usda-337785a80bd25b4b-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cyl_proto_nested.usda"], invisible_overrides: Some(0) } +layer: $DIR/cyl_proto_nested.usda +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 356, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:8f6c0c7270fd3449 camera=192:8f6c0c7270fd3449 shadow=192:8f6c0c7270fd3449 indirect=192:8f6c0c7270fd3449 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=164:ab38c1554f88762d camera=164:ab38c1554f88762d shadow=164:ab38c1554f88762d indirect=164:ab38c1554f88762d +provenance geometry 0..2: /W/A +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6877125351767401758, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14166617919414075720, n_points: 166, n_indices: 410, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cyl_proto_once_usda-5861fac834a9592e-1.digest b/crates/crust-core/tests/data/import_baselines/cyl_proto_once_usda-5861fac834a9592e-1.digest new file mode 100644 index 000000000..676d3b247 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cyl_proto_once_usda-5861fac834a9592e-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cyl_proto_once.usda"], invisible_overrides: Some(0) } +layer: $DIR/cyl_proto_once.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 164, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=164:ab38c1554f88762d camera=164:ab38c1554f88762d shadow=164:ab38c1554f88762d indirect=164:ab38c1554f88762d +provenance geometry 0..1: /W/A +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14166617919414075720, n_points: 166, n_indices: 410, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cyl_proto_twice_usda-9d0b4387b8ae21e9-1.digest b/crates/crust-core/tests/data/import_baselines/cyl_proto_twice_usda-9d0b4387b8ae21e9-1.digest new file mode 100644 index 000000000..0e06e22fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cyl_proto_twice_usda-9d0b4387b8ae21e9-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cyl_proto_twice.usda"], invisible_overrides: Some(0) } +layer: $DIR/cyl_proto_twice.usda +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:ecff048c981791c9 camera=192:ecff048c981791c9 shadow=192:ecff048c981791c9 indirect=192:ecff048c981791c9 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:8f6c0c7270fd3449 camera=192:8f6c0c7270fd3449 shadow=192:8f6c0c7270fd3449 indirect=192:8f6c0c7270fd3449 +provenance geometry 0..1: /W/B +provenance geometry 1..2: /W/A +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6877125351767401758, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cyl_unnamed_usda-6b8943ce79ec798b-1.digest b/crates/crust-core/tests/data/import_baselines/cyl_unnamed_usda-6b8943ce79ec798b-1.digest new file mode 100644 index 000000000..3f596d5e1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cyl_unnamed_usda-6b8943ce79ec798b-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/cyl_unnamed.usda"], invisible_overrides: Some(0) } +layer: $DIR/cyl_unnamed.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:8f6c0c7270fd3449 camera=192:8f6c0c7270fd3449 shadow=192:8f6c0c7270fd3449 indirect=192:8f6c0c7270fd3449 +provenance geometry 0..1: /W/C +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6877125351767401758, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/cylinder_light_usda-a8869b560165f646-1.digest b/crates/crust-core/tests/data/import_baselines/cylinder_light_usda-a8869b560165f646-1.digest new file mode 100644 index 000000000..6d10d8b76 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cylinder_light_usda-a8869b560165f646-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/cylinder_light.usda"], invisible_overrides: Some(0) } +layer: $DIR/cylinder_light.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/C") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 1, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 1, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9912a39cdf05f485 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9912a39cdf05f485 +provenance light /World/C: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dangling_usda-33cdcee1c03a3f62-1.digest b/crates/crust-core/tests/data/import_baselines/dangling_usda-33cdcee1c03a3f62-1.digest new file mode 100644 index 000000000..761cc2fbb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dangling_usda-33cdcee1c03a3f62-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/dangling.usda"], invisible_overrides: Some(0) } +layer: $DIR/dangling.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/World/Nope"], message: "Material at /World/Nope not resolvable — using default grey OpenPBR" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Nope: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/default_links_usda-fa4bfc17658672ca-1.digest b/crates/crust-core/tests/data/import_baselines/default_links_usda-fa4bfc17658672ca-1.digest new file mode 100644 index 000000000..0432e7c6c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/default_links_usda-fa4bfc17658672ca-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/default_links.usda"], invisible_overrides: Some(0) } +layer: $DIR/default_links.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/L") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7fd943913c47476d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:7fd943913c47476d +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/L +provenance geometry 1..2: /World/Ball +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/degenerate_lights_usda-c119df2817a52e22-1.digest b/crates/crust-core/tests/data/import_baselines/degenerate_lights_usda-c119df2817a52e22-1.digest new file mode 100644 index 000000000..7298948f9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/degenerate_lights_usda-c119df2817a52e22-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/degenerate_lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/degenerate_lights.usda +warning: Warning { code: LightDegenerateShape, kind: Skipped, count: 2, prims: ["/World/b", "/World/a"], message: "RectLight at /World/b: width 0 × height 1 must be finite and positive — skipped" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dicing_alone_ref_usda-ad2f6d6f9f5a6b34-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_alone_ref_usda-ad2f6d6f9f5a6b34-1.digest new file mode 100644 index 000000000..2c62796f7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_alone_ref_usda-ad2f6d6f9f5a6b34-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Near") +camera: Camera { origin: Vec3A(0.0, 0.0, -300.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -310.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dicing_alone_ref.usda"], invisible_overrides: Some(0) } +layer: $DIR/dicing_alone_ref.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:1194b7104219a451 camera=192:1194b7104219a451 shadow=192:1194b7104219a451 indirect=192:1194b7104219a451 +provenance geometry 0..1: /W/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 3281387520, 1150494134, 0, 0, 3281387520, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dicing_alone_usda-d2a904287b895157-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_alone_usda-d2a904287b895157-1.digest new file mode 100644 index 000000000..4fd04aa9d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_alone_usda-d2a904287b895157-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Near") +camera: Camera { origin: Vec3A(0.0, 0.0, -300.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -310.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dicing_alone.usda"], invisible_overrides: Some(0) } +layer: $DIR/dicing_alone.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:1194b7104219a451 camera=192:1194b7104219a451 shadow=192:1194b7104219a451 indirect=192:1194b7104219a451 +provenance geometry 0..1: /W/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 3281387520, 1150494134, 0, 0, 3281387520, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: Some("/W/Near"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dicing_near_usda-2b8cc53942e05573-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_near_usda-2b8cc53942e05573-1.digest new file mode 100644 index 000000000..82581e465 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_near_usda-2b8cc53942e05573-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dicing_near.usda"], invisible_overrides: Some(0) } +layer: $DIR/dicing_near.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:1194b7104219a451 camera=192:1194b7104219a451 shadow=192:1194b7104219a451 indirect=192:1194b7104219a451 +provenance geometry 0..1: /W/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 3281387520, 1150494134, 0, 0, 3281387520, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: Some("/W/Near"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dicing_nothing_usda-02863a7cb9ea2edb-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_nothing_usda-02863a7cb9ea2edb-1.digest new file mode 100644 index 000000000..b06487ea6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_nothing_usda-02863a7cb9ea2edb-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dicing_nothing.usda"], invisible_overrides: Some(0) } +layer: $DIR/dicing_nothing.usda +warning: Warning { code: CameraDicingNotCamera, kind: Approximated, count: 1, prims: ["/W/Nope"], message: "crust:dicingCamera targets /W/Nope, which is not a camera on this stage — tessellation reads the render camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 108, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 108, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=108:41f7acd20ed8a21b camera=108:41f7acd20ed8a21b shadow=108:41f7acd20ed8a21b indirect=108:41f7acd20ed8a21b +provenance geometry 0..1: /W/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11641728572909156760, n_points: 56, n_indices: 324, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dicing_product_diced_usda-bde5502fcf67625f-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_product_diced_usda-bde5502fcf67625f-1.digest new file mode 100644 index 000000000..455e0eb32 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_product_diced_usda-bde5502fcf67625f-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Near") +camera: Camera { origin: Vec3A(0.0, 0.0, -300.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -310.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "", vars: [], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dicing_product_diced.usda"], invisible_overrides: Some(0) } +layer: $DIR/dicing_product_diced.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 108, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 108, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=108:41f7acd20ed8a21b camera=108:41f7acd20ed8a21b shadow=108:41f7acd20ed8a21b indirect=108:41f7acd20ed8a21b +provenance geometry 0..1: /W/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11641728572909156760, n_points: 56, n_indices: 324, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: Some("/W/Cam"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dicing_product_ref_cam_usda-206ed631706e669f-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_product_ref_cam_usda-206ed631706e669f-1.digest new file mode 100644 index 000000000..e14a68e9c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_product_ref_cam_usda-206ed631706e669f-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dicing_product_ref_cam.usda"], invisible_overrides: Some(0) } +layer: $DIR/dicing_product_ref_cam.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 108, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 108, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=108:41f7acd20ed8a21b camera=108:41f7acd20ed8a21b shadow=108:41f7acd20ed8a21b indirect=108:41f7acd20ed8a21b +provenance geometry 0..1: /W/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11641728572909156760, n_points: 56, n_indices: 324, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dicing_product_ref_near_usda-a7f21d55b08b22eb-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_product_ref_near_usda-a7f21d55b08b22eb-1.digest new file mode 100644 index 000000000..dc7477ae9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_product_ref_near_usda-a7f21d55b08b22eb-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Near") +camera: Camera { origin: Vec3A(0.0, 0.0, -300.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -310.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dicing_product_ref_near.usda"], invisible_overrides: Some(0) } +layer: $DIR/dicing_product_ref_near.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:1194b7104219a451 camera=192:1194b7104219a451 shadow=192:1194b7104219a451 indirect=192:1194b7104219a451 +provenance geometry 0..1: /W/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 3281387520, 1150494134, 0, 0, 3281387520, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dicing_product_usda-0fe0e77ccc289c1f-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_product_usda-0fe0e77ccc289c1f-1.digest new file mode 100644 index 000000000..3e58474a9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_product_usda-0fe0e77ccc289c1f-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Near") +camera: Camera { origin: Vec3A(0.0, 0.0, -300.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -310.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "", vars: [], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dicing_product.usda"], invisible_overrides: Some(0) } +layer: $DIR/dicing_product.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:1194b7104219a451 camera=192:1194b7104219a451 shadow=192:1194b7104219a451 indirect=192:1194b7104219a451 +provenance geometry 0..1: /W/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 3281387520, 1150494134, 0, 0, 3281387520, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dicing_property_usda-541c1a7591a9b5c0-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_property_usda-541c1a7591a9b5c0-1.digest new file mode 100644 index 000000000..68ea3c0be --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_property_usda-541c1a7591a9b5c0-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dicing_property.usda"], invisible_overrides: Some(0) } +layer: $DIR/dicing_property.usda +warning: Warning { code: CameraDicingNotCamera, kind: Approximated, count: 1, prims: ["/W/Near.focalLength"], message: "crust:dicingCamera targets /W/Near.focalLength, which is not a camera on this stage — tessellation reads the render camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 108, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 108, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=108:41f7acd20ed8a21b camera=108:41f7acd20ed8a21b shadow=108:41f7acd20ed8a21b indirect=108:41f7acd20ed8a21b +provenance geometry 0..1: /W/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11641728572909156760, n_points: 56, n_indices: 324, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dicing_ref_usda-450597df8121a96c-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_ref_usda-450597df8121a96c-1.digest new file mode 100644 index 000000000..2c38b4ef7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_ref_usda-450597df8121a96c-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dicing_ref.usda"], invisible_overrides: Some(0) } +layer: $DIR/dicing_ref.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 108, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 108, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=108:41f7acd20ed8a21b camera=108:41f7acd20ed8a21b shadow=108:41f7acd20ed8a21b indirect=108:41f7acd20ed8a21b +provenance geometry 0..1: /W/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11641728572909156760, n_points: 56, n_indices: 324, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dicing_self_usda-9d54e5a1b138ff5e-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_self_usda-9d54e5a1b138ff5e-1.digest new file mode 100644 index 000000000..80e6dbc91 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_self_usda-9d54e5a1b138ff5e-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dicing_self.usda"], invisible_overrides: Some(0) } +layer: $DIR/dicing_self.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 108, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 108, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=108:41f7acd20ed8a21b camera=108:41f7acd20ed8a21b shadow=108:41f7acd20ed8a21b indirect=108:41f7acd20ed8a21b +provenance geometry 0..1: /W/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11641728572909156760, n_points: 56, n_indices: 324, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: Some("/W/Cam"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dicing_through_near_usda-43e145636209967d-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_through_near_usda-43e145636209967d-1.digest new file mode 100644 index 000000000..bea575464 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_through_near_usda-43e145636209967d-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Near") +camera: Camera { origin: Vec3A(0.0, 0.0, -300.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -310.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dicing_through_near.usda"], invisible_overrides: Some(0) } +layer: $DIR/dicing_through_near.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:1194b7104219a451 camera=192:1194b7104219a451 shadow=192:1194b7104219a451 indirect=192:1194b7104219a451 +provenance geometry 0..1: /W/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 3281387520, 1150494134, 0, 0, 3281387520, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dicing_unauthored_usda-d941af55d3f95425-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_unauthored_usda-d941af55d3f95425-1.digest new file mode 100644 index 000000000..c3c8a3542 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_unauthored_usda-d941af55d3f95425-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dicing_unauthored.usda"], invisible_overrides: Some(0) } +layer: $DIR/dicing_unauthored.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 108, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 108, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=108:41f7acd20ed8a21b camera=108:41f7acd20ed8a21b shadow=108:41f7acd20ed8a21b indirect=108:41f7acd20ed8a21b +provenance geometry 0..1: /W/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11641728572909156760, n_points: 56, n_indices: 324, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dicing_unnamed_usda-1911d7362c693947-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_unnamed_usda-1911d7362c693947-1.digest new file mode 100644 index 000000000..d3de539bc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_unnamed_usda-1911d7362c693947-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Near") +camera: Camera { origin: Vec3A(0.0, 0.0, -300.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -310.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dicing_unnamed.usda"], invisible_overrides: Some(0) } +layer: $DIR/dicing_unnamed.usda +warning: Warning { code: SubdivAdaptiveNeedsCamera, kind: Approximated, count: 1, prims: [], message: "Adaptive subdivision (2 px) needs the render camera before the stage is read — name it with --camera or RenderSettings.camera, or a dicing camera with crust:dicingCamera. Using the uniform level 0" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:6c5a731a407aa3fd camera=12:6c5a731a407aa3fd shadow=12:6c5a731a407aa3fd indirect=12:6c5a731a407aa3fd +provenance geometry 0..1: /W/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dicing_xform_usda-fdb39a50b9314e69-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_xform_usda-fdb39a50b9314e69-1.digest new file mode 100644 index 000000000..3e6b1f02c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_xform_usda-fdb39a50b9314e69-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dicing_xform.usda"], invisible_overrides: Some(0) } +layer: $DIR/dicing_xform.usda +warning: Warning { code: CameraDicingNotCamera, kind: Approximated, count: 1, prims: ["/W/NotACamera"], message: "crust:dicingCamera targets /W/NotACamera, which is not a camera on this stage — tessellation reads the render camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 108, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 108, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=108:41f7acd20ed8a21b camera=108:41f7acd20ed8a21b shadow=108:41f7acd20ed8a21b indirect=108:41f7acd20ed8a21b +provenance geometry 0..1: /W/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11641728572909156760, n_points: 56, n_indices: 324, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/disabled_broken_usda-3e31009d90ef26ec-1.digest b/crates/crust-core/tests/data/import_baselines/disabled_broken_usda-3e31009d90ef26ec-1.digest new file mode 100644 index 000000000..4ee360dda --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/disabled_broken_usda-3e31009d90ef26ec-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/disabled_broken.usda"], invisible_overrides: Some(0) } +layer: $DIR/disabled_broken.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/disk_light_usda-720389dc27e2a4c4-1.digest b/crates/crust-core/tests/data/import_baselines/disk_light_usda-720389dc27e2a4c4-1.digest new file mode 100644 index 000000000..67ca82991 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/disk_light_usda-720389dc27e2a4c4-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/disk_light.usda"], invisible_overrides: Some(0) } +layer: $DIR/disk_light.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/D") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 1, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 1, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:33b018316f459432 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:33b018316f459432 +provenance light /World/D: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/D +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/displaced_rest_usda-d70fe6fb257dd183-1.digest b/crates/crust-core/tests/data/import_baselines/displaced_rest_usda-d70fe6fb257dd183-1.digest new file mode 100644 index 000000000..512e9c172 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/displaced_rest_usda-d70fe6fb257dd183-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/displaced_rest.usda"], invisible_overrides: Some(0) } +layer: $DIR/displaced_rest.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 768, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 768, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=768:7c1fe5ab3fe37ef1 camera=768:7c1fe5ab3fe37ef1 shadow=768:7c1fe5ab3fe37ef1 indirect=768:7c1fe5ab3fe37ef1 +provenance material /World/Puffed: MaterialOrigin { slots: [0], displaced: true } +provenance light /World/dome: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 890298128050539104, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/displacement_usda-03e54e80075ba30c-1.digest b/crates/crust-core/tests/data/import_baselines/displacement_usda-03e54e80075ba30c-1.digest new file mode 100644 index 000000000..a85c42864 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/displacement_usda-03e54e80075ba30c-1.digest @@ -0,0 +1,36 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 5.4), lower_left_corner: Vec3A(-7.551013, -5.6783953, -1.1365309), horizontal: Vec3A(15.102026, -0.0, 0.0), vertical: Vec3A(0.0, 7.35679, -4.247445), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.8660253, -0.5), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/displacement.usda"], invisible_overrides: Some(0) } +layer: $DIR/displacement.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 2, prims: [], message: "Asset loader does not decode UV textures: $DIR/textures/displacement_height.png ignored — the input falls back to its constant value." } +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 57346, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 57346, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=49152:588ea63489626d95 camera=49152:588ea63489626d95 shadow=49152:588ea63489626d95 indirect=49152:588ea63489626d95 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=8192:09a07fd1d7c1e185 camera=8192:09a07fd1d7c1e185 shadow=8192:09a07fd1d7c1e185 indirect=8192:09a07fd1d7c1e185 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7e019eeecf5cbbd6 camera=2:7e019eeecf5cbbd6 shadow=2:7e019eeecf5cbbd6 indirect=2:7e019eeecf5cbbd6 +provenance material /World/Materials/Height: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/HeightMtlx: MaterialOrigin { slots: [1], displaced: true } +provenance material /World/Materials/Puffed: MaterialOrigin { slots: [0], displaced: true } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 3..3 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Cube +provenance geometry 1..2: /World/GroundMtlx +provenance geometry 2..3: /World/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1464050912281562449, n_points: 24578, n_indices: 98304, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3365857826316044740, n_points: 4225, n_indices: 16384, n_uvs: Some(4225), smooth: true, material: 1 }), placements: 1, shared: false, displaced: true } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/displacement_usda-180936ed9cbacb0b-1.digest b/crates/crust-core/tests/data/import_baselines/displacement_usda-180936ed9cbacb0b-1.digest new file mode 100644 index 000000000..7d657948e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/displacement_usda-180936ed9cbacb0b-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 5.4), lower_left_corner: Vec3A(-7.551013, -5.6783953, -1.1365309), horizontal: Vec3A(15.102026, -0.0, 0.0), vertical: Vec3A(0.0, 7.35679, -4.247445), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.8660253, -0.5), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/displacement.usda"], invisible_overrides: Some(0) } +layer: $DIR/displacement.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 65536, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 65536, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=49152:588ea63489626d95 camera=49152:588ea63489626d95 shadow=49152:588ea63489626d95 indirect=49152:588ea63489626d95 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=8192:71bc9112dcaebc8d camera=8192:71bc9112dcaebc8d shadow=8192:71bc9112dcaebc8d indirect=8192:71bc9112dcaebc8d +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=8192:d4e6a20fb07b1349 camera=8192:d4e6a20fb07b1349 shadow=8192:d4e6a20fb07b1349 indirect=8192:d4e6a20fb07b1349 +provenance material /World/Materials/Height: MaterialOrigin { slots: [2], displaced: true } +provenance material /World/Materials/HeightMtlx: MaterialOrigin { slots: [1], displaced: true } +provenance material /World/Materials/Puffed: MaterialOrigin { slots: [0], displaced: true } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 3..3 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Cube +provenance geometry 1..2: /World/GroundMtlx +provenance geometry 2..3: /World/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1464050912281562449, n_points: 24578, n_indices: 98304, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3365857826316044740, n_points: 4225, n_indices: 16384, n_uvs: Some(4225), smooth: true, material: 1 }), placements: 1, shared: false, displaced: true } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3365857826316044740, n_points: 4225, n_indices: 16384, n_uvs: Some(4225), smooth: true, material: 2 }), placements: 1, shared: false, displaced: true } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/displacement_usda-4db664e792f21a27-1.digest b/crates/crust-core/tests/data/import_baselines/displacement_usda-4db664e792f21a27-1.digest new file mode 100644 index 000000000..7d657948e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/displacement_usda-4db664e792f21a27-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 5.4), lower_left_corner: Vec3A(-7.551013, -5.6783953, -1.1365309), horizontal: Vec3A(15.102026, -0.0, 0.0), vertical: Vec3A(0.0, 7.35679, -4.247445), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.8660253, -0.5), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/displacement.usda"], invisible_overrides: Some(0) } +layer: $DIR/displacement.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 65536, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 65536, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=49152:588ea63489626d95 camera=49152:588ea63489626d95 shadow=49152:588ea63489626d95 indirect=49152:588ea63489626d95 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=8192:71bc9112dcaebc8d camera=8192:71bc9112dcaebc8d shadow=8192:71bc9112dcaebc8d indirect=8192:71bc9112dcaebc8d +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=8192:d4e6a20fb07b1349 camera=8192:d4e6a20fb07b1349 shadow=8192:d4e6a20fb07b1349 indirect=8192:d4e6a20fb07b1349 +provenance material /World/Materials/Height: MaterialOrigin { slots: [2], displaced: true } +provenance material /World/Materials/HeightMtlx: MaterialOrigin { slots: [1], displaced: true } +provenance material /World/Materials/Puffed: MaterialOrigin { slots: [0], displaced: true } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 3..3 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Cube +provenance geometry 1..2: /World/GroundMtlx +provenance geometry 2..3: /World/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1464050912281562449, n_points: 24578, n_indices: 98304, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3365857826316044740, n_points: 4225, n_indices: 16384, n_uvs: Some(4225), smooth: true, material: 1 }), placements: 1, shared: false, displaced: true } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3365857826316044740, n_points: 4225, n_indices: 16384, n_uvs: Some(4225), smooth: true, material: 2 }), placements: 1, shared: false, displaced: true } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/displacement_usda-5e2aa9f4f1dfd37e-1.digest b/crates/crust-core/tests/data/import_baselines/displacement_usda-5e2aa9f4f1dfd37e-1.digest new file mode 100644 index 000000000..c8e5f687d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/displacement_usda-5e2aa9f4f1dfd37e-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 5.4), lower_left_corner: Vec3A(-7.551013, -5.6783953, -1.1365309), horizontal: Vec3A(15.102026, -0.0, 0.0), vertical: Vec3A(0.0, 7.35679, -4.247445), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.8660253, -0.5), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/displacement.usda"], invisible_overrides: Some(0) } +layer: $DIR/displacement.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 65536, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 65536, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=49152:588ea63489626d95 camera=49152:588ea63489626d95 shadow=49152:588ea63489626d95 indirect=49152:588ea63489626d95 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=8192:71bc9112dcaebc8d camera=8192:71bc9112dcaebc8d shadow=8192:71bc9112dcaebc8d indirect=8192:71bc9112dcaebc8d +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=8192:d4e6a20fb07b1349 camera=8192:d4e6a20fb07b1349 shadow=8192:d4e6a20fb07b1349 indirect=8192:d4e6a20fb07b1349 +provenance material /World/Materials/Height: MaterialOrigin { slots: [2], displaced: true } +provenance material /World/Materials/HeightMtlx: MaterialOrigin { slots: [1], displaced: true } +provenance material /World/Materials/Puffed: MaterialOrigin { slots: [0], displaced: true } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 3..3 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Cube +provenance geometry 1..2: /World/GroundMtlx +provenance geometry 2..3: /World/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1464050912281562449, n_points: 24578, n_indices: 98304, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3365857826316044740, n_points: 4225, n_indices: 16384, n_uvs: Some(4225), smooth: true, material: 1 }), placements: 1, shared: false, displaced: true } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3365857826316044740, n_points: 4225, n_indices: 16384, n_uvs: Some(4225), smooth: true, material: 2 }), placements: 1, shared: false, displaced: true } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-1.digest b/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-1.digest new file mode 100644 index 000000000..a85c42864 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-1.digest @@ -0,0 +1,36 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 5.4), lower_left_corner: Vec3A(-7.551013, -5.6783953, -1.1365309), horizontal: Vec3A(15.102026, -0.0, 0.0), vertical: Vec3A(0.0, 7.35679, -4.247445), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.8660253, -0.5), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/displacement.usda"], invisible_overrides: Some(0) } +layer: $DIR/displacement.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 2, prims: [], message: "Asset loader does not decode UV textures: $DIR/textures/displacement_height.png ignored — the input falls back to its constant value." } +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 57346, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 57346, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=49152:588ea63489626d95 camera=49152:588ea63489626d95 shadow=49152:588ea63489626d95 indirect=49152:588ea63489626d95 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=8192:09a07fd1d7c1e185 camera=8192:09a07fd1d7c1e185 shadow=8192:09a07fd1d7c1e185 indirect=8192:09a07fd1d7c1e185 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7e019eeecf5cbbd6 camera=2:7e019eeecf5cbbd6 shadow=2:7e019eeecf5cbbd6 indirect=2:7e019eeecf5cbbd6 +provenance material /World/Materials/Height: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/HeightMtlx: MaterialOrigin { slots: [1], displaced: true } +provenance material /World/Materials/Puffed: MaterialOrigin { slots: [0], displaced: true } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 3..3 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Cube +provenance geometry 1..2: /World/GroundMtlx +provenance geometry 2..3: /World/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1464050912281562449, n_points: 24578, n_indices: 98304, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3365857826316044740, n_points: 4225, n_indices: 16384, n_uvs: Some(4225), smooth: true, material: 1 }), placements: 1, shared: false, displaced: true } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-2.digest b/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-2.digest new file mode 100644 index 000000000..a85c42864 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-2.digest @@ -0,0 +1,36 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 5.4), lower_left_corner: Vec3A(-7.551013, -5.6783953, -1.1365309), horizontal: Vec3A(15.102026, -0.0, 0.0), vertical: Vec3A(0.0, 7.35679, -4.247445), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.8660253, -0.5), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/displacement.usda"], invisible_overrides: Some(0) } +layer: $DIR/displacement.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 2, prims: [], message: "Asset loader does not decode UV textures: $DIR/textures/displacement_height.png ignored — the input falls back to its constant value." } +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 57346, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 57346, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=49152:588ea63489626d95 camera=49152:588ea63489626d95 shadow=49152:588ea63489626d95 indirect=49152:588ea63489626d95 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=8192:09a07fd1d7c1e185 camera=8192:09a07fd1d7c1e185 shadow=8192:09a07fd1d7c1e185 indirect=8192:09a07fd1d7c1e185 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7e019eeecf5cbbd6 camera=2:7e019eeecf5cbbd6 shadow=2:7e019eeecf5cbbd6 indirect=2:7e019eeecf5cbbd6 +provenance material /World/Materials/Height: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/HeightMtlx: MaterialOrigin { slots: [1], displaced: true } +provenance material /World/Materials/Puffed: MaterialOrigin { slots: [0], displaced: true } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 3..3 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Cube +provenance geometry 1..2: /World/GroundMtlx +provenance geometry 2..3: /World/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1464050912281562449, n_points: 24578, n_indices: 98304, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3365857826316044740, n_points: 4225, n_indices: 16384, n_uvs: Some(4225), smooth: true, material: 1 }), placements: 1, shared: false, displaced: true } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dof_default_lens_usda-c199c396bb781cc0-1.digest b/crates/crust-core/tests/data/import_baselines/dof_default_lens_usda-c199c396bb781cc0-1.digest new file mode 100644 index 000000000..c21d5c753 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_default_lens_usda-c199c396bb781cc0-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-1.3591824, -0.7645401, -5.0), horizontal: Vec3A(2.7183647, 0.0, 0.0), vertical: Vec3A(0.0, 1.5290802, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 1.25, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 5.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/dof_default_lens.usda"], invisible_overrides: Some(0) } +layer: $DIR/dof_default_lens.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dof_default_usda-57e78e0586982b2f-1.digest b/crates/crust-core/tests/data/import_baselines/dof_default_usda-57e78e0586982b2f-1.digest new file mode 100644 index 000000000..3242cf3d9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_default_usda-57e78e0586982b2f-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dof_default.usda"], invisible_overrides: Some(0) } +layer: $DIR/dof_default.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dof_disabled_bad_unit_usda-b76c543fc6398eaa-1.digest b/crates/crust-core/tests/data/import_baselines/dof_disabled_bad_unit_usda-b76c543fc6398eaa-1.digest new file mode 100644 index 000000000..40c8de369 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_disabled_bad_unit_usda-b76c543fc6398eaa-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-1.3591824, -0.7645401, -5.0), horizontal: Vec3A(2.7183647, 0.0, 0.0), vertical: Vec3A(0.0, 1.5290802, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: false, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dof_disabled_bad_unit.usda"], invisible_overrides: Some(0) } +layer: $DIR/dof_disabled_bad_unit.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dof_disabled_usda-420b407ea5317d3e-1.digest b/crates/crust-core/tests/data/import_baselines/dof_disabled_usda-420b407ea5317d3e-1.digest new file mode 100644 index 000000000..10234998b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_disabled_usda-420b407ea5317d3e-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-1.3591824, -0.7645401, -5.0), horizontal: Vec3A(2.7183647, 0.0, 0.0), vertical: Vec3A(0.0, 1.5290802, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: false, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dof_disabled.usda"], invisible_overrides: Some(0) } +layer: $DIR/dof_disabled.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dof_fallback_lens_usda-bff40e44436746b1-1.digest b/crates/crust-core/tests/data/import_baselines/dof_fallback_lens_usda-bff40e44436746b1-1.digest new file mode 100644 index 000000000..51357adca --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_fallback_lens_usda-bff40e44436746b1-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/dof_fallback_lens.usda"], invisible_overrides: Some(0) } +layer: $DIR/dof_fallback_lens.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dof_fallback_pinhole_usda-c69160a93b244f8f-1.digest b/crates/crust-core/tests/data/import_baselines/dof_fallback_pinhole_usda-c69160a93b244f8f-1.digest new file mode 100644 index 000000000..5e45ca3ab --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_fallback_pinhole_usda-c69160a93b244f8f-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: false, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dof_fallback_pinhole.usda"], invisible_overrides: Some(0) } +layer: $DIR/dof_fallback_pinhole.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dof_product_off_usda-ec7655fdc64080b7-1.digest b/crates/crust-core/tests/data/import_baselines/dof_product_off_usda-ec7655fdc64080b7-1.digest new file mode 100644 index 000000000..f50e6a904 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_product_off_usda-ec7655fdc64080b7-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: false, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dof_product_off.usda"], invisible_overrides: Some(0) } +layer: $DIR/dof_product_off.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-642bf95d97820f23-1.digest b/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-642bf95d97820f23-1.digest new file mode 100644 index 000000000..01132337f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-642bf95d97820f23-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-1.3591824, -0.7645401, -5.0), horizontal: Vec3A(2.7183647, 0.0, 0.0), vertical: Vec3A(0.0, 1.5290802, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 1.25, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 5.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/dof_product_on.usda"], invisible_overrides: Some(0) } +layer: $DIR/dof_product_on.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-9b87c5f936703494-1.digest b/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-9b87c5f936703494-1.digest new file mode 100644 index 000000000..315c35a5f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-9b87c5f936703494-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dof_product_on.usda"], invisible_overrides: Some(0) } +layer: $DIR/dof_product_on.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dof_products_agree_usda-1f54c058d539370a-1.digest b/crates/crust-core/tests/data/import_baselines/dof_products_agree_usda-1f54c058d539370a-1.digest new file mode 100644 index 000000000..4cb8f46f0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_products_agree_usda-1f54c058d539370a-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: false, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/a", name: "a.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }, AovProduct { prim_path: "/Render/b", name: "b.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dof_products_agree.usda"], invisible_overrides: Some(0) } +layer: $DIR/dof_products_agree.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dof_products_differ_usda-a379642f2edc4361-1.digest b/crates/crust-core/tests/data/import_baselines/dof_products_differ_usda-a379642f2edc4361-1.digest new file mode 100644 index 000000000..ea609ddd0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_products_differ_usda-a379642f2edc4361-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: false, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/a", name: "a.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }, AovProduct { prim_path: "/Render/b", name: "b.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dof_products_differ.usda"], invisible_overrides: Some(0) } +layer: $DIR/dof_products_differ.usda +warning: Warning { code: ProductDepthOfFieldMismatch, kind: Approximated, count: 1, prims: ["/Render/b"], message: "/Render/b: asks for depth of field on, but the render has it off (the first product's); its file is written with that" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dof_products_disagree_usda-8e35ec3ea864f596-1.digest b/crates/crust-core/tests/data/import_baselines/dof_products_disagree_usda-8e35ec3ea864f596-1.digest new file mode 100644 index 000000000..5a9c1d2c7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_products_disagree_usda-8e35ec3ea864f596-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-1.3591824, -0.7645401, -5.0), horizontal: Vec3A(2.7183647, 0.0, 0.0), vertical: Vec3A(0.0, 1.5290802, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: false, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }, AovProduct { prim_path: "/Render/q", name: "q.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dof_products_disagree.usda"], invisible_overrides: Some(0) } +layer: $DIR/dof_products_disagree.usda +warning: Warning { code: ProductDepthOfFieldMismatch, kind: Approximated, count: 1, prims: ["/Render/q"], message: "/Render/q: asks for depth of field on, but the render has it off (the first product's); its file is written with that" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dof_settings_only_usda-dc3a7d2e89c34444-1.digest b/crates/crust-core/tests/data/import_baselines/dof_settings_only_usda-dc3a7d2e89c34444-1.digest new file mode 100644 index 000000000..2ba1d431e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_settings_only_usda-dc3a7d2e89c34444-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: false, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dof_settings_only.usda"], invisible_overrides: Some(0) } +layer: $DIR/dof_settings_only.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-06f3801d332f35bd-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-06f3801d332f35bd-1.digest new file mode 100644 index 000000000..acc63c7f4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-06f3801d332f35bd-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.8185296, -1.7956586, -1.0226688), horizontal: Vec3A(9.637059, -0.0, 0.0), vertical: Vec3A(0.0, 5.4078546, -0.7600245), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 8, width: 240, height: 136, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 136 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dome_backdrop.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_backdrop.usda +lights: 1 +light 0: dome name Some("/World/Hdri") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Hdri: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Mirror +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-1.digest new file mode 100644 index 000000000..a91eef8e2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.8185296, -1.7956586, -1.0226688), horizontal: Vec3A(9.637059, -0.0, 0.0), vertical: Vec3A(0.0, 5.4078546, -0.7600245), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 8, width: 240, height: 136, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 136 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dome_backdrop.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_backdrop.usda +lights: 1 +light 0: dome name Some("/World/Hdri") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Hdri: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Mirror +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-2.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-2.digest new file mode 100644 index 000000000..a91eef8e2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-2.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.8185296, -1.7956586, -1.0226688), horizontal: Vec3A(9.637059, -0.0, 0.0), vertical: Vec3A(0.0, 5.4078546, -0.7600245), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 8, width: 240, height: 136, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 136 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dome_backdrop.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_backdrop.usda +lights: 1 +light 0: dome name Some("/World/Hdri") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Hdri: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Mirror +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-2d5a500fad6dcfad-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-2d5a500fad6dcfad-1.digest new file mode 100644 index 000000000..a91eef8e2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-2d5a500fad6dcfad-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.8185296, -1.7956586, -1.0226688), horizontal: Vec3A(9.637059, -0.0, 0.0), vertical: Vec3A(0.0, 5.4078546, -0.7600245), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 8, width: 240, height: 136, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 136 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dome_backdrop.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_backdrop.usda +lights: 1 +light 0: dome name Some("/World/Hdri") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Hdri: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Mirror +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-4222ab94f00b4ba4-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-4222ab94f00b4ba4-1.digest new file mode 100644 index 000000000..acc63c7f4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-4222ab94f00b4ba4-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.8185296, -1.7956586, -1.0226688), horizontal: Vec3A(9.637059, -0.0, 0.0), vertical: Vec3A(0.0, 5.4078546, -0.7600245), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 8, width: 240, height: 136, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 136 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dome_backdrop.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_backdrop.usda +lights: 1 +light 0: dome name Some("/World/Hdri") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Hdri: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Mirror +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-43c08f98bb3b74e6-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-43c08f98bb3b74e6-1.digest new file mode 100644 index 000000000..c5da7ab37 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-43c08f98bb3b74e6-1.digest @@ -0,0 +1,29 @@ +time: Some(12.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.8185296, -1.7956586, -1.0226688), horizontal: Vec3A(9.637059, -0.0, 0.0), vertical: Vec3A(0.0, 5.4078546, -0.7600245), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 8, width: 240, height: 136, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 136 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 12, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dome_backdrop.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_backdrop.usda +lights: 1 +light 0: dome name Some("/World/Hdri") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Hdri: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Mirror +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(12.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-7b71c02186033a9a-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-7b71c02186033a9a-1.digest new file mode 100644 index 000000000..acc63c7f4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-7b71c02186033a9a-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.8185296, -1.7956586, -1.0226688), horizontal: Vec3A(9.637059, -0.0, 0.0), vertical: Vec3A(0.0, 5.4078546, -0.7600245), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 8, width: 240, height: 136, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 136 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dome_backdrop.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_backdrop.usda +lights: 1 +light 0: dome name Some("/World/Hdri") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Hdri: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Mirror +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-88f2729f3b3188bb-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-88f2729f3b3188bb-1.digest new file mode 100644 index 000000000..acc63c7f4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-88f2729f3b3188bb-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.8185296, -1.7956586, -1.0226688), horizontal: Vec3A(9.637059, -0.0, 0.0), vertical: Vec3A(0.0, 5.4078546, -0.7600245), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 8, width: 240, height: 136, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 136 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dome_backdrop.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_backdrop.usda +lights: 1 +light 0: dome name Some("/World/Hdri") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Hdri: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Mirror +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-9d834df56ca3b1ac-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-9d834df56ca3b1ac-1.digest new file mode 100644 index 000000000..acc63c7f4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-9d834df56ca3b1ac-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.8185296, -1.7956586, -1.0226688), horizontal: Vec3A(9.637059, -0.0, 0.0), vertical: Vec3A(0.0, 5.4078546, -0.7600245), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 8, width: 240, height: 136, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 136 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dome_backdrop.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_backdrop.usda +lights: 1 +light 0: dome name Some("/World/Hdri") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Hdri: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Mirror +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-af5d67f7909dc65a-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-af5d67f7909dc65a-1.digest new file mode 100644 index 000000000..26478964d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-af5d67f7909dc65a-1.digest @@ -0,0 +1,29 @@ +time: Some(12.5) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.8185296, -1.7956586, -1.0226688), horizontal: Vec3A(9.637059, -0.0, 0.0), vertical: Vec3A(0.0, 5.4078546, -0.7600245), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 8, width: 240, height: 136, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 136 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 12, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dome_backdrop.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_backdrop.usda +lights: 1 +light 0: dome name Some("/World/Hdri") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Hdri: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Mirror +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(12.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b592bc76e2706492-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b592bc76e2706492-1.digest new file mode 100644 index 000000000..acc63c7f4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b592bc76e2706492-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.8185296, -1.7956586, -1.0226688), horizontal: Vec3A(9.637059, -0.0, 0.0), vertical: Vec3A(0.0, 5.4078546, -0.7600245), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 8, width: 240, height: 136, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 136 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dome_backdrop.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_backdrop.usda +lights: 1 +light 0: dome name Some("/World/Hdri") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Hdri: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Mirror +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b9dc71e44c528187-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b9dc71e44c528187-1.digest new file mode 100644 index 000000000..acc63c7f4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b9dc71e44c528187-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.8185296, -1.7956586, -1.0226688), horizontal: Vec3A(9.637059, -0.0, 0.0), vertical: Vec3A(0.0, 5.4078546, -0.7600245), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 8, width: 240, height: 136, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 136 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dome_backdrop.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_backdrop.usda +lights: 1 +light 0: dome name Some("/World/Hdri") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Hdri: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Mirror +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_camera_off_usda-b5a9eac417c3bdbb-1.digest b/crates/crust-core/tests/data/import_baselines/dome_camera_off_usda-b5a9eac417c3bdbb-1.digest new file mode 100644 index 000000000..54fe43883 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_camera_off_usda-b5a9eac417c3bdbb-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/dome_camera_off.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_camera_off.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Hdri") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance light /World/Hdri: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: false, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_crust_wins_usda-0bfe2eb5bc4f83c5-1.digest b/crates/crust-core/tests/data/import_baselines/dome_crust_wins_usda-0bfe2eb5bc4f83c5-1.digest new file mode 100644 index 000000000..02f521add --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_crust_wins_usda-0bfe2eb5bc4f83c5-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/dome_crust_wins.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_crust_wins.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_default_usda-7c13b46b00b734f8-1.digest b/crates/crust-core/tests/data/import_baselines/dome_default_usda-7c13b46b00b734f8-1.digest new file mode 100644 index 000000000..fd88df02d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_default_usda-7c13b46b00b734f8-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/dome_default.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_default.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_exclude_bsdf_usda-fb9c2dcc2b05783e-1.digest b/crates/crust-core/tests/data/import_baselines/dome_exclude_bsdf_usda-fb9c2dcc2b05783e-1.digest new file mode 100644 index 000000000..051489a44 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_exclude_bsdf_usda-fb9c2dcc2b05783e-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-5.142858, -5.142858, -2.0), horizontal: Vec3A(10.285716, 0.0, 0.0), vertical: Vec3A(0.0, 10.285716, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 32 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 36.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dome_exclude_bsdf.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_exclude_bsdf.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b4f96552509cf2d8 camera=1:b4f96552509cf2d8 shadow=1:b4f96552509cf2d8 indirect=1:b4f96552509cf2d8 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fd1d447404c6ef08 camera=1:fd1d447404c6ef08 shadow=1:fd1d447404c6ef08 indirect=1:fd1d447404c6ef08 +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Prop +provenance geometry 1..2: /World/Set +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_exclude_power_usda-a488dc90e33bf33b-1.digest b/crates/crust-core/tests/data/import_baselines/dome_exclude_power_usda-a488dc90e33bf33b-1.digest new file mode 100644 index 000000000..17f10a3e3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_exclude_power_usda-a488dc90e33bf33b-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-5.142858, -5.142858, -2.0), horizontal: Vec3A(10.285716, 0.0, 0.0), vertical: Vec3A(0.0, 10.285716, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 1, width: 32, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 32 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 36.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dome_exclude_power.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_exclude_power.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b4f96552509cf2d8 camera=1:b4f96552509cf2d8 shadow=1:b4f96552509cf2d8 indirect=1:b4f96552509cf2d8 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fd1d447404c6ef08 camera=1:fd1d447404c6ef08 shadow=1:fd1d447404c6ef08 indirect=1:fd1d447404c6ef08 +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Prop +provenance geometry 1..2: /World/Set +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_0_pole_scene_z_up_usda-4a3a839d045f42ae-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_0_pole_scene_z_up_usda-4a3a839d045f42ae-1.digest new file mode 100644 index 000000000..2acced9da --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_0_pole_scene_z_up_usda-4a3a839d045f42ae-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/dome_light_0_pole_scene_z_up.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_light_0_pole_scene_z_up.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_0_reference_usda-e3c0f10234d60e6f-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_0_reference_usda-e3c0f10234d60e6f-1.digest new file mode 100644 index 000000000..c6202d3a4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_0_reference_usda-e3c0f10234d60e6f-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/dome_light_0_reference.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_light_0_reference.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_y_usda-b39274d8389c93ec-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_y_usda-b39274d8389c93ec-1.digest new file mode 100644 index 000000000..d82ff7fbd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_y_usda-b39274d8389c93ec-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/dome_light_1_pole_y.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_light_1_pole_y.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_z_usda-3ab2d43568c3a9ca-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_z_usda-3ab2d43568c3a9ca-1.digest new file mode 100644 index 000000000..8af76698d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_z_usda-3ab2d43568c3a9ca-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/dome_light_1_pole_z.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_light_1_pole_z.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_rotated_usda-96a7a52ba96f792f-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_1_rotated_usda-96a7a52ba96f792f-1.digest new file mode 100644 index 000000000..8a8b94f7a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_rotated_usda-96a7a52ba96f792f-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/dome_light_1_rotated.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_light_1_rotated.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_no_up_usda-db7f3549433e3ca1-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_no_up_usda-db7f3549433e3ca1-1.digest new file mode 100644 index 000000000..d05002b53 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_no_up_usda-db7f3549433e3ca1-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/dome_light_1_scene_no_up.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_light_1_scene_no_up.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_y_up_usda-cef3793797de068b-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_y_up_usda-cef3793797de068b-1.digest new file mode 100644 index 000000000..9f1131968 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_y_up_usda-cef3793797de068b-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/dome_light_1_scene_y_up.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_light_1_scene_y_up.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_usda-771e6d7e193401ac-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_1_usda-771e6d7e193401ac-1.digest new file mode 100644 index 000000000..8cb5239fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_usda-771e6d7e193401ac-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/dome_light_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_light_1.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_z_up_usda-d2385f77c8ec6eb4-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_1_z_up_usda-d2385f77c8ec6eb4-1.digest new file mode 100644 index 000000000..b10e7ab90 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_z_up_usda-d2385f77c8ec6eb4-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/dome_light_1_z_up.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_light_1_z_up.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_usda-f46a39c15abcc98f-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_usda-f46a39c15abcc98f-1.digest new file mode 100644 index 000000000..8b9025359 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_usda-f46a39c15abcc98f-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dome_light.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_light.usda +lights: 1 +light 0: dome name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only true twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_no_assets_usda-b8800e7204db6d4a-1.digest b/crates/crust-core/tests/data/import_baselines/dome_no_assets_usda-b8800e7204db6d4a-1.digest new file mode 100644 index 000000000..9ed719983 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_no_assets_usda-b8800e7204db6d4a-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dome_no_assets.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_no_assets.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_power_usda-abfbd64e964dc44d-1.digest b/crates/crust-core/tests/data/import_baselines/dome_power_usda-abfbd64e964dc44d-1.digest new file mode 100644 index 000000000..55742063a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_power_usda-abfbd64e964dc44d-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/dome_power.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_power.usda +lights: 1 +light 0: dome name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only true twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/dome_ri_camera_usda-acf95ad397fe1930-1.digest b/crates/crust-core/tests/data/import_baselines/dome_ri_camera_usda-acf95ad397fe1930-1.digest new file mode 100644 index 000000000..bcfcda011 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_ri_camera_usda-acf95ad397fe1930-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/dome_ri_camera.usda"], invisible_overrides: Some(0) } +layer: $DIR/dome_ri_camera.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/domelight_usda-22dcdc7630c52071-1.digest b/crates/crust-core/tests/data/import_baselines/domelight_usda-22dcdc7630c52071-1.digest new file mode 100644 index 000000000..23ae81285 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/domelight_usda-22dcdc7630c52071-1.digest @@ -0,0 +1,31 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.8542223, -1.7956586, -1.0226688), horizontal: Vec3A(9.708445, -0.0, 0.0), vertical: Vec3A(0.0, 5.4078546, -0.7600245), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 96, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/domelight.usda"], invisible_overrides: Some(0) } +layer: $DIR/domelight.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 3..3 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Chrome +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-1.digest b/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-1.digest new file mode 100644 index 000000000..d78d040a7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-1.digest @@ -0,0 +1,32 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.8542223, -1.7956586, -1.0226688), horizontal: Vec3A(9.708445, -0.0, 0.0), vertical: Vec3A(0.0, 5.4078546, -0.7600245), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 96, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/domelight.usda"], invisible_overrides: Some(0) } +layer: $DIR/domelight.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_env.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 3..3 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Chrome +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-2.digest b/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-2.digest new file mode 100644 index 000000000..d78d040a7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-2.digest @@ -0,0 +1,32 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.8542223, -1.7956586, -1.0226688), horizontal: Vec3A(9.708445, -0.0, 0.0), vertical: Vec3A(0.0, 5.4078546, -0.7600245), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 96, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/domelight.usda"], invisible_overrides: Some(0) } +layer: $DIR/domelight.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_env.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 3..3 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Chrome +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/domelight_usda-5a2a25c11957ed70-1.digest b/crates/crust-core/tests/data/import_baselines/domelight_usda-5a2a25c11957ed70-1.digest new file mode 100644 index 000000000..d78d040a7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/domelight_usda-5a2a25c11957ed70-1.digest @@ -0,0 +1,32 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.8542223, -1.7956586, -1.0226688), horizontal: Vec3A(9.708445, -0.0, 0.0), vertical: Vec3A(0.0, 5.4078546, -0.7600245), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 96, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/domelight.usda"], invisible_overrides: Some(0) } +layer: $DIR/domelight.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_env.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 3..3 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Chrome +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/domelight_usda-5d8f200125b9fd09-1.digest b/crates/crust-core/tests/data/import_baselines/domelight_usda-5d8f200125b9fd09-1.digest new file mode 100644 index 000000000..2c665bd36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/domelight_usda-5d8f200125b9fd09-1.digest @@ -0,0 +1,31 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.8542223, -1.7956586, -1.0226688), horizontal: Vec3A(9.708445, -0.0, 0.0), vertical: Vec3A(0.0, 5.4078546, -0.7600245), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 96, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/domelight.usda"], invisible_overrides: Some(0) } +layer: $DIR/domelight.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 3..3 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Chrome +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/domelight_usda-7f00a6c7fd4959fa-1.digest b/crates/crust-core/tests/data/import_baselines/domelight_usda-7f00a6c7fd4959fa-1.digest new file mode 100644 index 000000000..d78d040a7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/domelight_usda-7f00a6c7fd4959fa-1.digest @@ -0,0 +1,32 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.8542223, -1.7956586, -1.0226688), horizontal: Vec3A(9.708445, -0.0, 0.0), vertical: Vec3A(0.0, 5.4078546, -0.7600245), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 96, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/domelight.usda"], invisible_overrides: Some(0) } +layer: $DIR/domelight.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_env.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 3..3 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Chrome +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/drop_usda-214f7b543bee6df1-1.digest b/crates/crust-core/tests/data/import_baselines/drop_usda-214f7b543bee6df1-1.digest new file mode 100644 index 000000000..9a24d11c0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/drop_usda-214f7b543bee6df1-1.digest @@ -0,0 +1,60 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/drop.usda"], invisible_overrides: Some(0) } +layer: $DIR/drop.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 12 geometries, PrimitiveBreakdown { triangles: 320, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } top level, PrimitiveBreakdown { triangles: 332, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:81beed4da02f2f05 camera=12:81beed4da02f2f05 shadow=12:81beed4da02f2f05 indirect=12:81beed4da02f2f05 +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=288:e054eb6a38940439 camera=288:e054eb6a38940439 shadow=288:e054eb6a38940439 indirect=288:e054eb6a38940439 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +provenance geometry 0..1: /World/inst +provenance geometry 1..2: /World/away/geo +provenance geometry 2..3: /World/box/geo +provenance geometry 3..4: /World/rock/geo +provenance geometry 4..5: /World/cup/geo +provenance geometry 5..6: /World/sunk/geo +provenance geometry 6..7: /World/onFloor/geo +provenance geometry 7..8: /World/slope/geo +provenance geometry 8..9: /World/terrain/geo +provenance geometry 9..10: /World/shelf/geo +provenance geometry 10..11: /World/table/geo +provenance geometry 11..12: /World/floor/geo +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 11, slot: 7, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 4, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13511858414310182354, n_points: 169, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/drop_usda-4c62c449da4ae2d3-1.digest b/crates/crust-core/tests/data/import_baselines/drop_usda-4c62c449da4ae2d3-1.digest new file mode 100644 index 000000000..9a24d11c0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/drop_usda-4c62c449da4ae2d3-1.digest @@ -0,0 +1,60 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/drop.usda"], invisible_overrides: Some(0) } +layer: $DIR/drop.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 12 geometries, PrimitiveBreakdown { triangles: 320, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } top level, PrimitiveBreakdown { triangles: 332, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:81beed4da02f2f05 camera=12:81beed4da02f2f05 shadow=12:81beed4da02f2f05 indirect=12:81beed4da02f2f05 +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=288:e054eb6a38940439 camera=288:e054eb6a38940439 shadow=288:e054eb6a38940439 indirect=288:e054eb6a38940439 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +provenance geometry 0..1: /World/inst +provenance geometry 1..2: /World/away/geo +provenance geometry 2..3: /World/box/geo +provenance geometry 3..4: /World/rock/geo +provenance geometry 4..5: /World/cup/geo +provenance geometry 5..6: /World/sunk/geo +provenance geometry 6..7: /World/onFloor/geo +provenance geometry 7..8: /World/slope/geo +provenance geometry 8..9: /World/terrain/geo +provenance geometry 9..10: /World/shelf/geo +provenance geometry 10..11: /World/table/geo +provenance geometry 11..12: /World/floor/geo +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 11, slot: 7, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 4, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13511858414310182354, n_points: 169, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edge_false_usda-dfb19c6c90615a56-1.digest b/crates/crust-core/tests/data/import_baselines/edge_false_usda-dfb19c6c90615a56-1.digest new file mode 100644 index 000000000..4b1dee8a7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edge_false_usda-dfb19c6c90615a56-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 1, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/look_out", name: "look_out", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/look"], display_filters: [], display: "beauty" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edge_false.usda"], invisible_overrides: Some(0) } +layer: $DIR/edge_false.usda +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edge_true_usda-bddf6fe338522a86-1.digest b/crates/crust-core/tests/data/import_baselines/edge_true_usda-bddf6fe338522a86-1.digest new file mode 100644 index 000000000..4c54105c1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edge_true_usda-bddf6fe338522a86-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: true, guiding_train_iterations: 1, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/look_out", name: "look_out", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/look"], display_filters: [], display: "beauty" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edge_true.usda"], invisible_overrides: Some(0) } +layer: $DIR/edge_true.usda +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edges_usda-9743a0d0ff86dafe-1.digest b/crates/crust-core/tests/data/import_baselines/edges_usda-9743a0d0ff86dafe-1.digest new file mode 100644 index 000000000..ddd008de4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edges_usda-9743a0d0ff86dafe-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Cd", name: "Cd", channel_prefix: None, source: Primvar(PrimvarSource { index: 1, components: 3, role: Color }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edges.usda"], invisible_overrides: Some(0) } +layer: $DIR/edges.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:25db25008e735125 camera=2:25db25008e735125 shadow=2:25db25008e735125 indirect=2:25db25008e735125 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(1), false)) swapped false curves false scale 1.0 motion [] pieces all=2:20ce8af92139f69f camera=2:20ce8af92139f69f shadow=2:20ce8af92139f69f indirect=2:20ce8af92139f69f +provenance light /World/dome: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/back +provenance geometry 1..2: /World/front +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7627698346972322759, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15030511554815353325, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-077b57f7b0804f19-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-077b57f7b0804f19-1.digest new file mode 100644 index 000000000..f875d9dbf --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-077b57f7b0804f19-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-4.9925594, -3.0086517, -0.98669434), horizontal: Vec3A(9.999988, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 32, width: 32, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/edits.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-085dfd17ac95282d-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-085dfd17ac95282d-1.digest new file mode 100644 index 000000000..e73c3f9cc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-085dfd17ac95282d-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.6855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/beauty", name: "beauty.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-188f318a9146ce97-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-188f318a9146ce97-1.digest new file mode 100644 index 000000000..88cdbb47b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-188f318a9146ce97-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-4.247444, -2.5484667, -4.0), horizontal: Vec3A(8.494888, 0.0, 0.0), vertical: Vec3A(0.0, 5.0969334, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 40, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 40, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 3, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=3:a4253f27618d90a9 camera=3:a4253f27618d90a9 shadow=3:a4253f27618d90a9 indirect=3:a4253f27618d90a9 +provenance material /World/Looks/Hair: MaterialOrigin { slots: [0], displaced: false } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Groom +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-1966e17597c3de42-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-1966e17597c3de42-1.digest new file mode 100644 index 000000000..6c4aef6df --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-1966e17597c3de42-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -3.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +warning: Warning { code: TimeMotionNeedsFrame, kind: Skipped, count: 1, prims: ["/World/Mover"], message: "/World/Cam opens its shutter (-0.25 .. 0.25), but no frame was given: 1 drawn prim's time-sampled transforms are not evaluated over it and render sharp (the first at /World/Mover). Render a frame with -f" } +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Mover +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [13821547256400052224, 4598175219545276416], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-19a787b3bcc74617-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-19a787b3bcc74617-1.digest new file mode 100644 index 000000000..be088b136 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-19a787b3bcc74617-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 14, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d789c596bbc3ac95 camera=12:d789c596bbc3ac95 shadow=12:d789c596bbc3ac95 indirect=12:d789c596bbc3ac95 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:3b674ae68fc6ea85 camera=2:3b674ae68fc6ea85 shadow=2:3b674ae68fc6ea85 indirect=2:3b674ae68fc6ea85 +provenance geometry 0..1: /World/cube/geo +provenance geometry 1..2: /World/floor/geo +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8873273216732545453, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-23003ea81a2d2024-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-23003ea81a2d2024-1.digest new file mode 100644 index 000000000..10852c65c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-23003ea81a2d2024-1.digest @@ -0,0 +1,45 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 0.0), lower_left_corner: Vec3A(-2.9935715, -1.1838839, -10.0), horizontal: Vec3A(5.987143, 0.0, 0.0), vertical: Vec3A(0.0, 3.3677678, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda", "$ROOT/samples/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/subdivision_adaptive.usda +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 110, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 122, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:56e3227c4c4f5a8d camera=12:56e3227c4c4f5a8d shadow=12:56e3227c4c4f5a8d indirect=12:56e3227c4c4f5a8d +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:14e930a5d0b26e15 camera=12:14e930a5d0b26e15 shadow=12:14e930a5d0b26e15 indirect=12:14e930a5d0b26e15 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1d38133bdf0eede5 camera=12:1d38133bdf0eede5 shadow=12:1d38133bdf0eede5 indirect=12:1d38133bdf0eede5 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=108:1052671392e3c4b2 camera=108:1052671392e3c4b2 shadow=108:1052671392e3c4b2 indirect=108:1052671392e3c4b2 +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance arc source: /World/Cage +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 4, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8434524658645368605, n_points: 56, n_indices: 324, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1117804534, 0, 1056964608, 0, 3212836864, 0, 3197715800, 1065353216, 0, 3197715800, 0, 3212836864, 3190582786, 0, 1065353216, 3190582786, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-23fb1cff1e547a51-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-23fb1cff1e547a51-1.digest new file mode 100644 index 000000000..16cf9d202 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-23fb1cff1e547a51-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-1.3761721, -0.91744804, 0.0), horizontal: Vec3A(2.7523441, 0.0, 0.0), vertical: Vec3A(0.0, 1.8348961, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0125, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 6.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1cd1488d041dfcdb camera=1:1cd1488d041dfcdb shadow=1:1cd1488d041dfcdb indirect=1:1cd1488d041dfcdb +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2d90e22d27992fa5 camera=1:2d90e22d27992fa5 shadow=1:2d90e22d27992fa5 indirect=1:2d90e22d27992fa5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Far +provenance geometry 1..2: /World/Near +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-24cc8ef3649b336a-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-24cc8ef3649b336a-1.digest new file mode 100644 index 000000000..c069bb154 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-24cc8ef3649b336a-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-4.9925594, -3.0086517, -0.98669434), horizontal: Vec3A(9.999988, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 32, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/edits.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-30c8f1f2b1117913-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-30c8f1f2b1117913-1.digest new file mode 100644 index 000000000..2ba90181d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-30c8f1f2b1117913-1.digest @@ -0,0 +1,46 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 0.0), lower_left_corner: Vec3A(-2.0955, -0.6787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda", "$ROOT/samples/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/subdivision_adaptive.usda +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 290, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 302, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:56e3227c4c4f5a8d camera=12:56e3227c4c4f5a8d shadow=12:56e3227c4c4f5a8d indirect=12:56e3227c4c4f5a8d +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:14e930a5d0b26e15 camera=12:14e930a5d0b26e15 shadow=12:14e930a5d0b26e15 indirect=12:14e930a5d0b26e15 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:85fd1a1e8638f8d5 camera=48:85fd1a1e8638f8d5 shadow=48:85fd1a1e8638f8d5 indirect=48:85fd1a1e8638f8d5 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=240:ceb54a03c39454ff camera=240:ceb54a03c39454ff shadow=240:ceb54a03c39454ff indirect=240:ceb54a03c39454ff +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance arc source: /World/Cage +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 3, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9125125757038733368, n_points: 26, n_indices: 144, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13090063996844779502, n_points: 122, n_indices: 720, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-339a76e50715bbe3-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-339a76e50715bbe3-1.digest new file mode 100644 index 000000000..ab8612929 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-339a76e50715bbe3-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-1.3761721, -0.91744804, 0.0), horizontal: Vec3A(2.7523441, 0.0, 0.0), vertical: Vec3A(0.0, 1.8348961, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 1.25, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 6.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1cd1488d041dfcdb camera=1:1cd1488d041dfcdb shadow=1:1cd1488d041dfcdb indirect=1:1cd1488d041dfcdb +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2d90e22d27992fa5 camera=1:2d90e22d27992fa5 shadow=1:2d90e22d27992fa5 indirect=1:2d90e22d27992fa5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Far +provenance geometry 1..2: /World/Near +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-3450a9d6105e89a6-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-3450a9d6105e89a6-1.digest new file mode 100644 index 000000000..f85da3618 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-3450a9d6105e89a6-1.digest @@ -0,0 +1,45 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam2") +camera: Camera { origin: Vec3A(1.5, 1.0, 5.0), lower_left_corner: Vec3A(-4.6187525, -2.2177181, -3.4887795), horizontal: Vec3A(7.5360494, -1.4466709e-8, -1.8789482), vertical: Vec3A(-0.11047701, 4.344867, -0.4430991), u: Vec3A(0.9702957, -1.8626451e-9, -0.2419219), v: Vec3A(-0.025287723, 0.99452186, -0.101423524), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda", "$ROOT/samples/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/subdivision_adaptive.usda +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 50, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 62, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:56e3227c4c4f5a8d camera=12:56e3227c4c4f5a8d shadow=12:56e3227c4c4f5a8d indirect=12:56e3227c4c4f5a8d +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:14e930a5d0b26e15 camera=12:14e930a5d0b26e15 shadow=12:14e930a5d0b26e15 indirect=12:14e930a5d0b26e15 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1d38133bdf0eede5 camera=12:1d38133bdf0eede5 shadow=12:1d38133bdf0eede5 indirect=12:1d38133bdf0eede5 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:6e192a0e7059d151 camera=48:6e192a0e7059d151 shadow=48:6e192a0e7059d151 indirect=48:6e192a0e7059d151 +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance arc source: /World/Cage +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 4, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9125125757038733368, n_points: 26, n_indices: 144, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([1069547520, 1065353216, 1084227584, 1115108637, 1069547520, 1065353216, 1084227584, 3213371458, 3173401642, 3188195590, 1063287320, 3173401642, 3206405490, 3168756112, 3212982450, 3185572784, 3181341822, 1064878233, 3198147198, 3195428598, 3184923397, 3212249332, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-411d0a61690b9e71-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-411d0a61690b9e71-1.digest new file mode 100644 index 000000000..817c70bb5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-411d0a61690b9e71-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-4.247444, -2.5484667, -4.0), horizontal: Vec3A(8.494888, 0.0, 0.0), vertical: Vec3A(0.0, 5.0969334, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 40, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 40, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 3, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["hairColor"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=3:a4253f27618d90a9 camera=3:a4253f27618d90a9 shadow=3:a4253f27618d90a9 indirect=3:a4253f27618d90a9 +provenance material /World/Looks/Hair: MaterialOrigin { slots: [0], displaced: false } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Groom +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-43a14b5e78154dda-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-43a14b5e78154dda-1.digest new file mode 100644 index 000000000..ecd3028df --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-43a14b5e78154dda-1.digest @@ -0,0 +1,44 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 0.0), lower_left_corner: Vec3A(-2.0955, -0.6787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda", "$ROOT/samples/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/subdivision_adaptive.usda +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } top level, PrimitiveBreakdown { triangles: 14, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:56e3227c4c4f5a8d camera=12:56e3227c4c4f5a8d shadow=12:56e3227c4c4f5a8d indirect=12:56e3227c4c4f5a8d +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:14e930a5d0b26e15 camera=12:14e930a5d0b26e15 shadow=12:14e930a5d0b26e15 indirect=12:14e930a5d0b26e15 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1d38133bdf0eede5 camera=12:1d38133bdf0eede5 shadow=12:1d38133bdf0eede5 indirect=12:1d38133bdf0eede5 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:96155934aeac1ed5 camera=12:96155934aeac1ed5 shadow=12:96155934aeac1ed5 indirect=12:96155934aeac1ed5 +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance arc source: /World/Cage +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 5, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 1086324736, 1110016897, 0, 1056964608, 1086324736, 3212836864, 0, 3205561020, 1065353216, 0, 3205561020, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-483e16501c86632a-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-483e16501c86632a-1.digest new file mode 100644 index 000000000..9e918f442 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-483e16501c86632a-1.digest @@ -0,0 +1,44 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-2.8181643, -1.2734121, -4.1201806), horizontal: Vec3A(4.168041, 0.0, -0.4380788), vertical: Vec3A(-0.01718934, 2.3516948, -0.16354565), u: Vec3A(0.9945219, 0.0, -0.104528464), v: Vec3A(-0.007291537, 0.9975641, -0.06937434), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda", "$ROOT/samples/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/subdivision_adaptive.usda +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } top level, PrimitiveBreakdown { triangles: 14, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:56e3227c4c4f5a8d camera=12:56e3227c4c4f5a8d shadow=12:56e3227c4c4f5a8d indirect=12:56e3227c4c4f5a8d +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:14e930a5d0b26e15 camera=12:14e930a5d0b26e15 shadow=12:14e930a5d0b26e15 indirect=12:14e930a5d0b26e15 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1d38133bdf0eede5 camera=12:1d38133bdf0eede5 shadow=12:1d38133bdf0eede5 indirect=12:1d38133bdf0eede5 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:96155934aeac1ed5 camera=12:96155934aeac1ed5 shadow=12:96155934aeac1ed5 indirect=12:96155934aeac1ed5 +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance arc source: /World/Cage +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 5, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 1082130432, 1110016897, 0, 1056964608, 1082130432, 3212836864, 0, 3205561020, 1065353216, 0, 3205561020, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-4966b50c696e8080-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-4966b50c696e8080-1.digest new file mode 100644 index 000000000..3cdb49ab9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-4966b50c696e8080-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.6855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.4, 0.4, 0.4) sigma_a Vec3A(0.05, 0.05, 0.05) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: ["/World/Cam/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-4cf921963a4325e9-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-4cf921963a4325e9-1.digest new file mode 100644 index 000000000..e845d450d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-4cf921963a4325e9-1.digest @@ -0,0 +1,46 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 0.0), lower_left_corner: Vec3A(-2.0955, -0.6787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda", "$ROOT/samples/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/subdivision_adaptive.usda +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 290, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 302, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:56e3227c4c4f5a8d camera=12:56e3227c4c4f5a8d shadow=12:56e3227c4c4f5a8d indirect=12:56e3227c4c4f5a8d +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:14e930a5d0b26e15 camera=12:14e930a5d0b26e15 shadow=12:14e930a5d0b26e15 indirect=12:14e930a5d0b26e15 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:85fd1a1e8638f8d5 camera=48:85fd1a1e8638f8d5 shadow=48:85fd1a1e8638f8d5 indirect=48:85fd1a1e8638f8d5 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=240:ceb54a03c39454ff camera=240:ceb54a03c39454ff shadow=240:ceb54a03c39454ff indirect=240:ceb54a03c39454ff +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance arc source: /World/Cage +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 3, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9125125757038733368, n_points: 26, n_indices: 144, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13090063996844779502, n_points: 122, n_indices: 720, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-4d3c65f04d4eaea9-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-4d3c65f04d4eaea9-1.digest new file mode 100644 index 000000000..f7cff2875 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-4d3c65f04d4eaea9-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-3.2766, -2.1844, -4.0), horizontal: Vec3A(6.5532, 0.0, 0.0), vertical: Vec3A(0.0, 4.3688, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=64:5f84dcb3c52b7405 camera=64:5f84dcb3c52b7405 shadow=64:5f84dcb3c52b7405 indirect=64:5f84dcb3c52b7405 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Post +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13212365895451826409, n_points: 66, n_indices: 160, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 1086324736, 1116896842, 0, 0, 1086324736, 3212836864, 0, 3198665485, 1065353216, 0, 3198665485, 0, 3212836864, 3193941692, 0, 1065353216, 3193941692, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-4dd694c9b20daa77-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-4dd694c9b20daa77-1.digest new file mode 100644 index 000000000..87b472408 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-4dd694c9b20daa77-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-5.6632595, -1.9855835, -4.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 32, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 18 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/beauty", name: "renders/aovs_beauty.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sampleCount", name: "sampleCount", channel_prefix: None, source: SampleCount, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [("artist", "crust samples")] }, AovProduct { prim_path: "/Render/Products/data", name: "renders/aovs_data.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/Z", name: "Z", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/distance", name: "distance", channel_prefix: None, source: Distance, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Peye", name: "Peye", channel_prefix: None, source: Peye, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Half, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Neye", name: "Neye", channel_prefix: None, source: Neye, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/st", name: "st", channel_prefix: None, source: St, components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/alpha", name: "alpha", channel_prefix: None, source: Alpha, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$ROOT/samples/aovs.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/aovs.usda +layer: $DIR/edits.usda +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 1, prims: ["/Render/Products/Vars/diffuse_direct"], message: "/Render/Products/Vars/diffuse_direct: unknown raw source \"diffuse_direct\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cadf82024fa5b745 camera=2:cadf82024fa5b745 shadow=2:cadf82024fa5b745 indirect=2:cadf82024fa5b745 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-516372ff4968411b-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-516372ff4968411b-1.digest new file mode 100644 index 000000000..f64391e4c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-516372ff4968411b-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +layer: $DIR/looks.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [0], displaced: false } +provenance material read: ("/Looks/Clay", "/World/Looks/Clay") +provenance material read: ("/Looks/Clay/Graph", "/World/Looks/Clay") +provenance material read: ("/Looks/Clay/Surface", "/World/Looks/Clay") +provenance arc source: /Looks +provenance arc source: /Looks/Clay +provenance arc source: /Looks/Clay/Graph +provenance arc source: /Looks/Clay/Surface +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-53a62fecc28e0de7-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-53a62fecc28e0de7-1.digest new file mode 100644 index 000000000..f64391e4c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-53a62fecc28e0de7-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +layer: $DIR/looks.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [0], displaced: false } +provenance material read: ("/Looks/Clay", "/World/Looks/Clay") +provenance material read: ("/Looks/Clay/Graph", "/World/Looks/Clay") +provenance material read: ("/Looks/Clay/Surface", "/World/Looks/Clay") +provenance arc source: /Looks +provenance arc source: /Looks/Clay +provenance arc source: /Looks/Clay/Graph +provenance arc source: /Looks/Clay/Surface +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-5521dd197a77f33e-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-5521dd197a77f33e-1.digest new file mode 100644 index 000000000..58049b42d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-5521dd197a77f33e-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 8.0), lower_left_corner: Vec3A(-4.7783756, -1.6855836, -2.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 4 +light 0: area name Some("/World/K4") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/K3") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/K2") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/K1") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:18dc8de5ad9d8317 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:18dc8de5ad9d8317 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a357e5efbc0c08cc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a357e5efbc0c08cc +geom 3: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:15501014f6ccffa4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:15501014f6ccffa4 +geom 5: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee57dfea4661cce3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ee57dfea4661cce3 +provenance light /World/K1: LightOrigin { index: 3, geoms: 5..6 } +provenance light /World/K2: LightOrigin { index: 2, geoms: 4..5 } +provenance light /World/K3: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/K4: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/K4 +provenance geometry 2..3: /World/K3 +provenance geometry 3..4: /World/Dead +provenance geometry 4..5: /World/K2 +provenance geometry 5..6: /World/K1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-57fa1e33af4efac6-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-57fa1e33af4efac6-1.digest new file mode 100644 index 000000000..b6fcd917b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-57fa1e33af4efac6-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.6855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: false, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-1.digest new file mode 100644 index 000000000..00ea31e7f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-1.3761721, -0.91744804, 0.0), horizontal: Vec3A(2.7523441, 0.0, 0.0), vertical: Vec3A(0.0, 1.8348961, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 1.25, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 6.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +warning: Warning { code: CameraInvalidMetersPerUnit, kind: Refused, count: 1, prims: [], message: "/World/Cam: the stage's metersPerUnit = 0 is not a length the lens can use; it reads it as 0.01 (a centimetre)" } +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1cd1488d041dfcdb camera=1:1cd1488d041dfcdb shadow=1:1cd1488d041dfcdb indirect=1:1cd1488d041dfcdb +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2d90e22d27992fa5 camera=1:2d90e22d27992fa5 shadow=1:2d90e22d27992fa5 indirect=1:2d90e22d27992fa5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Far +provenance geometry 1..2: /World/Near +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-2.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-2.digest new file mode 100644 index 000000000..00ea31e7f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-2.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-1.3761721, -0.91744804, 0.0), horizontal: Vec3A(2.7523441, 0.0, 0.0), vertical: Vec3A(0.0, 1.8348961, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 1.25, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 6.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +warning: Warning { code: CameraInvalidMetersPerUnit, kind: Refused, count: 1, prims: [], message: "/World/Cam: the stage's metersPerUnit = 0 is not a length the lens can use; it reads it as 0.01 (a centimetre)" } +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1cd1488d041dfcdb camera=1:1cd1488d041dfcdb shadow=1:1cd1488d041dfcdb indirect=1:1cd1488d041dfcdb +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2d90e22d27992fa5 camera=1:2d90e22d27992fa5 shadow=1:2d90e22d27992fa5 indirect=1:2d90e22d27992fa5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Far +provenance geometry 1..2: /World/Near +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-5f2834619e774ab4-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-5f2834619e774ab4-1.digest new file mode 100644 index 000000000..9bacadd81 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-5f2834619e774ab4-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam2") +camera: Camera { origin: Vec3A(1.5, 1.0, 5.0), lower_left_corner: Vec3A(-4.029999, -2.2177181, -3.6355724), horizontal: Vec3A(6.358542, -1.2206286e-8, -1.5853626), vertical: Vec3A(-0.11047701, 4.344867, -0.4430991), u: Vec3A(0.9702957, -1.8626451e-9, -0.2419219), v: Vec3A(-0.025287723, 0.99452186, -0.101423524), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/beauty", name: "beauty.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +warning: Warning { code: CameraNotACamera, kind: Refused, count: 1, prims: ["/World/Card"], message: "RenderSettings.camera targets /World/Card, which is not a camera on this stage — rendering through /World/Cam2 instead" } +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-6019827f6d635824-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-6019827f6d635824-1.digest new file mode 100644 index 000000000..fd9d95635 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-6019827f6d635824-1.digest @@ -0,0 +1,33 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-4.4783754, -2.5855837, -4.5), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 5, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 5, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:57d0213124acc7b8 camera=1:57d0213124acc7b8 shadow=1:57d0213124acc7b8 indirect=1:57d0213124acc7b8 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Cam/Badge +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-65b79e09c14be76d-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-65b79e09c14be76d-1.digest new file mode 100644 index 000000000..e6354d69f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-65b79e09c14be76d-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-5.4717097, -3.2753882, -3.7005186), horizontal: Vec3A(9.504398, 0.0, -0.9989525), vertical: Vec3A(-0.0464556, 6.3556476, -0.4419955), u: Vec3A(0.9945219, 0.0, -0.104528464), v: Vec3A(-0.007291537, 0.9975641, -0.06937434), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.4, 0.4, 0.4) sigma_a Vec3A(0.05, 0.05, 0.05) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: ["/World/Cam/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-662e56b1a93d2d66-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-662e56b1a93d2d66-1.digest new file mode 100644 index 000000000..4074e6205 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-662e56b1a93d2d66-1.digest @@ -0,0 +1,44 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 9.0), lower_left_corner: Vec3A(-5.6632595, -2.195088, -0.119155884), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.231942, -1.3246402), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9781476, -0.20791169), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda", "$ROOT/samples/light_linking.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/light_linking.usda +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 8 geometries, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:147e304cdaa43315 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:147e304cdaa43315 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3bb65d4d618d300f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3bb65d4d618d300f +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:414b9060aeb9fa5b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:414b9060aeb9fa5b +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:66555abe449aad95 camera=12:66555abe449aad95 shadow=0:cbf29ce484222325 indirect=12:66555abe449aad95 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d864e332b6f2885f camera=1:d864e332b6f2885f shadow=1:d864e332b6f2885f indirect=1:d864e332b6f2885f +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b3ac5caa5601a5fa camera=1:b3ac5caa5601a5fa shadow=1:b3ac5caa5601a5fa indirect=1:b3ac5caa5601a5fa +geom 6: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3fd5e7ad4a18db8b camera=1:3fd5e7ad4a18db8b shadow=1:3fd5e7ad4a18db8b indirect=1:3fd5e7ad4a18db8b +geom 7: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Pillar +provenance geometry 4..5: /World/Right +provenance geometry 5..6: /World/Hero +provenance geometry 6..7: /World/Left +provenance geometry 7..8: /World/Floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8639962265279651952, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [4, 5, 6] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-6deff31ef60f6033-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-6deff31ef60f6033-1.digest new file mode 100644 index 000000000..d20e76071 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-6deff31ef60f6033-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-1.3761721, -0.91744804, 0.0), horizontal: Vec3A(2.7523441, 0.0, 0.0), vertical: Vec3A(0.0, 1.8348961, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0125, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 6.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1cd1488d041dfcdb camera=1:1cd1488d041dfcdb shadow=1:1cd1488d041dfcdb indirect=1:1cd1488d041dfcdb +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2d90e22d27992fa5 camera=1:2d90e22d27992fa5 shadow=1:2d90e22d27992fa5 indirect=1:2d90e22d27992fa5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Far +provenance geometry 1..2: /World/Near +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-7239cb83230ea59e-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-7239cb83230ea59e-1.digest new file mode 100644 index 000000000..5a45a15d8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-7239cb83230ea59e-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, -2.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/withRest", name: "rest.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:32f1a52c797bfee5 camera=2:32f1a52c797bfee5 shadow=2:32f1a52c797bfee5 indirect=2:32f1a52c797bfee5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/M +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11801363609627443368, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-786eedaaaa2108bd-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-786eedaaaa2108bd-1.digest new file mode 100644 index 000000000..0c45ed242 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-786eedaaaa2108bd-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -3.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +warning: Warning { code: TimeMotionNeedsFrame, kind: Skipped, count: 1, prims: ["/World/Mover"], message: "/World/Cam opens its shutter (-0.25 .. 0.25), but no frame was given: 1 drawn prim's time-sampled transforms are not evaluated over it and render sharp (the first at /World/Mover). Render a frame with -f" } +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Mover +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [13821547256400052224, 4598175219545276416], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-1.digest new file mode 100644 index 000000000..ab434bd60 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, -2.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/plain", name: "plain.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32f1a52c797bfee5 camera=2:32f1a52c797bfee5 shadow=2:32f1a52c797bfee5 indirect=2:32f1a52c797bfee5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/M +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-2.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-2.digest new file mode 100644 index 000000000..ab434bd60 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-2.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, -2.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/plain", name: "plain.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32f1a52c797bfee5 camera=2:32f1a52c797bfee5 shadow=2:32f1a52c797bfee5 indirect=2:32f1a52c797bfee5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/M +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-939ae62aa1013f1f-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-939ae62aa1013f1f-1.digest new file mode 100644 index 000000000..e73c3f9cc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-939ae62aa1013f1f-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.6855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/beauty", name: "beauty.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-9785472850c84b20-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-9785472850c84b20-1.digest new file mode 100644 index 000000000..070edeb80 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-9785472850c84b20-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-5.6632595, -1.9855835, -4.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 4, width: 32, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 18 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/beauty", name: "renders/aovs_beauty.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sampleCount", name: "sampleCount", channel_prefix: None, source: SampleCount, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [("artist", "crust samples")] }, AovProduct { prim_path: "/Render/Products/data", name: "renders/aovs_data.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/Z", name: "Z", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/distance", name: "distance", channel_prefix: None, source: Distance, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Peye", name: "Peye", channel_prefix: None, source: Peye, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Half, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Neye", name: "Neye", channel_prefix: None, source: Neye, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/st", name: "st", channel_prefix: None, source: St, components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/alpha", name: "alpha", channel_prefix: None, source: Alpha, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$ROOT/samples/aovs.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/aovs.usda +layer: $DIR/edits.usda +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 1, prims: ["/Render/Products/Vars/diffuse_direct"], message: "/Render/Products/Vars/diffuse_direct: unknown raw source \"diffuse_direct\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cadf82024fa5b745 camera=2:cadf82024fa5b745 shadow=2:cadf82024fa5b745 indirect=2:cadf82024fa5b745 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-9829e1b01f60d251-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-9829e1b01f60d251-1.digest new file mode 100644 index 000000000..ba8474f91 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-9829e1b01f60d251-1.digest @@ -0,0 +1,43 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, -0.1, 7.0), lower_left_corner: Vec3A(-2.5200005, -2.6200004, 0.0), horizontal: Vec3A(5.040001, 0.0, 0.0), vertical: Vec3A(0.0, 5.040001, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 8, width: 32, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 7.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$ROOT/samples/usdpreview_textured.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/usdpreview_textured.usda +layer: $DIR/edits.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d922ac2ec48f4f97 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d922ac2ec48f4f97 +geom 1: material #1 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:23063c3980664227 camera=2:23063c3980664227 shadow=2:23063c3980664227 indirect=2:23063c3980664227 +geom 2: material #2 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:380b2e0280de83db camera=2:380b2e0280de83db shadow=2:380b2e0280de83db indirect=2:380b2e0280de83db +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:14161eeed09e7034 camera=2:14161eeed09e7034 shadow=2:14161eeed09e7034 indirect=2:14161eeed09e7034 +geom 4: material #4 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(3) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:08414313d8d6e290 camera=2:08414313d8d6e290 shadow=2:08414313d8d6e290 indirect=2:08414313d8d6e290 +provenance material /World/Looks/ExrAuto: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/MaskedMetal: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/NormalMapped: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/UdimSrgb: MaterialOrigin { slots: [4], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/NormalQuad +provenance geometry 2..3: /World/MetalQuad +provenance geometry 3..4: /World/ExrQuad +provenance geometry 4..5: /World/UdimQuad +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9086379455125602793, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10115957615497089662, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10519275802662681676, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11939811521305294379, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-9829e1b01f60d251-2.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-9829e1b01f60d251-2.digest new file mode 100644 index 000000000..ba8474f91 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-9829e1b01f60d251-2.digest @@ -0,0 +1,43 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, -0.1, 7.0), lower_left_corner: Vec3A(-2.5200005, -2.6200004, 0.0), horizontal: Vec3A(5.040001, 0.0, 0.0), vertical: Vec3A(0.0, 5.040001, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 8, width: 32, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 7.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$ROOT/samples/usdpreview_textured.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/usdpreview_textured.usda +layer: $DIR/edits.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d922ac2ec48f4f97 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d922ac2ec48f4f97 +geom 1: material #1 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:23063c3980664227 camera=2:23063c3980664227 shadow=2:23063c3980664227 indirect=2:23063c3980664227 +geom 2: material #2 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:380b2e0280de83db camera=2:380b2e0280de83db shadow=2:380b2e0280de83db indirect=2:380b2e0280de83db +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:14161eeed09e7034 camera=2:14161eeed09e7034 shadow=2:14161eeed09e7034 indirect=2:14161eeed09e7034 +geom 4: material #4 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(3) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:08414313d8d6e290 camera=2:08414313d8d6e290 shadow=2:08414313d8d6e290 indirect=2:08414313d8d6e290 +provenance material /World/Looks/ExrAuto: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/MaskedMetal: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/NormalMapped: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/UdimSrgb: MaterialOrigin { slots: [4], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/NormalQuad +provenance geometry 2..3: /World/MetalQuad +provenance geometry 3..4: /World/ExrQuad +provenance geometry 4..5: /World/UdimQuad +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9086379455125602793, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10115957615497089662, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10519275802662681676, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11939811521305294379, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-9f3ec2b0f2000d47-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-9f3ec2b0f2000d47-1.digest new file mode 100644 index 000000000..45e183fad --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-9f3ec2b0f2000d47-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-1.3761721, -0.91744804, 0.0), horizontal: Vec3A(2.7523441, 0.0, 0.0), vertical: Vec3A(0.0, 1.8348961, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0125, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 6.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1cd1488d041dfcdb camera=1:1cd1488d041dfcdb shadow=1:1cd1488d041dfcdb indirect=1:1cd1488d041dfcdb +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2d90e22d27992fa5 camera=1:2d90e22d27992fa5 shadow=1:2d90e22d27992fa5 indirect=1:2d90e22d27992fa5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Far +provenance geometry 1..2: /World/Near +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-a15a160797d16740-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-a15a160797d16740-1.digest new file mode 100644 index 000000000..bac2c4b8a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-a15a160797d16740-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-5.6632595, -1.9855835, -4.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 32, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 18 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/beauty", name: "renders/aovs_beauty.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sampleCount", name: "sampleCount", channel_prefix: None, source: SampleCount, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [("artist", "crust samples")] }, AovProduct { prim_path: "/Render/Products/data", name: "renders/aovs_data.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/Z", name: "Z", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/distance", name: "distance", channel_prefix: None, source: Distance, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Peye", name: "Peye", channel_prefix: None, source: Peye, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Half, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Neye", name: "Neye", channel_prefix: None, source: Neye, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/st", name: "st", channel_prefix: None, source: St, components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/alpha", name: "alpha", channel_prefix: None, source: Alpha, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$ROOT/samples/aovs.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/aovs.usda +layer: $DIR/edits.usda +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 1, prims: ["/Render/Products/Vars/diffuse_direct"], message: "/Render/Products/Vars/diffuse_direct: unknown raw source \"diffuse_direct\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cadf82024fa5b745 camera=2:cadf82024fa5b745 shadow=2:cadf82024fa5b745 indirect=2:cadf82024fa5b745 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-a15f50a6d270c4d6-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-a15f50a6d270c4d6-1.digest new file mode 100644 index 000000000..26efd4a6e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-a15f50a6d270c4d6-1.digest @@ -0,0 +1,33 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam2") +camera: Camera { origin: Vec3A(1.5, 1.0, 5.0), lower_left_corner: Vec3A(-4.029999, -2.2177181, -3.6355724), horizontal: Vec3A(6.358542, -1.2206286e-8, -1.5853626), vertical: Vec3A(-0.11047701, 4.344867, -0.4430991), u: Vec3A(0.9702957, -1.8626451e-9, -0.2419219), v: Vec3A(-0.025287723, 0.99452186, -0.101423524), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/beauty", name: "beauty.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 5, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 5, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8644ef657b9e2de5 camera=1:8644ef657b9e2de5 shadow=1:8644ef657b9e2de5 indirect=1:8644ef657b9e2de5 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Cam2/Badge +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-a2d6c26d716466c1-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-a2d6c26d716466c1-1.digest new file mode 100644 index 000000000..540d7e8dd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-a2d6c26d716466c1-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.6855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-a693bfb772c311e2-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-a693bfb772c311e2-1.digest new file mode 100644 index 000000000..e6ceee2cb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-a693bfb772c311e2-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -3.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Mover +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-a9ea182c81eccd64-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-a9ea182c81eccd64-1.digest new file mode 100644 index 000000000..688008e01 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-a9ea182c81eccd64-1.digest @@ -0,0 +1,45 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-2.8181643, -1.2734121, -4.1201806), horizontal: Vec3A(4.168041, 0.0, -0.4380788), vertical: Vec3A(-0.01718934, 2.3516948, -0.16354565), u: Vec3A(0.9945219, 0.0, -0.104528464), v: Vec3A(-0.007291537, 0.9975641, -0.06937434), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda", "$ROOT/samples/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/subdivision_adaptive.usda +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 96, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 108, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:56e3227c4c4f5a8d camera=12:56e3227c4c4f5a8d shadow=12:56e3227c4c4f5a8d indirect=12:56e3227c4c4f5a8d +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:14e930a5d0b26e15 camera=12:14e930a5d0b26e15 shadow=12:14e930a5d0b26e15 indirect=12:14e930a5d0b26e15 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1d38133bdf0eede5 camera=12:1d38133bdf0eede5 shadow=12:1d38133bdf0eede5 indirect=12:1d38133bdf0eede5 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=94:49cde4140ed25082 camera=94:49cde4140ed25082 shadow=94:49cde4140ed25082 indirect=94:49cde4140ed25082 +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance arc source: /World/Cage +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 4, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1096032668800489466, n_points: 49, n_indices: 282, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([1050253722, 1058642330, 1085276160, 1122308081, 1050253722, 1058642330, 1085276160, 3212974206, 3161423387, 3184767365, 1064894717, 3161423387, 3198154212, 3148075556, 3212885404, 3175273688, 3164629877, 1065174400, 3191785816, 3184889222, 3180256379, 3212704312, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-aafb5513a53fa62e-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-aafb5513a53fa62e-1.digest new file mode 100644 index 000000000..39eaaca7a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-aafb5513a53fa62e-1.digest @@ -0,0 +1,46 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 0.0), lower_left_corner: Vec3A(-2.0955, -0.6787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda", "$ROOT/samples/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/subdivision_adaptive.usda +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 290, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 302, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:56e3227c4c4f5a8d camera=12:56e3227c4c4f5a8d shadow=12:56e3227c4c4f5a8d indirect=12:56e3227c4c4f5a8d +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:14e930a5d0b26e15 camera=12:14e930a5d0b26e15 shadow=12:14e930a5d0b26e15 indirect=12:14e930a5d0b26e15 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:85fd1a1e8638f8d5 camera=48:85fd1a1e8638f8d5 shadow=48:85fd1a1e8638f8d5 indirect=48:85fd1a1e8638f8d5 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=240:ceb54a03c39454ff camera=240:ceb54a03c39454ff shadow=240:ceb54a03c39454ff indirect=240:ceb54a03c39454ff +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance arc source: /World/Cage +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 3, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9125125757038733368, n_points: 26, n_indices: 144, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13090063996844779502, n_points: 122, n_indices: 720, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: Some("/World/Cam"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-b0da370b544b77b5-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-b0da370b544b77b5-1.digest new file mode 100644 index 000000000..1e5ef8ebe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-b0da370b544b77b5-1.digest @@ -0,0 +1,46 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 0.0), lower_left_corner: Vec3A(-2.0955, -0.6787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda", "$ROOT/samples/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/subdivision_adaptive.usda +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 290, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 302, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:56e3227c4c4f5a8d camera=12:56e3227c4c4f5a8d shadow=12:56e3227c4c4f5a8d indirect=12:56e3227c4c4f5a8d +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:14e930a5d0b26e15 camera=12:14e930a5d0b26e15 shadow=12:14e930a5d0b26e15 indirect=12:14e930a5d0b26e15 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:85fd1a1e8638f8d5 camera=48:85fd1a1e8638f8d5 shadow=48:85fd1a1e8638f8d5 indirect=48:85fd1a1e8638f8d5 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=240:ceb54a03c39454ff camera=240:ceb54a03c39454ff shadow=240:ceb54a03c39454ff indirect=240:ceb54a03c39454ff +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance arc source: /World/Cage +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 3, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9125125757038733368, n_points: 26, n_indices: 144, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13090063996844779502, n_points: 122, n_indices: 720, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-b14405d5563d3059-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-b14405d5563d3059-1.digest new file mode 100644 index 000000000..5eb1bc8f1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-b14405d5563d3059-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-4.4783754, -2.5855837, -4.5), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.4, 0.4, 0.4) sigma_a Vec3A(0.05, 0.05, 0.05) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: ["/World/Cam/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-b271371e2517722b-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-b271371e2517722b-1.digest new file mode 100644 index 000000000..e995c4891 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-b271371e2517722b-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-5.6632595, -1.9855835, -4.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 65536, max_depth: 4, width: 32, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 18 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/beauty", name: "renders/aovs_beauty.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sampleCount", name: "sampleCount", channel_prefix: None, source: SampleCount, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [("artist", "crust samples")] }, AovProduct { prim_path: "/Render/Products/data", name: "renders/aovs_data.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/Z", name: "Z", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/distance", name: "distance", channel_prefix: None, source: Distance, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Peye", name: "Peye", channel_prefix: None, source: Peye, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Half, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Neye", name: "Neye", channel_prefix: None, source: Neye, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/st", name: "st", channel_prefix: None, source: St, components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/alpha", name: "alpha", channel_prefix: None, source: Alpha, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$ROOT/samples/aovs.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/aovs.usda +layer: $DIR/edits.usda +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 1, prims: ["/Render/Products/Vars/diffuse_direct"], message: "/Render/Products/Vars/diffuse_direct: unknown raw source \"diffuse_direct\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cadf82024fa5b745 camera=2:cadf82024fa5b745 shadow=2:cadf82024fa5b745 indirect=2:cadf82024fa5b745 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-b80eb10c2ba34178-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-b80eb10c2ba34178-1.digest new file mode 100644 index 000000000..887261cad --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-b80eb10c2ba34178-1.digest @@ -0,0 +1,33 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-5.4717097, -3.2753882, -3.7005186), horizontal: Vec3A(9.504398, 0.0, -0.9989525), vertical: Vec3A(-0.0464556, 6.3556476, -0.4419955), u: Vec3A(0.9945219, 0.0, -0.104528464), v: Vec3A(-0.007291537, 0.9975641, -0.06937434), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 5, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 5, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c1d70d7332d9c611 camera=1:c1d70d7332d9c611 shadow=1:c1d70d7332d9c611 indirect=1:c1d70d7332d9c611 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Cam/Badge +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-b8d0f20bfaa82329-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-b8d0f20bfaa82329-1.digest new file mode 100644 index 000000000..c68257502 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-b8d0f20bfaa82329-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -3.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=64:5f84dcb3c52b7405 camera=64:5f84dcb3c52b7405 shadow=64:5f84dcb3c52b7405 indirect=64:5f84dcb3c52b7405 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Post +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13212365895451826409, n_points: 66, n_indices: 160, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: Some(ScreenKey([0, 1056964608, 1086324736, 1112074166, 0, 1056964608, 1086324736, 3212836864, 0, 3203704606, 1065353216, 0, 3203704606, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-c0b43128dd170a60-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-c0b43128dd170a60-1.digest new file mode 100644 index 000000000..88cdbb47b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-c0b43128dd170a60-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-4.247444, -2.5484667, -4.0), horizontal: Vec3A(8.494888, 0.0, 0.0), vertical: Vec3A(0.0, 5.0969334, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 40, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 40, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 3, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=3:a4253f27618d90a9 camera=3:a4253f27618d90a9 shadow=3:a4253f27618d90a9 indirect=3:a4253f27618d90a9 +provenance material /World/Looks/Hair: MaterialOrigin { slots: [0], displaced: false } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Groom +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-c1012e35073052d4-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-c1012e35073052d4-1.digest new file mode 100644 index 000000000..b0f7e26e3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-c1012e35073052d4-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -3.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=64:5f84dcb3c52b7405 camera=64:5f84dcb3c52b7405 shadow=64:5f84dcb3c52b7405 indirect=64:5f84dcb3c52b7405 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Post +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13212365895451826409, n_points: 66, n_indices: 160, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 1086324736, 1112074166, 0, 0, 1086324736, 3212836864, 0, 3203704606, 1065353216, 0, 3203704606, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-c5e06d108f13878a-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-c5e06d108f13878a-1.digest new file mode 100644 index 000000000..e73c3f9cc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-c5e06d108f13878a-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.6855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/beauty", name: "beauty.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-c6a1743cb004bfc8-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-c6a1743cb004bfc8-1.digest new file mode 100644 index 000000000..d466a3d58 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-c6a1743cb004bfc8-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.5, 0.9, 6.0), lower_left_corner: Vec3A(-4.2783756, -2.2855835, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e7e3ae7da8a1689e camera=2:e7e3ae7da8a1689e shadow=2:e7e3ae7da8a1689e indirect=2:e7e3ae7da8a1689e +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:50023872345aeae9 camera=2:50023872345aeae9 shadow=2:50023872345aeae9 indirect=2:50023872345aeae9 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-cfa1cdf26c62d04e-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-cfa1cdf26c62d04e-1.digest new file mode 100644 index 000000000..b4d39b8ca --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-cfa1cdf26c62d04e-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-4.9925594, -3.0086517, -0.98669434), horizontal: Vec3A(9.999988, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 32, width: 32, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/edits.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-d51c63f9aa3e9706-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-d51c63f9aa3e9706-1.digest new file mode 100644 index 000000000..58049b42d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-d51c63f9aa3e9706-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 8.0), lower_left_corner: Vec3A(-4.7783756, -1.6855836, -2.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 4 +light 0: area name Some("/World/K4") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/K3") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/K2") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/K1") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:18dc8de5ad9d8317 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:18dc8de5ad9d8317 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a357e5efbc0c08cc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a357e5efbc0c08cc +geom 3: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:15501014f6ccffa4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:15501014f6ccffa4 +geom 5: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee57dfea4661cce3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ee57dfea4661cce3 +provenance light /World/K1: LightOrigin { index: 3, geoms: 5..6 } +provenance light /World/K2: LightOrigin { index: 2, geoms: 4..5 } +provenance light /World/K3: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/K4: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/K4 +provenance geometry 2..3: /World/K3 +provenance geometry 3..4: /World/Dead +provenance geometry 4..5: /World/K2 +provenance geometry 5..6: /World/K1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-d6c1dd24567db6e1-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-d6c1dd24567db6e1-1.digest new file mode 100644 index 000000000..e19f7d0c9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-d6c1dd24567db6e1-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-1.3761721, -0.91744804, 0.0), horizontal: Vec3A(2.7523441, 0.0, 0.0), vertical: Vec3A(0.0, 1.8348961, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: false, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 6.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1cd1488d041dfcdb camera=1:1cd1488d041dfcdb shadow=1:1cd1488d041dfcdb indirect=1:1cd1488d041dfcdb +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2d90e22d27992fa5 camera=1:2d90e22d27992fa5 shadow=1:2d90e22d27992fa5 indirect=1:2d90e22d27992fa5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Far +provenance geometry 1..2: /World/Near +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-dcd2a1d09ecabfda-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-dcd2a1d09ecabfda-1.digest new file mode 100644 index 000000000..d28b73071 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-dcd2a1d09ecabfda-1.digest @@ -0,0 +1,45 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-2.8181643, -1.2734121, -4.1201806), horizontal: Vec3A(4.168041, 0.0, -0.4380788), vertical: Vec3A(-0.01718934, 2.3516948, -0.16354565), u: Vec3A(0.9945219, 0.0, -0.104528464), v: Vec3A(-0.007291537, 0.9975641, -0.06937434), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda", "$ROOT/samples/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/subdivision_adaptive.usda +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 96, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 108, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:56e3227c4c4f5a8d camera=12:56e3227c4c4f5a8d shadow=12:56e3227c4c4f5a8d indirect=12:56e3227c4c4f5a8d +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:14e930a5d0b26e15 camera=12:14e930a5d0b26e15 shadow=12:14e930a5d0b26e15 indirect=12:14e930a5d0b26e15 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1d38133bdf0eede5 camera=12:1d38133bdf0eede5 shadow=12:1d38133bdf0eede5 indirect=12:1d38133bdf0eede5 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=94:49cde4140ed25082 camera=94:49cde4140ed25082 shadow=94:49cde4140ed25082 indirect=94:49cde4140ed25082 +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance arc source: /World/Cage +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 4, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1096032668800489466, n_points: 49, n_indices: 282, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([1050253722, 1058642330, 1085276160, 1122308081, 1050253722, 1058642330, 1085276160, 3212974206, 3161423387, 3184767365, 1064894717, 3161423387, 3198154212, 3148075556, 3212885404, 3175273688, 3164629877, 1065174400, 3191785816, 3184889222, 3180256379, 3212704312, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Cam"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-e3a820d4d01acabc-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-e3a820d4d01acabc-1.digest new file mode 100644 index 000000000..141062fd1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-e3a820d4d01acabc-1.digest @@ -0,0 +1,45 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-1.7955, -0.57871866, -4.5), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda", "$ROOT/samples/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/subdivision_adaptive.usda +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 96, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 108, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:56e3227c4c4f5a8d camera=12:56e3227c4c4f5a8d shadow=12:56e3227c4c4f5a8d indirect=12:56e3227c4c4f5a8d +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:14e930a5d0b26e15 camera=12:14e930a5d0b26e15 shadow=12:14e930a5d0b26e15 indirect=12:14e930a5d0b26e15 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1d38133bdf0eede5 camera=12:1d38133bdf0eede5 shadow=12:1d38133bdf0eede5 indirect=12:1d38133bdf0eede5 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=94:49cde4140ed25082 camera=94:49cde4140ed25082 shadow=94:49cde4140ed25082 indirect=94:49cde4140ed25082 +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance arc source: /World/Cage +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 4, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1096032668800489466, n_points: 49, n_indices: 282, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([1050253722, 1058642330, 1085276160, 1122308081, 1050253722, 1058642330, 1085276160, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-ea33d0579957ea29-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-ea33d0579957ea29-1.digest new file mode 100644 index 000000000..be2debf61 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-ea33d0579957ea29-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-7.492556, -3.0086517, -0.98669434), horizontal: Vec3A(14.999981, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/edits.usda +layer: $DIR/input.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-ec4aae2ab8a0f13f-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-ec4aae2ab8a0f13f-1.digest new file mode 100644 index 000000000..507820571 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-ec4aae2ab8a0f13f-1.digest @@ -0,0 +1,33 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.6855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 5, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 5, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7717a51d7d9da1aa camera=1:7717a51d7d9da1aa shadow=1:7717a51d7d9da1aa indirect=1:7717a51d7d9da1aa +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Cam/Badge +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-efadd5d5ae9b33c8-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-efadd5d5ae9b33c8-1.digest new file mode 100644 index 000000000..2f920c19b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-efadd5d5ae9b33c8-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -3.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +warning: Warning { code: TimeMotionNeedsFrame, kind: Skipped, count: 1, prims: ["/World/Mover"], message: "/World/Cam opens its shutter (0 .. 0.5), but no frame was given: 1 drawn prim's time-sampled transforms are not evaluated over it and render sharp (the first at /World/Mover). Render a frame with -f" } +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Mover +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4602678819172646912], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-f437292a1baf4562-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-f437292a1baf4562-1.digest new file mode 100644 index 000000000..c231b4380 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-f437292a1baf4562-1.digest @@ -0,0 +1,33 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.6855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/beauty", name: "beauty.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 5, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 5, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8644ef657b9e2de5 camera=1:8644ef657b9e2de5 shadow=1:8644ef657b9e2de5 indirect=1:8644ef657b9e2de5 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Cam2/Badge +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-f7edbb7e619c3f5d-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-f7edbb7e619c3f5d-1.digest new file mode 100644 index 000000000..ab8612929 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-f7edbb7e619c3f5d-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-1.3761721, -0.91744804, 0.0), horizontal: Vec3A(2.7523441, 0.0, 0.0), vertical: Vec3A(0.0, 1.8348961, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 1.25, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 6.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1cd1488d041dfcdb camera=1:1cd1488d041dfcdb shadow=1:1cd1488d041dfcdb indirect=1:1cd1488d041dfcdb +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2d90e22d27992fa5 camera=1:2d90e22d27992fa5 shadow=1:2d90e22d27992fa5 indirect=1:2d90e22d27992fa5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Far +provenance geometry 1..2: /World/Near +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-fdfde88486c6dc74-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-fdfde88486c6dc74-1.digest new file mode 100644 index 000000000..71fb47f98 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-fdfde88486c6dc74-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -3.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/edits.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/edits.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Mover +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/empty_source_name_usda-acd517e82c0f53e1-1.digest b/crates/crust-core/tests/data/import_baselines/empty_source_name_usda-acd517e82c0f53e1-1.digest new file mode 100644 index 000000000..61d4192e8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/empty_source_name_usda-acd517e82c0f53e1-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/Pworld", name: "Pworld", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/empty_source_name.usda"], invisible_overrides: Some(0) } +layer: $DIR/empty_source_name.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/empty_usda-c1bba32cb87c83e9-1.digest b/crates/crust-core/tests/data/import_baselines/empty_usda-c1bba32cb87c83e9-1.digest new file mode 100644 index 000000000..0f4fd560f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/empty_usda-c1bba32cb87c83e9-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/empty.usda"], invisible_overrides: Some(0) } +layer: $DIR/empty.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/exposure_0_usda-c142af23c7dc6585-1.digest b/crates/crust-core/tests/data/import_baselines/exposure_0_usda-c142af23c7dc6585-1.digest new file mode 100644 index 000000000..1f222376e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/exposure_0_usda-c142af23c7dc6585-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/look_out", name: "look_out", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/look_data", name: "look_data", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: false }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/look"], display_filters: [], display: "beauty" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/exposure_0.usda"], invisible_overrides: Some(0) } +layer: $DIR/exposure_0.usda +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/exposure_2_usda-1ae682494eb4e641-1.digest b/crates/crust-core/tests/data/import_baselines/exposure_2_usda-1ae682494eb4e641-1.digest new file mode 100644 index 000000000..572a6c797 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/exposure_2_usda-1ae682494eb4e641-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 4.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/look_out", name: "look_out", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/look_data", name: "look_data", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: false }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/look"], display_filters: [], display: "beauty" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/exposure_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/exposure_2.usda +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/exposure_usda-0139c7326dc66b4b-1.digest b/crates/crust-core/tests/data/import_baselines/exposure_usda-0139c7326dc66b4b-1.digest new file mode 100644 index 000000000..2f458dbd9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/exposure_usda-0139c7326dc66b4b-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/exposure.usda"], invisible_overrides: Some(0) } +layer: $DIR/exposure.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/L") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:984632b55acb5495 +provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/L +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/expression_usda-843ebd908965795b-1.digest b/crates/crust-core/tests/data/import_baselines/expression_usda-843ebd908965795b-1.digest new file mode 100644 index 000000000..ab1a9f5d0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/expression_usda-843ebd908965795b-1.digest @@ -0,0 +1,32 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/meshes", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/expression.usda"], invisible_overrides: Some(0) } +layer: $DIR/expression.usda +layer: $DIR/expression_payload.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f6c33096abc28e3a camera=1:f6c33096abc28e3a shadow=1:f6c33096abc28e3a indirect=1:f6c33096abc28e3a +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:35cdd9a0d6e50805 camera=1:35cdd9a0d6e50805 shadow=1:35cdd9a0d6e50805 indirect=1:35cdd9a0d6e50805 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d51ecb642f0c8e15 camera=1:d51ecb642f0c8e15 shadow=1:d51ecb642f0c8e15 indirect=1:d51ecb642f0c8e15 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e82ca95ac2d366b8 camera=2:e82ca95ac2d366b8 shadow=2:e82ca95ac2d366b8 indirect=2:e82ca95ac2d366b8 +provenance geometry 0..1: /World/Prop3 +provenance geometry 1..2: /World/Prop2 +provenance geometry 2..3: /World/Prop1 +provenance geometry 3..4: /World/Prop0 +provenance geometry 4..5: /World/Chars/Ball +provenance geometry 5..6: /World/Chars/Hero/Skin +provenance mesh: MeshOrigin { geom_id: 5, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2, 3, 4] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/meshes"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/expression_usda-e90ffc3af7a5e58d-1.digest b/crates/crust-core/tests/data/import_baselines/expression_usda-e90ffc3af7a5e58d-1.digest new file mode 100644 index 000000000..3c7af9dc4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/expression_usda-e90ffc3af7a5e58d-1.digest @@ -0,0 +1,32 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/chars", holdouts: 2, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/expression.usda"], invisible_overrides: Some(0) } +layer: $DIR/expression.usda +layer: $DIR/expression_payload.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f6c33096abc28e3a camera=1:f6c33096abc28e3a shadow=1:f6c33096abc28e3a indirect=1:f6c33096abc28e3a +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:35cdd9a0d6e50805 camera=1:35cdd9a0d6e50805 shadow=1:35cdd9a0d6e50805 indirect=1:35cdd9a0d6e50805 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d51ecb642f0c8e15 camera=1:d51ecb642f0c8e15 shadow=1:d51ecb642f0c8e15 indirect=1:d51ecb642f0c8e15 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e82ca95ac2d366b8 camera=2:e82ca95ac2d366b8 shadow=2:e82ca95ac2d366b8 indirect=2:e82ca95ac2d366b8 +provenance geometry 0..1: /World/Prop3 +provenance geometry 1..2: /World/Prop2 +provenance geometry 2..3: /World/Prop1 +provenance geometry 3..4: /World/Prop0 +provenance geometry 4..5: /World/Chars/Ball +provenance geometry 5..6: /World/Chars/Hero/Skin +provenance mesh: MeshOrigin { geom_id: 5, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2, 3, 4] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/chars"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fallback_usda-0dcbe995ba9d33f5-1.digest b/crates/crust-core/tests/data/import_baselines/fallback_usda-0dcbe995ba9d33f5-1.digest new file mode 100644 index 000000000..278c736c9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fallback_usda-0dcbe995ba9d33f5-1.digest @@ -0,0 +1,32 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/fallback.usda"], invisible_overrides: Some(0) } +layer: $DIR/fallback.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e52d9a39978026c5 camera=2:e52d9a39978026c5 shadow=2:e52d9a39978026c5 indirect=2:e52d9a39978026c5 +geom 1: material #1 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:71682785a2d90a85 camera=2:71682785a2d90a85 shadow=2:71682785a2d90a85 indirect=2:71682785a2d90a85 +geom 2: material #2 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:658935472ec9d838 camera=2:658935472ec9d838 shadow=2:658935472ec9d838 indirect=2:658935472ec9d838 +provenance material /W/Looks/Plain: MaterialOrigin { slots: [0], displaced: false } +provenance material /W/Looks/WithConstant: MaterialOrigin { slots: [1], displaced: false } +provenance material /W/Looks/WithFallback: MaterialOrigin { slots: [2], displaced: false } +provenance geometry 0..1: /W/Geo/C +provenance geometry 1..2: /W/Geo/B +provenance geometry 2..3: /W/Geo/A +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 204846636954257726, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13714614058947076987, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7102539751037723505, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fallbacks_usda-19de7bd844b31582-1.digest b/crates/crust-core/tests/data/import_baselines/fallbacks_usda-19de7bd844b31582-1.digest new file mode 100644 index 000000000..f33bacca3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fallbacks_usda-19de7bd844b31582-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fallbacks.usda"], invisible_overrides: Some(0) } +layer: $DIR/fallbacks.usda +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 746, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 746, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=614:e346211ba8f75fb3 camera=614:e346211ba8f75fb3 shadow=614:e346211ba8f75fb3 indirect=614:e346211ba8f75fb3 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:3d2a5583044d7000 camera=4:3d2a5583044d7000 shadow=4:3d2a5583044d7000 indirect=4:3d2a5583044d7000 +geom 2: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:d3d574bf0a638748 camera=128:d3d574bf0a638748 shadow=128:d3d574bf0a638748 indirect=128:d3d574bf0a638748 +provenance material /W/Looks/Mtl: MaterialOrigin { slots: [2], displaced: false } +provenance geometry 0..1: /W/Plain +provenance geometry 1..2: /W/Loop +provenance geometry 2..3: /W/Charted +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18222910834673307205, n_points: 309, n_indices: 1842, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16884212571384875336, n_points: 4, n_indices: 12, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16045738747203913522, n_points: 81, n_indices: 384, n_uvs: Some(81), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/far_light_blocked_usda-ad271da815e04f1e-1.digest b/crates/crust-core/tests/data/import_baselines/far_light_blocked_usda-ad271da815e04f1e-1.digest new file mode 100644 index 000000000..72fe248a8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/far_light_blocked_usda-ad271da815e04f1e-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/far_light_blocked.usda"], invisible_overrides: Some(0) } +layer: $DIR/far_light_blocked.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f761420f7326e0c1 camera=2:f761420f7326e0c1 shadow=2:f761420f7326e0c1 indirect=2:f761420f7326e0c1 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:98baf1312be377e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:98baf1312be377e5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..3 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Ground +provenance geometry 2..3: /World/Sun +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17572034852625986120, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/far_light_clear_usda-4072c77a8d9198cd-1.digest b/crates/crust-core/tests/data/import_baselines/far_light_clear_usda-4072c77a8d9198cd-1.digest new file mode 100644 index 000000000..fbb905d3b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/far_light_clear_usda-4072c77a8d9198cd-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/far_light_clear.usda"], invisible_overrides: Some(0) } +layer: $DIR/far_light_clear.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:98baf1312be377e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:98baf1312be377e5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Ground +provenance geometry 1..2: /World/Sun +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/far_light_dimmed_usda-8a326222fcc01e51-1.digest b/crates/crust-core/tests/data/import_baselines/far_light_dimmed_usda-8a326222fcc01e51-1.digest new file mode 100644 index 000000000..3976f76c1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/far_light_dimmed_usda-8a326222fcc01e51-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/far_light_dimmed.usda"], invisible_overrides: Some(0) } +layer: $DIR/far_light_dimmed.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.0, 0.0, 0.0) sigma_a Vec3A(20.0, 20.0, 20.0) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:98baf1312be377e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:98baf1312be377e5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Ground +provenance geometry 1..2: /World/Sun +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: ["/World/Haze"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/filters_usda-c37f75b53580c4aa-1.digest b/crates/crust-core/tests/data/import_baselines/filters_usda-c37f75b53580c4aa-1.digest new file mode 100644 index 000000000..3fe25006b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/filters_usda-c37f75b53580c4aa-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/arnold", name: "arnold", channel_prefix: None, source: Normal, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/karma", name: "karma", channel_prefix: None, source: Alpha, components: 1, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/rman", name: "rman", channel_prefix: None, source: St, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/multi", name: "multi", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/filters.usda"], invisible_overrides: Some(0) } +layer: $DIR/filters.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/five_usda-1346633108536d3b-1.digest b/crates/crust-core/tests/data/import_baselines/five_usda-1346633108536d3b-1.digest new file mode 100644 index 000000000..37e57d52a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/five_usda-1346633108536d3b-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/five.usda"], invisible_overrides: Some(0) } +layer: $DIR/five.usda +lights: 0 +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 0, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c590b07dfa2f3d93 camera=1:c590b07dfa2f3d93 shadow=1:c590b07dfa2f3d93 indirect=1:c590b07dfa2f3d93 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5bad523f30a52c86 camera=1:5bad523f30a52c86 shadow=1:5bad523f30a52c86 indirect=1:5bad523f30a52c86 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3652186f2409e5d3 camera=1:3652186f2409e5d3 shadow=1:3652186f2409e5d3 indirect=1:3652186f2409e5d3 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ae6d1e638460c55a camera=1:ae6d1e638460c55a shadow=1:ae6d1e638460c55a indirect=1:ae6d1e638460c55a +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bac7a9afc297cdcf camera=1:bac7a9afc297cdcf shadow=1:bac7a9afc297cdcf indirect=1:bac7a9afc297cdcf +provenance geometry 0..1: /World/S0 +provenance geometry 1..2: /World/S1 +provenance geometry 2..3: /World/S2 +provenance geometry 3..4: /World/S3 +provenance geometry 4..5: /World/S4 +provenance spheres: [0, 1, 2, 3, 4] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/five_usda-98f6c3806296ddf6-1.digest b/crates/crust-core/tests/data/import_baselines/five_usda-98f6c3806296ddf6-1.digest new file mode 100644 index 000000000..35b15b4bb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/five_usda-98f6c3806296ddf6-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/five.usda"], invisible_overrides: Some(0) } +layer: $DIR/five.usda +lights: 0 +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 0, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c590b07dfa2f3d93 camera=1:c590b07dfa2f3d93 shadow=1:c590b07dfa2f3d93 indirect=1:c590b07dfa2f3d93 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5bad523f30a52c86 camera=1:5bad523f30a52c86 shadow=1:5bad523f30a52c86 indirect=1:5bad523f30a52c86 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3652186f2409e5d3 camera=1:3652186f2409e5d3 shadow=1:3652186f2409e5d3 indirect=1:3652186f2409e5d3 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ae6d1e638460c55a camera=1:ae6d1e638460c55a shadow=1:ae6d1e638460c55a indirect=1:ae6d1e638460c55a +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bac7a9afc297cdcf camera=1:bac7a9afc297cdcf shadow=1:bac7a9afc297cdcf indirect=1:bac7a9afc297cdcf +provenance geometry 0..1: /World/S0 +provenance geometry 1..2: /World/S1 +provenance geometry 2..3: /World/S2 +provenance geometry 3..4: /World/S3 +provenance geometry 4..5: /World/S4 +provenance spheres: [0, 1, 2, 3, 4] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_a_usda-c25ea86ab9b74771-1.digest b/crates/crust-core/tests/data/import_baselines/fog_a_usda-c25ea86ab9b74771-1.digest new file mode 100644 index 000000000..9bac3a46c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_a_usda-c25ea86ab9b74771-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 0.0), lower_left_corner: Vec3A(-2.0000002, -9.0, 2.0000002), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 8.881785e-16, -4.0000005), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 2.220446e-16, -1.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4096, max_depth: 3, width: 4, height: 4, region: PixelRect { x0: 0, y0: 0, x1: 4, y1: 4 }, min_samples_per_pixel: 4096, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog_a.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog_a.usda +lights: 1 +light 0: area name Some("/World/A") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.15, 0.15, 0.15) sigma_a Vec3A(0.1, 0.1, 0.1) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ea8cf4535fd53b08 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ea8cf4535fd53b08 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance light /World/A: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/A +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_b_usda-d165df586bcbb934-1.digest b/crates/crust-core/tests/data/import_baselines/fog_b_usda-d165df586bcbb934-1.digest new file mode 100644 index 000000000..33c308da7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_b_usda-d165df586bcbb934-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 0.0), lower_left_corner: Vec3A(-2.0000002, -9.0, 2.0000002), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 8.881785e-16, -4.0000005), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 2.220446e-16, -1.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4096, max_depth: 3, width: 4, height: 4, region: PixelRect { x0: 0, y0: 0, x1: 4, y1: 4 }, min_samples_per_pixel: 4096, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog_b.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog_b.usda +lights: 1 +light 0: area name Some("/World/B") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.15, 0.15, 0.15) sigma_a Vec3A(0.1, 0.1, 0.1) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:97233df63c15c661 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:97233df63c15c661 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance light /World/B: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/B +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_bsdf_usda-240806b5ed98a443-1.digest b/crates/crust-core/tests/data/import_baselines/fog_bsdf_usda-240806b5ed98a443-1.digest new file mode 100644 index 000000000..32e5efc1c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_bsdf_usda-240806b5ed98a443-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 0.0), lower_left_corner: Vec3A(-2.0000002, -9.0, 2.0000002), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 8.881785e-16, -4.0000005), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 2.220446e-16, -1.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16384, max_depth: 3, width: 4, height: 4, region: PixelRect { x0: 0, y0: 0, x1: 4, y1: 4 }, min_samples_per_pixel: 16384, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog_bsdf.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog_bsdf.usda +lights: 2 +light 0: area name Some("/World/B") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/A") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.15, 0.15, 0.15) sigma_a Vec3A(0.1, 0.1, 0.1) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:97233df63c15c661 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:97233df63c15c661 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ea8cf4535fd53b08 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ea8cf4535fd53b08 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance light /World/A: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/B: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/B +provenance geometry 1..2: /World/A +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_excluded_bsdf_usda-9ebfc40e02ef831f-1.digest b/crates/crust-core/tests/data/import_baselines/fog_excluded_bsdf_usda-9ebfc40e02ef831f-1.digest new file mode 100644 index 000000000..2ba724bbf --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_excluded_bsdf_usda-9ebfc40e02ef831f-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-5.142858, -5.142858, -2.0), horizontal: Vec3A(10.285716, 0.0, 0.0), vertical: Vec3A(0.0, 10.285716, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 36.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog_excluded_bsdf.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog_excluded_bsdf.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(1.0, 1.0, 1.0) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 1 homogeneous true +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bf7641bcd49398e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:bf7641bcd49398e5 +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Key +provenance spheres: [] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_excluded_power_usda-a0c514c4c53c3bc4-1.digest b/crates/crust-core/tests/data/import_baselines/fog_excluded_power_usda-a0c514c4c53c3bc4-1.digest new file mode 100644 index 000000000..c3f4b5325 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_excluded_power_usda-a0c514c4c53c3bc4-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-5.142858, -5.142858, -2.0), horizontal: Vec3A(10.285716, 0.0, 0.0), vertical: Vec3A(0.0, 10.285716, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 1, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 36.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog_excluded_power.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog_excluded_power.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(1.0, 1.0, 1.0) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 1 homogeneous true +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bf7641bcd49398e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:bf7641bcd49398e5 +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Key +provenance spheres: [] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_light_usda-ac22cdb8dae42d75-1.digest b/crates/crust-core/tests/data/import_baselines/fog_light_usda-ac22cdb8dae42d75-1.digest new file mode 100644 index 000000000..630af6a23 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_light_usda-ac22cdb8dae42d75-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 0.0), lower_left_corner: Vec3A(-2.0000002, -9.0, 2.0000002), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 8.881785e-16, -4.0000005), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 2.220446e-16, -1.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4096, max_depth: 3, width: 4, height: 4, region: PixelRect { x0: 0, y0: 0, x1: 4, y1: 4 }, min_samples_per_pixel: 4096, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog_light.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog_light.usda +lights: 2 +light 0: area name Some("/World/B") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/A") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.15, 0.15, 0.15) sigma_a Vec3A(0.1, 0.1, 0.1) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:97233df63c15c661 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:97233df63c15c661 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ea8cf4535fd53b08 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ea8cf4535fd53b08 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance light /World/A: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/B: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/B +provenance geometry 1..2: /World/A +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_lit_bsdf_usda-4f776a8e8b44bb17-1.digest b/crates/crust-core/tests/data/import_baselines/fog_lit_bsdf_usda-4f776a8e8b44bb17-1.digest new file mode 100644 index 000000000..86b486db6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_lit_bsdf_usda-4f776a8e8b44bb17-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-5.142858, -5.142858, -2.0), horizontal: Vec3A(10.285716, 0.0, 0.0), vertical: Vec3A(0.0, 10.285716, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 36.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog_lit_bsdf.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog_lit_bsdf.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(1.0, 1.0, 1.0) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bf7641bcd49398e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:bf7641bcd49398e5 +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Key +provenance spheres: [] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_lit_power_usda-cbade45198a3c38a-1.digest b/crates/crust-core/tests/data/import_baselines/fog_lit_power_usda-cbade45198a3c38a-1.digest new file mode 100644 index 000000000..a3b9ec32a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_lit_power_usda-cbade45198a3c38a-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-5.142858, -5.142858, -2.0), horizontal: Vec3A(10.285716, 0.0, 0.0), vertical: Vec3A(0.0, 10.285716, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 1, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 36.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog_lit_power.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog_lit_power.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(1.0, 1.0, 1.0) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bf7641bcd49398e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:bf7641bcd49398e5 +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Key +provenance spheres: [] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_power_usda-c8d64f5dff77f2e7-1.digest b/crates/crust-core/tests/data/import_baselines/fog_power_usda-c8d64f5dff77f2e7-1.digest new file mode 100644 index 000000000..57bf78019 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_power_usda-c8d64f5dff77f2e7-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 0.0), lower_left_corner: Vec3A(-2.0000002, -9.0, 2.0000002), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 8.881785e-16, -4.0000005), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 2.220446e-16, -1.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4096, max_depth: 3, width: 4, height: 4, region: PixelRect { x0: 0, y0: 0, x1: 4, y1: 4 }, min_samples_per_pixel: 4096, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog_power.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog_power.usda +lights: 2 +light 0: area name Some("/World/B") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/A") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.15, 0.15, 0.15) sigma_a Vec3A(0.1, 0.1, 0.1) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:97233df63c15c661 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:97233df63c15c661 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ea8cf4535fd53b08 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ea8cf4535fd53b08 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance light /World/A: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/B: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/B +provenance geometry 1..2: /World/A +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-219213dd24619244-1.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-219213dd24619244-1.digest new file mode 100644 index 000000000..3cc2e75dd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-219213dd24619244-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 8.5), lower_left_corner: Vec3A(-5.6632595, -1.1855836, -1.5), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 16, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.15, 0.15, 0.15) sigma_a Vec3A(0.01, 0.015, 0.025) g 0.3 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 3 geometries, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:147964f7c513cf55 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:147964f7c513cf55 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1b43ff4c259f42b0 camera=1:1b43ff4c259f42b0 shadow=1:1b43ff4c259f42b0 indirect=1:1b43ff4c259f42b0 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=10:5e739a86b9f39f85 camera=10:5e739a86b9f39f85 shadow=10:5e739a86b9f39f85 indirect=10:5e739a86b9f39f85 +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Ball +provenance geometry 2..3: /World/Room +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-1.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-1.digest new file mode 100644 index 000000000..3cc2e75dd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 8.5), lower_left_corner: Vec3A(-5.6632595, -1.1855836, -1.5), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 16, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.15, 0.15, 0.15) sigma_a Vec3A(0.01, 0.015, 0.025) g 0.3 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 3 geometries, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:147964f7c513cf55 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:147964f7c513cf55 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1b43ff4c259f42b0 camera=1:1b43ff4c259f42b0 shadow=1:1b43ff4c259f42b0 indirect=1:1b43ff4c259f42b0 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=10:5e739a86b9f39f85 camera=10:5e739a86b9f39f85 shadow=10:5e739a86b9f39f85 indirect=10:5e739a86b9f39f85 +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Ball +provenance geometry 2..3: /World/Room +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-2.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-2.digest new file mode 100644 index 000000000..3cc2e75dd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-2.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 8.5), lower_left_corner: Vec3A(-5.6632595, -1.1855836, -1.5), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 16, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.15, 0.15, 0.15) sigma_a Vec3A(0.01, 0.015, 0.025) g 0.3 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 3 geometries, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:147964f7c513cf55 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:147964f7c513cf55 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1b43ff4c259f42b0 camera=1:1b43ff4c259f42b0 shadow=1:1b43ff4c259f42b0 indirect=1:1b43ff4c259f42b0 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=10:5e739a86b9f39f85 camera=10:5e739a86b9f39f85 shadow=10:5e739a86b9f39f85 indirect=10:5e739a86b9f39f85 +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Ball +provenance geometry 2..3: /World/Room +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-509c893b29b09cb4-1.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-509c893b29b09cb4-1.digest new file mode 100644 index 000000000..be8829312 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-509c893b29b09cb4-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/fog.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 1 +volume 0: sigma_s Vec3A(1.0, 1.0, 1.0) sigma_a Vec3A(0.2, 0.4, 0.6) g 0.3 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-54b48891484e98a0-1.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-54b48891484e98a0-1.digest new file mode 100644 index 000000000..3cc2e75dd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-54b48891484e98a0-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 8.5), lower_left_corner: Vec3A(-5.6632595, -1.1855836, -1.5), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 16, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.15, 0.15, 0.15) sigma_a Vec3A(0.01, 0.015, 0.025) g 0.3 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 3 geometries, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:147964f7c513cf55 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:147964f7c513cf55 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1b43ff4c259f42b0 camera=1:1b43ff4c259f42b0 shadow=1:1b43ff4c259f42b0 indirect=1:1b43ff4c259f42b0 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=10:5e739a86b9f39f85 camera=10:5e739a86b9f39f85 shadow=10:5e739a86b9f39f85 indirect=10:5e739a86b9f39f85 +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Ball +provenance geometry 2..3: /World/Room +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-643d53c126eee84d-1.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-643d53c126eee84d-1.digest new file mode 100644 index 000000000..9611f7364 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-643d53c126eee84d-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 8.5), lower_left_corner: Vec3A(-5.6632595, -1.1855836, -1.5), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 16, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.15, 0.15, 0.15) sigma_a Vec3A(0.01, 0.015, 0.025) g 0.3 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 3 geometries, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:147964f7c513cf55 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:147964f7c513cf55 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1b43ff4c259f42b0 camera=1:1b43ff4c259f42b0 shadow=1:1b43ff4c259f42b0 indirect=1:1b43ff4c259f42b0 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=10:5e739a86b9f39f85 camera=10:5e739a86b9f39f85 shadow=10:5e739a86b9f39f85 indirect=10:5e739a86b9f39f85 +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Ball +provenance geometry 2..3: /World/Room +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-1.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-1.digest new file mode 100644 index 000000000..3cc2e75dd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 8.5), lower_left_corner: Vec3A(-5.6632595, -1.1855836, -1.5), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 16, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.15, 0.15, 0.15) sigma_a Vec3A(0.01, 0.015, 0.025) g 0.3 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 3 geometries, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:147964f7c513cf55 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:147964f7c513cf55 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1b43ff4c259f42b0 camera=1:1b43ff4c259f42b0 shadow=1:1b43ff4c259f42b0 indirect=1:1b43ff4c259f42b0 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=10:5e739a86b9f39f85 camera=10:5e739a86b9f39f85 shadow=10:5e739a86b9f39f85 indirect=10:5e739a86b9f39f85 +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Ball +provenance geometry 2..3: /World/Room +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-2.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-2.digest new file mode 100644 index 000000000..3cc2e75dd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-2.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 8.5), lower_left_corner: Vec3A(-5.6632595, -1.1855836, -1.5), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 16, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.15, 0.15, 0.15) sigma_a Vec3A(0.01, 0.015, 0.025) g 0.3 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 3 geometries, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:147964f7c513cf55 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:147964f7c513cf55 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1b43ff4c259f42b0 camera=1:1b43ff4c259f42b0 shadow=1:1b43ff4c259f42b0 indirect=1:1b43ff4c259f42b0 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=10:5e739a86b9f39f85 camera=10:5e739a86b9f39f85 shadow=10:5e739a86b9f39f85 indirect=10:5e739a86b9f39f85 +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Ball +provenance geometry 2..3: /World/Room +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-3.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-3.digest new file mode 100644 index 000000000..3cc2e75dd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-3.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 8.5), lower_left_corner: Vec3A(-5.6632595, -1.1855836, -1.5), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 16, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.15, 0.15, 0.15) sigma_a Vec3A(0.01, 0.015, 0.025) g 0.3 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 3 geometries, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:147964f7c513cf55 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:147964f7c513cf55 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1b43ff4c259f42b0 camera=1:1b43ff4c259f42b0 shadow=1:1b43ff4c259f42b0 indirect=1:1b43ff4c259f42b0 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=10:5e739a86b9f39f85 camera=10:5e739a86b9f39f85 shadow=10:5e739a86b9f39f85 indirect=10:5e739a86b9f39f85 +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Ball +provenance geometry 2..3: /World/Room +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-4.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-4.digest new file mode 100644 index 000000000..3cc2e75dd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-4.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 8.5), lower_left_corner: Vec3A(-5.6632595, -1.1855836, -1.5), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 16, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.15, 0.15, 0.15) sigma_a Vec3A(0.01, 0.015, 0.025) g 0.3 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 3 geometries, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:147964f7c513cf55 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:147964f7c513cf55 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1b43ff4c259f42b0 camera=1:1b43ff4c259f42b0 shadow=1:1b43ff4c259f42b0 indirect=1:1b43ff4c259f42b0 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=10:5e739a86b9f39f85 camera=10:5e739a86b9f39f85 shadow=10:5e739a86b9f39f85 indirect=10:5e739a86b9f39f85 +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Ball +provenance geometry 2..3: /World/Room +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-5.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-5.digest new file mode 100644 index 000000000..3cc2e75dd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-5.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 8.5), lower_left_corner: Vec3A(-5.6632595, -1.1855836, -1.5), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 16, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.15, 0.15, 0.15) sigma_a Vec3A(0.01, 0.015, 0.025) g 0.3 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 3 geometries, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:147964f7c513cf55 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:147964f7c513cf55 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1b43ff4c259f42b0 camera=1:1b43ff4c259f42b0 shadow=1:1b43ff4c259f42b0 indirect=1:1b43ff4c259f42b0 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=10:5e739a86b9f39f85 camera=10:5e739a86b9f39f85 shadow=10:5e739a86b9f39f85 indirect=10:5e739a86b9f39f85 +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Ball +provenance geometry 2..3: /World/Room +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-c4be6859ecb41784-1.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-c4be6859ecb41784-1.digest new file mode 100644 index 000000000..3cc2e75dd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-c4be6859ecb41784-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 8.5), lower_left_corner: Vec3A(-5.6632595, -1.1855836, -1.5), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 16, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.15, 0.15, 0.15) sigma_a Vec3A(0.01, 0.015, 0.025) g 0.3 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 3 geometries, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:147964f7c513cf55 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:147964f7c513cf55 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1b43ff4c259f42b0 camera=1:1b43ff4c259f42b0 shadow=1:1b43ff4c259f42b0 indirect=1:1b43ff4c259f42b0 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=10:5e739a86b9f39f85 camera=10:5e739a86b9f39f85 shadow=10:5e739a86b9f39f85 indirect=10:5e739a86b9f39f85 +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Ball +provenance geometry 2..3: /World/Room +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fog_wall_usda-d41794b69bda1696-1.digest b/crates/crust-core/tests/data/import_baselines/fog_wall_usda-d41794b69bda1696-1.digest new file mode 100644 index 000000000..edc0bb693 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_wall_usda-d41794b69bda1696-1.digest @@ -0,0 +1,33 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 5.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -5.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fog_wall.usda"], invisible_overrides: Some(0) } +layer: $DIR/fog_wall.usda +lights: 2 +light 0: area name Some("/World/Geo/B") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Geo/A") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 14, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a05fcaa75be494b4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a05fcaa75be494b4 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:760997a6fb1839ac camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:760997a6fb1839ac +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:124afecfd63f5b25 camera=2:124afecfd63f5b25 shadow=2:124afecfd63f5b25 indirect=2:124afecfd63f5b25 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: true, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:cd5fc406e2358085 camera=12:cd5fc406e2358085 shadow=12:cd5fc406e2358085 indirect=12:cd5fc406e2358085 +provenance material /World/Looks/Fog: MaterialOrigin { slots: [3], displaced: false } +provenance light /World/Geo/A: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Geo/B: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Geo/B +provenance geometry 1..2: /World/Geo/A +provenance geometry 2..3: /World/Geo/Wall +provenance geometry 3..4: /World/Geo/FogBox +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13313980259990466373, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 360626586407720226, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/foreign_mtlx_usda-1e9da30a7325ba81-1.digest b/crates/crust-core/tests/data/import_baselines/foreign_mtlx_usda-1e9da30a7325ba81-1.digest new file mode 100644 index 000000000..f1d49f4d6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/foreign_mtlx_usda-1e9da30a7325ba81-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/foreign_mtlx.usda"], invisible_overrides: Some(0) } +layer: $DIR/foreign_mtlx.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: true, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Glass: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fov_cm_usda-aeeac260878050ff-1.digest b/crates/crust-core/tests/data/import_baselines/fov_cm_usda-aeeac260878050ff-1.digest new file mode 100644 index 000000000..85cfd4ee5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fov_cm_usda-aeeac260878050ff-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 1.25, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 10.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/fov_cm.usda"], invisible_overrides: Some(0) } +layer: $DIR/fov_cm.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fov_m_usda-b134eebe4c048026-1.digest b/crates/crust-core/tests/data/import_baselines/fov_m_usda-b134eebe4c048026-1.digest new file mode 100644 index 000000000..e32cec368 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fov_m_usda-b134eebe4c048026-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0125, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 10.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/fov_m.usda"], invisible_overrides: Some(0) } +layer: $DIR/fov_m.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/frustum_usda-78a6eed72a138fc6-1.digest b/crates/crust-core/tests/data/import_baselines/frustum_usda-78a6eed72a138fc6-1.digest new file mode 100644 index 000000000..7a9156f35 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/frustum_usda-78a6eed72a138fc6-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/frustum.usda"], invisible_overrides: Some(0) } +layer: $DIR/frustum.usda +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 780, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 780, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:ccd41ed5d0a28c25 camera=12:ccd41ed5d0a28c25 shadow=12:ccd41ed5d0a28c25 indirect=12:ccd41ed5d0a28c25 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:bb9aeaae01563c51 camera=768:bb9aeaae01563c51 shadow=768:bb9aeaae01563c51 indirect=768:bb9aeaae01563c51 +provenance geometry 0..1: /W/Behind +provenance geometry 1..2: /W/Ahead +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18253940121988772376, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13487480004083563611, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_a_light_s_shape_usda-ca8302fa13315ae0-1.digest b/crates/crust-core/tests/data/import_baselines/full_a_light_s_shape_usda-ca8302fa13315ae0-1.digest new file mode 100644 index 000000000..e1d91f076 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_a_light_s_shape_usda-ca8302fa13315ae0-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_a_light's_shape.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_a_light's_shape.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb8c14f38ace31a8 camera=1:fb8c14f38ace31a8 shadow=1:fb8c14f38ace31a8 indirect=1:fb8c14f38ace31a8 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fc0f2041959d1735 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:fc0f2041959d1735 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_a_transform_usda-b99d3970dc3191b0-1.digest b/crates/crust-core/tests/data/import_baselines/full_a_transform_usda-b99d3970dc3191b0-1.digest new file mode 100644 index 000000000..241d791f4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_a_transform_usda-b99d3970dc3191b0-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_a_transform.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_a_transform.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb8c14f38ace31a8 camera=1:fb8c14f38ace31a8 shadow=1:fb8c14f38ace31a8 indirect=1:fb8c14f38ace31a8 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_rotate_usda-e8c2998b278e7b4c-1.digest b/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_rotate_usda-e8c2998b278e7b4c-1.digest new file mode 100644 index 000000000..fb95d3305 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_rotate_usda-e8c2998b278e7b4c-1.digest @@ -0,0 +1,44 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-2.8181643, -1.2734121, -4.1201806), horizontal: Vec3A(4.168041, 0.0, -0.4380788), vertical: Vec3A(-0.01718934, 2.3516948, -0.16354565), u: Vec3A(0.9945219, 0.0, -0.104528464), v: Vec3A(-0.007291537, 0.9975641, -0.06937434), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_adaptive_diced_rotate.usda", "$DIR/input.usda", "$ROOT/samples/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/subdivision_adaptive.usda +layer: $DIR/full_adaptive_diced_rotate.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } top level, PrimitiveBreakdown { triangles: 14, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:56e3227c4c4f5a8d camera=12:56e3227c4c4f5a8d shadow=12:56e3227c4c4f5a8d indirect=12:56e3227c4c4f5a8d +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:14e930a5d0b26e15 camera=12:14e930a5d0b26e15 shadow=12:14e930a5d0b26e15 indirect=12:14e930a5d0b26e15 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1d38133bdf0eede5 camera=12:1d38133bdf0eede5 shadow=12:1d38133bdf0eede5 indirect=12:1d38133bdf0eede5 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:96155934aeac1ed5 camera=12:96155934aeac1ed5 shadow=12:96155934aeac1ed5 indirect=12:96155934aeac1ed5 +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance arc source: /World/Cage +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 5, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 1086324736, 1110016897, 0, 1056964608, 1086324736, 3212836864, 0, 3205561020, 1065353216, 0, 3205561020, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_translate_usda-0b0bd3f1a63779cf-1.digest b/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_translate_usda-0b0bd3f1a63779cf-1.digest new file mode 100644 index 000000000..c228c69e5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_translate_usda-0b0bd3f1a63779cf-1.digest @@ -0,0 +1,44 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-1.7955, -0.57871866, -4.5), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_adaptive_diced_translate.usda", "$DIR/input.usda", "$ROOT/samples/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/subdivision_adaptive.usda +layer: $DIR/full_adaptive_diced_translate.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } top level, PrimitiveBreakdown { triangles: 14, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:56e3227c4c4f5a8d camera=12:56e3227c4c4f5a8d shadow=12:56e3227c4c4f5a8d indirect=12:56e3227c4c4f5a8d +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:14e930a5d0b26e15 camera=12:14e930a5d0b26e15 shadow=12:14e930a5d0b26e15 indirect=12:14e930a5d0b26e15 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1d38133bdf0eede5 camera=12:1d38133bdf0eede5 shadow=12:1d38133bdf0eede5 indirect=12:1d38133bdf0eede5 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:96155934aeac1ed5 camera=12:96155934aeac1ed5 shadow=12:96155934aeac1ed5 indirect=12:96155934aeac1ed5 +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance arc source: /World/Cage +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 5, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 1086324736, 1110016897, 0, 1056964608, 1086324736, 3212836864, 0, 3205561020, 1065353216, 0, 3205561020, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_adaptive_exposure_usda-6a1bc74cbd2099fa-1.digest b/crates/crust-core/tests/data/import_baselines/full_adaptive_exposure_usda-6a1bc74cbd2099fa-1.digest new file mode 100644 index 000000000..ff7dc3aa5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_adaptive_exposure_usda-6a1bc74cbd2099fa-1.digest @@ -0,0 +1,46 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 0.0), lower_left_corner: Vec3A(-2.0955, -0.6787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_adaptive_exposure.usda", "$DIR/input.usda", "$ROOT/samples/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/subdivision_adaptive.usda +layer: $DIR/full_adaptive_exposure.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 290, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 302, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:56e3227c4c4f5a8d camera=12:56e3227c4c4f5a8d shadow=12:56e3227c4c4f5a8d indirect=12:56e3227c4c4f5a8d +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:14e930a5d0b26e15 camera=12:14e930a5d0b26e15 shadow=12:14e930a5d0b26e15 indirect=12:14e930a5d0b26e15 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:85fd1a1e8638f8d5 camera=48:85fd1a1e8638f8d5 shadow=48:85fd1a1e8638f8d5 indirect=48:85fd1a1e8638f8d5 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=240:ceb54a03c39454ff camera=240:ceb54a03c39454ff shadow=240:ceb54a03c39454ff indirect=240:ceb54a03c39454ff +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance arc source: /World/Cage +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 3, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9125125757038733368, n_points: 26, n_indices: 144, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13090063996844779502, n_points: 122, n_indices: 720, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_adaptive_undo_exposure_usda-8cd035220544928f-1.digest b/crates/crust-core/tests/data/import_baselines/full_adaptive_undo_exposure_usda-8cd035220544928f-1.digest new file mode 100644 index 000000000..9221cb0ac --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_adaptive_undo_exposure_usda-8cd035220544928f-1.digest @@ -0,0 +1,46 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 0.0), lower_left_corner: Vec3A(-2.0955, -0.6787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_adaptive_undo_exposure.usda", "$DIR/input.usda", "$ROOT/samples/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/subdivision_adaptive.usda +layer: $DIR/full_adaptive_undo_exposure.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 290, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 302, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:56e3227c4c4f5a8d camera=12:56e3227c4c4f5a8d shadow=12:56e3227c4c4f5a8d indirect=12:56e3227c4c4f5a8d +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:14e930a5d0b26e15 camera=12:14e930a5d0b26e15 shadow=12:14e930a5d0b26e15 indirect=12:14e930a5d0b26e15 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:85fd1a1e8638f8d5 camera=48:85fd1a1e8638f8d5 shadow=48:85fd1a1e8638f8d5 indirect=48:85fd1a1e8638f8d5 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=240:ceb54a03c39454ff camera=240:ceb54a03c39454ff shadow=240:ceb54a03c39454ff indirect=240:ceb54a03c39454ff +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance arc source: /World/Cage +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 3, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9125125757038733368, n_points: 26, n_indices: 144, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13090063996844779502, n_points: 122, n_indices: 720, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_base_colour_usda-185573627cdcf2a6-1.digest b/crates/crust-core/tests/data/import_baselines/full_base_colour_usda-185573627cdcf2a6-1.digest new file mode 100644 index 000000000..22f178ee7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_base_colour_usda-185573627cdcf2a6-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: PmjBn, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_base_colour.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_base_colour.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_carried_fog_usda-b5397418f77073c1-1.digest b/crates/crust-core/tests/data/import_baselines/full_carried_fog_usda-b5397418f77073c1-1.digest new file mode 100644 index 000000000..9544371b5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_carried_fog_usda-b5397418f77073c1-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-5.4717097, -3.2753882, -3.7005186), horizontal: Vec3A(9.504398, 0.0, -0.9989525), vertical: Vec3A(-0.0464556, 6.3556476, -0.4419955), u: Vec3A(0.9945219, 0.0, -0.104528464), v: Vec3A(-0.007291537, 0.9975641, -0.06937434), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_carried_fog.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_carried_fog.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.4, 0.4, 0.4) sigma_a Vec3A(0.05, 0.05, 0.05) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: ["/World/Cam/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_changed_on_disk_usda-0c8b6f9bfb68059a-1.digest b/crates/crust-core/tests/data/import_baselines/full_changed_on_disk_usda-0c8b6f9bfb68059a-1.digest new file mode 100644 index 000000000..5626614d3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_changed_on_disk_usda-0c8b6f9bfb68059a-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_changed_on_disk.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_changed_on_disk.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_cornellbox_rotate_usda-76b2e5fb271f6c0c-1.digest b/crates/crust-core/tests/data/import_baselines/full_cornellbox_rotate_usda-76b2e5fb271f6c0c-1.digest new file mode 100644 index 000000000..db73b6764 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_cornellbox_rotate_usda-76b2e5fb271f6c0c-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-7.643816, -4.736597, 1.6703372), horizontal: Vec3A(14.9178095, 0.0, -1.567925), vertical: Vec3A(-0.07291528, 9.975629, -0.6937425), u: Vec3A(0.9945219, 0.0, -0.104528464), v: Vec3A(-0.007291537, 0.9975641, -0.06937434), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(-0.10427384, -0.06975647, -0.99209934, 5.4296823)), far: Some(Vec4(0.10427384, 0.06975647, 0.99209934, 9994.471)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_cornellbox_rotate.usda", "$DIR/input.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/full_cornellbox_rotate.usda +layer: $DIR/input.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_cornellbox_translate_usda-ab7177593fd6f36b-1.digest b/crates/crust-core/tests/data/import_baselines/full_cornellbox_translate_usda-ab7177593fd6f36b-1.digest new file mode 100644 index 000000000..a0248f671 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_cornellbox_translate_usda-ab7177593fd6f36b-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-7.1999903, -4.399994, 0.5), horizontal: Vec3A(14.999981, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 5.4)), far: Some(Vec4(0.0, 0.0, 1.0, 9994.5)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_cornellbox_translate.usda", "$DIR/input.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/full_cornellbox_translate.usda +layer: $DIR/input.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_demoted_K1_usda-e328a49ee95fd405-1.digest b/crates/crust-core/tests/data/import_baselines/full_demoted_K1_usda-e328a49ee95fd405-1.digest new file mode 100644 index 000000000..ab421a6b4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_demoted_K1_usda-e328a49ee95fd405-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 8.0), lower_left_corner: Vec3A(-4.7783756, -1.6855836, -2.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_demoted_K1.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_demoted_K1.usda +layer: $DIR/input.usda +lights: 4 +light 0: area name Some("/World/K4") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/K3") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/K2") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/K1") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:18dc8de5ad9d8317 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:18dc8de5ad9d8317 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a357e5efbc0c08cc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a357e5efbc0c08cc +geom 3: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:15501014f6ccffa4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:15501014f6ccffa4 +geom 5: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee57dfea4661cce3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ee57dfea4661cce3 +provenance light /World/K1: LightOrigin { index: 3, geoms: 5..6 } +provenance light /World/K2: LightOrigin { index: 2, geoms: 4..5 } +provenance light /World/K3: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/K4: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/K4 +provenance geometry 2..3: /World/K3 +provenance geometry 3..4: /World/Dead +provenance geometry 4..5: /World/K2 +provenance geometry 5..6: /World/K1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_demoted_K4_usda-d0354a764756e3b4-1.digest b/crates/crust-core/tests/data/import_baselines/full_demoted_K4_usda-d0354a764756e3b4-1.digest new file mode 100644 index 000000000..4f55874b2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_demoted_K4_usda-d0354a764756e3b4-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 8.0), lower_left_corner: Vec3A(-4.7783756, -1.6855836, -2.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_demoted_K4.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_demoted_K4.usda +layer: $DIR/input.usda +lights: 4 +light 0: area name Some("/World/K4") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/K3") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/K2") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/K1") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:18dc8de5ad9d8317 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:18dc8de5ad9d8317 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a357e5efbc0c08cc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a357e5efbc0c08cc +geom 3: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:15501014f6ccffa4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:15501014f6ccffa4 +geom 5: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee57dfea4661cce3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ee57dfea4661cce3 +provenance light /World/K1: LightOrigin { index: 3, geoms: 5..6 } +provenance light /World/K2: LightOrigin { index: 2, geoms: 4..5 } +provenance light /World/K3: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/K4: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/K4 +provenance geometry 2..3: /World/K3 +provenance geometry 3..4: /World/Dead +provenance geometry 4..5: /World/K2 +provenance geometry 5..6: /World/K1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field__bad_unit_usda-bf5aa1ce7a54f9e2-1.digest b/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field__bad_unit_usda-bf5aa1ce7a54f9e2-1.digest new file mode 100644 index 000000000..309247148 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field__bad_unit_usda-bf5aa1ce7a54f9e2-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-1.3761721, -0.91744804, 0.0), horizontal: Vec3A(2.7523441, 0.0, 0.0), vertical: Vec3A(0.0, 1.8348961, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: false, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 6.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_disable_depth_of_field,_bad_unit.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_disable_depth_of_field,_bad_unit.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1cd1488d041dfcdb camera=1:1cd1488d041dfcdb shadow=1:1cd1488d041dfcdb indirect=1:1cd1488d041dfcdb +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2d90e22d27992fa5 camera=1:2d90e22d27992fa5 shadow=1:2d90e22d27992fa5 indirect=1:2d90e22d27992fa5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Far +provenance geometry 1..2: /World/Near +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field_usda-61f50bc7be824751-1.digest b/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field_usda-61f50bc7be824751-1.digest new file mode 100644 index 000000000..aa08e66b4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field_usda-61f50bc7be824751-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-1.3761721, -0.91744804, 0.0), horizontal: Vec3A(2.7523441, 0.0, 0.0), vertical: Vec3A(0.0, 1.8348961, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: false, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 6.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_disable_depth_of_field.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_disable_depth_of_field.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1cd1488d041dfcdb camera=1:1cd1488d041dfcdb shadow=1:1cd1488d041dfcdb indirect=1:1cd1488d041dfcdb +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2d90e22d27992fa5 camera=1:2d90e22d27992fa5 shadow=1:2d90e22d27992fa5 indirect=1:2d90e22d27992fa5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Far +provenance geometry 1..2: /World/Near +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_dome_hidden_rotate_usda-82abbe3ed6112a4c-1.digest b/crates/crust-core/tests/data/import_baselines/full_dome_hidden_rotate_usda-82abbe3ed6112a4c-1.digest new file mode 100644 index 000000000..3f189da51 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_dome_hidden_rotate_usda-82abbe3ed6112a4c-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-5.4717097, -3.2753882, -3.7005186), horizontal: Vec3A(9.504398, 0.0, -0.9989525), vertical: Vec3A(-0.0464556, 6.3556476, -0.4419955), u: Vec3A(0.9945219, 0.0, -0.104528464), v: Vec3A(-0.007291537, 0.9975641, -0.06937434), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_dome_hidden_rotate.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_dome_hidden_rotate.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: false, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_dome_hidden_translate_usda-a8196d9e2f17ecbf-1.digest b/crates/crust-core/tests/data/import_baselines/full_dome_hidden_translate_usda-a8196d9e2f17ecbf-1.digest new file mode 100644 index 000000000..ad18f45ff --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_dome_hidden_translate_usda-a8196d9e2f17ecbf-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-4.4783754, -2.5855837, -4.5), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_dome_hidden_translate.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_dome_hidden_translate.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: false, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_dome_texture_usda-c3e04747e405ac6e-1.digest b/crates/crust-core/tests/data/import_baselines/full_dome_texture_usda-c3e04747e405ac6e-1.digest new file mode 100644 index 000000000..d2300bec0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_dome_texture_usda-c3e04747e405ac6e-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: PmjBn, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_dome_texture.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_dome_texture.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_drop_usda-a61417609925c673-1.digest b/crates/crust-core/tests/data/import_baselines/full_drop_usda-a61417609925c673-1.digest new file mode 100644 index 000000000..f7eca19d2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_drop_usda-a61417609925c673-1.digest @@ -0,0 +1,78 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_drop.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/full_drop.usda +layer: $DIR/stage.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 15 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } top level, PrimitiveBreakdown { triangles: 178, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:cb9a75b390412b65 camera=12:cb9a75b390412b65 shadow=12:cb9a75b390412b65 indirect=12:cb9a75b390412b65 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:8af8b4817318c205 camera=12:8af8b4817318c205 shadow=12:8af8b4817318c205 indirect=12:8af8b4817318c205 +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 14..14 } +provenance geometry 0..1: /World/pebble/geo +provenance geometry 1..2: /World/away/geo +provenance geometry 2..3: /World/box/geo +provenance geometry 3..4: /World/sunk/geo +provenance geometry 4..5: /World/rock/geo +provenance geometry 5..6: /World/vase/geo +provenance geometry 6..7: /World/steps/geo +provenance geometry 7..8: /World/field/geo +provenance geometry 8..9: /World/slope/geo +provenance geometry 9..10: /World/terrain/geo +provenance geometry 10..11: /World/shelf/geo +provenance geometry 11..12: /World/floor/geo +provenance geometry 12..13: /World/inst +provenance geometry 13..14: /World/crate/geo +provenance geometry 14..15: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 11, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 13, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 14, slot: 9, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_exposure_usda-fe83c794ae61f2a2-1.digest b/crates/crust-core/tests/data/import_baselines/full_exposure_usda-fe83c794ae61f2a2-1.digest new file mode 100644 index 000000000..8db448dc5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_exposure_usda-fe83c794ae61f2a2-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_exposure.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_exposure.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_fixed_usda-adb1781d64f694c8-1.digest b/crates/crust-core/tests/data/import_baselines/full_fixed_usda-adb1781d64f694c8-1.digest new file mode 100644 index 000000000..9d088b3c7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_fixed_usda-adb1781d64f694c8-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_fixed.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_fixed.usda +layer: $DIR/lights.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_groom_base_colour_usda-dd47b7dff78ee58e-1.digest b/crates/crust-core/tests/data/import_baselines/full_groom_base_colour_usda-dd47b7dff78ee58e-1.digest new file mode 100644 index 000000000..9dadd726d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_groom_base_colour_usda-dd47b7dff78ee58e-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-4.247444, -2.5484667, -4.0), horizontal: Vec3A(8.494888, 0.0, 0.0), vertical: Vec3A(0.0, 5.0969334, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 40, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 40, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_groom_base_colour.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_groom_base_colour.usda +layer: $DIR/input.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 3, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=3:a4253f27618d90a9 camera=3:a4253f27618d90a9 shadow=3:a4253f27618d90a9 indirect=3:a4253f27618d90a9 +provenance material /World/Looks/Hair: MaterialOrigin { slots: [0], displaced: false } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Groom +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_groom_primvar_undone_usda-318d40a5ee9b02d7-1.digest b/crates/crust-core/tests/data/import_baselines/full_groom_primvar_undone_usda-318d40a5ee9b02d7-1.digest new file mode 100644 index 000000000..ee9e398eb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_groom_primvar_undone_usda-318d40a5ee9b02d7-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-4.247444, -2.5484667, -4.0), horizontal: Vec3A(8.494888, 0.0, 0.0), vertical: Vec3A(0.0, 5.0969334, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 40, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 40, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_groom_primvar_undone.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_groom_primvar_undone.usda +layer: $DIR/input.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 3, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=3:a4253f27618d90a9 camera=3:a4253f27618d90a9 shadow=3:a4253f27618d90a9 indirect=3:a4253f27618d90a9 +provenance material /World/Looks/Hair: MaterialOrigin { slots: [0], displaced: false } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Groom +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_groom_reads_its_primvar_usda-98bf5373a7d5697f-1.digest b/crates/crust-core/tests/data/import_baselines/full_groom_reads_its_primvar_usda-98bf5373a7d5697f-1.digest new file mode 100644 index 000000000..e7d283f34 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_groom_reads_its_primvar_usda-98bf5373a7d5697f-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-4.247444, -2.5484667, -4.0), horizontal: Vec3A(8.494888, 0.0, 0.0), vertical: Vec3A(0.0, 5.0969334, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 40, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 40, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_groom_reads_its_primvar.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_groom_reads_its_primvar.usda +layer: $DIR/input.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 3, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["hairColor"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=3:a4253f27618d90a9 camera=3:a4253f27618d90a9 shadow=3:a4253f27618d90a9 indirect=3:a4253f27618d90a9 +provenance material /World/Looks/Hair: MaterialOrigin { slots: [0], displaced: false } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Groom +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_linked_Fill_usda-cb706e1f9f991794-1.digest b/crates/crust-core/tests/data/import_baselines/full_linked_Fill_usda-cb706e1f9f991794-1.digest new file mode 100644 index 000000000..eb5b86aeb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_linked_Fill_usda-cb706e1f9f991794-1.digest @@ -0,0 +1,44 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 9.0), lower_left_corner: Vec3A(-5.6632595, -2.195088, -0.119155884), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.231942, -1.3246402), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9781476, -0.20791169), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_linked_Fill.usda", "$DIR/input.usda", "$ROOT/samples/light_linking.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/light_linking.usda +layer: $DIR/full_linked_Fill.usda +layer: $DIR/input.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 8 geometries, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:147e304cdaa43315 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:147e304cdaa43315 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3bb65d4d618d300f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3bb65d4d618d300f +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:414b9060aeb9fa5b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:414b9060aeb9fa5b +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:66555abe449aad95 camera=12:66555abe449aad95 shadow=0:cbf29ce484222325 indirect=12:66555abe449aad95 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d864e332b6f2885f camera=1:d864e332b6f2885f shadow=1:d864e332b6f2885f indirect=1:d864e332b6f2885f +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b3ac5caa5601a5fa camera=1:b3ac5caa5601a5fa shadow=1:b3ac5caa5601a5fa indirect=1:b3ac5caa5601a5fa +geom 6: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3fd5e7ad4a18db8b camera=1:3fd5e7ad4a18db8b shadow=1:3fd5e7ad4a18db8b indirect=1:3fd5e7ad4a18db8b +geom 7: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Pillar +provenance geometry 4..5: /World/Right +provenance geometry 5..6: /World/Hero +provenance geometry 6..7: /World/Left +provenance geometry 7..8: /World/Floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8639962265279651952, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [4, 5, 6] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_linked_Key_usda-db486cee2438fb3b-1.digest b/crates/crust-core/tests/data/import_baselines/full_linked_Key_usda-db486cee2438fb3b-1.digest new file mode 100644 index 000000000..712325462 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_linked_Key_usda-db486cee2438fb3b-1.digest @@ -0,0 +1,44 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 9.0), lower_left_corner: Vec3A(-5.6632595, -2.195088, -0.119155884), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.231942, -1.3246402), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9781476, -0.20791169), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_linked_Key.usda", "$DIR/input.usda", "$ROOT/samples/light_linking.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/light_linking.usda +layer: $DIR/full_linked_Key.usda +layer: $DIR/input.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 8 geometries, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:147e304cdaa43315 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:147e304cdaa43315 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3bb65d4d618d300f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3bb65d4d618d300f +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:414b9060aeb9fa5b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:414b9060aeb9fa5b +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:66555abe449aad95 camera=12:66555abe449aad95 shadow=0:cbf29ce484222325 indirect=12:66555abe449aad95 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d864e332b6f2885f camera=1:d864e332b6f2885f shadow=1:d864e332b6f2885f indirect=1:d864e332b6f2885f +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b3ac5caa5601a5fa camera=1:b3ac5caa5601a5fa shadow=1:b3ac5caa5601a5fa indirect=1:b3ac5caa5601a5fa +geom 6: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3fd5e7ad4a18db8b camera=1:3fd5e7ad4a18db8b shadow=1:3fd5e7ad4a18db8b indirect=1:3fd5e7ad4a18db8b +geom 7: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Pillar +provenance geometry 4..5: /World/Right +provenance geometry 5..6: /World/Hero +provenance geometry 6..7: /World/Left +provenance geometry 7..8: /World/Floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8639962265279651952, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [4, 5, 6] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_linked_Rim_usda-2874a091d25b590b-1.digest b/crates/crust-core/tests/data/import_baselines/full_linked_Rim_usda-2874a091d25b590b-1.digest new file mode 100644 index 000000000..1e4cdec0d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_linked_Rim_usda-2874a091d25b590b-1.digest @@ -0,0 +1,44 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 9.0), lower_left_corner: Vec3A(-5.6632595, -2.195088, -0.119155884), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.231942, -1.3246402), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9781476, -0.20791169), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_linked_Rim.usda", "$DIR/input.usda", "$ROOT/samples/light_linking.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/light_linking.usda +layer: $DIR/full_linked_Rim.usda +layer: $DIR/input.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 8 geometries, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:147e304cdaa43315 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:147e304cdaa43315 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3bb65d4d618d300f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3bb65d4d618d300f +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:414b9060aeb9fa5b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:414b9060aeb9fa5b +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:66555abe449aad95 camera=12:66555abe449aad95 shadow=0:cbf29ce484222325 indirect=12:66555abe449aad95 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d864e332b6f2885f camera=1:d864e332b6f2885f shadow=1:d864e332b6f2885f indirect=1:d864e332b6f2885f +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b3ac5caa5601a5fa camera=1:b3ac5caa5601a5fa shadow=1:b3ac5caa5601a5fa indirect=1:b3ac5caa5601a5fa +geom 6: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3fd5e7ad4a18db8b camera=1:3fd5e7ad4a18db8b shadow=1:3fd5e7ad4a18db8b indirect=1:3fd5e7ad4a18db8b +geom 7: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Pillar +provenance geometry 4..5: /World/Right +provenance geometry 5..6: /World/Hero +provenance geometry 6..7: /World/Left +provenance geometry 7..8: /World/Floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8639962265279651952, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [4, 5, 6] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_linked_undo_Fill_usda-a93137db50fd28c8-1.digest b/crates/crust-core/tests/data/import_baselines/full_linked_undo_Fill_usda-a93137db50fd28c8-1.digest new file mode 100644 index 000000000..505a26cc1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_linked_undo_Fill_usda-a93137db50fd28c8-1.digest @@ -0,0 +1,44 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 9.0), lower_left_corner: Vec3A(-5.6632595, -2.195088, -0.119155884), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.231942, -1.3246402), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9781476, -0.20791169), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_linked_undo_Fill.usda", "$DIR/input.usda", "$ROOT/samples/light_linking.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/light_linking.usda +layer: $DIR/full_linked_undo_Fill.usda +layer: $DIR/input.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 8 geometries, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:147e304cdaa43315 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:147e304cdaa43315 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3bb65d4d618d300f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3bb65d4d618d300f +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:414b9060aeb9fa5b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:414b9060aeb9fa5b +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:66555abe449aad95 camera=12:66555abe449aad95 shadow=0:cbf29ce484222325 indirect=12:66555abe449aad95 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d864e332b6f2885f camera=1:d864e332b6f2885f shadow=1:d864e332b6f2885f indirect=1:d864e332b6f2885f +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b3ac5caa5601a5fa camera=1:b3ac5caa5601a5fa shadow=1:b3ac5caa5601a5fa indirect=1:b3ac5caa5601a5fa +geom 6: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3fd5e7ad4a18db8b camera=1:3fd5e7ad4a18db8b shadow=1:3fd5e7ad4a18db8b indirect=1:3fd5e7ad4a18db8b +geom 7: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Pillar +provenance geometry 4..5: /World/Right +provenance geometry 5..6: /World/Hero +provenance geometry 6..7: /World/Left +provenance geometry 7..8: /World/Floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8639962265279651952, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [4, 5, 6] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_linked_undo_Key_usda-1239d0ab4241ef3f-1.digest b/crates/crust-core/tests/data/import_baselines/full_linked_undo_Key_usda-1239d0ab4241ef3f-1.digest new file mode 100644 index 000000000..8e4104e7c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_linked_undo_Key_usda-1239d0ab4241ef3f-1.digest @@ -0,0 +1,44 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 9.0), lower_left_corner: Vec3A(-5.6632595, -2.195088, -0.119155884), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.231942, -1.3246402), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9781476, -0.20791169), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_linked_undo_Key.usda", "$DIR/input.usda", "$ROOT/samples/light_linking.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/light_linking.usda +layer: $DIR/full_linked_undo_Key.usda +layer: $DIR/input.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 8 geometries, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:147e304cdaa43315 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:147e304cdaa43315 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3bb65d4d618d300f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3bb65d4d618d300f +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:414b9060aeb9fa5b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:414b9060aeb9fa5b +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:66555abe449aad95 camera=12:66555abe449aad95 shadow=0:cbf29ce484222325 indirect=12:66555abe449aad95 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d864e332b6f2885f camera=1:d864e332b6f2885f shadow=1:d864e332b6f2885f indirect=1:d864e332b6f2885f +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b3ac5caa5601a5fa camera=1:b3ac5caa5601a5fa shadow=1:b3ac5caa5601a5fa indirect=1:b3ac5caa5601a5fa +geom 6: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3fd5e7ad4a18db8b camera=1:3fd5e7ad4a18db8b shadow=1:3fd5e7ad4a18db8b indirect=1:3fd5e7ad4a18db8b +geom 7: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Pillar +provenance geometry 4..5: /World/Right +provenance geometry 5..6: /World/Hero +provenance geometry 6..7: /World/Left +provenance geometry 7..8: /World/Floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8639962265279651952, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [4, 5, 6] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_linked_undo_Rim_usda-03ca7b9265c405f0-1.digest b/crates/crust-core/tests/data/import_baselines/full_linked_undo_Rim_usda-03ca7b9265c405f0-1.digest new file mode 100644 index 000000000..5df32ad6b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_linked_undo_Rim_usda-03ca7b9265c405f0-1.digest @@ -0,0 +1,44 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 9.0), lower_left_corner: Vec3A(-5.6632595, -2.195088, -0.119155884), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.231942, -1.3246402), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9781476, -0.20791169), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_linked_undo_Rim.usda", "$DIR/input.usda", "$ROOT/samples/light_linking.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/light_linking.usda +layer: $DIR/full_linked_undo_Rim.usda +layer: $DIR/input.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 8 geometries, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:147e304cdaa43315 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:147e304cdaa43315 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3bb65d4d618d300f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3bb65d4d618d300f +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:414b9060aeb9fa5b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:414b9060aeb9fa5b +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:66555abe449aad95 camera=12:66555abe449aad95 shadow=0:cbf29ce484222325 indirect=12:66555abe449aad95 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d864e332b6f2885f camera=1:d864e332b6f2885f shadow=1:d864e332b6f2885f indirect=1:d864e332b6f2885f +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b3ac5caa5601a5fa camera=1:b3ac5caa5601a5fa shadow=1:b3ac5caa5601a5fa indirect=1:b3ac5caa5601a5fa +geom 6: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3fd5e7ad4a18db8b camera=1:3fd5e7ad4a18db8b shadow=1:3fd5e7ad4a18db8b indirect=1:3fd5e7ad4a18db8b +geom 7: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Pillar +provenance geometry 4..5: /World/Right +provenance geometry 5..6: /World/Hero +provenance geometry 6..7: /World/Left +provenance geometry 7..8: /World/Floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8639962265279651952, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [4, 5, 6] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_max_depth_usda-1164faed927e051e-1.digest b/crates/crust-core/tests/data/import_baselines/full_max_depth_usda-1164faed927e051e-1.digest new file mode 100644 index 000000000..22b46a50a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_max_depth_usda-1164faed927e051e-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_max_depth.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_max_depth.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_meshes_rotate_usda-402e98fde9a693c4-1.digest b/crates/crust-core/tests/data/import_baselines/full_meshes_rotate_usda-402e98fde9a693c4-1.digest new file mode 100644 index 000000000..ad42eb47b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_meshes_rotate_usda-402e98fde9a693c4-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-5.4717097, -3.2753882, -3.7005186), horizontal: Vec3A(9.504398, 0.0, -0.9989525), vertical: Vec3A(-0.0464556, 6.3556476, -0.4419955), u: Vec3A(0.9945219, 0.0, -0.104528464), v: Vec3A(-0.007291537, 0.9975641, -0.06937434), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_meshes_rotate.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_meshes_rotate.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_meshes_translate_usda-ee4192f2a802af39-1.digest b/crates/crust-core/tests/data/import_baselines/full_meshes_translate_usda-ee4192f2a802af39-1.digest new file mode 100644 index 000000000..54e254a9d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_meshes_translate_usda-ee4192f2a802af39-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-4.4783754, -2.5855837, -4.5), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_meshes_translate.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_meshes_translate.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_move_the_new_camera_usda-73f0dca6c14ef5d7-1.digest b/crates/crust-core/tests/data/import_baselines/full_move_the_new_camera_usda-73f0dca6c14ef5d7-1.digest new file mode 100644 index 000000000..9331b4dab --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_move_the_new_camera_usda-73f0dca6c14ef5d7-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam2") +camera: Camera { origin: Vec3A(1.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.529999, -2.2177181, -2.6355724), horizontal: Vec3A(6.358542, -1.2206286e-8, -1.5853626), vertical: Vec3A(-0.11047701, 4.344867, -0.4430991), u: Vec3A(0.9702957, -1.8626451e-9, -0.2419219), v: Vec3A(-0.025287723, 0.99452186, -0.101423524), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/beauty", name: "beauty.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_move_the_new_camera.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_move_the_new_camera.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_rotate_usda-d7adb4497350da61-1.digest b/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_rotate_usda-d7adb4497350da61-1.digest new file mode 100644 index 000000000..285ef5fdb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_rotate_usda-d7adb4497350da61-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-5.4717097, -3.2753882, -3.7005186), horizontal: Vec3A(9.504398, 0.0, -0.9989525), vertical: Vec3A(-0.0464556, 6.3556476, -0.4419955), u: Vec3A(0.9945219, 0.0, -0.104528464), v: Vec3A(-0.007291537, 0.9975641, -0.06937434), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_on-screen_diced_rotate.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_on-screen_diced_rotate.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=64:5f84dcb3c52b7405 camera=64:5f84dcb3c52b7405 shadow=64:5f84dcb3c52b7405 indirect=64:5f84dcb3c52b7405 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Post +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13212365895451826409, n_points: 66, n_indices: 160, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: Some(ScreenKey([0, 1056964608, 1086324736, 1112074166, 0, 1056964608, 1086324736, 3212836864, 0, 3203704606, 1065353216, 0, 3203704606, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_translate_usda-6bfd0fb9adcbe164-1.digest b/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_translate_usda-6bfd0fb9adcbe164-1.digest new file mode 100644 index 000000000..e649e2b33 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_translate_usda-6bfd0fb9adcbe164-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-4.4783754, -2.5855837, -4.5), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_on-screen_diced_translate.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_on-screen_diced_translate.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=64:5f84dcb3c52b7405 camera=64:5f84dcb3c52b7405 shadow=64:5f84dcb3c52b7405 indirect=64:5f84dcb3c52b7405 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Post +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13212365895451826409, n_points: 66, n_indices: 160, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: Some(ScreenKey([0, 1056964608, 1086324736, 1112074166, 0, 1056964608, 1086324736, 3212836864, 0, 3203704606, 1065353216, 0, 3203704606, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_on_screen_exposure_usda-b0790c819b4e0d97-1.digest b/crates/crust-core/tests/data/import_baselines/full_on_screen_exposure_usda-b0790c819b4e0d97-1.digest new file mode 100644 index 000000000..4dc4919ef --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_on_screen_exposure_usda-b0790c819b4e0d97-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -3.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_on_screen_exposure.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_on_screen_exposure.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=64:5f84dcb3c52b7405 camera=64:5f84dcb3c52b7405 shadow=64:5f84dcb3c52b7405 indirect=64:5f84dcb3c52b7405 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Post +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13212365895451826409, n_points: 66, n_indices: 160, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 1086324736, 1112074166, 0, 0, 1086324736, 3212836864, 0, 3203704606, 1065353216, 0, 3203704606, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_on_screen_undo_exposure_usda-c40080b74d3fb5a6-1.digest b/crates/crust-core/tests/data/import_baselines/full_on_screen_undo_exposure_usda-c40080b74d3fb5a6-1.digest new file mode 100644 index 000000000..3a8ad2da4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_on_screen_undo_exposure_usda-c40080b74d3fb5a6-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -3.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_on_screen_undo_exposure.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_on_screen_undo_exposure.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=64:5f84dcb3c52b7405 camera=64:5f84dcb3c52b7405 shadow=64:5f84dcb3c52b7405 indirect=64:5f84dcb3c52b7405 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Post +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13212365895451826409, n_points: 66, n_indices: 160, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 1086324736, 1112074166, 0, 0, 1086324736, 3212836864, 0, 3203704606, 1065353216, 0, 3203704606, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_payload_rewritten_usda-03a6e3d1a01a5551-1.digest b/crates/crust-core/tests/data/import_baselines/full_payload_rewritten_usda-03a6e3d1a01a5551-1.digest new file mode 100644 index 000000000..a4c9e0162 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_payload_rewritten_usda-03a6e3d1a01a5551-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_payload_rewritten.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_payload_rewritten.usda +layer: $DIR/lights.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8881e041bbb32975 camera=2:8881e041bbb32975 shadow=2:8881e041bbb32975 indirect=2:8881e041bbb32975 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_payload_roughness_usda-498bc078c77be0a5-1.digest b/crates/crust-core/tests/data/import_baselines/full_payload_roughness_usda-498bc078c77be0a5-1.digest new file mode 100644 index 000000000..c3b1039da --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_payload_roughness_usda-498bc078c77be0a5-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_payload_roughness.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_payload_roughness.usda +layer: $DIR/input.usda +layer: $DIR/looks.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [0], displaced: false } +provenance material read: ("/Looks/Clay", "/World/Looks/Clay") +provenance material read: ("/Looks/Clay/Graph", "/World/Looks/Clay") +provenance material read: ("/Looks/Clay/Surface", "/World/Looks/Clay") +provenance arc source: /Looks +provenance arc source: /Looks/Clay +provenance arc source: /Looks/Clay/Graph +provenance arc source: /Looks/Clay/Surface +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_payload_undo_roughness_usda-7143361153e7f548-1.digest b/crates/crust-core/tests/data/import_baselines/full_payload_undo_roughness_usda-7143361153e7f548-1.digest new file mode 100644 index 000000000..0cc639e2b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_payload_undo_roughness_usda-7143361153e7f548-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_payload_undo_roughness.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_payload_undo_roughness.usda +layer: $DIR/input.usda +layer: $DIR/looks.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [0], displaced: false } +provenance material read: ("/Looks/Clay", "/World/Looks/Clay") +provenance material read: ("/Looks/Clay/Graph", "/World/Looks/Clay") +provenance material read: ("/Looks/Clay/Surface", "/World/Looks/Clay") +provenance arc source: /Looks +provenance arc source: /Looks/Clay +provenance arc source: /Looks/Clay/Graph +provenance arc source: /Looks/Clay/Surface +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_undone_usda-774a34f5226e3639-1.digest b/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_undone_usda-774a34f5226e3639-1.digest new file mode 100644 index 000000000..576a365be --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_undone_usda-774a34f5226e3639-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, -2.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/plain", name: "plain.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_products_with_Pref_undone.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_products_with_Pref_undone.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32f1a52c797bfee5 camera=2:32f1a52c797bfee5 shadow=2:32f1a52c797bfee5 indirect=2:32f1a52c797bfee5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/M +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_usda-8674ccd68263fd36-1.digest b/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_usda-8674ccd68263fd36-1.digest new file mode 100644 index 000000000..276c9d1a3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_usda-8674ccd68263fd36-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, -2.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/withRest", name: "rest.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_products_with_Pref.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_products_with_Pref.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:32f1a52c797bfee5 camera=2:32f1a52c797bfee5 shadow=2:32f1a52c797bfee5 indirect=2:32f1a52c797bfee5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/M +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11801363609627443368, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_re_exported_usda-39edd0f167e79907-1.digest b/crates/crust-core/tests/data/import_baselines/full_re_exported_usda-39edd0f167e79907-1.digest new file mode 100644 index 000000000..2676dfc27 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_re_exported_usda-39edd0f167e79907-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_re-exported.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_re-exported.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a718186db3bab648 camera=1:a718186db3bab648 shadow=1:a718186db3bab648 indirect=1:a718186db3bab648 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_rect_light_usda-efc21afcf05d7959-1.digest b/crates/crust-core/tests/data/import_baselines/full_rect_light_usda-efc21afcf05d7959-1.digest new file mode 100644 index 000000000..bac6840c6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_rect_light_usda-efc21afcf05d7959-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: PmjBn, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_rect_light.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_rect_light.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_reloaded_usda-5a765fd50dde24be-1.digest b/crates/crust-core/tests/data/import_baselines/full_reloaded_usda-5a765fd50dde24be-1.digest new file mode 100644 index 000000000..df083cabc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_reloaded_usda-5a765fd50dde24be-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_reloaded.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_reloaded.usda +layer: $DIR/lights.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_reset_the_camera_s_transform_stack_usda-38a53b23a8f224c2-1.digest b/crates/crust-core/tests/data/import_baselines/full_reset_the_camera_s_transform_stack_usda-38a53b23a8f224c2-1.digest new file mode 100644 index 000000000..473eb8351 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_reset_the_camera_s_transform_stack_usda-38a53b23a8f224c2-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.6855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_reset_the_camera's_transform_stack.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_reset_the_camera's_transform_stack.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e7e3ae7da8a1689e camera=2:e7e3ae7da8a1689e shadow=2:e7e3ae7da8a1689e indirect=2:e7e3ae7da8a1689e +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:50023872345aeae9 camera=2:50023872345aeae9 shadow=2:50023872345aeae9 indirect=2:50023872345aeae9 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_retarget_a_diced_adaptive_scene_usda-bde6533023d6ccd8-1.digest b/crates/crust-core/tests/data/import_baselines/full_retarget_a_diced_adaptive_scene_usda-bde6533023d6ccd8-1.digest new file mode 100644 index 000000000..332afaa28 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_retarget_a_diced_adaptive_scene_usda-bde6533023d6ccd8-1.digest @@ -0,0 +1,46 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam2") +camera: Camera { origin: Vec3A(1.5, 1.0, 5.0), lower_left_corner: Vec3A(-4.6187525, -2.2177181, -3.4887795), horizontal: Vec3A(7.5360494, -1.4466709e-8, -1.8789482), vertical: Vec3A(-0.11047701, 4.344867, -0.4430991), u: Vec3A(0.9702957, -1.8626451e-9, -0.2419219), v: Vec3A(-0.025287723, 0.99452186, -0.101423524), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_retarget_a_diced_adaptive_scene.usda", "$DIR/input.usda", "$ROOT/samples/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/subdivision_adaptive.usda +layer: $DIR/full_retarget_a_diced_adaptive_scene.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 290, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 302, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:56e3227c4c4f5a8d camera=12:56e3227c4c4f5a8d shadow=12:56e3227c4c4f5a8d indirect=12:56e3227c4c4f5a8d +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:14e930a5d0b26e15 camera=12:14e930a5d0b26e15 shadow=12:14e930a5d0b26e15 indirect=12:14e930a5d0b26e15 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:85fd1a1e8638f8d5 camera=48:85fd1a1e8638f8d5 shadow=48:85fd1a1e8638f8d5 indirect=48:85fd1a1e8638f8d5 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=240:ceb54a03c39454ff camera=240:ceb54a03c39454ff shadow=240:ceb54a03c39454ff indirect=240:ceb54a03c39454ff +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance arc source: /World/Cage +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 3, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9125125757038733368, n_points: 26, n_indices: 144, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13090063996844779502, n_points: 122, n_indices: 720, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: Some("/World/Cam"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_retarget_an_adaptive_scene_usda-721dc26887b364a7-1.digest b/crates/crust-core/tests/data/import_baselines/full_retarget_an_adaptive_scene_usda-721dc26887b364a7-1.digest new file mode 100644 index 000000000..498f55340 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_retarget_an_adaptive_scene_usda-721dc26887b364a7-1.digest @@ -0,0 +1,45 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam2") +camera: Camera { origin: Vec3A(1.5, 1.0, 5.0), lower_left_corner: Vec3A(-4.6187525, -2.2177181, -3.4887795), horizontal: Vec3A(7.5360494, -1.4466709e-8, -1.8789482), vertical: Vec3A(-0.11047701, 4.344867, -0.4430991), u: Vec3A(0.9702957, -1.8626451e-9, -0.2419219), v: Vec3A(-0.025287723, 0.99452186, -0.101423524), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 48, height: 27, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 27 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_retarget_an_adaptive_scene.usda", "$DIR/input.usda", "$ROOT/samples/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/subdivision_adaptive.usda +layer: $DIR/full_retarget_an_adaptive_scene.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 50, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 62, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:56e3227c4c4f5a8d camera=12:56e3227c4c4f5a8d shadow=12:56e3227c4c4f5a8d indirect=12:56e3227c4c4f5a8d +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:14e930a5d0b26e15 camera=12:14e930a5d0b26e15 shadow=12:14e930a5d0b26e15 indirect=12:14e930a5d0b26e15 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1d38133bdf0eede5 camera=12:1d38133bdf0eede5 shadow=12:1d38133bdf0eede5 indirect=12:1d38133bdf0eede5 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:6e192a0e7059d151 camera=48:6e192a0e7059d151 shadow=48:6e192a0e7059d151 indirect=48:6e192a0e7059d151 +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance arc source: /World/Cage +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 4, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9125125757038733368, n_points: 26, n_indices: 144, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([1069547520, 1065353216, 1084227584, 1115108637, 1069547520, 1065353216, 1084227584, 3213371458, 3173401642, 3188195590, 1063287320, 3173401642, 3206405490, 3168756112, 3212982450, 3185572784, 3181341822, 1064878233, 3198147198, 3195428598, 3184923397, 3212249332, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_retarget_the_product_camera_usda-0a3badd9a91b1027-1.digest b/crates/crust-core/tests/data/import_baselines/full_retarget_the_product_camera_usda-0a3badd9a91b1027-1.digest new file mode 100644 index 000000000..6404a6970 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_retarget_the_product_camera_usda-0a3badd9a91b1027-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam2") +camera: Camera { origin: Vec3A(1.5, 1.0, 5.0), lower_left_corner: Vec3A(-4.029999, -2.2177181, -3.6355724), horizontal: Vec3A(6.358542, -1.2206286e-8, -1.5853626), vertical: Vec3A(-0.11047701, 4.344867, -0.4430991), u: Vec3A(0.9702957, -1.8626451e-9, -0.2419219), v: Vec3A(-0.025287723, 0.99452186, -0.101423524), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/beauty", name: "beauty.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_retarget_the_product_camera.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_retarget_the_product_camera.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_retarget_the_settings_camera_usda-2b1ab3b4034d45bb-1.digest b/crates/crust-core/tests/data/import_baselines/full_retarget_the_settings_camera_usda-2b1ab3b4034d45bb-1.digest new file mode 100644 index 000000000..665a65ac5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_retarget_the_settings_camera_usda-2b1ab3b4034d45bb-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.6855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/beauty", name: "beauty.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_retarget_the_settings_camera.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_retarget_the_settings_camera.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_retarget_to_a_carrying_camera_usda-56381435fa6b51f5-1.digest b/crates/crust-core/tests/data/import_baselines/full_retarget_to_a_carrying_camera_usda-56381435fa6b51f5-1.digest new file mode 100644 index 000000000..875d2e777 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_retarget_to_a_carrying_camera_usda-56381435fa6b51f5-1.digest @@ -0,0 +1,33 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam2") +camera: Camera { origin: Vec3A(1.5, 1.0, 5.0), lower_left_corner: Vec3A(-4.029999, -2.2177181, -3.6355724), horizontal: Vec3A(6.358542, -1.2206286e-8, -1.5853626), vertical: Vec3A(-0.11047701, 4.344867, -0.4430991), u: Vec3A(0.9702957, -1.8626451e-9, -0.2419219), v: Vec3A(-0.025287723, 0.99452186, -0.101423524), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/beauty", name: "beauty.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_retarget_to_a_carrying_camera.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_retarget_to_a_carrying_camera.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 5, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 5, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8644ef657b9e2de5 camera=1:8644ef657b9e2de5 shadow=1:8644ef657b9e2de5 indirect=1:8644ef657b9e2de5 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Cam2/Badge +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_roughness_usda-a1ffe89d435678bc-1.digest b/crates/crust-core/tests/data/import_baselines/full_roughness_usda-a1ffe89d435678bc-1.digest new file mode 100644 index 000000000..5bf2a17f1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_roughness_usda-a1ffe89d435678bc-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: PmjBn, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_roughness.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_roughness.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_sampler_usda-27ca674891cf7c52-1.digest b/crates/crust-core/tests/data/import_baselines/full_sampler_usda-27ca674891cf7c52-1.digest new file mode 100644 index 000000000..4700cb815 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_sampler_usda-27ca674891cf7c52-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: PmjBn, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_sampler.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_sampler.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_scatter_usda-80ff37fcf1ff9f3c-1.digest b/crates/crust-core/tests/data/import_baselines/full_scatter_usda-80ff37fcf1ff9f3c-1.digest new file mode 100644 index 000000000..a2ac041a0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_scatter_usda-80ff37fcf1ff9f3c-1.digest @@ -0,0 +1,585 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_scatter.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/full_scatter.usda +layer: $DIR/stage.usda +layer: $DIR/stone_a.usda +layer: $DIR/stone_b.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 515 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 506 } top level, PrimitiveBreakdown { triangles: 202, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 506 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1761441 motion [] pieces all=12:45a862dded98b1c6 camera=12:45a862dded98b1c6 shadow=12:45a862dded98b1c6 indirect=12:45a862dded98b1c6 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8810865 motion [] pieces all=12:64944d265981058e camera=12:64944d265981058e shadow=12:64944d265981058e indirect=12:64944d265981058e +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0232378 motion [] pieces all=12:3388e3ca138a3f1f camera=12:3388e3ca138a3f1f shadow=12:3388e3ca138a3f1f indirect=12:3388e3ca138a3f1f +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99894494 motion [] pieces all=12:fdfa25d8c193c4a0 camera=12:fdfa25d8c193c4a0 shadow=12:fdfa25d8c193c4a0 indirect=12:fdfa25d8c193c4a0 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1065642 motion [] pieces all=12:6955ab4220a0f7f0 camera=12:6955ab4220a0f7f0 shadow=12:6955ab4220a0f7f0 indirect=12:6955ab4220a0f7f0 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80337954 motion [] pieces all=12:e2e3eb04df83a72a camera=12:e2e3eb04df83a72a shadow=12:e2e3eb04df83a72a indirect=12:e2e3eb04df83a72a +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0571522 motion [] pieces all=12:61f3b3daf13919ed camera=12:61f3b3daf13919ed shadow=12:61f3b3daf13919ed indirect=12:61f3b3daf13919ed +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9235039 motion [] pieces all=12:67d2180e9e401524 camera=12:67d2180e9e401524 shadow=12:67d2180e9e401524 indirect=12:67d2180e9e401524 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97259986 motion [] pieces all=12:76d9e29bdce76947 camera=12:76d9e29bdce76947 shadow=12:76d9e29bdce76947 indirect=12:76d9e29bdce76947 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0333868 motion [] pieces all=12:f70acb4c14b57733 camera=12:f70acb4c14b57733 shadow=12:f70acb4c14b57733 indirect=12:f70acb4c14b57733 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8712479 motion [] pieces all=12:a6e3103831c2bb95 camera=12:a6e3103831c2bb95 shadow=12:a6e3103831c2bb95 indirect=12:a6e3103831c2bb95 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1695868 motion [] pieces all=12:b68f582acb9488d9 camera=12:b68f582acb9488d9 shadow=12:b68f582acb9488d9 indirect=12:b68f582acb9488d9 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8319464 motion [] pieces all=12:acbc4ae83f658381 camera=12:acbc4ae83f658381 shadow=12:acbc4ae83f658381 indirect=12:acbc4ae83f658381 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.13118 motion [] pieces all=12:598aa1811e9041e8 camera=12:598aa1811e9041e8 shadow=12:598aa1811e9041e8 indirect=12:598aa1811e9041e8 +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0985051 motion [] pieces all=12:e42f85275179f9eb camera=12:e42f85275179f9eb shadow=12:e42f85275179f9eb indirect=12:e42f85275179f9eb +geom 15: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.930394 motion [] pieces all=12:ecc186bbcfc12323 camera=12:ecc186bbcfc12323 shadow=12:ecc186bbcfc12323 indirect=12:ecc186bbcfc12323 +geom 16: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1146806 motion [] pieces all=12:57da4df43fb578d2 camera=12:57da4df43fb578d2 shadow=12:57da4df43fb578d2 indirect=12:57da4df43fb578d2 +geom 17: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8209351 motion [] pieces all=12:e25b06971fef82ac camera=12:e25b06971fef82ac shadow=12:e25b06971fef82ac indirect=12:e25b06971fef82ac +geom 18: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0663182 motion [] pieces all=12:b307914e162ebd94 camera=12:b307914e162ebd94 shadow=12:b307914e162ebd94 indirect=12:b307914e162ebd94 +geom 19: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9115253 motion [] pieces all=12:24a6e636442db05b camera=12:24a6e636442db05b shadow=12:24a6e636442db05b indirect=12:24a6e636442db05b +geom 20: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1879729 motion [] pieces all=12:481f9cd756cedde0 camera=12:481f9cd756cedde0 shadow=12:481f9cd756cedde0 indirect=12:481f9cd756cedde0 +geom 21: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8957119 motion [] pieces all=12:2d4663e6184de452 camera=12:2d4663e6184de452 shadow=12:2d4663e6184de452 indirect=12:2d4663e6184de452 +geom 22: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0098108 motion [] pieces all=12:b0bb69961ba75478 camera=12:b0bb69961ba75478 shadow=12:b0bb69961ba75478 indirect=12:b0bb69961ba75478 +geom 23: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98019165 motion [] pieces all=12:b9afdaa931bffdb6 camera=12:b9afdaa931bffdb6 shadow=12:b9afdaa931bffdb6 indirect=12:b9afdaa931bffdb6 +geom 24: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0813562 motion [] pieces all=12:f5d0fb106b756265 camera=12:f5d0fb106b756265 shadow=12:f5d0fb106b756265 indirect=12:f5d0fb106b756265 +geom 25: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94515204 motion [] pieces all=12:089190d039cd8f05 camera=12:089190d039cd8f05 shadow=12:089190d039cd8f05 indirect=12:089190d039cd8f05 +geom 26: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84345704 motion [] pieces all=12:e26f0d45af850c90 camera=12:e26f0d45af850c90 shadow=12:e26f0d45af850c90 indirect=12:e26f0d45af850c90 +geom 27: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1462855 motion [] pieces all=12:b6f87466c44a00c9 camera=12:b6f87466c44a00c9 shadow=12:b6f87466c44a00c9 indirect=12:b6f87466c44a00c9 +geom 28: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1544222 motion [] pieces all=12:797d242554fe864a camera=12:797d242554fe864a shadow=12:797d242554fe864a indirect=12:797d242554fe864a +geom 29: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.86153686 motion [] pieces all=12:be846117a4ea7801 camera=12:be846117a4ea7801 shadow=12:be846117a4ea7801 indirect=12:be846117a4ea7801 +geom 30: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0419827 motion [] pieces all=12:6ddf27426dad80b8 camera=12:6ddf27426dad80b8 shadow=12:6ddf27426dad80b8 indirect=12:6ddf27426dad80b8 +geom 31: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9549145 motion [] pieces all=12:3f3d2de984f016e1 camera=12:3f3d2de984f016e1 shadow=12:3f3d2de984f016e1 indirect=12:3f3d2de984f016e1 +geom 32: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1013982 motion [] pieces all=12:d325740a4c504329 camera=12:d325740a4c504329 shadow=12:d325740a4c504329 indirect=12:d325740a4c504329 +geom 33: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8114375 motion [] pieces all=12:f529c99ebd35ea5e camera=12:f529c99ebd35ea5e shadow=12:f529c99ebd35ea5e indirect=12:f529c99ebd35ea5e +geom 34: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0561118 motion [] pieces all=12:3b32daf9fb97191e camera=12:3b32daf9fb97191e shadow=12:3b32daf9fb97191e indirect=12:3b32daf9fb97191e +geom 35: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91436315 motion [] pieces all=12:9336514ad2a50746 camera=12:9336514ad2a50746 shadow=12:9336514ad2a50746 indirect=12:9336514ad2a50746 +geom 36: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8854387 motion [] pieces all=12:ee06eb3bb41cf5e3 camera=12:ee06eb3bb41cf5e3 shadow=12:ee06eb3bb41cf5e3 indirect=12:ee06eb3bb41cf5e3 +geom 37: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1826364 motion [] pieces all=12:6ab824c87ddbb42e camera=12:6ab824c87ddbb42e shadow=12:6ab824c87ddbb42e indirect=12:6ab824c87ddbb42e +geom 38: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98780096 motion [] pieces all=12:3e246edc11785421 camera=12:3e246edc11785421 shadow=12:3e246edc11785421 indirect=12:3e246edc11785421 +geom 39: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0161881 motion [] pieces all=12:460bcfda839b7475 camera=12:460bcfda839b7475 shadow=12:460bcfda839b7475 indirect=12:460bcfda839b7475 +geom 40: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1313198 motion [] pieces all=12:1df02a18f6ef0cb0 camera=12:1df02a18f6ef0cb0 shadow=12:1df02a18f6ef0cb0 indirect=12:1df02a18f6ef0cb0 +geom 41: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8307075 motion [] pieces all=12:e5bd325c9cc63258 camera=12:e5bd325c9cc63258 shadow=12:e5bd325c9cc63258 indirect=12:e5bd325c9cc63258 +geom 42: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93608296 motion [] pieces all=12:eaf20bfe2d9d2ea8 camera=12:eaf20bfe2d9d2ea8 shadow=12:eaf20bfe2d9d2ea8 indirect=12:eaf20bfe2d9d2ea8 +geom 43: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0927486 motion [] pieces all=12:0b46814b8788d10c camera=12:0b46814b8788d10c shadow=12:0b46814b8788d10c indirect=12:0b46814b8788d10c +geom 44: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9677548 motion [] pieces all=12:a11085306be96c79 camera=12:a11085306be96c79 shadow=12:a11085306be96c79 indirect=12:a11085306be96c79 +geom 45: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0287622 motion [] pieces all=12:a2e4e83ee9235718 camera=12:a2e4e83ee9235718 shadow=12:a2e4e83ee9235718 indirect=12:a2e4e83ee9235718 +geom 46: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.867445 motion [] pieces all=12:52a12ca2ad2269a0 camera=12:52a12ca2ad2269a0 shadow=12:52a12ca2ad2269a0 indirect=12:52a12ca2ad2269a0 +geom 47: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1652948 motion [] pieces all=12:8ac666cdc9aed126 camera=12:8ac666cdc9aed126 shadow=12:8ac666cdc9aed126 indirect=12:8ac666cdc9aed126 +geom 48: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1573718 motion [] pieces all=12:dc22e4e0c3a563c5 camera=12:dc22e4e0c3a563c5 shadow=12:dc22e4e0c3a563c5 indirect=12:dc22e4e0c3a563c5 +geom 49: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8516039 motion [] pieces all=12:d5439bf95adb5d29 camera=12:d5439bf95adb5d29 shadow=12:d5439bf95adb5d29 indirect=12:d5439bf95adb5d29 +geom 50: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.957956 motion [] pieces all=12:a2366eb57be17947 camera=12:a2366eb57be17947 shadow=12:a2366eb57be17947 indirect=12:a2366eb57be17947 +geom 51: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476611 motion [] pieces all=12:aa424a427bf1da18 camera=12:aa424a427bf1da18 shadow=12:aa424a427bf1da18 indirect=12:aa424a427bf1da18 +geom 52: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94141537 motion [] pieces all=12:439332df7477a2f0 camera=12:439332df7477a2f0 shadow=12:439332df7477a2f0 indirect=12:439332df7477a2f0 +geom 53: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0779837 motion [] pieces all=12:050de2f979a00214 camera=12:050de2f979a00214 shadow=12:050de2f979a00214 indirect=12:050de2f979a00214 +geom 54: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84913945 motion [] pieces all=12:d359da50fe63fc4e camera=12:d359da50fe63fc4e shadow=12:d359da50fe63fc4e indirect=12:d359da50fe63fc4e +geom 55: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1388466 motion [] pieces all=12:f274bc0e146ac6ec camera=12:f274bc0e146ac6ec shadow=12:f274bc0e146ac6ec indirect=12:f274bc0e146ac6ec +geom 56: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81745243 motion [] pieces all=12:59b88eaab766334e camera=12:59b88eaab766334e shadow=12:59b88eaab766334e indirect=12:59b88eaab766334e +geom 57: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1221887 motion [] pieces all=12:4391248690d8a96c camera=12:4391248690d8a96c shadow=12:4391248690d8a96c indirect=12:4391248690d8a96c +geom 58: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0737523 motion [] pieces all=12:5ca2a2dc5d2ca537 camera=12:5ca2a2dc5d2ca537 shadow=12:5ca2a2dc5d2ca537 indirect=12:5ca2a2dc5d2ca537 +geom 59: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90149456 motion [] pieces all=12:c6c2782f00a068ab camera=12:c6c2782f00a068ab shadow=12:c6c2782f00a068ab indirect=12:c6c2782f00a068ab +geom 60: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98508954 motion [] pieces all=12:75bc6455fa6a273c camera=12:75bc6455fa6a273c shadow=12:75bc6455fa6a273c indirect=12:75bc6455fa6a273c +geom 61: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0035064 motion [] pieces all=12:197384b40f7a87e2 camera=12:197384b40f7a87e2 shadow=12:197384b40f7a87e2 indirect=12:197384b40f7a87e2 +geom 62: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8923537 motion [] pieces all=12:2b6626eb636f521c camera=12:2b6626eb636f521c shadow=12:2b6626eb636f521c indirect=12:2b6626eb636f521c +geom 63: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1949198 motion [] pieces all=12:61af9c9b07f1116d camera=12:61af9c9b07f1116d shadow=12:61af9c9b07f1116d indirect=12:61af9c9b07f1116d +geom 64: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1920719 motion [] pieces all=12:cfd846df87adb0da camera=12:cfd846df87adb0da shadow=12:cfd846df87adb0da indirect=12:cfd846df87adb0da +geom 65: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8984334 motion [] pieces all=12:333d41a0dcb2e201 camera=12:333d41a0dcb2e201 shadow=12:333d41a0dcb2e201 indirect=12:333d41a0dcb2e201 +geom 66: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9751323 motion [] pieces all=12:b7bdd232140c4521 camera=12:b7bdd232140c4521 shadow=12:b7bdd232140c4521 indirect=12:b7bdd232140c4521 +geom 67: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0087382 motion [] pieces all=12:d13ed6cfaf8f058c camera=12:d13ed6cfaf8f058c shadow=12:d13ed6cfaf8f058c indirect=12:d13ed6cfaf8f058c +geom 68: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0648361 motion [] pieces all=12:c21a4efa1141550f camera=12:c21a4efa1141550f shadow=12:c21a4efa1141550f indirect=12:c21a4efa1141550f +geom 69: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90664405 motion [] pieces all=12:c2720b1e01aad493 camera=12:c2720b1e01aad493 shadow=12:c2720b1e01aad493 indirect=12:c2720b1e01aad493 +geom 70: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1171777 motion [] pieces all=12:fad9d3b4cef64b24 camera=12:fad9d3b4cef64b24 shadow=12:fad9d3b4cef64b24 indirect=12:fad9d3b4cef64b24 +geom 71: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.824887 motion [] pieces all=12:f4410e325cd0afb1 camera=12:f4410e325cd0afb1 shadow=12:f4410e325cd0afb1 indirect=12:f4410e325cd0afb1 +geom 72: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9516001 motion [] pieces all=12:cc84d88f692e85a6 camera=12:cc84d88f692e85a6 shadow=12:cc84d88f692e85a6 indirect=12:cc84d88f692e85a6 +geom 73: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0400816 motion [] pieces all=12:e22ab20fe11d8cfe camera=12:e22ab20fe11d8cfe shadow=12:e22ab20fe11d8cfe indirect=12:e22ab20fe11d8cfe +geom 74: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8592531 motion [] pieces all=12:13c0a13a86e249ef camera=12:13c0a13a86e249ef shadow=12:13c0a13a86e249ef indirect=12:13c0a13a86e249ef +geom 75: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1510249 motion [] pieces all=12:1937c664f4367544 camera=12:1937c664f4367544 shadow=12:1937c664f4367544 indirect=12:1937c664f4367544 +geom 76: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0866565 motion [] pieces all=12:5db5fb4d3b4d5b35 camera=12:5db5fb4d3b4d5b35 shadow=12:5db5fb4d3b4d5b35 indirect=12:5db5fb4d3b4d5b35 +geom 77: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9487157 motion [] pieces all=12:d58005e750fb4342 camera=12:d58005e750fb4342 shadow=12:d58005e750fb4342 indirect=12:d58005e750fb4342 +geom 78: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1492283 motion [] pieces all=12:0342164286461ee3 camera=12:0342164286461ee3 shadow=12:0342164286461ee3 indirect=12:0342164286461ee3 +geom 79: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83977586 motion [] pieces all=12:c807827e3075e055 camera=12:c807827e3075e055 shadow=12:c807827e3075e055 indirect=12:c807827e3075e055 +geom 80: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0217434 motion [] pieces all=12:5285ac30cc4da062 camera=12:5285ac30cc4da062 shadow=12:5285ac30cc4da062 indirect=12:5285ac30cc4da062 +geom 81: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9952757 motion [] pieces all=12:10bc56ab6511ed11 camera=12:10bc56ab6511ed11 shadow=12:10bc56ab6511ed11 indirect=12:10bc56ab6511ed11 +geom 82: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87789065 motion [] pieces all=12:b7b3cff366213430 camera=12:b7b3cff366213430 shadow=12:b7b3cff366213430 indirect=12:b7b3cff366213430 +geom 83: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.179131 motion [] pieces all=12:26dba7352b5248dd camera=12:26dba7352b5248dd shadow=12:26dba7352b5248dd indirect=12:26dba7352b5248dd +geom 84: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80048686 motion [] pieces all=12:ca11206893156c4a camera=12:ca11206893156c4a shadow=12:ca11206893156c4a indirect=12:ca11206893156c4a +geom 85: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1101823 motion [] pieces all=12:956ae996e038f15c camera=12:956ae996e038f15c shadow=12:956ae996e038f15c indirect=12:956ae996e038f15c +geom 86: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92086023 motion [] pieces all=12:bb66f238124bf21c camera=12:bb66f238124bf21c shadow=12:bb66f238124bf21c indirect=12:bb66f238124bf21c +geom 87: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0607451 motion [] pieces all=12:bfb452bde61271c1 camera=12:bfb452bde61271c1 shadow=12:bfb452bde61271c1 indirect=12:bfb452bde61271c1 +geom 88: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1730204 motion [] pieces all=12:4202277f53e57a26 camera=12:4202277f53e57a26 shadow=12:4202277f53e57a26 indirect=12:4202277f53e57a26 +geom 89: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8726802 motion [] pieces all=12:bfff37b52c3695b3 camera=12:bfff37b52c3695b3 shadow=12:bfff37b52c3695b3 indirect=12:bfff37b52c3695b3 +geom 90: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0355178 motion [] pieces all=12:d92670a1b5505f3f camera=12:d92670a1b5505f3f shadow=12:d92670a1b5505f3f indirect=12:d92670a1b5505f3f +geom 91: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97155887 motion [] pieces all=12:038043fc4d8f3922 camera=12:038043fc4d8f3922 shadow=12:038043fc4d8f3922 indirect=12:038043fc4d8f3922 +geom 92: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1275393 motion [] pieces all=12:21160187a4422810 camera=12:21160187a4422810 shadow=12:21160187a4422810 indirect=12:21160187a4422810 +geom 93: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83525693 motion [] pieces all=12:222fd24745b9a688 camera=12:222fd24745b9a688 shadow=12:222fd24745b9a688 indirect=12:222fd24745b9a688 +geom 94: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0946484 motion [] pieces all=12:b93a89503d2db429 camera=12:b93a89503d2db429 shadow=12:b93a89503d2db429 indirect=12:b93a89503d2db429 +geom 95: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92521805 motion [] pieces all=12:9deb2e0bd53286f5 camera=12:9deb2e0bd53286f5 shadow=12:9deb2e0bd53286f5 indirect=12:9deb2e0bd53286f5 +geom 96: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0792248 motion [] pieces all=12:c39dad0894dc3c01 camera=12:c39dad0894dc3c01 shadow=12:c39dad0894dc3c01 indirect=12:c39dad0894dc3c01 +geom 97: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.938952 motion [] pieces all=12:82dba3e562b9171c camera=12:82dba3e562b9171c shadow=12:82dba3e562b9171c indirect=12:82dba3e562b9171c +geom 98: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8466961 motion [] pieces all=12:5771a39944397bbc camera=12:5771a39944397bbc shadow=12:5771a39944397bbc indirect=12:5771a39944397bbc +geom 99: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1409111 motion [] pieces all=12:f4f5b1d34830c065 camera=12:f4f5b1d34830c065 shadow=12:f4f5b1d34830c065 indirect=12:f4f5b1d34830c065 +geom 100: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1619297 motion [] pieces all=12:2ac55dd6a5129a82 camera=12:2ac55dd6a5129a82 shadow=12:2ac55dd6a5129a82 indirect=12:2ac55dd6a5129a82 +geom 101: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8545255 motion [] pieces all=12:3318ba1c1ea6cb67 camera=12:3318ba1c1ea6cb67 shadow=12:3318ba1c1ea6cb67 indirect=12:3318ba1c1ea6cb67 +geom 102: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0461638 motion [] pieces all=12:abd06b6ac0d101a8 camera=12:abd06b6ac0d101a8 shadow=12:abd06b6ac0d101a8 indirect=12:abd06b6ac0d101a8 +geom 103: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95997083 motion [] pieces all=12:0e766dd59c7864ea camera=12:0e766dd59c7864ea shadow=12:0e766dd59c7864ea indirect=12:0e766dd59c7864ea +geom 104: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9838973 motion [] pieces all=12:4e51be9913a19574 camera=12:4e51be9913a19574 shadow=12:4e51be9913a19574 indirect=12:4e51be9913a19574 +geom 105: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0016983 motion [] pieces all=12:205b772513a5b2d0 camera=12:205b772513a5b2d0 shadow=12:205b772513a5b2d0 indirect=12:205b772513a5b2d0 +geom 106: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1974854 motion [] pieces all=12:aafd38f582755d75 camera=12:aafd38f582755d75 shadow=12:aafd38f582755d75 indirect=12:aafd38f582755d75 +geom 107: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89059156 motion [] pieces all=12:5e1c6ed9efae70da camera=12:5e1c6ed9efae70da shadow=12:5e1c6ed9efae70da indirect=12:5e1c6ed9efae70da +geom 108: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1189466 motion [] pieces all=12:1ccc269c6db79208 camera=12:1ccc269c6db79208 shadow=12:1ccc269c6db79208 indirect=12:1ccc269c6db79208 +geom 109: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81325066 motion [] pieces all=12:13bc64f0b3663db5 camera=12:13bc64f0b3663db5 shadow=12:13bc64f0b3663db5 indirect=12:13bc64f0b3663db5 +geom 110: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.069818 motion [] pieces all=12:932fe7987a89653d camera=12:932fe7987a89653d shadow=12:932fe7987a89653d indirect=12:932fe7987a89653d +geom 111: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9038211 motion [] pieces all=12:90f5b972915f93b4 camera=12:90f5b972915f93b4 shadow=12:90f5b972915f93b4 indirect=12:90f5b972915f93b4 +geom 112: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1853997 motion [] pieces all=12:8179b93651694931 camera=12:8179b93651694931 shadow=12:8179b93651694931 indirect=12:8179b93651694931 +geom 113: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88160837 motion [] pieces all=12:069fc554995e3ee7 camera=12:069fc554995e3ee7 shadow=12:069fc554995e3ee7 indirect=12:069fc554995e3ee7 +geom 114: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0146524 motion [] pieces all=12:e176080f78b1eb15 camera=12:e176080f78b1eb15 shadow=12:e176080f78b1eb15 indirect=12:e176080f78b1eb15 +geom 115: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99161226 motion [] pieces all=12:ef58b8a0de63d3c4 camera=12:ef58b8a0de63d3c4 shadow=12:ef58b8a0de63d3c4 indirect=12:ef58b8a0de63d3c4 +geom 116: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0511867 motion [] pieces all=12:4b16770c04cd474b camera=12:4b16770c04cd474b shadow=12:4b16770c04cd474b indirect=12:4b16770c04cd474b +geom 117: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9171676 motion [] pieces all=12:609f6f3ddcf1af6d camera=12:609f6f3ddcf1af6d shadow=12:609f6f3ddcf1af6d indirect=12:609f6f3ddcf1af6d +geom 118: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80908626 motion [] pieces all=12:4c035f8f3318d2f6 camera=12:4c035f8f3318d2f6 shadow=12:4c035f8f3318d2f6 indirect=12:4c035f8f3318d2f6 +geom 119: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.103263 motion [] pieces all=12:700889d040a6e4dd camera=12:700889d040a6e4dd shadow=12:700889d040a6e4dd indirect=12:700889d040a6e4dd +geom 120: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8642026 motion [] pieces all=12:6e10e505ba86c48e camera=12:6e10e505ba86c48e shadow=12:6e10e505ba86c48e indirect=12:6e10e505ba86c48e +geom 121: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1678903 motion [] pieces all=12:3582f8fba0915f4a camera=12:3582f8fba0915f4a shadow=12:3582f8fba0915f4a indirect=12:3582f8fba0915f4a +geom 122: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9633117 motion [] pieces all=12:2040ef2ac8c3a93d camera=12:2040ef2ac8c3a93d shadow=12:2040ef2ac8c3a93d indirect=12:2040ef2ac8c3a93d +geom 123: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0253445 motion [] pieces all=12:a91be1fa2268d70b camera=12:a91be1fa2268d70b shadow=12:a91be1fa2268d70b indirect=12:a91be1fa2268d70b +geom 124: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.13635 motion [] pieces all=12:9e7372e64ec5bb9d camera=12:9e7372e64ec5bb9d shadow=12:9e7372e64ec5bb9d indirect=12:9e7372e64ec5bb9d +geom 125: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8252184 motion [] pieces all=12:27afe71487c8acfc camera=12:27afe71487c8acfc shadow=12:27afe71487c8acfc indirect=12:27afe71487c8acfc +geom 126: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0885826 motion [] pieces all=12:c9ce7a955379bf47 camera=12:c9ce7a955379bf47 shadow=12:c9ce7a955379bf47 indirect=12:c9ce7a955379bf47 +geom 127: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9313929 motion [] pieces all=12:f936746ea9fdaa67 camera=12:f936746ea9fdaa67 shadow=12:f936746ea9fdaa67 indirect=12:f936746ea9fdaa67 +geom 128: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0906614 motion [] pieces all=12:e6990c8db4ea9e79 camera=12:e6990c8db4ea9e79 shadow=12:e6990c8db4ea9e79 indirect=12:e6990c8db4ea9e79 +geom 129: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93495494 motion [] pieces all=12:75b610907ba3ea9b camera=12:75b610907ba3ea9b shadow=12:75b610907ba3ea9b indirect=12:75b610907ba3ea9b +geom 130: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82858384 motion [] pieces all=12:e78b8cafbe306a32 camera=12:e78b8cafbe306a32 shadow=12:e78b8cafbe306a32 indirect=12:e78b8cafbe306a32 +geom 131: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1339966 motion [] pieces all=12:b9ac9a14840ed1f6 camera=12:b9ac9a14840ed1f6 shadow=12:b9ac9a14840ed1f6 indirect=12:b9ac9a14840ed1f6 +geom 132: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8659113 motion [] pieces all=12:b1a9a739c1c000bc camera=12:b1a9a739c1c000bc shadow=12:b1a9a739c1c000bc indirect=12:b1a9a739c1c000bc +geom 133: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1626551 motion [] pieces all=12:9f5c63d26cf251c1 camera=12:9f5c63d26cf251c1 shadow=12:9f5c63d26cf251c1 indirect=12:9f5c63d26cf251c1 +geom 134: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96570367 motion [] pieces all=12:e82835f20fda3a2d camera=12:e82835f20fda3a2d shadow=12:e82835f20fda3a2d indirect=12:e82835f20fda3a2d +geom 135: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0299364 motion [] pieces all=12:a9c34018dedecc29 camera=12:a9c34018dedecc29 shadow=12:a9c34018dedecc29 indirect=12:a9c34018dedecc29 +geom 136: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0544772 motion [] pieces all=12:f171c63901b9cd24 camera=12:f171c63901b9cd24 shadow=12:f171c63901b9cd24 indirect=12:f171c63901b9cd24 +geom 137: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9139284 motion [] pieces all=12:66942b3dbac18127 camera=12:66942b3dbac18127 shadow=12:66942b3dbac18127 indirect=12:66942b3dbac18127 +geom 138: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.103051 motion [] pieces all=12:0c9467685e6faf9b camera=12:0c9467685e6faf9b shadow=12:0c9467685e6faf9b indirect=12:0c9467685e6faf9b +geom 139: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81037587 motion [] pieces all=12:4628207e87532cd9 camera=12:4628207e87532cd9 shadow=12:4628207e87532cd9 indirect=12:4628207e87532cd9 +geom 140: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0183249 motion [] pieces all=12:865fd372ca38e7d5 camera=12:865fd372ca38e7d5 shadow=12:865fd372ca38e7d5 indirect=12:865fd372ca38e7d5 +geom 141: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99033916 motion [] pieces all=12:fd4547bf3f39772e camera=12:fd4547bf3f39772e shadow=12:fd4547bf3f39772e indirect=12:fd4547bf3f39772e +geom 142: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1833695 motion [] pieces all=12:4718ab9f74de7af5 camera=12:4718ab9f74de7af5 shadow=12:4718ab9f74de7af5 indirect=12:4718ab9f74de7af5 +geom 143: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8870931 motion [] pieces all=12:f073ad6af47da1b9 camera=12:f073ad6af47da1b9 shadow=12:f073ad6af47da1b9 indirect=12:f073ad6af47da1b9 +geom 144: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0751863 motion [] pieces all=12:469243371e3601c4 camera=12:469243371e3601c4 shadow=12:469243371e3601c4 indirect=12:469243371e3601c4 +geom 145: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94338113 motion [] pieces all=12:242ede1ac82d2838 camera=12:242ede1ac82d2838 shadow=12:242ede1ac82d2838 indirect=12:242ede1ac82d2838 +geom 146: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1404334 motion [] pieces all=12:6ae0e374492b1345 camera=12:6ae0e374492b1345 shadow=12:6ae0e374492b1345 indirect=12:6ae0e374492b1345 +geom 147: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84811646 motion [] pieces all=12:7fc28f36f60f9e79 camera=12:7fc28f36f60f9e79 shadow=12:7fc28f36f60f9e79 indirect=12:7fc28f36f60f9e79 +geom 148: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1578814 motion [] pieces all=12:004bab5661b3c514 camera=12:004bab5661b3c514 shadow=12:004bab5661b3c514 indirect=12:004bab5661b3c514 +geom 149: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8510541 motion [] pieces all=12:06ee30278c301b97 camera=12:06ee30278c301b97 shadow=12:06ee30278c301b97 indirect=12:06ee30278c301b97 +geom 150: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95639116 motion [] pieces all=12:0cc69f7eab6608d5 camera=12:0cc69f7eab6608d5 shadow=12:0cc69f7eab6608d5 indirect=12:0cc69f7eab6608d5 +geom 151: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0488136 motion [] pieces all=12:84683631bf3f2d7f camera=12:84683631bf3f2d7f shadow=12:84683631bf3f2d7f indirect=12:84683631bf3f2d7f +geom 152: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1240493 motion [] pieces all=12:09e0339043c05885 camera=12:09e0339043c05885 shadow=12:09e0339043c05885 indirect=12:09e0339043c05885 +geom 153: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81715965 motion [] pieces all=12:baff44b23fa2fe8c camera=12:baff44b23fa2fe8c shadow=12:baff44b23fa2fe8c indirect=12:baff44b23fa2fe8c +geom 154: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.072348 motion [] pieces all=12:7f07f015aba3675f camera=12:7f07f015aba3675f shadow=12:7f07f015aba3675f indirect=12:7f07f015aba3675f +geom 155: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9028523 motion [] pieces all=12:e544345b30b64bce camera=12:e544345b30b64bce shadow=12:e544345b30b64bce indirect=12:e544345b30b64bce +geom 156: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.195409 motion [] pieces all=12:bf44779c62a0d1d9 camera=12:bf44779c62a0d1d9 shadow=12:bf44779c62a0d1d9 indirect=12:bf44779c62a0d1d9 +geom 157: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8909322 motion [] pieces all=12:d9444d58a4aa29bf camera=12:d9444d58a4aa29bf shadow=12:d9444d58a4aa29bf indirect=12:d9444d58a4aa29bf +geom 158: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0053203 motion [] pieces all=12:f5a72299b44a6f83 camera=12:f5a72299b44a6f83 shadow=12:f5a72299b44a6f83 indirect=12:f5a72299b44a6f83 +geom 159: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9874529 motion [] pieces all=12:478c430d181f0449 camera=12:478c430d181f0449 shadow=12:478c430d181f0449 indirect=12:478c430d181f0449 +geom 160: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.833996 motion [] pieces all=12:4f2c575953df9f82 camera=12:4f2c575953df9f82 shadow=12:4f2c575953df9f82 indirect=12:4f2c575953df9f82 +geom 161: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.129332 motion [] pieces all=12:858c4460ee11a801 camera=12:858c4460ee11a801 shadow=12:858c4460ee11a801 indirect=12:858c4460ee11a801 +geom 162: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9295599 motion [] pieces all=12:e49c9cd7bb7700e3 camera=12:e49c9cd7bb7700e3 shadow=12:e49c9cd7bb7700e3 indirect=12:e49c9cd7bb7700e3 +geom 163: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0982622 motion [] pieces all=12:dc41ad73cd114385 camera=12:dc41ad73cd114385 shadow=12:dc41ad73cd114385 indirect=12:dc41ad73cd114385 +geom 164: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97451484 motion [] pieces all=12:09af8565fc3d201d camera=12:09af8565fc3d201d shadow=12:09af8565fc3d201d indirect=12:09af8565fc3d201d +geom 165: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0320674 motion [] pieces all=12:9f9b6a360e10adbb camera=12:9f9b6a360e10adbb shadow=12:9f9b6a360e10adbb indirect=12:9f9b6a360e10adbb +geom 166: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1709979 motion [] pieces all=12:99d2f51f4821115d camera=12:99d2f51f4821115d shadow=12:99d2f51f4821115d indirect=12:99d2f51f4821115d +geom 167: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8691917 motion [] pieces all=12:0d56e690544efec0 camera=12:0d56e690544efec0 shadow=12:0d56e690544efec0 indirect=12:0d56e690544efec0 +geom 168: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87965363 motion [] pieces all=12:827e12ddbf252fb5 camera=12:827e12ddbf252fb5 shadow=12:827e12ddbf252fb5 indirect=12:827e12ddbf252fb5 +geom 169: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1770281 motion [] pieces all=12:88a6fafd5aaa039d camera=12:88a6fafd5aaa039d shadow=12:88a6fafd5aaa039d indirect=12:88a6fafd5aaa039d +geom 170: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9975212 motion [] pieces all=12:f46016e89c458233 camera=12:f46016e89c458233 shadow=12:f46016e89c458233 indirect=12:f46016e89c458233 +geom 171: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0249971 motion [] pieces all=12:d662864dd505c55e camera=12:d662864dd505c55e shadow=12:d662864dd505c55e indirect=12:d662864dd505c55e +geom 172: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92243314 motion [] pieces all=12:f342c3a2ed6b0950 camera=12:f342c3a2ed6b0950 shadow=12:f342c3a2ed6b0950 indirect=12:f342c3a2ed6b0950 +geom 173: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0585103 motion [] pieces all=12:ee7ff15f2424922f camera=12:ee7ff15f2424922f shadow=12:ee7ff15f2424922f indirect=12:ee7ff15f2424922f +geom 174: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1082776 motion [] pieces all=12:86ef859898372a65 camera=12:86ef859898372a65 shadow=12:86ef859898372a65 indirect=12:86ef859898372a65 +geom 175: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80569136 motion [] pieces all=12:9ec313ad6c2136d1 camera=12:9ec313ad6c2136d1 shadow=12:9ec313ad6c2136d1 indirect=12:9ec313ad6c2136d1 +geom 176: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9787432 motion [] pieces all=12:2dde1f02614bce01 camera=12:2dde1f02614bce01 shadow=12:2dde1f02614bce01 indirect=12:2dde1f02614bce01 +geom 177: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0118738 motion [] pieces all=12:aafadba605d03110 camera=12:aafadba605d03110 shadow=12:aafadba605d03110 indirect=12:aafadba605d03110 +geom 178: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89458597 motion [] pieces all=12:21e27892f962ac44 camera=12:21e27892f962ac44 shadow=12:21e27892f962ac44 indirect=12:21e27892f962ac44 +geom 179: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.190431 motion [] pieces all=12:6675c70617e67d8a camera=12:6675c70617e67d8a shadow=12:6675c70617e67d8a indirect=12:6675c70617e67d8a +geom 180: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0687202 motion [] pieces all=12:c5167e2e7d81c2ff camera=12:c5167e2e7d81c2ff shadow=12:c5167e2e7d81c2ff indirect=12:c5167e2e7d81c2ff +geom 181: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91078526 motion [] pieces all=12:48e2cb88cfa05576 camera=12:48e2cb88cfa05576 shadow=12:48e2cb88cfa05576 indirect=12:48e2cb88cfa05576 +geom 182: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1132085 motion [] pieces all=12:043069344a3076c2 camera=12:043069344a3076c2 shadow=12:043069344a3076c2 indirect=12:043069344a3076c2 +geom 183: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81958956 motion [] pieces all=12:b6a3b6188b4b31bf camera=12:b6a3b6188b4b31bf shadow=12:b6a3b6188b4b31bf indirect=12:b6a3b6188b4b31bf +geom 184: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95427895 motion [] pieces all=12:c001bd0dad9ff844 camera=12:c001bd0dad9ff844 shadow=12:c001bd0dad9ff844 indirect=12:c001bd0dad9ff844 +geom 185: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0434186 motion [] pieces all=12:0b59ff7e43848943 camera=12:0b59ff7e43848943 shadow=12:0b59ff7e43848943 indirect=12:0b59ff7e43848943 +geom 186: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1551938 motion [] pieces all=12:5218f56e8786a8d1 camera=12:5218f56e8786a8d1 shadow=12:5218f56e8786a8d1 indirect=12:5218f56e8786a8d1 +geom 187: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8595143 motion [] pieces all=12:4a7806cbcbb88531 camera=12:4a7806cbcbb88531 shadow=12:4a7806cbcbb88531 indirect=12:4a7806cbcbb88531 +geom 188: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8408943 motion [] pieces all=12:7f3b442d9e722de1 camera=12:7f3b442d9e722de1 shadow=12:7f3b442d9e722de1 indirect=12:7f3b442d9e722de1 +geom 189: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1452442 motion [] pieces all=12:e0d5bbe9bb208a1d camera=12:e0d5bbe9bb208a1d shadow=12:e0d5bbe9bb208a1d indirect=12:e0d5bbe9bb208a1d +geom 190: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9464676 motion [] pieces all=12:b085d7918bf6355b camera=12:b085d7918bf6355b shadow=12:b085d7918bf6355b indirect=12:b085d7918bf6355b +geom 191: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0834273 motion [] pieces all=12:abe6c6954e3382a9 camera=12:abe6c6954e3382a9 shadow=12:abe6c6954e3382a9 indirect=12:abe6c6954e3382a9 +geom 192: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8574602 motion [] pieces all=12:71ee11b13c594ff9 camera=12:71ee11b13c594ff9 shadow=12:71ee11b13c594ff9 indirect=12:71ee11b13c594ff9 +geom 193: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.151815 motion [] pieces all=12:dbe2a094f9f5dd6a camera=12:dbe2a094f9f5dd6a shadow=12:dbe2a094f9f5dd6a indirect=12:dbe2a094f9f5dd6a +geom 194: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0380479 motion [] pieces all=12:287aaeeaee0c366b camera=12:287aaeeaee0c366b shadow=12:287aaeeaee0c366b indirect=12:287aaeeaee0c366b +geom 195: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95154804 motion [] pieces all=12:4846d4ce61cd070a camera=12:4846d4ce61cd070a shadow=12:4846d4ce61cd070a indirect=12:4846d4ce61cd070a +geom 196: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0853423 motion [] pieces all=12:668675de6db22ea9 camera=12:668675de6db22ea9 shadow=12:668675de6db22ea9 indirect=12:668675de6db22ea9 +geom 197: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9481686 motion [] pieces all=12:b2176c9e3a8bd6be camera=12:b2176c9e3a8bd6be shadow=12:b2176c9e3a8bd6be indirect=12:b2176c9e3a8bd6be +geom 198: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.148388 motion [] pieces all=12:1b5bfe08d8aecf46 camera=12:1b5bfe08d8aecf46 shadow=12:1b5bfe08d8aecf46 indirect=12:1b5bfe08d8aecf46 +geom 199: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8388503 motion [] pieces all=12:ed6a27aa851d98b4 camera=12:ed6a27aa851d98b4 shadow=12:ed6a27aa851d98b4 indirect=12:ed6a27aa851d98b4 +geom 200: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1177161 motion [] pieces all=12:477f446ff91418fe camera=12:477f446ff91418fe shadow=12:477f446ff91418fe indirect=12:477f446ff91418fe +geom 201: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.821902 motion [] pieces all=12:e45df0929b4a7a20 camera=12:e45df0929b4a7a20 shadow=12:e45df0929b4a7a20 indirect=12:e45df0929b4a7a20 +geom 202: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9081097 motion [] pieces all=12:d8ac1550c1d701d3 camera=12:d8ac1550c1d701d3 shadow=12:d8ac1550c1d701d3 indirect=12:d8ac1550c1d701d3 +geom 203: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0630432 motion [] pieces all=12:4bf7c09967756dab camera=12:4bf7c09967756dab shadow=12:4bf7c09967756dab indirect=12:4bf7c09967756dab +geom 204: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0076557 motion [] pieces all=12:4b743cdcfe182631 camera=12:4b743cdcfe182631 shadow=12:4b743cdcfe182631 indirect=12:4b743cdcfe182631 +geom 205: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97757643 motion [] pieces all=12:ce244f01fc616d6d camera=12:ce244f01fc616d6d shadow=12:ce244f01fc616d6d indirect=12:ce244f01fc616d6d +geom 206: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1927692 motion [] pieces all=12:3680ff2a1925c2b8 camera=12:3680ff2a1925c2b8 shadow=12:3680ff2a1925c2b8 indirect=12:3680ff2a1925c2b8 +geom 207: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8998191 motion [] pieces all=12:631eb32618265a1d camera=12:631eb32618265a1d shadow=12:631eb32618265a1d indirect=12:631eb32618265a1d +geom 208: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0190506 motion [] pieces all=12:ecbbd67d5ea82535 camera=12:ecbbd67d5ea82535 shadow=12:ecbbd67d5ea82535 indirect=12:ecbbd67d5ea82535 +geom 209: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99540603 motion [] pieces all=12:3ff8d546f9bdd0fb camera=12:3ff8d546f9bdd0fb shadow=12:3ff8d546f9bdd0fb indirect=12:3ff8d546f9bdd0fb +geom 210: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1799959 motion [] pieces all=12:2317ef2a031d8f47 camera=12:2317ef2a031d8f47 shadow=12:2317ef2a031d8f47 indirect=12:2317ef2a031d8f47 +geom 211: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87620467 motion [] pieces all=12:1779aa23bb0f9042 camera=12:1779aa23bb0f9042 shadow=12:1779aa23bb0f9042 indirect=12:1779aa23bb0f9042 +geom 212: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1119057 motion [] pieces all=12:91f1de75efe1ff66 camera=12:91f1de75efe1ff66 shadow=12:91f1de75efe1ff66 indirect=12:91f1de75efe1ff66 +geom 213: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8029353 motion [] pieces all=12:504fea94e49e26b5 camera=12:504fea94e49e26b5 shadow=12:504fea94e49e26b5 indirect=12:504fea94e49e26b5 +geom 214: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9190664 motion [] pieces all=12:0efb54b7f23ac443 camera=12:0efb54b7f23ac443 shadow=12:0efb54b7f23ac443 indirect=12:0efb54b7f23ac443 +geom 215: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0612158 motion [] pieces all=12:55a92efc8135fc5d camera=12:55a92efc8135fc5d shadow=12:55a92efc8135fc5d indirect=12:55a92efc8135fc5d +geom 216: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1734748 motion [] pieces all=12:a620be5aa9925d00 camera=12:a620be5aa9925d00 shadow=12:a620be5aa9925d00 indirect=12:a620be5aa9925d00 +geom 217: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8742897 motion [] pieces all=12:c2fbfc60af19f0d0 camera=12:c2fbfc60af19f0d0 shadow=12:c2fbfc60af19f0d0 indirect=12:c2fbfc60af19f0d0 +geom 218: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0368638 motion [] pieces all=12:fd178773edcdb210 camera=12:fd178773edcdb210 shadow=12:fd178773edcdb210 indirect=12:fd178773edcdb210 +geom 219: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9695358 motion [] pieces all=12:92c10878d7799c47 camera=12:92c10878d7799c47 shadow=12:92c10878d7799c47 indirect=12:92c10878d7799c47 +geom 220: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83632326 motion [] pieces all=12:56eef0396f98b12d camera=12:56eef0396f98b12d shadow=12:56eef0396f98b12d indirect=12:56eef0396f98b12d +geom 221: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.125916 motion [] pieces all=12:2ee3e4102b2ca7c0 camera=12:2ee3e4102b2ca7c0 shadow=12:2ee3e4102b2ca7c0 indirect=12:2ee3e4102b2ca7c0 +geom 222: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92677325 motion [] pieces all=12:9c793be4df2804bc camera=12:9c793be4df2804bc shadow=12:9c793be4df2804bc indirect=12:9c793be4df2804bc +geom 223: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.096751 motion [] pieces all=12:b6735b8f2a80f193 camera=12:b6735b8f2a80f193 shadow=12:b6735b8f2a80f193 indirect=12:b6735b8f2a80f193 +geom 224: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99294955 motion [] pieces all=12:e14d605bbad5054b camera=12:e14d605bbad5054b shadow=12:e14d605bbad5054b indirect=12:e14d605bbad5054b +geom 225: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0129327 motion [] pieces all=12:ce70384139f3d953 camera=12:ce70384139f3d953 shadow=12:ce70384139f3d953 indirect=12:ce70384139f3d953 +geom 226: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8834852 motion [] pieces all=12:f275b69e8465276d camera=12:f275b69e8465276d shadow=12:f275b69e8465276d indirect=12:f275b69e8465276d +geom 227: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1862364 motion [] pieces all=12:73a525c8a7cfebfc camera=12:73a525c8a7cfebfc shadow=12:73a525c8a7cfebfc indirect=12:73a525c8a7cfebfc +geom 228: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80695534 motion [] pieces all=12:4fc4787ac53c19ae camera=12:4fc4787ac53c19ae shadow=12:4fc4787ac53c19ae indirect=12:4fc4787ac53c19ae +geom 229: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1052685 motion [] pieces all=12:5f526759f00f8bb1 camera=12:5f526759f00f8bb1 shadow=12:5f526759f00f8bb1 indirect=12:5f526759f00f8bb1 +geom 230: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0517714 motion [] pieces all=12:43a08224d7f3a5ff camera=12:43a08224d7f3a5ff shadow=12:43a08224d7f3a5ff indirect=12:43a08224d7f3a5ff +geom 231: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9183691 motion [] pieces all=12:4e8261fe621a8754 camera=12:4e8261fe621a8754 shadow=12:4e8261fe621a8754 indirect=12:4e8261fe621a8754 +geom 232: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0896878 motion [] pieces all=12:2105a034e5acb921 camera=12:2105a034e5acb921 shadow=12:2105a034e5acb921 indirect=12:2105a034e5acb921 +geom 233: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93423206 motion [] pieces all=12:47b70feddcfef5c4 camera=12:47b70feddcfef5c4 shadow=12:47b70feddcfef5c4 indirect=12:47b70feddcfef5c4 +geom 234: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1348141 motion [] pieces all=12:c150c564a2f639e3 camera=12:c150c564a2f639e3 shadow=12:c150c564a2f639e3 indirect=12:c150c564a2f639e3 +geom 235: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8272541 motion [] pieces all=12:9a036bb10f2a8c19 camera=12:9a036bb10f2a8c19 shadow=12:9a036bb10f2a8c19 indirect=12:9a036bb10f2a8c19 +geom 236: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8628023 motion [] pieces all=12:df84cc6ab0cf1013 camera=12:df84cc6ab0cf1013 shadow=12:df84cc6ab0cf1013 indirect=12:df84cc6ab0cf1013 +geom 237: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1667898 motion [] pieces all=12:ea055c935781e4b2 camera=12:ea055c935781e4b2 shadow=12:ea055c935781e4b2 indirect=12:ea055c935781e4b2 +geom 238: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0272492 motion [] pieces all=12:b666550bc7f3f2e3 camera=12:b666550bc7f3f2e3 shadow=12:b666550bc7f3f2e3 indirect=12:b666550bc7f3f2e3 +geom 239: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9644636 motion [] pieces all=12:25b40fe1e3b33c13 camera=12:25b40fe1e3b33c13 shadow=12:25b40fe1e3b33c13 indirect=12:25b40fe1e3b33c13 +geom 240: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9401488 motion [] pieces all=12:ef193e56f1c675ad camera=12:ef193e56f1c675ad shadow=12:ef193e56f1c675ad indirect=12:ef193e56f1c675ad +geom 241: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0806658 motion [] pieces all=12:6cd8d81131f613a5 camera=12:6cd8d81131f613a5 shadow=12:6cd8d81131f613a5 indirect=12:6cd8d81131f613a5 +geom 242: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84431666 motion [] pieces all=12:75d58887322e3c92 camera=12:75d58887322e3c92 shadow=12:75d58887322e3c92 indirect=12:75d58887322e3c92 +geom 243: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1427468 motion [] pieces all=12:ceb6c2a84e7313ea camera=12:ceb6c2a84e7313ea shadow=12:ceb6c2a84e7313ea indirect=12:ceb6c2a84e7313ea +geom 244: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8558955 motion [] pieces all=12:966eb51da03b3092 camera=12:966eb51da03b3092 shadow=12:966eb51da03b3092 indirect=12:966eb51da03b3092 +geom 245: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1608133 motion [] pieces all=12:4684046ad71d3941 camera=12:4684046ad71d3941 shadow=12:4684046ad71d3941 indirect=12:4684046ad71d3941 +geom 246: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0448556 motion [] pieces all=12:8909f2f12790188f camera=12:8909f2f12790188f shadow=12:8909f2f12790188f indirect=12:8909f2f12790188f +geom 247: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9619815 motion [] pieces all=12:e68d935303781b60 camera=12:e68d935303781b60 shadow=12:e68d935303781b60 indirect=12:e68d935303781b60 +geom 248: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9050406 motion [] pieces all=12:77e1fb7c3ccd3b72 camera=12:77e1fb7c3ccd3b72 shadow=12:77e1fb7c3ccd3b72 indirect=12:77e1fb7c3ccd3b72 +geom 249: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0704575 motion [] pieces all=12:bf814629e90eb2a6 camera=12:bf814629e90eb2a6 shadow=12:bf814629e90eb2a6 indirect=12:bf814629e90eb2a6 +geom 250: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8142105 motion [] pieces all=12:3e101c8e3b9023da camera=12:3e101c8e3b9023da shadow=12:3e101c8e3b9023da indirect=12:3e101c8e3b9023da +geom 251: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1210591 motion [] pieces all=12:adeb9df8e5336e1e camera=12:adeb9df8e5336e1e shadow=12:adeb9df8e5336e1e indirect=12:adeb9df8e5336e1e +geom 252: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0009634 motion [] pieces all=12:243ce4af91f5aa9f camera=12:243ce4af91f5aa9f shadow=12:243ce4af91f5aa9f indirect=12:243ce4af91f5aa9f +geom 253: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9823128 motion [] pieces all=12:930bc470da7bfca0 camera=12:930bc470da7bfca0 shadow=12:930bc470da7bfca0 indirect=12:930bc470da7bfca0 +geom 254: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1997087 motion [] pieces all=12:0eed12db9d57f617 camera=12:0eed12db9d57f617 shadow=12:0eed12db9d57f617 indirect=12:0eed12db9d57f617 +geom 255: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8885824 motion [] pieces all=12:085bce0e053ac672 camera=12:085bce0e053ac672 shadow=12:085bce0e053ac672 indirect=12:085bce0e053ac672 +geom 256: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1071253 motion [] pieces all=12:558e90753a1dbe0c camera=12:558e90753a1dbe0c shadow=12:558e90753a1dbe0c indirect=12:558e90753a1dbe0c +geom 257: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80412865 motion [] pieces all=12:438f0ac0ef81a15c camera=12:438f0ac0ef81a15c shadow=12:438f0ac0ef81a15c indirect=12:438f0ac0ef81a15c +geom 258: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.056387 motion [] pieces all=12:532e9c68579ceebf camera=12:532e9c68579ceebf shadow=12:532e9c68579ceebf indirect=12:532e9c68579ceebf +geom 259: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92466545 motion [] pieces all=12:8bd67b0e1ac0a9c5 camera=12:8bd67b0e1ac0a9c5 shadow=12:8bd67b0e1ac0a9c5 indirect=12:8bd67b0e1ac0a9c5 +geom 260: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0224771 motion [] pieces all=12:db8f1a9cc1fdd115 camera=12:db8f1a9cc1fdd115 shadow=12:db8f1a9cc1fdd115 indirect=12:db8f1a9cc1fdd115 +geom 261: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9992335 motion [] pieces all=12:c12fef72270cd9b9 camera=12:c12fef72270cd9b9 shadow=12:c12fef72270cd9b9 indirect=12:c12fef72270cd9b9 +geom 262: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8799568 motion [] pieces all=12:99f42a5ee0052055 camera=12:99f42a5ee0052055 shadow=12:99f42a5ee0052055 indirect=12:99f42a5ee0052055 +geom 263: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1754391 motion [] pieces all=12:aec0913446abacc1 camera=12:aec0913446abacc1 shadow=12:aec0913446abacc1 indirect=12:aec0913446abacc1 +geom 264: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1689945 motion [] pieces all=12:817419b742012466 camera=12:817419b742012466 shadow=12:817419b742012466 indirect=12:817419b742012466 +geom 265: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8709754 motion [] pieces all=12:11dc946f2502073c camera=12:11dc946f2502073c shadow=12:11dc946f2502073c indirect=12:11dc946f2502073c +geom 266: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0341958 motion [] pieces all=12:2cdb9da3d277d7c3 camera=12:2cdb9da3d277d7c3 shadow=12:2cdb9da3d277d7c3 indirect=12:2cdb9da3d277d7c3 +geom 267: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9728058 motion [] pieces all=12:adf045b7d32a2f1f camera=12:adf045b7d32a2f1f shadow=12:adf045b7d32a2f1f indirect=12:adf045b7d32a2f1f +geom 268: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9305494 motion [] pieces all=12:8fdab00337b44101 camera=12:8fdab00337b44101 shadow=12:8fdab00337b44101 indirect=12:8fdab00337b44101 +geom 269: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0993541 motion [] pieces all=12:e9f74cbbc31e88ca camera=12:e9f74cbbc31e88ca shadow=12:e9f74cbbc31e88ca indirect=12:e9f74cbbc31e88ca +geom 270: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1297429 motion [] pieces all=12:e6f58dc9a2c8cf31 camera=12:e6f58dc9a2c8cf31 shadow=12:e6f58dc9a2c8cf31 indirect=12:e6f58dc9a2c8cf31 +geom 271: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8328105 motion [] pieces all=12:28fe4127d8309887 camera=12:28fe4127d8309887 shadow=12:28fe4127d8309887 indirect=12:28fe4127d8309887 +geom 272: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0407774 motion [] pieces all=12:d1adc814dd14ee88 camera=12:d1adc814dd14ee88 shadow=12:d1adc814dd14ee88 indirect=12:d1adc814dd14ee88 +geom 273: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9556146 motion [] pieces all=12:6d24b8714ab18ccb camera=12:6d24b8714ab18ccb shadow=12:6d24b8714ab18ccb indirect=12:6d24b8714ab18ccb +geom 274: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8622651 motion [] pieces all=12:4123fa223d783808 camera=12:4123fa223d783808 shadow=12:4123fa223d783808 indirect=12:4123fa223d783808 +geom 275: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1533363 motion [] pieces all=12:b1d8d2f5c048d126 camera=12:b1d8d2f5c048d126 shadow=12:b1d8d2f5c048d126 indirect=12:b1d8d2f5c048d126 +geom 276: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0827482 motion [] pieces all=12:b34d3f2fea6ccf3f camera=12:b34d3f2fea6ccf3f shadow=12:b34d3f2fea6ccf3f indirect=12:b34d3f2fea6ccf3f +geom 277: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94452286 motion [] pieces all=12:d7313d7a2c947b15 camera=12:d7313d7a2c947b15 shadow=12:d7313d7a2c947b15 indirect=12:d7313d7a2c947b15 +geom 278: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84241277 motion [] pieces all=12:cf8f50c89c7848bf camera=12:cf8f50c89c7848bf shadow=12:cf8f50c89c7848bf indirect=12:cf8f50c89c7848bf +geom 279: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.145969 motion [] pieces all=12:fc6d0c5cd4ac480a camera=12:fc6d0c5cd4ac480a shadow=12:fc6d0c5cd4ac480a indirect=12:fc6d0c5cd4ac480a +geom 280: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8967557 motion [] pieces all=12:01efc81ea2dc09da camera=12:01efc81ea2dc09da shadow=12:01efc81ea2dc09da indirect=12:01efc81ea2dc09da +geom 281: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1884634 motion [] pieces all=12:985e2ace4f406785 camera=12:985e2ace4f406785 shadow=12:985e2ace4f406785 indirect=12:985e2ace4f406785 +geom 282: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0103384 motion [] pieces all=12:595d0b15b7883054 camera=12:595d0b15b7883054 shadow=12:595d0b15b7883054 indirect=12:595d0b15b7883054 +geom 283: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9807979 motion [] pieces all=12:91c655586891aa6d camera=12:91c655586891aa6d shadow=12:91c655586891aa6d indirect=12:91c655586891aa6d +geom 284: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91237754 motion [] pieces all=12:1f92e95a24a0a941 camera=12:1f92e95a24a0a941 shadow=12:1f92e95a24a0a941 indirect=12:1f92e95a24a0a941 +geom 285: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0665895 motion [] pieces all=12:24eed0a13c96f7c0 camera=12:24eed0a13c96f7c0 shadow=12:24eed0a13c96f7c0 indirect=12:24eed0a13c96f7c0 +geom 286: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8213568 motion [] pieces all=12:3ace4e273389b040 camera=12:3ace4e273389b040 shadow=12:3ace4e273389b040 indirect=12:3ace4e273389b040 +geom 287: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1155375 motion [] pieces all=12:a774e8fd544c302f camera=12:a774e8fd544c302f shadow=12:a774e8fd544c302f indirect=12:a774e8fd544c302f +geom 288: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0168831 motion [] pieces all=12:3b8dfe9ac6e074e4 camera=12:3b8dfe9ac6e074e4 shadow=12:3b8dfe9ac6e074e4 indirect=12:3b8dfe9ac6e074e4 +geom 289: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9887352 motion [] pieces all=12:9cc4d9cc6beae0f8 camera=12:9cc4d9cc6beae0f8 shadow=12:9cc4d9cc6beae0f8 indirect=12:9cc4d9cc6beae0f8 +geom 290: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88512194 motion [] pieces all=12:54452159c0cc6de1 camera=12:54452159c0cc6de1 shadow=12:54452159c0cc6de1 indirect=12:54452159c0cc6de1 +geom 291: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1818812 motion [] pieces all=12:d8d6033726a0ae3c camera=12:d8d6033726a0ae3c shadow=12:d8d6033726a0ae3c indirect=12:d8d6033726a0ae3c +geom 292: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0553548 motion [] pieces all=12:14bad604a1de7065 camera=12:14bad604a1de7065 shadow=12:14bad604a1de7065 indirect=12:14bad604a1de7065 +geom 293: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91546917 motion [] pieces all=12:c40b47e88849fe33 camera=12:c40b47e88849fe33 shadow=12:c40b47e88849fe33 indirect=12:c40b47e88849fe33 +geom 294: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8122816 motion [] pieces all=12:2e893d2222249532 camera=12:2e893d2222249532 shadow=12:2e893d2222249532 indirect=12:2e893d2222249532 +geom 295: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1005894 motion [] pieces all=12:bd58cb1520f6c589 camera=12:bd58cb1520f6c589 shadow=12:bd58cb1520f6c589 indirect=12:bd58cb1520f6c589 +geom 296: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9684521 motion [] pieces all=12:5ee1a186ae2d9dd0 camera=12:5ee1a186ae2d9dd0 shadow=12:5ee1a186ae2d9dd0 indirect=12:5ee1a186ae2d9dd0 +geom 297: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0291594 motion [] pieces all=12:bbe60b405380df40 camera=12:bbe60b405380df40 shadow=12:bbe60b405380df40 indirect=12:bbe60b405380df40 +geom 298: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.868216 motion [] pieces all=12:1139e1c7e4a5e8fb camera=12:1139e1c7e4a5e8fb shadow=12:1139e1c7e4a5e8fb indirect=12:1139e1c7e4a5e8fb +geom 299: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1648309 motion [] pieces all=12:f4d9f51838186556 camera=12:f4d9f51838186556 shadow=12:f4d9f51838186556 indirect=12:f4d9f51838186556 +geom 300: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1327685 motion [] pieces all=12:6c7567952e89b197 camera=12:6c7567952e89b197 shadow=12:6c7567952e89b197 indirect=12:6c7567952e89b197 +geom 301: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8302819 motion [] pieces all=12:78388d34aa653f58 camera=12:78388d34aa653f58 shadow=12:78388d34aa653f58 indirect=12:78388d34aa653f58 +geom 302: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93690276 motion [] pieces all=12:b8ddd2c09893939a camera=12:b8ddd2c09893939a shadow=12:b8ddd2c09893939a indirect=12:b8ddd2c09893939a +geom 303: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0930607 motion [] pieces all=12:1439028a696a7d6a camera=12:1439028a696a7d6a shadow=12:1439028a696a7d6a indirect=12:1439028a696a7d6a +geom 304: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98559374 motion [] pieces all=12:2d5a80cc0e242252 camera=12:2d5a80cc0e242252 shadow=12:2d5a80cc0e242252 indirect=12:2d5a80cc0e242252 +geom 305: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0042014 motion [] pieces all=12:ba32837f934d89a0 camera=12:ba32837f934d89a0 shadow=12:ba32837f934d89a0 indirect=12:ba32837f934d89a0 +geom 306: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1942586 motion [] pieces all=12:eafe5de3bea88df7 camera=12:eafe5de3bea88df7 shadow=12:eafe5de3bea88df7 indirect=12:eafe5de3bea88df7 +geom 307: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.893466 motion [] pieces all=12:647780a6ed707c17 camera=12:647780a6ed707c17 shadow=12:647780a6ed707c17 indirect=12:647780a6ed707c17 +geom 308: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90030926 motion [] pieces all=12:487b70fa9b392254 camera=12:487b70fa9b392254 shadow=12:487b70fa9b392254 indirect=12:487b70fa9b392254 +geom 309: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0744654 motion [] pieces all=12:d541c481d5fd43bf camera=12:d541c481d5fd43bf shadow=12:d541c481d5fd43bf indirect=12:d541c481d5fd43bf +geom 310: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1226648 motion [] pieces all=12:631e3ff8dcda598a camera=12:631e3ff8dcda598a shadow=12:631e3ff8dcda598a indirect=12:631e3ff8dcda598a +geom 311: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8183132 motion [] pieces all=12:4d8c861c7b334b12 camera=12:4d8c861c7b334b12 shadow=12:4d8c861c7b334b12 indirect=12:4d8c861c7b334b12 +geom 312: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0470083 motion [] pieces all=12:144bf5f952df3aae camera=12:144bf5f952df3aae shadow=12:144bf5f952df3aae indirect=12:144bf5f952df3aae +geom 313: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9589237 motion [] pieces all=12:6f08e2f191c13829 camera=12:6f08e2f191c13829 shadow=12:6f08e2f191c13829 indirect=12:6f08e2f191c13829 +geom 314: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1568285 motion [] pieces all=12:9ddb7a84275336f2 camera=12:9ddb7a84275336f2 shadow=12:9ddb7a84275336f2 indirect=12:9ddb7a84275336f2 +geom 315: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8528369 motion [] pieces all=12:dc6f6b0e0689c4fe camera=12:dc6f6b0e0689c4fe shadow=12:dc6f6b0e0689c4fe indirect=12:dc6f6b0e0689c4fe +geom 316: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1375338 motion [] pieces all=12:771d4bc7d8a2055c camera=12:771d4bc7d8a2055c shadow=12:771d4bc7d8a2055c indirect=12:771d4bc7d8a2055c +geom 317: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84985673 motion [] pieces all=12:5f8f376f318e7dd6 camera=12:5f8f376f318e7dd6 shadow=12:5f8f376f318e7dd6 indirect=12:5f8f376f318e7dd6 +geom 318: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94081056 motion [] pieces all=12:7a3fb26c1cd5533d camera=12:7a3fb26c1cd5533d shadow=12:7a3fb26c1cd5533d indirect=12:7a3fb26c1cd5533d +geom 319: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0773013 motion [] pieces all=12:d7fce092f6c85dec camera=12:d7fce092f6c85dec shadow=12:d7fce092f6c85dec indirect=12:d7fce092f6c85dec +geom 320: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1783283 motion [] pieces all=12:37d30f1a46e449ff camera=12:37d30f1a46e449ff shadow=12:37d30f1a46e449ff indirect=12:37d30f1a46e449ff +geom 321: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87658024 motion [] pieces all=12:14d43fd6bb0ff55d camera=12:14d43fd6bb0ff55d shadow=12:14d43fd6bb0ff55d indirect=12:14d43fd6bb0ff55d +geom 322: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0205542 motion [] pieces all=12:87481ae735713eaa camera=12:87481ae735713eaa shadow=12:87481ae735713eaa indirect=12:87481ae735713eaa +geom 323: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99422103 motion [] pieces all=12:5bde4420dcb7830a camera=12:5bde4420dcb7830a shadow=12:5bde4420dcb7830a indirect=12:5bde4420dcb7830a +geom 324: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9212079 motion [] pieces all=12:dd5d8187b0e11f4d camera=12:dd5d8187b0e11f4d shadow=12:dd5d8187b0e11f4d indirect=12:dd5d8187b0e11f4d +geom 325: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0596653 motion [] pieces all=12:a13d8d5031328858 camera=12:a13d8d5031328858 shadow=12:a13d8d5031328858 indirect=12:a13d8d5031328858 +geom 326: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1097448 motion [] pieces all=12:df0336c5dc625715 camera=12:df0336c5dc625715 shadow=12:df0336c5dc625715 indirect=12:df0336c5dc625715 +geom 327: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80082613 motion [] pieces all=12:7fdb2280b720b4e0 camera=12:7fdb2280b720b4e0 shadow=12:7fdb2280b720b4e0 indirect=12:7fdb2280b720b4e0 +geom 328: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83511055 motion [] pieces all=12:8e6bbb989918f2d4 camera=12:8e6bbb989918f2d4 shadow=12:8e6bbb989918f2d4 indirect=12:8e6bbb989918f2d4 +geom 329: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.126959 motion [] pieces all=12:30f7453b0f345828 camera=12:30f7453b0f345828 shadow=12:30f7453b0f345828 indirect=12:30f7453b0f345828 +geom 330: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92609227 motion [] pieces all=12:91f9f276b93f6466 camera=12:91f9f276b93f6466 shadow=12:91f9f276b93f6466 indirect=12:91f9f276b93f6466 +geom 331: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0945077 motion [] pieces all=12:d6b247f1e91ba686 camera=12:d6b247f1e91ba686 shadow=12:d6b247f1e91ba686 indirect=12:d6b247f1e91ba686 +geom 332: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0349877 motion [] pieces all=12:d5740e0bac5cd316 camera=12:d5740e0bac5cd316 shadow=12:d5740e0bac5cd316 indirect=12:d5740e0bac5cd316 +geom 333: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9710804 motion [] pieces all=12:27d44de46e3dca54 camera=12:27d44de46e3dca54 shadow=12:27d44de46e3dca54 indirect=12:27d44de46e3dca54 +geom 334: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8721167 motion [] pieces all=12:18228ff2b63f8c7d camera=12:18228ff2b63f8c7d shadow=12:18228ff2b63f8c7d indirect=12:18228ff2b63f8c7d +geom 335: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1724524 motion [] pieces all=12:2ab0876e534f298f camera=12:2ab0876e534f298f shadow=12:2ab0876e534f298f indirect=12:2ab0876e534f298f +geom 336: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8403497 motion [] pieces all=12:41a2c55a267ac5c4 camera=12:41a2c55a267ac5c4 shadow=12:41a2c55a267ac5c4 indirect=12:41a2c55a267ac5c4 +geom 337: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1488395 motion [] pieces all=12:dfc161a8f6a92ea3 camera=12:dfc161a8f6a92ea3 shadow=12:dfc161a8f6a92ea3 indirect=12:dfc161a8f6a92ea3 +geom 338: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0872728 motion [] pieces all=12:4009af968809592a camera=12:4009af968809592a shadow=12:4009af968809592a indirect=12:4009af968809592a +geom 339: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9498308 motion [] pieces all=12:d97514bcecdc5662 camera=12:d97514bcecdc5662 shadow=12:d97514bcecdc5662 indirect=12:d97514bcecdc5662 +geom 340: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1501721 motion [] pieces all=12:d7c58849a10d0edf camera=12:d7c58849a10d0edf shadow=12:d7c58849a10d0edf indirect=12:d7c58849a10d0edf +geom 341: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85824037 motion [] pieces all=12:aed050e32284fe6e camera=12:aed050e32284fe6e shadow=12:aed050e32284fe6e indirect=12:aed050e32284fe6e +geom 342: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9529558 motion [] pieces all=12:ea1dbdb85f1f4d6d camera=12:ea1dbdb85f1f4d6d shadow=12:ea1dbdb85f1f4d6d indirect=12:ea1dbdb85f1f4d6d +geom 343: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0397669 motion [] pieces all=12:6babb56fe308d4cb camera=12:6babb56fe308d4cb shadow=12:6babb56fe308d4cb indirect=12:6babb56fe308d4cb +geom 344: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1160651 motion [] pieces all=12:2957ca89e418c28f camera=12:2957ca89e418c28f shadow=12:2957ca89e418c28f indirect=12:2957ca89e418c28f +geom 345: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8239306 motion [] pieces all=12:2e7f31d4fa464ed4 camera=12:2e7f31d4fa464ed4 shadow=12:2e7f31d4fa464ed4 indirect=12:2e7f31d4fa464ed4 +geom 346: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0655339 motion [] pieces all=12:b200843dc58e1388 camera=12:b200843dc58e1388 shadow=12:b200843dc58e1388 indirect=12:b200843dc58e1388 +geom 347: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9071375 motion [] pieces all=12:249c549d82e9acea camera=12:249c549d82e9acea shadow=12:249c549d82e9acea indirect=12:249c549d82e9acea +geom 348: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0080239 motion [] pieces all=12:e170da844f0a982b camera=12:e170da844f0a982b shadow=12:e170da844f0a982b indirect=12:e170da844f0a982b +geom 349: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97620225 motion [] pieces all=12:193709b6aa2f5d65 camera=12:193709b6aa2f5d65 shadow=12:193709b6aa2f5d65 indirect=12:193709b6aa2f5d65 +geom 350: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89718294 motion [] pieces all=12:c4f52cbc70fa9dca camera=12:c4f52cbc70fa9dca shadow=12:c4f52cbc70fa9dca indirect=12:c4f52cbc70fa9dca +geom 351: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.191257 motion [] pieces all=12:9bcfc66882080152 camera=12:9bcfc66882080152 shadow=12:9bcfc66882080152 indirect=12:9bcfc66882080152 +geom 352: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1368771 motion [] pieces all=12:17d409264b25aaa1 camera=12:17d409264b25aaa1 shadow=12:17d409264b25aaa1 indirect=12:17d409264b25aaa1 +geom 353: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8263488 motion [] pieces all=12:c88cfa106e34b214 camera=12:c88cfa106e34b214 shadow=12:c88cfa106e34b214 indirect=12:c88cfa106e34b214 +geom 354: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9322859 motion [] pieces all=12:72d56a4ceec9b227 camera=12:72d56a4ceec9b227 shadow=12:72d56a4ceec9b227 indirect=12:72d56a4ceec9b227 +geom 355: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0880939 motion [] pieces all=12:b195b52f8adf62a0 camera=12:b195b52f8adf62a0 shadow=12:b195b52f8adf62a0 indirect=12:b195b52f8adf62a0 +geom 356: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0262136 motion [] pieces all=12:45df4628c3eb5709 camera=12:45df4628c3eb5709 shadow=12:45df4628c3eb5709 indirect=12:45df4628c3eb5709 +geom 357: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96307683 motion [] pieces all=12:345e61e8806a6778 camera=12:345e61e8806a6778 shadow=12:345e61e8806a6778 indirect=12:345e61e8806a6778 +geom 358: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1681463 motion [] pieces all=12:86243dfecd6ed800 camera=12:86243dfecd6ed800 shadow=12:86243dfecd6ed800 indirect=12:86243dfecd6ed800 +geom 359: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.86502236 motion [] pieces all=12:343a16809805502c camera=12:343a16809805502c shadow=12:343a16809805502c indirect=12:343a16809805502c +geom 360: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.050149 motion [] pieces all=12:82646e4cfdf87acb camera=12:82646e4cfdf87acb shadow=12:82646e4cfdf87acb indirect=12:82646e4cfdf87acb +geom 361: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9158084 motion [] pieces all=12:24aaf806f2e380e8 camera=12:24aaf806f2e380e8 shadow=12:24aaf806f2e380e8 indirect=12:24aaf806f2e380e8 +geom 362: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8081211 motion [] pieces all=12:7cbe153faf6f8d7a camera=12:7cbe153faf6f8d7a shadow=12:7cbe153faf6f8d7a indirect=12:7cbe153faf6f8d7a +geom 363: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1042663 motion [] pieces all=12:35a219666dea319c camera=12:35a219666dea319c shadow=12:35a219666dea319c indirect=12:35a219666dea319c +geom 364: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0155733 motion [] pieces all=12:e6d7079bdb47adab camera=12:e6d7079bdb47adab shadow=12:e6d7079bdb47adab indirect=12:e6d7079bdb47adab +geom 365: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9908399 motion [] pieces all=12:e8c07fc49651ed38 camera=12:e8c07fc49651ed38 shadow=12:e8c07fc49651ed38 indirect=12:e8c07fc49651ed38 +geom 366: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88250023 motion [] pieces all=12:f5e38f522feb37cb camera=12:f5e38f522feb37cb shadow=12:f5e38f522feb37cb indirect=12:f5e38f522feb37cb +geom 367: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1847697 motion [] pieces all=12:fbc06fd87a8d291f camera=12:fbc06fd87a8d291f shadow=12:fbc06fd87a8d291f indirect=12:fbc06fd87a8d291f +geom 368: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.046034 motion [] pieces all=12:9f78122893426734 camera=12:9f78122893426734 shadow=12:9f78122893426734 indirect=12:9f78122893426734 +geom 369: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96090317 motion [] pieces all=12:5694cc0009888a2a camera=12:5694cc0009888a2a shadow=12:5694cc0009888a2a indirect=12:5694cc0009888a2a +geom 370: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85369337 motion [] pieces all=12:cc6149139636f173 camera=12:cc6149139636f173 shadow=12:cc6149139636f173 indirect=12:cc6149139636f173 +geom 371: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1612246 motion [] pieces all=12:479fb480718c0a74 camera=12:479fb480718c0a74 shadow=12:479fb480718c0a74 indirect=12:479fb480718c0a74 +geom 372: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1420475 motion [] pieces all=12:5011fcf9b2420f89 camera=12:5011fcf9b2420f89 shadow=12:5011fcf9b2420f89 indirect=12:5011fcf9b2420f89 +geom 373: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8454647 motion [] pieces all=12:fe62212b32243903 camera=12:fe62212b32243903 shadow=12:fe62212b32243903 indirect=12:fe62212b32243903 +geom 374: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0787628 motion [] pieces all=12:c09b7779bc49b050 camera=12:c09b7779bc49b050 shadow=12:c09b7779bc49b050 indirect=12:c09b7779bc49b050 +geom 375: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93800545 motion [] pieces all=12:29492bf11ee992b7 camera=12:29492bf11ee992b7 shadow=12:29492bf11ee992b7 indirect=12:29492bf11ee992b7 +geom 376: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0030414 motion [] pieces all=12:12425a2887a24940 camera=12:12425a2887a24940 shadow=12:12425a2887a24940 indirect=12:12425a2887a24940 +geom 377: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.983221 motion [] pieces all=12:c8dff14682474aff camera=12:c8dff14682474aff shadow=12:c8dff14682474aff indirect=12:c8dff14682474aff +geom 378: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8891724 motion [] pieces all=12:1c2a82a18eb963f6 camera=12:1c2a82a18eb963f6 shadow=12:1c2a82a18eb963f6 indirect=12:1c2a82a18eb963f6 +geom 379: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1983188 motion [] pieces all=12:0512533337d37dec camera=12:0512533337d37dec shadow=12:0512533337d37dec indirect=12:0512533337d37dec +geom 380: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0690044 motion [] pieces all=12:d7ddf5a4c50ddc75 camera=12:d7ddf5a4c50ddc75 shadow=12:d7ddf5a4c50ddc75 indirect=12:d7ddf5a4c50ddc75 +geom 381: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9040715 motion [] pieces all=12:69a66701f2fff347 camera=12:69a66701f2fff347 shadow=12:69a66701f2fff347 indirect=12:69a66701f2fff347 +geom 382: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8138704 motion [] pieces all=12:e569ce107be2c4d3 camera=12:e569ce107be2c4d3 shadow=12:e569ce107be2c4d3 indirect=12:e569ce107be2c4d3 +geom 383: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1195462 motion [] pieces all=12:42484194db7c8a06 camera=12:42484194db7c8a06 shadow=12:42484194db7c8a06 indirect=12:42484194db7c8a06 +geom 384: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9979357 motion [] pieces all=12:817b453870a3d419 camera=12:817b453870a3d419 shadow=12:817b453870a3d419 indirect=12:817b453870a3d419 +geom 385: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0240195 motion [] pieces all=12:2ced474f3777cf40 camera=12:2ced474f3777cf40 shadow=12:2ced474f3777cf40 indirect=12:2ced474f3777cf40 +geom 386: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1780815 motion [] pieces all=12:9393967072a354e1 camera=12:9393967072a354e1 shadow=12:9393967072a354e1 indirect=12:9393967072a354e1 +geom 387: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87838584 motion [] pieces all=12:027e2841751e5753 camera=12:027e2841751e5753 shadow=12:027e2841751e5753 indirect=12:027e2841751e5753 +geom 388: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1091733 motion [] pieces all=12:2ed1840aa5cba15e camera=12:2ed1840aa5cba15e shadow=12:2ed1840aa5cba15e indirect=12:2ed1840aa5cba15e +geom 389: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.805113 motion [] pieces all=12:60447d059631efd4 camera=12:60447d059631efd4 shadow=12:60447d059631efd4 indirect=12:60447d059631efd4 +geom 390: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0589079 motion [] pieces all=12:e47acd5a96839e07 camera=12:e47acd5a96839e07 shadow=12:e47acd5a96839e07 indirect=12:e47acd5a96839e07 +geom 391: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92295647 motion [] pieces all=12:7b43a30fb1dddcde camera=12:7b43a30fb1dddcde shadow=12:7b43a30fb1dddcde indirect=12:7b43a30fb1dddcde +geom 392: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.128148 motion [] pieces all=12:69a0ed79f1b361cf camera=12:69a0ed79f1b361cf shadow=12:69a0ed79f1b361cf indirect=12:69a0ed79f1b361cf +geom 393: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83284235 motion [] pieces all=12:d0f91134dfad0a19 camera=12:d0f91134dfad0a19 shadow=12:d0f91134dfad0a19 indirect=12:d0f91134dfad0a19 +geom 394: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92853355 motion [] pieces all=12:f81b7e7017cc610e camera=12:f81b7e7017cc610e shadow=12:f81b7e7017cc610e indirect=12:f81b7e7017cc610e +geom 395: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0970887 motion [] pieces all=12:78927457c90a0400 camera=12:78927457c90a0400 shadow=12:78927457c90a0400 indirect=12:78927457c90a0400 +geom 396: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0317997 motion [] pieces all=12:20b0fd0fc171807f camera=12:20b0fd0fc171807f shadow=12:20b0fd0fc171807f indirect=12:20b0fd0fc171807f +geom 397: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97373277 motion [] pieces all=12:dcdf42631e7cd0a2 camera=12:dcdf42631e7cd0a2 shadow=12:dcdf42631e7cd0a2 indirect=12:dcdf42631e7cd0a2 +geom 398: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1714392 motion [] pieces all=12:c472d0d4899eae67 camera=12:c472d0d4899eae67 shadow=12:c472d0d4899eae67 indirect=12:c472d0d4899eae67 +geom 399: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8703055 motion [] pieces all=12:8267e610d01a5680 camera=12:8267e610d01a5680 shadow=12:8267e610d01a5680 indirect=12:8267e610d01a5680 +geom 400: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1441025 motion [] pieces all=12:279b3e24a102bf1e camera=12:279b3e24a102bf1e shadow=12:279b3e24a102bf1e indirect=12:279b3e24a102bf1e +geom 401: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84141374 motion [] pieces all=12:d17319b14aca9e2c camera=12:d17319b14aca9e2c shadow=12:d17319b14aca9e2c indirect=12:d17319b14aca9e2c +geom 402: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0838239 motion [] pieces all=12:96dd4c0357b42b14 camera=12:96dd4c0357b42b14 shadow=12:96dd4c0357b42b14 indirect=12:96dd4c0357b42b14 +geom 403: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94532305 motion [] pieces all=12:f5fe4cb39a4686ce camera=12:f5fe4cb39a4686ce shadow=12:f5fe4cb39a4686ce indirect=12:f5fe4cb39a4686ce +geom 404: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95378745 motion [] pieces all=12:8dd37214aa940697 camera=12:8dd37214aa940697 shadow=12:8dd37214aa940697 indirect=12:8dd37214aa940697 +geom 405: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0423332 motion [] pieces all=12:de1e755492a14152 camera=12:de1e755492a14152 shadow=12:de1e755492a14152 indirect=12:de1e755492a14152 +geom 406: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1559403 motion [] pieces all=12:9249a94688f496e1 camera=12:9249a94688f496e1 shadow=12:9249a94688f496e1 indirect=12:9249a94688f496e1 +geom 407: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8601882 motion [] pieces all=12:1283b0c1c55f493f camera=12:1283b0c1c55f493f shadow=12:1283b0c1c55f493f indirect=12:1283b0c1c55f493f +geom 408: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1138958 motion [] pieces all=12:8c88dd3a0f244fe6 camera=12:8c88dd3a0f244fe6 shadow=12:8c88dd3a0f244fe6 indirect=12:8c88dd3a0f244fe6 +geom 409: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8189872 motion [] pieces all=12:6fe3119800e2b724 camera=12:6fe3119800e2b724 shadow=12:6fe3119800e2b724 indirect=12:6fe3119800e2b724 +geom 410: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90952617 motion [] pieces all=12:8c6a289ed18001c2 camera=12:8c6a289ed18001c2 shadow=12:8c6a289ed18001c2 indirect=12:8c6a289ed18001c2 +geom 411: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0676242 motion [] pieces all=12:48ef6b53ccf7f3ae camera=12:48ef6b53ccf7f3ae shadow=12:48ef6b53ccf7f3ae indirect=12:48ef6b53ccf7f3ae +geom 412: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1898406 motion [] pieces all=12:b2408acca88da277 camera=12:b2408acca88da277 shadow=12:b2408acca88da277 indirect=12:b2408acca88da277 +geom 413: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8942463 motion [] pieces all=12:6be4b9c1cca2d56a camera=12:6be4b9c1cca2d56a shadow=12:6be4b9c1cca2d56a indirect=12:6be4b9c1cca2d56a +geom 414: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97924507 motion [] pieces all=12:225624b471d1e03b camera=12:225624b471d1e03b shadow=12:225624b471d1e03b indirect=12:225624b471d1e03b +geom 415: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0110332 motion [] pieces all=12:cca30bb094acd981 camera=12:cca30bb094acd981 shadow=12:cca30bb094acd981 indirect=12:cca30bb094acd981 +geom 416: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81568116 motion [] pieces all=12:d0cafe097a17f591 camera=12:d0cafe097a17f591 shadow=12:d0cafe097a17f591 indirect=12:d0cafe097a17f591 +geom 417: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1248193 motion [] pieces all=12:37a2bd30f2744dc6 camera=12:37a2bd30f2744dc6 shadow=12:37a2bd30f2744dc6 indirect=12:37a2bd30f2744dc6 +geom 418: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9016662 motion [] pieces all=12:22706d0be71e9245 camera=12:22706d0be71e9245 shadow=12:22706d0be71e9245 indirect=12:22706d0be71e9245 +geom 419: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0732667 motion [] pieces all=12:40038908680d4401 camera=12:40038908680d4401 shadow=12:40038908680d4401 indirect=12:40038908680d4401 +geom 420: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0060534 motion [] pieces all=12:f41bc3293229b5c6 camera=12:f41bc3293229b5c6 shadow=12:f41bc3293229b5c6 indirect=12:f41bc3293229b5c6 +geom 421: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98605454 motion [] pieces all=12:74201c06a60b7e79 camera=12:74201c06a60b7e79 shadow=12:74201c06a60b7e79 indirect=12:74201c06a60b7e79 +geom 422: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8919946 motion [] pieces all=12:5f2730bf79a70fe6 camera=12:5f2730bf79a70fe6 shadow=12:5f2730bf79a70fe6 indirect=12:5f2730bf79a70fe6 +geom 423: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.19644 motion [] pieces all=12:3146e5e85b71495b camera=12:3146e5e85b71495b shadow=12:3146e5e85b71495b indirect=12:3146e5e85b71495b +geom 424: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8503766 motion [] pieces all=12:08a48fe8aa435062 camera=12:08a48fe8aa435062 shadow=12:08a48fe8aa435062 indirect=12:08a48fe8aa435062 +geom 425: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1588464 motion [] pieces all=12:42a78cff3d571444 camera=12:42a78cff3d571444 shadow=12:42a78cff3d571444 indirect=12:42a78cff3d571444 +geom 426: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95724255 motion [] pieces all=12:a5085c33a6b177c9 camera=12:a5085c33a6b177c9 shadow=12:a5085c33a6b177c9 indirect=12:a5085c33a6b177c9 +geom 427: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0496792 motion [] pieces all=12:d237182b1562400a camera=12:d237182b1562400a shadow=12:d237182b1562400a indirect=12:d237182b1562400a +geom 428: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0764337 motion [] pieces all=12:1fc7edde3708a83c camera=12:1fc7edde3708a83c shadow=12:1fc7edde3708a83c indirect=12:1fc7edde3708a83c +geom 429: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94295996 motion [] pieces all=12:49bee21585a46b48 camera=12:49bee21585a46b48 shadow=12:49bee21585a46b48 indirect=12:49bee21585a46b48 +geom 430: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84723824 motion [] pieces all=12:f8f063c5827ba797 camera=12:f8f063c5827ba797 shadow=12:f8f063c5827ba797 indirect=12:f8f063c5827ba797 +geom 431: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.139218 motion [] pieces all=12:a397a5167452c818 camera=12:a397a5167452c818 shadow=12:a397a5167452c818 indirect=12:a397a5167452c818 +geom 432: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8667562 motion [] pieces all=12:6dc7c0e793f4c492 camera=12:6dc7c0e793f4c492 shadow=12:6dc7c0e793f4c492 indirect=12:6dc7c0e793f4c492 +geom 433: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1638904 motion [] pieces all=12:c005ed491d1abb17 camera=12:c005ed491d1abb17 shadow=12:c005ed491d1abb17 indirect=12:c005ed491d1abb17 +geom 434: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96669084 motion [] pieces all=12:9a5425fe4964167c camera=12:9a5425fe4964167c shadow=12:9a5425fe4964167c indirect=12:9a5425fe4964167c +geom 435: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0310098 motion [] pieces all=12:422a73f3c3468e8a camera=12:422a73f3c3468e8a shadow=12:422a73f3c3468e8a indirect=12:422a73f3c3468e8a +geom 436: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9359371 motion [] pieces all=12:c41f8c20a8cefe26 camera=12:c41f8c20a8cefe26 shadow=12:c41f8c20a8cefe26 indirect=12:c41f8c20a8cefe26 +geom 437: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0920191 motion [] pieces all=12:67da5a5117403cb0 camera=12:67da5a5117403cb0 shadow=12:67da5a5117403cb0 indirect=12:67da5a5117403cb0 +geom 438: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1332088 motion [] pieces all=12:fc1749d615ff3503 camera=12:fc1749d615ff3503 shadow=12:fc1749d615ff3503 indirect=12:fc1749d615ff3503 +geom 439: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82963383 motion [] pieces all=12:8923dc9c030f82cb camera=12:8923dc9c030f82cb shadow=12:8923dc9c030f82cb indirect=12:8923dc9c030f82cb +geom 440: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.989561 motion [] pieces all=12:53a4125ff63a0937 camera=12:53a4125ff63a0937 shadow=12:53a4125ff63a0937 indirect=12:53a4125ff63a0937 +geom 441: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0177096 motion [] pieces all=12:65f91049698d610a camera=12:65f91049698d610a shadow=12:65f91049698d610a indirect=12:65f91049698d610a +geom 442: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1837815 motion [] pieces all=12:cdcb5a0d01d898da camera=12:cdcb5a0d01d898da shadow=12:cdcb5a0d01d898da indirect=12:cdcb5a0d01d898da +geom 443: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88659936 motion [] pieces all=12:9499b7def0936290 camera=12:9499b7def0936290 shadow=12:9499b7def0936290 indirect=12:9499b7def0936290 +geom 444: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91293037 motion [] pieces all=12:83e3abd6ac7f83a9 camera=12:83e3abd6ac7f83a9 shadow=12:83e3abd6ac7f83a9 indirect=12:83e3abd6ac7f83a9 +geom 445: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.053651 motion [] pieces all=12:b0a60d26f0688b94 camera=12:b0a60d26f0688b94 shadow=12:b0a60d26f0688b94 indirect=12:b0a60d26f0688b94 +geom 446: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1022353 motion [] pieces all=12:a8aca66167227e3e camera=12:a8aca66167227e3e shadow=12:a8aca66167227e3e indirect=12:a8aca66167227e3e +geom 447: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8098009 motion [] pieces all=12:d772aadd56b26362 camera=12:d772aadd56b26362 shadow=12:d772aadd56b26362 indirect=12:d772aadd56b26362 +geom 448: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1986847 motion [] pieces all=12:c1d1ba87d4521c68 camera=12:c1d1ba87d4521c68 shadow=12:c1d1ba87d4521c68 indirect=12:c1d1ba87d4521c68 +geom 449: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8879799 motion [] pieces all=12:1cb570eb6a8dbc6e camera=12:1cb570eb6a8dbc6e shadow=12:1cb570eb6a8dbc6e indirect=12:1cb570eb6a8dbc6e +geom 450: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98173344 motion [] pieces all=12:7eee75fae3c2c38e camera=12:7eee75fae3c2c38e shadow=12:7eee75fae3c2c38e indirect=12:7eee75fae3c2c38e +geom 451: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0000744 motion [] pieces all=12:ded11bb563f60b18 camera=12:ded11bb563f60b18 shadow=12:ded11bb563f60b18 indirect=12:ded11bb563f60b18 +geom 452: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1216958 motion [] pieces all=12:7d0ffec4d58dda61 camera=12:7d0ffec4d58dda61 shadow=12:7d0ffec4d58dda61 indirect=12:7d0ffec4d58dda61 +geom 453: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81506497 motion [] pieces all=12:11b648c7989f69d4 camera=12:11b648c7989f69d4 shadow=12:11b648c7989f69d4 indirect=12:11b648c7989f69d4 +geom 454: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9058803 motion [] pieces all=12:9cd46ed2bbcbe3f3 camera=12:9cd46ed2bbcbe3f3 shadow=12:9cd46ed2bbcbe3f3 indirect=12:9cd46ed2bbcbe3f3 +geom 455: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0716925 motion [] pieces all=12:e1619e0d048155ae camera=12:e1619e0d048155ae shadow=12:e1619e0d048155ae indirect=12:e1619e0d048155ae +geom 456: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85529506 motion [] pieces all=12:02ba68249605a870 camera=12:02ba68249605a870 shadow=12:02ba68249605a870 indirect=12:02ba68249605a870 +geom 457: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1597875 motion [] pieces all=12:a894986db251ee0f camera=12:a894986db251ee0f shadow=12:a894986db251ee0f indirect=12:a894986db251ee0f +geom 458: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0444325 motion [] pieces all=12:4a2250159785a6e2 camera=12:4a2250159785a6e2 shadow=12:4a2250159785a6e2 indirect=12:4a2250159785a6e2 +geom 459: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9616838 motion [] pieces all=12:d1ec13b3e62f6e92 camera=12:d1ec13b3e62f6e92 shadow=12:d1ec13b3e62f6e92 indirect=12:d1ec13b3e62f6e92 +geom 460: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93935156 motion [] pieces all=12:04ea79f01e5f9a59 camera=12:04ea79f01e5f9a59 shadow=12:04ea79f01e5f9a59 indirect=12:04ea79f01e5f9a59 +geom 461: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0803297 motion [] pieces all=12:bf10521f4ec2bbb3 camera=12:bf10521f4ec2bbb3 shadow=12:bf10521f4ec2bbb3 indirect=12:bf10521f4ec2bbb3 +geom 462: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8450973 motion [] pieces all=12:2a5cfdaaddca44c2 camera=12:2a5cfdaaddca44c2 shadow=12:2a5cfdaaddca44c2 indirect=12:2a5cfdaaddca44c2 +geom 463: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1432472 motion [] pieces all=12:fbc5ba1ad600edaa camera=12:fbc5ba1ad600edaa shadow=12:fbc5ba1ad600edaa indirect=12:fbc5ba1ad600edaa +geom 464: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1353691 motion [] pieces all=12:049353c120cbebfc camera=12:049353c120cbebfc shadow=12:049353c120cbebfc indirect=12:049353c120cbebfc +geom 465: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8273636 motion [] pieces all=12:3c3011131e7e8813 camera=12:3c3011131e7e8813 shadow=12:3c3011131e7e8813 indirect=12:3c3011131e7e8813 +geom 466: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0902855 motion [] pieces all=12:772930a049a7379c camera=12:772930a049a7379c shadow=12:772930a049a7379c indirect=12:772930a049a7379c +geom 467: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93297297 motion [] pieces all=12:25b9c445d211692a camera=12:25b9c445d211692a shadow=12:25b9c445d211692a indirect=12:25b9c445d211692a +geom 468: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.027414 motion [] pieces all=12:740d229d84e9cff7 camera=12:740d229d84e9cff7 shadow=12:740d229d84e9cff7 indirect=12:740d229d84e9cff7 +geom 469: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96549386 motion [] pieces all=12:0aaa0db013610e8a camera=12:0aaa0db013610e8a shadow=12:0aaa0db013610e8a indirect=12:0aaa0db013610e8a +geom 470: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8634908 motion [] pieces all=12:2fbc17d887102e0e camera=12:2fbc17d887102e0e shadow=12:2fbc17d887102e0e indirect=12:2fbc17d887102e0e +geom 471: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.165813 motion [] pieces all=12:016baf1b7130dcdc camera=12:016baf1b7130dcdc shadow=12:016baf1b7130dcdc indirect=12:016baf1b7130dcdc +geom 472: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9932002 motion [] pieces all=12:614b99fb4286ac07 camera=12:614b99fb4286ac07 shadow=12:614b99fb4286ac07 indirect=12:614b99fb4286ac07 +geom 473: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0138267 motion [] pieces all=12:7f75b45364112aba camera=12:7f75b45364112aba shadow=12:7f75b45364112aba indirect=12:7f75b45364112aba +geom 474: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8838996 motion [] pieces all=12:188942be9177a3f5 camera=12:188942be9177a3f5 shadow=12:188942be9177a3f5 indirect=12:188942be9177a3f5 +geom 475: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1870891 motion [] pieces all=12:7546e17f458e7da2 camera=12:7546e17f458e7da2 shadow=12:7546e17f458e7da2 indirect=12:7546e17f458e7da2 +geom 476: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1059833 motion [] pieces all=12:26de3a63ac32d9c0 camera=12:26de3a63ac32d9c0 shadow=12:26de3a63ac32d9c0 indirect=12:26de3a63ac32d9c0 +geom 477: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8076202 motion [] pieces all=12:e1c21f8a4b9a925f camera=12:e1c21f8a4b9a925f shadow=12:e1c21f8a4b9a925f indirect=12:e1c21f8a4b9a925f +geom 478: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.917528 motion [] pieces all=12:7e89e6fe71b7d5e1 camera=12:7e89e6fe71b7d5e1 shadow=12:7e89e6fe71b7d5e1 indirect=12:7e89e6fe71b7d5e1 +geom 479: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0525516 motion [] pieces all=12:2e4367fb76a93572 camera=12:2e4367fb76a93572 shadow=12:2e4367fb76a93572 indirect=12:2e4367fb76a93572 +geom 480: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1471847 motion [] pieces all=12:487ee130369a3f18 camera=12:487ee130369a3f18 shadow=12:487ee130369a3f18 indirect=12:487ee130369a3f18 +geom 481: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8377189 motion [] pieces all=12:81f60f5e764c9e94 camera=12:81f60f5e764c9e94 shadow=12:81f60f5e764c9e94 indirect=12:81f60f5e764c9e94 +geom 482: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9474101 motion [] pieces all=12:26736fb3efaf0e8b camera=12:26736fb3efaf0e8b shadow=12:26736fb3efaf0e8b indirect=12:26736fb3efaf0e8b +geom 483: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.085121 motion [] pieces all=12:9661338d340c04ba camera=12:9661338d340c04ba shadow=12:9661338d340c04ba indirect=12:9661338d340c04ba +geom 484: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.856993 motion [] pieces all=12:dbdb91d39e8aae83 camera=12:dbdb91d39e8aae83 shadow=12:dbdb91d39e8aae83 indirect=12:dbdb91d39e8aae83 +geom 485: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1528894 motion [] pieces all=12:77eb4b680ce04830 camera=12:77eb4b680ce04830 shadow=12:77eb4b680ce04830 indirect=12:77eb4b680ce04830 +geom 486: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.038916 motion [] pieces all=12:81a43a78bc1e73fd camera=12:81a43a78bc1e73fd shadow=12:81a43a78bc1e73fd indirect=12:81a43a78bc1e73fd +geom 487: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9504711 motion [] pieces all=12:5ff064de78509a0a camera=12:5ff064de78509a0a shadow=12:5ff064de78509a0a indirect=12:5ff064de78509a0a +geom 488: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0637788 motion [] pieces all=12:559a1655469b6861 camera=12:559a1655469b6861 shadow=12:559a1655469b6861 indirect=12:559a1655469b6861 +geom 489: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90910155 motion [] pieces all=12:44a0535ec759978f camera=12:44a0535ec759978f shadow=12:44a0535ec759978f indirect=12:44a0535ec759978f +geom 490: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1182432 motion [] pieces all=12:8b8f0bbb4571f9ae camera=12:8b8f0bbb4571f9ae shadow=12:8b8f0bbb4571f9ae indirect=12:8b8f0bbb4571f9ae +geom 491: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82327044 motion [] pieces all=12:044596a57f782592 camera=12:044596a57f782592 shadow=12:044596a57f782592 indirect=12:044596a57f782592 +geom 492: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.193281 motion [] pieces all=12:583665b31fb2f901 camera=12:583665b31fb2f901 shadow=12:583665b31fb2f901 indirect=12:583665b31fb2f901 +geom 493: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8985092 motion [] pieces all=12:16ee9626140776f4 camera=12:16ee9626140776f4 shadow=12:16ee9626140776f4 indirect=12:16ee9626140776f4 +geom 494: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9765626 motion [] pieces all=12:9ac81ebc0d4f4c1d camera=12:9ac81ebc0d4f4c1d shadow=12:9ac81ebc0d4f4c1d indirect=12:9ac81ebc0d4f4c1d +geom 495: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0068495 motion [] pieces all=12:b55004e8fe41a807 camera=12:b55004e8fe41a807 shadow=12:b55004e8fe41a807 indirect=12:b55004e8fe41a807 +geom 496: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1257349 motion [] pieces all=12:794d02ae4d0bbc6b camera=12:794d02ae4d0bbc6b shadow=12:794d02ae4d0bbc6b indirect=12:794d02ae4d0bbc6b +geom 497: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8368855 motion [] pieces all=12:978c75be788afc67 camera=12:978c75be788afc67 shadow=12:978c75be788afc67 indirect=12:978c75be788afc67 +geom 498: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92759454 motion [] pieces all=12:8c8da1e4983b11c8 camera=12:8c8da1e4983b11c8 shadow=12:8c8da1e4983b11c8 indirect=12:8c8da1e4983b11c8 +geom 499: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0956422 motion [] pieces all=12:ac83c9c903ea15c9 camera=12:ac83c9c903ea15c9 shadow=12:ac83c9c903ea15c9 indirect=12:ac83c9c903ea15c9 +geom 500: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 501: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 502: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 503: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 504: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 505: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 506: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 507: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 508: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 509: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 510: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 511: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 512: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 513: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 514: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /World/stones/Prototypes/stone_a +provenance arc source: /World/stones/Prototypes/stone_b +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 514..514 } +provenance geometry 0..500: /World/stones +provenance geometry 500..501: /World/pebble/geo +provenance geometry 501..502: /World/away/geo +provenance geometry 502..503: /World/box/geo +provenance geometry 503..504: /World/sunk/geo +provenance geometry 504..505: /World/rock/geo +provenance geometry 505..506: /World/vase/geo +provenance geometry 506..507: /World/steps/geo +provenance geometry 507..508: /World/field/geo +provenance geometry 508..509: /World/slope/geo +provenance geometry 509..510: /World/terrain/geo +provenance geometry 510..511: /World/shelf/geo +provenance geometry 511..512: /World/floor/geo +provenance geometry 512..513: /World/inst +provenance geometry 513..514: /World/crate/geo +provenance geometry 514..515: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 500, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 501, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 502, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 503, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 504, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 505, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 506, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 507, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 508, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 509, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 510, slot: 9, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 511, slot: 10, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 513, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 514, slot: 11, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4345222167175548266, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 735706973108043347, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 11: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_shared_shader_usda-bcebf475c7d9ca1f-1.digest b/crates/crust-core/tests/data/import_baselines/full_shared_shader_usda-bcebf475c7d9ca1f-1.digest new file mode 100644 index 000000000..8adfd2654 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_shared_shader_usda-bcebf475c7d9ca1f-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_shared_shader.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_shared_shader.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_sharp_at_the_frame_usda-06436b4d06eb2f5f-1.digest b/crates/crust-core/tests/data/import_baselines/full_sharp_at_the_frame_usda-06436b4d06eb2f5f-1.digest new file mode 100644 index 000000000..c167a1fa8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_sharp_at_the_frame_usda-06436b4d06eb2f5f-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -3.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_sharp_at_the_frame.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_sharp_at_the_frame.usda +layer: $DIR/input.usda +warning: Warning { code: TimeMotionNeedsFrame, kind: Skipped, count: 1, prims: ["/World/Mover"], message: "/World/Cam opens its shutter (-0.25 .. 0.25), but no frame was given: 1 drawn prim's time-sampled transforms are not evaluated over it and render sharp (the first at /World/Mover). Render a frame with -f" } +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Mover +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [13821547256400052224, 4598175219545276416], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_shutter_close_usda-ce0b12427cfd435b-1.digest b/crates/crust-core/tests/data/import_baselines/full_shutter_close_usda-ce0b12427cfd435b-1.digest new file mode 100644 index 000000000..ca302dde7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_shutter_close_usda-ce0b12427cfd435b-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -3.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_shutter_close.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_shutter_close.usda +layer: $DIR/input.usda +warning: Warning { code: TimeMotionNeedsFrame, kind: Skipped, count: 1, prims: ["/World/Mover"], message: "/World/Cam opens its shutter (0 .. 0.5), but no frame was given: 1 drawn prim's time-sampled transforms are not evaluated over it and render sharp (the first at /World/Mover). Render a frame with -f" } +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Mover +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4602678819172646912], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_shutter_exposure_usda-36da172692d8936a-1.digest b/crates/crust-core/tests/data/import_baselines/full_shutter_exposure_usda-36da172692d8936a-1.digest new file mode 100644 index 000000000..e32ad8840 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_shutter_exposure_usda-36da172692d8936a-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -3.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_shutter_exposure.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_shutter_exposure.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Mover +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_sublayer_rewritten_usda-2e79c887f2d55e88-1.digest b/crates/crust-core/tests/data/import_baselines/full_sublayer_rewritten_usda-2e79c887f2d55e88-1.digest new file mode 100644 index 000000000..c6e2c4f3d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_sublayer_rewritten_usda-2e79c887f2d55e88-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_sublayer_rewritten.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_sublayer_rewritten.usda +layer: $DIR/lights.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_texture_file_usda-1fd2cfaf6e5de06c-1.digest b/crates/crust-core/tests/data/import_baselines/full_texture_file_usda-1fd2cfaf6e5de06c-1.digest new file mode 100644 index 000000000..02fb6ba16 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_texture_file_usda-1fd2cfaf6e5de06c-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: PmjBn, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_texture_file.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_texture_file.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_a_light_s_shape_usda-f05814080b96dca5-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_a_light_s_shape_usda-f05814080b96dca5-1.digest new file mode 100644 index 000000000..b31e818f7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_a_light_s_shape_usda-f05814080b96dca5-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_undo_a_light's_shape.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_undo_a_light's_shape.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb8c14f38ace31a8 camera=1:fb8c14f38ace31a8 shadow=1:fb8c14f38ace31a8 indirect=1:fb8c14f38ace31a8 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_a_transform_usda-d26b3a02a093ce4f-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_a_transform_usda-d26b3a02a093ce4f-1.digest new file mode 100644 index 000000000..4519bcd2e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_a_transform_usda-d26b3a02a093ce4f-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_undo_a_transform.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_undo_a_transform.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_base_colour_usda-d814da72eab3f116-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_base_colour_usda-d814da72eab3f116-1.digest new file mode 100644 index 000000000..58d3633ac --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_base_colour_usda-d814da72eab3f116-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: PmjBn, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_undo_base_colour.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_undo_base_colour.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field__bad_unit_usda-6419381399744bc7-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field__bad_unit_usda-6419381399744bc7-1.digest new file mode 100644 index 000000000..d27c7a647 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field__bad_unit_usda-6419381399744bc7-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-1.3761721, -0.91744804, 0.0), horizontal: Vec3A(2.7523441, 0.0, 0.0), vertical: Vec3A(0.0, 1.8348961, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 1.25, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 6.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/full_undo_disable_depth_of_field,_bad_unit.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_undo_disable_depth_of_field,_bad_unit.usda +layer: $DIR/input.usda +warning: Warning { code: CameraInvalidMetersPerUnit, kind: Refused, count: 1, prims: [], message: "/World/Cam: the stage's metersPerUnit = 0 is not a length the lens can use; it reads it as 0.01 (a centimetre)" } +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1cd1488d041dfcdb camera=1:1cd1488d041dfcdb shadow=1:1cd1488d041dfcdb indirect=1:1cd1488d041dfcdb +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2d90e22d27992fa5 camera=1:2d90e22d27992fa5 shadow=1:2d90e22d27992fa5 indirect=1:2d90e22d27992fa5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Far +provenance geometry 1..2: /World/Near +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field_usda-3ef9a9cb1855677e-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field_usda-3ef9a9cb1855677e-1.digest new file mode 100644 index 000000000..381ea2f44 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field_usda-3ef9a9cb1855677e-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-1.3761721, -0.91744804, 0.0), horizontal: Vec3A(2.7523441, 0.0, 0.0), vertical: Vec3A(0.0, 1.8348961, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 1.25, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 6.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/full_undo_disable_depth_of_field.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_undo_disable_depth_of_field.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1cd1488d041dfcdb camera=1:1cd1488d041dfcdb shadow=1:1cd1488d041dfcdb indirect=1:1cd1488d041dfcdb +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2d90e22d27992fa5 camera=1:2d90e22d27992fa5 shadow=1:2d90e22d27992fa5 indirect=1:2d90e22d27992fa5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Far +provenance geometry 1..2: /World/Near +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_dome_texture_usda-a17c02c0536bdc00-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_dome_texture_usda-a17c02c0536bdc00-1.digest new file mode 100644 index 000000000..2ccbd16c5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_dome_texture_usda-a17c02c0536bdc00-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: PmjBn, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_undo_dome_texture.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_undo_dome_texture.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_exposure_usda-c9169e83397e3561-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_exposure_usda-c9169e83397e3561-1.digest new file mode 100644 index 000000000..52de650b9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_exposure_usda-c9169e83397e3561-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_undo_exposure.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_undo_exposure.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_max_depth_usda-a8a78eb6299a327a-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_max_depth_usda-a8a78eb6299a327a-1.digest new file mode 100644 index 000000000..a3cd0e48d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_max_depth_usda-a8a78eb6299a327a-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_undo_max_depth.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_undo_max_depth.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_rect_light_usda-2d6a907009434890-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_rect_light_usda-2d6a907009434890-1.digest new file mode 100644 index 000000000..9072622c3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_rect_light_usda-2d6a907009434890-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: PmjBn, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_undo_rect_light.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_undo_rect_light.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_roughness_usda-62c5e0d0879e604d-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_roughness_usda-62c5e0d0879e604d-1.digest new file mode 100644 index 000000000..08897939a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_roughness_usda-62c5e0d0879e604d-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: PmjBn, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_undo_roughness.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_undo_roughness.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_sampler_usda-0d28664679d41bef-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_sampler_usda-0d28664679d41bef-1.digest new file mode 100644 index 000000000..add49df5c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_sampler_usda-0d28664679d41bef-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_undo_sampler.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_undo_sampler.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_shutter_close_usda-f7c724218b21e98a-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_shutter_close_usda-f7c724218b21e98a-1.digest new file mode 100644 index 000000000..0aa4755ba --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_shutter_close_usda-f7c724218b21e98a-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -3.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_undo_shutter_close.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_undo_shutter_close.usda +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Mover +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_texture_file_usda-d5aef4a622503f01-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_texture_file_usda-d5aef4a622503f01-1.digest new file mode 100644 index 000000000..358047340 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_texture_file_usda-d5aef4a622503f01-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: PmjBn, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 2.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_undo_texture_file.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_undo_texture_file.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_the_product_retarget_usda-1e1edebd41fde9bc-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_the_product_retarget_usda-1e1edebd41fde9bc-1.digest new file mode 100644 index 000000000..489bd81c8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_the_product_retarget_usda-1e1edebd41fde9bc-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.6855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/beauty", name: "beauty.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_undo_the_product_retarget.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_undo_the_product_retarget.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_the_reset_usda-7e7c9dbebb517c2f-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_the_reset_usda-7e7c9dbebb517c2f-1.digest new file mode 100644 index 000000000..0a57e9a08 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_the_reset_usda-7e7c9dbebb517c2f-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.5, 0.9, 6.0), lower_left_corner: Vec3A(-4.2783756, -2.2855835, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_undo_the_reset.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_undo_the_reset.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e7e3ae7da8a1689e camera=2:e7e3ae7da8a1689e shadow=2:e7e3ae7da8a1689e indirect=2:e7e3ae7da8a1689e +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:50023872345aeae9 camera=2:50023872345aeae9 shadow=2:50023872345aeae9 indirect=2:50023872345aeae9 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_the_rotate_usda-c1aa90b58073a573-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_the_rotate_usda-c1aa90b58073a573-1.digest new file mode 100644 index 000000000..481177ad6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_the_rotate_usda-c1aa90b58073a573-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.3, 0.6, 5.5), lower_left_corner: Vec3A(-4.4783754, -2.5855837, -4.5), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_undo_the_rotate.usda", "$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_undo_the_rotate.usda +layer: $DIR/input.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/full_undone_after_reload_usda-b19199733b99fec2-1.digest b/crates/crust-core/tests/data/import_baselines/full_undone_after_reload_usda-b19199733b99fec2-1.digest new file mode 100644 index 000000000..81d73eccb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undone_after_reload_usda-b19199733b99fec2-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/full_undone_after_reload.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/full_undone_after_reload.usda +layer: $DIR/lights.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/furnace_ball_usda-54ac5243ee332532-1.digest b/crates/crust-core/tests/data/import_baselines/furnace_ball_usda-54ac5243ee332532-1.digest new file mode 100644 index 000000000..49d11ed7b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/furnace_ball_usda-54ac5243ee332532-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/furnace_ball.usda"], invisible_overrides: Some(0) } +layer: $DIR/furnace_ball.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:daf815b22e8106b9 camera=1:daf815b22e8106b9 shadow=1:daf815b22e8106b9 indirect=1:daf815b22e8106b9 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: true, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d5fa2ac5108a1585 camera=1:d5fa2ac5108a1585 shadow=1:d5fa2ac5108a1585 indirect=1:d5fa2ac5108a1585 +provenance material /World/Looks/Fog: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/White: MaterialOrigin { slots: [0], displaced: false } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Geo/Ball +provenance geometry 1..2: /World/Geo/Haze +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/furnace_usda-bbc6fe1cb946780f-1.digest b/crates/crust-core/tests/data/import_baselines/furnace_usda-bbc6fe1cb946780f-1.digest new file mode 100644 index 000000000..06ae8ce1c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/furnace_usda-bbc6fe1cb946780f-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/furnace.usda"], invisible_overrides: Some(0) } +layer: $DIR/furnace.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: true, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Fog: MaterialOrigin { slots: [0], displaced: false } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fvar_bilinear_usda-8ca893f677c91586-1.digest b/crates/crust-core/tests/data/import_baselines/fvar_bilinear_usda-8ca893f677c91586-1.digest new file mode 100644 index 000000000..cf1848c0b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fvar_bilinear_usda-8ca893f677c91586-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/xy", name: "xy", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 2, role: TexCoord }), components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fvar_bilinear.usda"], invisible_overrides: Some(0) } +layer: $DIR/fvar_bilinear.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=192:ff2e46f3016d142d camera=192:ff2e46f3016d142d shadow=192:ff2e46f3016d142d indirect=192:ff2e46f3016d142d +provenance light /World/dome: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17387146745673654341, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("xy", 2)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/fvar_loop_usda-855199bacac38db5-1.digest b/crates/crust-core/tests/data/import_baselines/fvar_loop_usda-855199bacac38db5-1.digest new file mode 100644 index 000000000..042b02722 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fvar_loop_usda-855199bacac38db5-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/xy", name: "xy", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 2, role: TexCoord }), components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/fvar_loop.usda"], invisible_overrides: Some(0) } +layer: $DIR/fvar_loop.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 128, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 128, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=128:92e706974a651d05 camera=128:92e706974a651d05 shadow=128:92e706974a651d05 indirect=128:92e706974a651d05 +provenance light /World/dome: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/octa +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7831137738973469772, n_points: 66, n_indices: 384, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("xy", 2)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/geometry_usda-3299cf85fca858a4-1.digest b/crates/crust-core/tests/data/import_baselines/geometry_usda-3299cf85fca858a4-1.digest new file mode 100644 index 000000000..8e5d5d26e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/geometry_usda-3299cf85fca858a4-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/geometry.usda"], invisible_overrides: Some(0) } +layer: $DIR/geometry.usda +warning: Warning { code: XformUnknownOp, kind: Approximated, count: 1, prims: ["/World/odd"], message: "/World/odd: xformOpOrder lists xformOp:frobnicate — not a UsdGeomXformOp kind, read as identity" } +warning: Warning { code: CurvesUnsupportedBasis, kind: Skipped, count: 1, prims: ["/World/hair"], message: "BasisCurves at /World/hair: basis \"hermite\" is not supported (bezier | bspline | catmullRom) — skipped" } +warning: Warning { code: VolumeUnknownType, kind: Skipped, count: 1, prims: ["/World/fog"], message: "Volume at /World/fog: unknown crust:volume:type \"plasma\" (expected homogeneous | smoke | grid) — skipped" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glass_usda-6ef57f18257a3d7a-1.digest b/crates/crust-core/tests/data/import_baselines/glass_usda-6ef57f18257a3d7a-1.digest new file mode 100644 index 000000000..9c105c9ad --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glass_usda-6ef57f18257a3d7a-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/glass.usda"], invisible_overrides: Some(0) } +layer: $DIR/glass.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: true, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Glass: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_1_usda-8cc43a3f4dae46fb-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_1_usda-8cc43a3f4dae46fb-1.digest new file mode 100644 index 000000000..e02826a90 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_1_usda-8cc43a3f4dae46fb-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sphere_bsdf_false_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sphere_bsdf_false_1.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_2_usda-ff99772c18e0997c-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_2_usda-ff99772c18e0997c-1.digest new file mode 100644 index 000000000..7fb9c6824 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_2_usda-ff99772c18e0997c-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sphere_bsdf_false_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sphere_bsdf_false_2.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_3_usda-8c8e2079502f800d-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_3_usda-8c8e2079502f800d-1.digest new file mode 100644 index 000000000..c2c4b6ed2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_3_usda-8c8e2079502f800d-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sphere_bsdf_false_3.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sphere_bsdf_false_3.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_4_usda-76914e768885b3e6-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_4_usda-76914e768885b3e6-1.digest new file mode 100644 index 000000000..2c9eddf2a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_4_usda-76914e768885b3e6-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sphere_bsdf_false_4.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sphere_bsdf_false_4.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_1_usda-7fde13de0abc769b-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_1_usda-7fde13de0abc769b-1.digest new file mode 100644 index 000000000..bc3d09891 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_1_usda-7fde13de0abc769b-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sphere_light_false_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sphere_light_false_1.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_2_usda-58c418a757f93b46-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_2_usda-58c418a757f93b46-1.digest new file mode 100644 index 000000000..4f1a94a77 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_2_usda-58c418a757f93b46-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sphere_light_false_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sphere_light_false_2.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_3_usda-0e4d0c5d73f098b1-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_3_usda-0e4d0c5d73f098b1-1.digest new file mode 100644 index 000000000..48923d22c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_3_usda-0e4d0c5d73f098b1-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sphere_light_false_3.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sphere_light_false_3.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_4_usda-db6287c220d2329c-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_4_usda-db6287c220d2329c-1.digest new file mode 100644 index 000000000..1b11723d3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_4_usda-db6287c220d2329c-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sphere_light_false_4.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sphere_light_false_4.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_1_usda-da25e07b06740551-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_1_usda-da25e07b06740551-1.digest new file mode 100644 index 000000000..e297d1ded --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_1_usda-da25e07b06740551-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sphere_light_true_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sphere_light_true_1.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=1:e6e23411748a6d98 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_2_usda-ddbe5a176c05cba2-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_2_usda-ddbe5a176c05cba2-1.digest new file mode 100644 index 000000000..67b0136a4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_2_usda-ddbe5a176c05cba2-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sphere_light_true_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sphere_light_true_2.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=1:e6e23411748a6d98 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_3_usda-06ab9cf1d9f5303b-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_3_usda-06ab9cf1d9f5303b-1.digest new file mode 100644 index 000000000..02a6babf4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_3_usda-06ab9cf1d9f5303b-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sphere_light_true_3.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sphere_light_true_3.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=1:e6e23411748a6d98 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_4_usda-bae142df171828c4-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_4_usda-bae142df171828c4-1.digest new file mode 100644 index 000000000..7b0c04612 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_4_usda-bae142df171828c4-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sphere_light_true_4.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sphere_light_true_4.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=1:e6e23411748a6d98 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_1_usda-8463e7fa7c167c7f-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_1_usda-8463e7fa7c167c7f-1.digest new file mode 100644 index 000000000..48e5db969 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_1_usda-8463e7fa7c167c7f-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sphere_power_false_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sphere_power_false_1.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_2_usda-dcf0f8d60a6084ce-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_2_usda-dcf0f8d60a6084ce-1.digest new file mode 100644 index 000000000..02d528101 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_2_usda-dcf0f8d60a6084ce-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sphere_power_false_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sphere_power_false_2.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_3_usda-fedffe90ed130071-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_3_usda-fedffe90ed130071-1.digest new file mode 100644 index 000000000..28f21773e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_3_usda-fedffe90ed130071-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sphere_power_false_3.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sphere_power_false_3.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_4_usda-654bf9f6d4073ca8-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_4_usda-654bf9f6d4073ca8-1.digest new file mode 100644 index 000000000..8037df370 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_4_usda-654bf9f6d4073ca8-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sphere_power_false_4.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sphere_power_false_4.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_1_usda-5434dbae8c19939f-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_1_usda-5434dbae8c19939f-1.digest new file mode 100644 index 000000000..74fb7b7e4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_1_usda-5434dbae8c19939f-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sun_bsdf_false_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sun_bsdf_false_1.usda +lights: 1 +light 0: distant name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_2_usda-bb9d9ab32ead4e0e-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_2_usda-bb9d9ab32ead4e0e-1.digest new file mode 100644 index 000000000..bdc342105 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_2_usda-bb9d9ab32ead4e0e-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sun_bsdf_false_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sun_bsdf_false_2.usda +lights: 1 +light 0: distant name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_3_usda-edc5ae56976f1ff1-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_3_usda-edc5ae56976f1ff1-1.digest new file mode 100644 index 000000000..439a3471e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_3_usda-edc5ae56976f1ff1-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sun_bsdf_false_3.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sun_bsdf_false_3.usda +lights: 1 +light 0: distant name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_4_usda-b2e4ed7db6e6d9c8-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_4_usda-b2e4ed7db6e6d9c8-1.digest new file mode 100644 index 000000000..254eb098b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_4_usda-b2e4ed7db6e6d9c8-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sun_bsdf_false_4.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sun_bsdf_false_4.usda +lights: 1 +light 0: distant name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_1_usda-03a3c8316f39e87b-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_1_usda-03a3c8316f39e87b-1.digest new file mode 100644 index 000000000..fb391d113 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_1_usda-03a3c8316f39e87b-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sun_light_false_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sun_light_false_1.usda +lights: 1 +light 0: distant name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_2_usda-33306f5e5e7489a0-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_2_usda-33306f5e5e7489a0-1.digest new file mode 100644 index 000000000..6d15fd311 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_2_usda-33306f5e5e7489a0-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sun_light_false_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sun_light_false_2.usda +lights: 1 +light 0: distant name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_3_usda-d3cf26f624795805-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_3_usda-d3cf26f624795805-1.digest new file mode 100644 index 000000000..c498778f7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_3_usda-d3cf26f624795805-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sun_light_false_3.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sun_light_false_3.usda +lights: 1 +light 0: distant name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_4_usda-bc3c2cc49389e192-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_4_usda-bc3c2cc49389e192-1.digest new file mode 100644 index 000000000..cead490ea --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_4_usda-bc3c2cc49389e192-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sun_light_false_4.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sun_light_false_4.usda +lights: 1 +light 0: distant name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_1_usda-c5cb6d9f35a09a41-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_1_usda-c5cb6d9f35a09a41-1.digest new file mode 100644 index 000000000..efb19d9ff --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_1_usda-c5cb6d9f35a09a41-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sun_light_true_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sun_light_true_1.usda +lights: 1 +light 0: distant name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=1:e6e23411748a6d98 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_2_usda-4db04417a2f553bc-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_2_usda-4db04417a2f553bc-1.digest new file mode 100644 index 000000000..5cdff8904 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_2_usda-4db04417a2f553bc-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sun_light_true_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sun_light_true_2.usda +lights: 1 +light 0: distant name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=1:e6e23411748a6d98 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_3_usda-8962360ec726337b-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_3_usda-8962360ec726337b-1.digest new file mode 100644 index 000000000..15b5d6593 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_3_usda-8962360ec726337b-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sun_light_true_3.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sun_light_true_3.usda +lights: 1 +light 0: distant name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=1:e6e23411748a6d98 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_4_usda-704837282362091e-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_4_usda-704837282362091e-1.digest new file mode 100644 index 000000000..0fc9f0d22 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_4_usda-704837282362091e-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sun_light_true_4.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sun_light_true_4.usda +lights: 1 +light 0: distant name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=1:e6e23411748a6d98 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_1_usda-b16be3e51935cdad-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_1_usda-b16be3e51935cdad-1.digest new file mode 100644 index 000000000..3ad673cf1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_1_usda-b16be3e51935cdad-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sun_power_false_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sun_power_false_1.usda +lights: 1 +light 0: distant name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_2_usda-9bd601062d2922a2-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_2_usda-9bd601062d2922a2-1.digest new file mode 100644 index 000000000..c9fa59308 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_2_usda-9bd601062d2922a2-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sun_power_false_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sun_power_false_2.usda +lights: 1 +light 0: distant name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_3_usda-af38f2deac1db5db-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_3_usda-af38f2deac1db5db-1.digest new file mode 100644 index 000000000..353f221e1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_3_usda-af38f2deac1db5db-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sun_power_false_3.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sun_power_false_3.usda +lights: 1 +light 0: distant name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_4_usda-e07f6fc2b4bb4c68-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_4_usda-e07f6fc2b4bb4c68-1.digest new file mode 100644 index 000000000..c2a7aff56 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_4_usda-e07f6fc2b4bb4c68-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_sun_power_false_4.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_sun_power_false_4.usda +lights: 1 +light 0: distant name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_var_light_1_usda-950756ddd9a80314-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_var_light_1_usda-950756ddd9a80314-1.digest new file mode 100644 index 000000000..c9bc7e560 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_var_light_1_usda-950756ddd9a80314-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_var_light_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_var_light_1.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_var_light_2_usda-6aede4cf281248af-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_var_light_2_usda-6aede4cf281248af-1.digest new file mode 100644 index 000000000..df1e7593d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_var_light_2_usda-6aede4cf281248af-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_var_light_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_var_light_2.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_var_power_1_usda-712adb9891f33818-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_var_power_1_usda-712adb9891f33818-1.digest new file mode 100644 index 000000000..53e91c123 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_var_power_1_usda-712adb9891f33818-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_var_power_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_var_power_1.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/glossy_var_power_2_usda-ccbbda539b6109ff-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_var_power_2_usda-ccbbda539b6109ff-1.digest new file mode 100644 index 000000000..52164880f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_var_power_2_usda-ccbbda539b6109ff-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 64, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/glossy_var_power_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/glossy_var_power_2.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e6e23411748a6d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e6e23411748a6d98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-1.digest b/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-1.digest new file mode 100644 index 000000000..48db54931 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-1.digest @@ -0,0 +1,53 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.1, 9.0), lower_left_corner: Vec3A(-6.5532, -1.4320642, -0.9176731), horizontal: Vec3A(13.1064, -0.0, 0.0), vertical: Vec3A(0.0, 4.3661385, -0.15246892), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9993908, -0.034899496), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 8, width: 192, height: 64, region: PixelRect { x0: 0, y0: 0, x1: 192, y1: 64 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/hair.usda"], invisible_overrides: Some(0) } +layer: $DIR/hair.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 3 +light 0: area name Some("/World/Back") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 7 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 672, instances: 7 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2db093b27e835741 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2db093b27e835741 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:533cf986f15c8cee camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:533cf986f15c8cee +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:fd556c69aea7816a camera=96:fd556c69aea7816a shadow=96:fd556c69aea7816a indirect=96:fd556c69aea7816a +geom 4: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:5db2875e1dc27b25 camera=96:5db2875e1dc27b25 shadow=96:5db2875e1dc27b25 indirect=96:5db2875e1dc27b25 +geom 5: material #5 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:8e8b8e2abe070c9e camera=96:8e8b8e2abe070c9e shadow=96:8e8b8e2abe070c9e indirect=96:8e8b8e2abe070c9e +geom 6: material #6 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:668f59dd29ce5a6e camera=96:668f59dd29ce5a6e shadow=96:668f59dd29ce5a6e indirect=96:668f59dd29ce5a6e +geom 7: material #7 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:5125d392763dd912 camera=96:5125d392763dd912 shadow=96:5125d392763dd912 indirect=96:5125d392763dd912 +geom 8: material #8 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:b682384aae38cba1 camera=96:b682384aae38cba1 shadow=96:b682384aae38cba1 indirect=96:b682384aae38cba1 +geom 9: material #9 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:231e5f4733f3e2de camera=96:231e5f4733f3e2de shadow=96:231e5f4733f3e2de indirect=96:231e5f4733f3e2de +provenance material /World/Looks/Floor: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/mtlx_diffuse_twin: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/mtlx_hair_bare: MaterialOrigin { slots: [9], displaced: false } +provenance material /World/Looks/mtlx_hair_clear: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Looks/mtlx_hair_color: MaterialOrigin { slots: [7], displaced: false } +provenance material /World/Looks/mtlx_hair_melanin: MaterialOrigin { slots: [6], displaced: false } +provenance material /World/Looks/mtlx_hair_mix: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Looks/mtlx_hair_roughness: MaterialOrigin { slots: [8], displaced: false } +provenance light /World/Back: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Key: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Sky: LightOrigin { index: 2, geoms: 2..2 } +provenance geometry 0..1: /World/Back +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance geometry 3..4: /World/DiffuseTwin +provenance geometry 4..5: /World/Clear +provenance geometry 5..6: /World/Mix +provenance geometry 6..7: /World/Melanin +provenance geometry 7..8: /World/Color +provenance geometry 8..9: /World/Roughness +provenance geometry 9..10: /World/Bare +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-2.digest b/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-2.digest new file mode 100644 index 000000000..48db54931 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-2.digest @@ -0,0 +1,53 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.1, 9.0), lower_left_corner: Vec3A(-6.5532, -1.4320642, -0.9176731), horizontal: Vec3A(13.1064, -0.0, 0.0), vertical: Vec3A(0.0, 4.3661385, -0.15246892), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9993908, -0.034899496), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 8, width: 192, height: 64, region: PixelRect { x0: 0, y0: 0, x1: 192, y1: 64 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/hair.usda"], invisible_overrides: Some(0) } +layer: $DIR/hair.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 3 +light 0: area name Some("/World/Back") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 7 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 672, instances: 7 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2db093b27e835741 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2db093b27e835741 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:533cf986f15c8cee camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:533cf986f15c8cee +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:fd556c69aea7816a camera=96:fd556c69aea7816a shadow=96:fd556c69aea7816a indirect=96:fd556c69aea7816a +geom 4: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:5db2875e1dc27b25 camera=96:5db2875e1dc27b25 shadow=96:5db2875e1dc27b25 indirect=96:5db2875e1dc27b25 +geom 5: material #5 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:8e8b8e2abe070c9e camera=96:8e8b8e2abe070c9e shadow=96:8e8b8e2abe070c9e indirect=96:8e8b8e2abe070c9e +geom 6: material #6 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:668f59dd29ce5a6e camera=96:668f59dd29ce5a6e shadow=96:668f59dd29ce5a6e indirect=96:668f59dd29ce5a6e +geom 7: material #7 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:5125d392763dd912 camera=96:5125d392763dd912 shadow=96:5125d392763dd912 indirect=96:5125d392763dd912 +geom 8: material #8 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:b682384aae38cba1 camera=96:b682384aae38cba1 shadow=96:b682384aae38cba1 indirect=96:b682384aae38cba1 +geom 9: material #9 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:231e5f4733f3e2de camera=96:231e5f4733f3e2de shadow=96:231e5f4733f3e2de indirect=96:231e5f4733f3e2de +provenance material /World/Looks/Floor: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/mtlx_diffuse_twin: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/mtlx_hair_bare: MaterialOrigin { slots: [9], displaced: false } +provenance material /World/Looks/mtlx_hair_clear: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Looks/mtlx_hair_color: MaterialOrigin { slots: [7], displaced: false } +provenance material /World/Looks/mtlx_hair_melanin: MaterialOrigin { slots: [6], displaced: false } +provenance material /World/Looks/mtlx_hair_mix: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Looks/mtlx_hair_roughness: MaterialOrigin { slots: [8], displaced: false } +provenance light /World/Back: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Key: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Sky: LightOrigin { index: 2, geoms: 2..2 } +provenance geometry 0..1: /World/Back +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance geometry 3..4: /World/DiffuseTwin +provenance geometry 4..5: /World/Clear +provenance geometry 5..6: /World/Mix +provenance geometry 6..7: /World/Melanin +provenance geometry 7..8: /World/Color +provenance geometry 8..9: /World/Roughness +provenance geometry 9..10: /World/Bare +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/hair_usda-65dd84de0e473f00-1.digest b/crates/crust-core/tests/data/import_baselines/hair_usda-65dd84de0e473f00-1.digest new file mode 100644 index 000000000..2c77d3c1b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hair_usda-65dd84de0e473f00-1.digest @@ -0,0 +1,52 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.1, 9.0), lower_left_corner: Vec3A(-6.5532, -1.4320642, -0.9176731), horizontal: Vec3A(13.1064, -0.0, 0.0), vertical: Vec3A(0.0, 4.3661385, -0.15246892), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9993908, -0.034899496), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 8, width: 192, height: 64, region: PixelRect { x0: 0, y0: 0, x1: 192, y1: 64 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/hair.usda"], invisible_overrides: Some(0) } +layer: $DIR/hair.usda +lights: 3 +light 0: area name Some("/World/Back") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 7 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 672, instances: 7 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2db093b27e835741 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2db093b27e835741 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:533cf986f15c8cee camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:533cf986f15c8cee +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:fd556c69aea7816a camera=96:fd556c69aea7816a shadow=96:fd556c69aea7816a indirect=96:fd556c69aea7816a +geom 4: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:5db2875e1dc27b25 camera=96:5db2875e1dc27b25 shadow=96:5db2875e1dc27b25 indirect=96:5db2875e1dc27b25 +geom 5: material #5 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:8e8b8e2abe070c9e camera=96:8e8b8e2abe070c9e shadow=96:8e8b8e2abe070c9e indirect=96:8e8b8e2abe070c9e +geom 6: material #6 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:668f59dd29ce5a6e camera=96:668f59dd29ce5a6e shadow=96:668f59dd29ce5a6e indirect=96:668f59dd29ce5a6e +geom 7: material #7 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:5125d392763dd912 camera=96:5125d392763dd912 shadow=96:5125d392763dd912 indirect=96:5125d392763dd912 +geom 8: material #8 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:b682384aae38cba1 camera=96:b682384aae38cba1 shadow=96:b682384aae38cba1 indirect=96:b682384aae38cba1 +geom 9: material #9 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=96:231e5f4733f3e2de camera=96:231e5f4733f3e2de shadow=96:231e5f4733f3e2de indirect=96:231e5f4733f3e2de +provenance material /World/Looks/Floor: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/mtlx_diffuse_twin: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/mtlx_hair_bare: MaterialOrigin { slots: [9], displaced: false } +provenance material /World/Looks/mtlx_hair_clear: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Looks/mtlx_hair_color: MaterialOrigin { slots: [7], displaced: false } +provenance material /World/Looks/mtlx_hair_melanin: MaterialOrigin { slots: [6], displaced: false } +provenance material /World/Looks/mtlx_hair_mix: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Looks/mtlx_hair_roughness: MaterialOrigin { slots: [8], displaced: false } +provenance light /World/Back: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Key: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Sky: LightOrigin { index: 2, geoms: 2..2 } +provenance geometry 0..1: /World/Back +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance geometry 3..4: /World/DiffuseTwin +provenance geometry 4..5: /World/Clear +provenance geometry 5..6: /World/Mix +provenance geometry 6..7: /World/Melanin +provenance geometry 7..8: /World/Color +provenance geometry 8..9: /World/Roughness +provenance geometry 9..10: /World/Bare +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/hair_variation_usda-4ab3c7f511466a98-1.digest b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-4ab3c7f511466a98-1.digest new file mode 100644 index 000000000..023fe9776 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-4ab3c7f511466a98-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.1, 9.0), lower_left_corner: Vec3A(-5.142858, -1.8188573, -0.9041662), horizontal: Vec3A(10.285716, -0.0, 0.0), vertical: Vec3A(0.0, 5.1397247, -0.17948315), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9993908, -0.034899496), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 8, width: 320, height: 160, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 160 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/hair_variation.usda"], invisible_overrides: Some(0) } +layer: $DIR/hair_variation.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 3 +light 0: area name Some("/World/Back") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 240, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2db093b27e835741 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2db093b27e835741 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:533cf986f15c8cee camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:533cf986f15c8cee +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["rootColor"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=240:0c261c5aaf779f46 camera=240:0c261c5aaf779f46 shadow=240:0c261c5aaf779f46 indirect=240:0c261c5aaf779f46 +provenance material /World/Looks/Floor: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/mtlx_hair_variation: MaterialOrigin { slots: [3], displaced: false } +provenance light /World/Back: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Key: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Sky: LightOrigin { index: 2, geoms: 2..2 } +provenance geometry 0..1: /World/Back +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance geometry 3..4: /World/Groom +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-1.digest b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-1.digest new file mode 100644 index 000000000..023fe9776 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.1, 9.0), lower_left_corner: Vec3A(-5.142858, -1.8188573, -0.9041662), horizontal: Vec3A(10.285716, -0.0, 0.0), vertical: Vec3A(0.0, 5.1397247, -0.17948315), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9993908, -0.034899496), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 8, width: 320, height: 160, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 160 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/hair_variation.usda"], invisible_overrides: Some(0) } +layer: $DIR/hair_variation.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 3 +light 0: area name Some("/World/Back") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 240, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2db093b27e835741 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2db093b27e835741 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:533cf986f15c8cee camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:533cf986f15c8cee +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["rootColor"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=240:0c261c5aaf779f46 camera=240:0c261c5aaf779f46 shadow=240:0c261c5aaf779f46 indirect=240:0c261c5aaf779f46 +provenance material /World/Looks/Floor: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/mtlx_hair_variation: MaterialOrigin { slots: [3], displaced: false } +provenance light /World/Back: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Key: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Sky: LightOrigin { index: 2, geoms: 2..2 } +provenance geometry 0..1: /World/Back +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance geometry 3..4: /World/Groom +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-2.digest b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-2.digest new file mode 100644 index 000000000..023fe9776 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-2.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.1, 9.0), lower_left_corner: Vec3A(-5.142858, -1.8188573, -0.9041662), horizontal: Vec3A(10.285716, -0.0, 0.0), vertical: Vec3A(0.0, 5.1397247, -0.17948315), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9993908, -0.034899496), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 8, width: 320, height: 160, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 160 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/hair_variation.usda"], invisible_overrides: Some(0) } +layer: $DIR/hair_variation.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 3 +light 0: area name Some("/World/Back") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 240, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2db093b27e835741 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2db093b27e835741 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:533cf986f15c8cee camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:533cf986f15c8cee +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["rootColor"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=240:0c261c5aaf779f46 camera=240:0c261c5aaf779f46 shadow=240:0c261c5aaf779f46 indirect=240:0c261c5aaf779f46 +provenance material /World/Looks/Floor: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/mtlx_hair_variation: MaterialOrigin { slots: [3], displaced: false } +provenance light /World/Back: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Key: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Sky: LightOrigin { index: 2, geoms: 2..2 } +provenance geometry 0..1: /World/Back +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance geometry 3..4: /World/Groom +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/hair_variation_usda-aa2b773ff3d2e5c2-1.digest b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-aa2b773ff3d2e5c2-1.digest new file mode 100644 index 000000000..e06be62aa --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-aa2b773ff3d2e5c2-1.digest @@ -0,0 +1,34 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.1, 9.0), lower_left_corner: Vec3A(-5.142858, -1.8188573, -0.9041662), horizontal: Vec3A(10.285716, -0.0, 0.0), vertical: Vec3A(0.0, 5.1397247, -0.17948315), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9993908, -0.034899496), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 8, width: 320, height: 160, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 160 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/hair_variation.usda"], invisible_overrides: Some(0) } +layer: $DIR/hair_variation.usda +lights: 3 +light 0: area name Some("/World/Back") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 240, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2db093b27e835741 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2db093b27e835741 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:533cf986f15c8cee camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:533cf986f15c8cee +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["rootColor"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=240:0c261c5aaf779f46 camera=240:0c261c5aaf779f46 shadow=240:0c261c5aaf779f46 indirect=240:0c261c5aaf779f46 +provenance material /World/Looks/Floor: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/mtlx_hair_variation: MaterialOrigin { slots: [3], displaced: false } +provenance light /World/Back: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Key: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Sky: LightOrigin { index: 2, geoms: 2..2 } +provenance geometry 0..1: /World/Back +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance geometry 3..4: /World/Groom +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/hidden_source_classes_usda-a9259268854e750e-1.digest b/crates/crust-core/tests/data/import_baselines/hidden_source_classes_usda-a9259268854e750e-1.digest new file mode 100644 index 000000000..ddbc63505 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hidden_source_classes_usda-a9259268854e750e-1.digest @@ -0,0 +1,37 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/hidden_source_classes.usda"], invisible_overrides: Some(0) } +layer: $DIR/hidden_source_classes.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 4 +light 0: area name Some("/World/Restricted") lpe None pmf 0.25 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Free") lpe None pmf 0.25 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Hidden") lpe None pmf 0.25 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/Visible") lpe None pmf 0.25 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 0, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:beb3542d35af08b9 camera=1:beb3542d35af08b9 shadow=1:beb3542d35af08b9 indirect=1:beb3542d35af08b9 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:100347b17cae42f5 camera=1:100347b17cae42f5 shadow=0:cbf29ce484222325 indirect=1:100347b17cae42f5 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e8c481bd5fb0dad3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e8c481bd5fb0dad3 +geom 3: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:4e54bfce8bcfbcfa camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:4e54bfce8bcfbcfa +geom 4: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:41af89000f14f1d5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:41af89000f14f1d5 +geom 5: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b766321c6a421f75 camera=1:b766321c6a421f75 shadow=1:b766321c6a421f75 indirect=1:b766321c6a421f75 +provenance light /World/Free: LightOrigin { index: 1, geoms: 3..4 } +provenance light /World/Hidden: LightOrigin { index: 2, geoms: 4..5 } +provenance light /World/Restricted: LightOrigin { index: 0, geoms: 2..3 } +provenance light /World/Visible: LightOrigin { index: 3, geoms: 5..6 } +provenance geometry 0..1: /World/Kept +provenance geometry 1..2: /World/Dropped +provenance geometry 2..3: /World/Restricted +provenance geometry 3..4: /World/Free +provenance geometry 4..5: /World/Hidden +provenance geometry 5..6: /World/Visible +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/hidden_usda-9a2924a818f3fb98-1.digest b/crates/crust-core/tests/data/import_baselines/hidden_usda-9a2924a818f3fb98-1.digest new file mode 100644 index 000000000..cbe07e67a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hidden_usda-9a2924a818f3fb98-1.digest @@ -0,0 +1,90 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/hidden.usda"], invisible_overrides: Some(0) } +layer: $DIR/hidden.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:475def39fc9d6a51 camera=1:475def39fc9d6a51 shadow=1:475def39fc9d6a51 indirect=1:475def39fc9d6a51 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1b55130c56fba621 camera=1:1b55130c56fba621 shadow=1:1b55130c56fba621 indirect=1:1b55130c56fba621 +provenance geometry 0..2: /W/Groves +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9983431792377398331, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 445393997096090275, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12530787508316231193, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2003607608452276953, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14655719404458108924, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8197086280809854330, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15226241633731644800, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1220030663393014154, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9671416021768249711, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 713395937854610793, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9015895206046420096, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 11: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6053246308793941277, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 12: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3354812878111187853, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 13: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2143590123543198581, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 14: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12825708062627280916, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 15: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17390326888399512289, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 16: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5167343440688746005, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 17: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6431256199563153267, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 18: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17938759324587019490, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 19: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9338845809469782352, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 20: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5016274748741901678, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 21: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18148940518120066603, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 22: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4830200885891814983, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 23: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15766972410381609041, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 24: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9472872301105672276, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 25: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11414915196367845650, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 26: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9269437264134878215, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 27: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10241772988455119680, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 28: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6287388440238275734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 29: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16540043469967507742, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 30: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12273703647221078853, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 31: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14885684870811093431, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 32: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11612700176135259559, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 33: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18124134558096145620, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 34: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1547305282937345631, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 35: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14319513361325090922, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 36: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12743050219495799660, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 37: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14564807414974621182, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 38: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15128490494491982350, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 39: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11141992223073874788, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 40: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2187686032361564554, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 41: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9703725567598092252, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 42: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6913685974256867465, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 43: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3100222640867777022, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 44: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5554913372606825388, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 45: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16649324141060687540, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 46: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2737295392186472633, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 47: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 303054490942377425, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 48: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9767880336714203685, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 49: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6412687190128267277, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 50: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8058819299735866700, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 51: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11805635118953593289, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 52: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10587302289040357906, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 53: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 915626683743930737, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 54: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2011260152324884985, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 55: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15004083201484757820, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 56: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4492824581372515845, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 57: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1556962713607594861, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 58: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13700768547374211392, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 59: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1736609624654126323, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 60: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7314348300970154562, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 61: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16137632259568160912, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 62: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5302950127304504092, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 63: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11033842897036242693, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 64: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1432794855324975849, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 65: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6417092498626891774, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 66: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15417142670901525198, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 67: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1660923941246006929, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 68: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7728745279061195760, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 69: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12950018545620570054, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/hidden_zero_scale_usda-a4193f9a6324f7d0-1.digest b/crates/crust-core/tests/data/import_baselines/hidden_zero_scale_usda-a4193f9a6324f7d0-1.digest new file mode 100644 index 000000000..414e1016c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hidden_zero_scale_usda-a4193f9a6324f7d0-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/hidden_zero_scale.usda"], invisible_overrides: Some(0) } +layer: $DIR/hidden_zero_scale.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 768, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:bb9aeaae01563c51 camera=768:bb9aeaae01563c51 shadow=768:bb9aeaae01563c51 indirect=768:bb9aeaae01563c51 +provenance geometry 0..1: /W/Scatter +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13487480004083563611, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/high_bits_usda-276acbda2859c899-1.digest b/crates/crust-core/tests/data/import_baselines/high_bits_usda-276acbda2859c899-1.digest new file mode 100644 index 000000000..96128830f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/high_bits_usda-276acbda2859c899-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/high_bits.usda"], invisible_overrides: Some(0) } +layer: $DIR/high_bits.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=0:cbf29ce484222325 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/holdout_usda-fcfa139ef12785fd-1.digest b/crates/crust-core/tests/data/import_baselines/holdout_usda-fcfa139ef12785fd-1.digest new file mode 100644 index 000000000..0fc858c20 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/holdout_usda-fcfa139ef12785fd-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/look_out", name: "look_out", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/look"], display_filters: [], display: "beauty" }) } +pass: Some(PassSummary { path: "/Render/hold", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/holdout.usda"], invisible_overrides: Some(0) } +layer: $DIR/holdout.usda +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/hold"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/houdini_var_usda-c716d987aba001e4-1.digest b/crates/crust-core/tests/data/import_baselines/houdini_var_usda-c716d987aba001e4-1.digest new file mode 100644 index 000000000..8d4b87d10 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/houdini_var_usda-c716d987aba001e4-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/aovs", name: "aovs.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/Z", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Half, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [("artist", "someone"), ("comment", "a comment")] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/houdini_var.usda"], invisible_overrides: Some(0) } +layer: $DIR/houdini_var.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/huge_blur_usda-2cc6d64af71f20b3-1.digest b/crates/crust-core/tests/data/import_baselines/huge_blur_usda-2cc6d64af71f20b3-1.digest new file mode 100644 index 000000000..70a037a30 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/huge_blur_usda-2cc6d64af71f20b3-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/wide_out", name: "wide_out", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 0, output: 0, components: 1, radiance: false }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: [], display_filters: ["/Render/wide"], display: "beauty" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/huge_blur.usda"], invisible_overrides: Some(0) } +layer: $DIR/huge_blur.usda +warning: Warning { code: PrecompInvalidValue, kind: Refused, count: 1, prims: ["/Render/wide"], message: "/Render/wide: crust:blur radius 1000000000 is past 1024 pixels; the filter passes its input through" } +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/huge_kernel_usda-a515683f6e1b404a-1.digest b/crates/crust-core/tests/data/import_baselines/huge_kernel_usda-a515683f6e1b404a-1.digest new file mode 100644 index 000000000..4f18e9913 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/huge_kernel_usda-a515683f6e1b404a-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/soft_out", name: "soft_out", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 0, output: 0, components: 1, radiance: false }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: [], display_filters: ["/Render/soft"], display: "beauty" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/huge_kernel.usda"], invisible_overrides: Some(0) } +layer: $DIR/huge_kernel.usda +warning: Warning { code: PrecompInvalidValue, kind: Refused, count: 1, prims: ["/Render/soft"], message: "/Render/soft: kernel $DIR/box.exr (3x1) at kernelScale 1000000 covers more than 255 pixels a side; the filter passes its input through" } +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/ies_light_usda-9afaa60e27f14926-1.digest b/crates/crust-core/tests/data/import_baselines/ies_light_usda-9afaa60e27f14926-1.digest new file mode 100644 index 000000000..6d8c74e20 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ies_light_usda-9afaa60e27f14926-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/ies_light.usda"], invisible_overrides: Some(0) } +layer: $DIR/ies_light.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/Spot") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 1, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 1, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ff1577ffaf887d11 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ff1577ffaf887d11 +provenance light /Spot: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /Spot +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/ignored_curves_usda-d8234281140f3b7d-1.digest b/crates/crust-core/tests/data/import_baselines/ignored_curves_usda-d8234281140f3b7d-1.digest new file mode 100644 index 000000000..37a862029 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ignored_curves_usda-d8234281140f3b7d-1.digest @@ -0,0 +1,19 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: true, layer_stack: ["$DIR/ignored_curves.usda"], invisible_overrides: Some(0) } +layer: $DIR/ignored_curves.usda +warning: Warning { code: XformMotionIgnored, kind: Skipped, count: 1, prims: ["/World/Hair"], message: "1 prim whose transform moves over the shutter gets no motion (curves, lights, volumes, prims inside a prototype and baked non-invertible meshes are not moved); it renders at shutter open (the first at /World/Hair)" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=1:598f37c01518952d camera=1:598f37c01518952d shadow=1:598f37c01518952d indirect=1:598f37c01518952d +provenance geometry 0..1: /World/Hair +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/ignored_light_usda-26909110fbe92be4-1.digest b/crates/crust-core/tests/data/import_baselines/ignored_light_usda-26909110fbe92be4-1.digest new file mode 100644 index 000000000..367e6a598 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ignored_light_usda-26909110fbe92be4-1.digest @@ -0,0 +1,21 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: true, layer_stack: ["$DIR/ignored_light.usda"], invisible_overrides: Some(0) } +layer: $DIR/ignored_light.usda +warning: Warning { code: XformMotionIgnored, kind: Skipped, count: 1, prims: ["/World/Lamp"], message: "1 prim whose transform moves over the shutter gets no motion (curves, lights, volumes, prims inside a prototype and baked non-invertible meshes are not moved); it renders at shutter open (the first at /World/Lamp)" } +lights: 1 +light 0: area name Some("/World/Lamp") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:182863594c30eabb camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:182863594c30eabb +provenance light /World/Lamp: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Lamp +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/ignored_prototype_usda-f94b3942ea16e527-1.digest b/crates/crust-core/tests/data/import_baselines/ignored_prototype_usda-f94b3942ea16e527-1.digest new file mode 100644 index 000000000..36f9da6e5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ignored_prototype_usda-f94b3942ea16e527-1.digest @@ -0,0 +1,21 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: true, layer_stack: ["$DIR/ignored_prototype.usda"], invisible_overrides: Some(0) } +layer: $DIR/ignored_prototype.usda +warning: Warning { code: XformMotionIgnored, kind: Skipped, count: 1, prims: ["/__Prototype_0/Spin"], message: "1 prim whose transform moves over the shutter gets no motion (curves, lights, volumes, prims inside a prototype and baked non-invertible meshes are not moved); it renders at shutter open (the first at /__Prototype_0/Spin)" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8f5d9187c4202473 camera=2:8f5d9187c4202473 shadow=2:8f5d9187c4202473 indirect=2:8f5d9187c4202473 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Copy +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/ignored_volume_usda-32845f161c65c4a9-1.digest b/crates/crust-core/tests/data/import_baselines/ignored_volume_usda-32845f161c65c4a9-1.digest new file mode 100644 index 000000000..9c26b306a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ignored_volume_usda-32845f161c65c4a9-1.digest @@ -0,0 +1,18 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: true, layer_stack: ["$DIR/ignored_volume.usda"], invisible_overrides: Some(0) } +layer: $DIR/ignored_volume.usda +warning: Warning { code: XformMotionIgnored, kind: Skipped, count: 1, prims: ["/World/Fog"], message: "1 prim whose transform moves over the shutter gets no motion (curves, lights, volumes, prims inside a prototype and baked non-invertible meshes are not moved); it renders at shutter open (the first at /World/Fog)" } +lights: 0 +volumes: 1 +volume 0: sigma_s Vec3A(0.1, 0.1, 0.1) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Capsule_1_usda-751cd07d979a4d81-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_Capsule_1_usda-751cd07d979a4d81-1.digest new file mode 100644 index 000000000..da062312a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_Capsule_1_usda-751cd07d979a4d81-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/implicit_Capsule_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/implicit_Capsule_1.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2304, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2304, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2304:435cb039f3ccd77d camera=2304:435cb039f3ccd77d shadow=2304:435cb039f3ccd77d indirect=2304:435cb039f3ccd77d +provenance geometry 0..1: /World/Shape +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3706818291284699303, n_points: 1154, n_indices: 4704, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Capsule_usda-3ad3fb7cdd9a1902-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_Capsule_usda-3ad3fb7cdd9a1902-1.digest new file mode 100644 index 000000000..6cd44f5cd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_Capsule_usda-3ad3fb7cdd9a1902-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/implicit_Capsule.usda"], invisible_overrides: Some(0) } +layer: $DIR/implicit_Capsule.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2304, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2304, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2304:ed03a97ba251327d camera=2304:ed03a97ba251327d shadow=2304:ed03a97ba251327d indirect=2304:ed03a97ba251327d +provenance geometry 0..1: /World/Shape +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5116155558073966183, n_points: 1154, n_indices: 4704, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Cone_usda-024380e72d6d34a7-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_Cone_usda-024380e72d6d34a7-1.digest new file mode 100644 index 000000000..24b3ed7d0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_Cone_usda-024380e72d6d34a7-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/implicit_Cone.usda"], invisible_overrides: Some(0) } +layer: $DIR/implicit_Cone.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 144, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 144, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=144:820f813a06be123f camera=144:820f813a06be123f shadow=144:820f813a06be123f indirect=144:820f813a06be123f +provenance geometry 0..1: /World/Shape +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8087259199450112797, n_points: 145, n_indices: 336, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Cube_usda-4bb89de99da949b6-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_Cube_usda-4bb89de99da949b6-1.digest new file mode 100644 index 000000000..157d06d78 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_Cube_usda-4bb89de99da949b6-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/implicit_Cube.usda"], invisible_overrides: Some(0) } +layer: $DIR/implicit_Cube.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:2a7455d8f895f705 camera=12:2a7455d8f895f705 shadow=12:2a7455d8f895f705 indirect=12:2a7455d8f895f705 +provenance geometry 0..1: /World/Shape +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8921584896192100385, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_1_usda-9964aa85919856f9-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_1_usda-9964aa85919856f9-1.digest new file mode 100644 index 000000000..175759b30 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_1_usda-9964aa85919856f9-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/implicit_Cylinder_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/implicit_Cylinder_1.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:573b993ae799d70d camera=192:573b993ae799d70d shadow=192:573b993ae799d70d indirect=192:573b993ae799d70d +provenance geometry 0..1: /World/Shape +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7979101772752456078, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_usda-bee0e5841f0acf39-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_usda-bee0e5841f0acf39-1.digest new file mode 100644 index 000000000..b1df84f38 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_usda-bee0e5841f0acf39-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/implicit_Cylinder.usda"], invisible_overrides: Some(0) } +layer: $DIR/implicit_Cylinder.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:f86dabad57ed0719 camera=192:f86dabad57ed0719 shadow=192:f86dabad57ed0719 indirect=192:f86dabad57ed0719 +provenance geometry 0..1: /World/Shape +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18025274944887440505, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Plane_usda-77823213740cc6c2-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_Plane_usda-77823213740cc6c2-1.digest new file mode 100644 index 000000000..e124d133f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_Plane_usda-77823213740cc6c2-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/implicit_Plane.usda"], invisible_overrides: Some(0) } +layer: $DIR/implicit_Plane.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4793349518d03985 camera=2:4793349518d03985 shadow=2:4793349518d03985 indirect=2:4793349518d03985 +provenance geometry 0..1: /World/Shape +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 714069445534044474, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/implicit_displaced_usda-395a4477685bb193-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_displaced_usda-395a4477685bb193-1.digest new file mode 100644 index 000000000..8e2231343 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_displaced_usda-395a4477685bb193-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/implicit_displaced.usda"], invisible_overrides: Some(0) } +layer: $DIR/implicit_displaced.usda +warning: Warning { code: GeomImplicitDisplacement, kind: Skipped, count: 1, prims: ["/World/Box"], message: "/World/Box is an implicit shape: its material's displacement is not applied" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d3f93325e3445105 camera=12:d3f93325e3445105 shadow=12:d3f93325e3445105 indirect=12:d3f93325e3445105 +provenance material /World/Puffed: MaterialOrigin { slots: [0], displaced: true } +provenance geometry 0..1: /World/Box +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9204403525635746283, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/implicit_level_usda-e441bb0a849304c5-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_level_usda-e441bb0a849304c5-1.digest new file mode 100644 index 000000000..251662640 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_level_usda-e441bb0a849304c5-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/implicit_level.usda"], invisible_overrides: Some(0) } +layer: $DIR/implicit_level.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:417dbfabd3a17585 camera=192:417dbfabd3a17585 shadow=192:417dbfabd3a17585 indirect=192:417dbfabd3a17585 +provenance geometry 0..1: /World/C +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6877125351767401758, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/implicit_lone_usda-8c73fbc5c6234554-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_lone_usda-8c73fbc5c6234554-1.digest new file mode 100644 index 000000000..400c78d56 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_lone_usda-8c73fbc5c6234554-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/implicit_lone.usda"], invisible_overrides: Some(0) } +layer: $DIR/implicit_lone.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:417dbfabd3a17585 camera=192:417dbfabd3a17585 shadow=192:417dbfabd3a17585 indirect=192:417dbfabd3a17585 +provenance geometry 0..1: /World/A +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6877125351767401758, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/implicit_moving_usda-2b9c98847f8ffdc5-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_moving_usda-2b9c98847f8ffdc5-1.digest new file mode 100644 index 000000000..bc9a97f06 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_moving_usda-2b9c98847f8ffdc5-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/implicit_moving.usda"], invisible_overrides: Some(0) } +layer: $DIR/implicit_moving.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.0, 0.0, 0.0))] pieces all=12:d3f93325e3445105 camera=12:d3f93325e3445105 shadow=12:d3f93325e3445105 indirect=12:d3f93325e3445105 +provenance geometry 0..1: /World/Mover +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9204403525635746283, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/implicit_prototypes_usda-754c2247d4091e78-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_prototypes_usda-754c2247d4091e78-1.digest new file mode 100644 index 000000000..cbcb083be --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_prototypes_usda-754c2247d4091e78-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/implicit_prototypes.usda"], invisible_overrides: Some(0) } +layer: $DIR/implicit_prototypes.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 2316, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2304:17370cf5722a3e3d camera=2304:17370cf5722a3e3d shadow=2304:17370cf5722a3e3d indirect=2304:17370cf5722a3e3d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2304:dec2890a21f8d9f9 camera=2304:dec2890a21f8d9f9 shadow=2304:dec2890a21f8d9f9 indirect=2304:dec2890a21f8d9f9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:e079a866710c0905 camera=12:e079a866710c0905 shadow=12:e079a866710c0905 indirect=12:e079a866710c0905 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1c73a13c3299aa75 camera=12:1c73a13c3299aa75 shadow=12:1c73a13c3299aa75 indirect=12:1c73a13c3299aa75 +provenance geometry 0..1: /World/A +provenance geometry 1..2: /World/B +provenance geometry 2..4: /World/Boxes +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16627206856379785010, n_points: 1154, n_indices: 4704, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8382128429536916275, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/implicit_scaled_usda-5918722b7152b9f3-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_scaled_usda-5918722b7152b9f3-1.digest new file mode 100644 index 000000000..f873a7104 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_scaled_usda-5918722b7152b9f3-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/implicit_scaled.usda"], invisible_overrides: Some(0) } +layer: $DIR/implicit_scaled.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:0853f21676163da5 camera=12:0853f21676163da5 shadow=12:0853f21676163da5 indirect=12:0853f21676163da5 +provenance geometry 0..1: /World/Box +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9204403525635746283, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/implicit_shading_usda-b3809be67678f20f-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_shading_usda-b3809be67678f20f-1.digest new file mode 100644 index 000000000..7914c141d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_shading_usda-b3809be67678f20f-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/implicit_shading.usda"], invisible_overrides: Some(0) } +layer: $DIR/implicit_shading.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:417dbfabd3a17585 camera=192:417dbfabd3a17585 shadow=192:417dbfabd3a17585 indirect=192:417dbfabd3a17585 +provenance geometry 0..1: /World/C +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6877125351767401758, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-1.digest new file mode 100644 index 000000000..b5124a3d6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-1.digest @@ -0,0 +1,68 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.4, 8.5), lower_left_corner: Vec3A(-5.6632595, -2.6351454, -0.7084341), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.254111, -1.2156761), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98162717, -0.19080901), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 32, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/implicit_shapes.usda"], invisible_overrides: Some(0) } +layer: $DIR/implicit_shapes.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 11 geometries, PrimitiveBreakdown { triangles: 1403, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1403, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=380:885adf075f52175a camera=380:885adf075f52175a shadow=380:885adf075f52175a indirect=380:885adf075f52175a +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=256:b301ba5859c3ec21 camera=256:b301ba5859c3ec21 shadow=256:b301ba5859c3ec21 indirect=256:b301ba5859c3ec21 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=54:05aae0ee5542efae camera=54:05aae0ee5542efae shadow=54:05aae0ee5542efae indirect=54:05aae0ee5542efae +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=68:5712bb2e9c20938d camera=68:5712bb2e9c20938d shadow=68:5712bb2e9c20938d indirect=68:5712bb2e9c20938d +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=92:60fd3b5d633608aa camera=92:60fd3b5d633608aa shadow=92:60fd3b5d633608aa indirect=92:60fd3b5d633608aa +geom 5: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=380:c1baaae2e9a57c00 camera=380:c1baaae2e9a57c00 shadow=380:c1baaae2e9a57c00 indirect=380:c1baaae2e9a57c00 +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=69:7cda91fd97a28a69 camera=69:7cda91fd97a28a69 shadow=69:7cda91fd97a28a69 indirect=69:7cda91fd97a28a69 +geom 7: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=88:393a7515190ea8e5 camera=88:393a7515190ea8e5 shadow=88:393a7515190ea8e5 indirect=88:393a7515190ea8e5 +geom 8: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:aed60d32b622d9ad camera=12:aed60d32b622d9ad shadow=12:aed60d32b622d9ad indirect=12:aed60d32b622d9ad +geom 9: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:52e7bea0692cc322 camera=2:52e7bea0692cc322 shadow=2:52e7bea0692cc322 indirect=2:52e7bea0692cc322 +geom 10: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:525ac1a79196bfc5 camera=2:525ac1a79196bfc5 shadow=2:525ac1a79196bfc5 indirect=2:525ac1a79196bfc5 +provenance material /World/Looks/Brass: MaterialOrigin { slots: [0, 3, 6], displaced: false } +provenance material /World/Looks/Clay: MaterialOrigin { slots: [2, 5, 8], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [9, 10], displaced: false } +provenance material /World/Looks/Teal: MaterialOrigin { slots: [1, 4, 7], displaced: false } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 11..11 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 11..11 } +provenance geometry 0..1: /World/Drop +provenance geometry 1..2: /World/Pill +provenance geometry 2..3: /World/Spike +provenance geometry 3..4: /World/Log +provenance geometry 4..5: /World/Frustum +provenance geometry 5..6: /World/Capsule +provenance geometry 6..7: /World/Cone +provenance geometry 7..8: /World/Cylinder +provenance geometry 8..9: /World/Cube +provenance geometry 9..10: /World/Backdrop +provenance geometry 10..11: /World/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 9, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 10, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3350102790202927374, n_points: 192, n_indices: 798, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 842475585675173290, n_points: 130, n_indices: 544, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8155579581791176547, n_points: 55, n_indices: 126, n_uvs: None, smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9836686556183882764, n_points: 70, n_indices: 170, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 888819108523624605, n_points: 94, n_indices: 230, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15637138769175292785, n_points: 192, n_indices: 798, n_uvs: None, smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12949292162655400582, n_points: 70, n_indices: 161, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9655652409059035238, n_points: 90, n_indices: 220, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18161012096923765881, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10327073002095181176, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11540092840794327159, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 1075419546, 1091043328, 1146348642, 0, 1075419546, 1091043328, 3212836864, 3185397406, 3205386455, 1065353216, 3185397406, 3205386455, 0, 3213192633, 3187254502, 0, 1064025188, 3204507220, 0, 3192087409, 3212528621])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-2.digest b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-2.digest new file mode 100644 index 000000000..b5124a3d6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-2.digest @@ -0,0 +1,68 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.4, 8.5), lower_left_corner: Vec3A(-5.6632595, -2.6351454, -0.7084341), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.254111, -1.2156761), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98162717, -0.19080901), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 32, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/implicit_shapes.usda"], invisible_overrides: Some(0) } +layer: $DIR/implicit_shapes.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 11 geometries, PrimitiveBreakdown { triangles: 1403, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1403, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=380:885adf075f52175a camera=380:885adf075f52175a shadow=380:885adf075f52175a indirect=380:885adf075f52175a +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=256:b301ba5859c3ec21 camera=256:b301ba5859c3ec21 shadow=256:b301ba5859c3ec21 indirect=256:b301ba5859c3ec21 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=54:05aae0ee5542efae camera=54:05aae0ee5542efae shadow=54:05aae0ee5542efae indirect=54:05aae0ee5542efae +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=68:5712bb2e9c20938d camera=68:5712bb2e9c20938d shadow=68:5712bb2e9c20938d indirect=68:5712bb2e9c20938d +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=92:60fd3b5d633608aa camera=92:60fd3b5d633608aa shadow=92:60fd3b5d633608aa indirect=92:60fd3b5d633608aa +geom 5: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=380:c1baaae2e9a57c00 camera=380:c1baaae2e9a57c00 shadow=380:c1baaae2e9a57c00 indirect=380:c1baaae2e9a57c00 +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=69:7cda91fd97a28a69 camera=69:7cda91fd97a28a69 shadow=69:7cda91fd97a28a69 indirect=69:7cda91fd97a28a69 +geom 7: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=88:393a7515190ea8e5 camera=88:393a7515190ea8e5 shadow=88:393a7515190ea8e5 indirect=88:393a7515190ea8e5 +geom 8: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:aed60d32b622d9ad camera=12:aed60d32b622d9ad shadow=12:aed60d32b622d9ad indirect=12:aed60d32b622d9ad +geom 9: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:52e7bea0692cc322 camera=2:52e7bea0692cc322 shadow=2:52e7bea0692cc322 indirect=2:52e7bea0692cc322 +geom 10: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:525ac1a79196bfc5 camera=2:525ac1a79196bfc5 shadow=2:525ac1a79196bfc5 indirect=2:525ac1a79196bfc5 +provenance material /World/Looks/Brass: MaterialOrigin { slots: [0, 3, 6], displaced: false } +provenance material /World/Looks/Clay: MaterialOrigin { slots: [2, 5, 8], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [9, 10], displaced: false } +provenance material /World/Looks/Teal: MaterialOrigin { slots: [1, 4, 7], displaced: false } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 11..11 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 11..11 } +provenance geometry 0..1: /World/Drop +provenance geometry 1..2: /World/Pill +provenance geometry 2..3: /World/Spike +provenance geometry 3..4: /World/Log +provenance geometry 4..5: /World/Frustum +provenance geometry 5..6: /World/Capsule +provenance geometry 6..7: /World/Cone +provenance geometry 7..8: /World/Cylinder +provenance geometry 8..9: /World/Cube +provenance geometry 9..10: /World/Backdrop +provenance geometry 10..11: /World/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 9, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 10, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3350102790202927374, n_points: 192, n_indices: 798, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 842475585675173290, n_points: 130, n_indices: 544, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8155579581791176547, n_points: 55, n_indices: 126, n_uvs: None, smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9836686556183882764, n_points: 70, n_indices: 170, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 888819108523624605, n_points: 94, n_indices: 230, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15637138769175292785, n_points: 192, n_indices: 798, n_uvs: None, smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12949292162655400582, n_points: 70, n_indices: 161, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9655652409059035238, n_points: 90, n_indices: 220, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18161012096923765881, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10327073002095181176, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11540092840794327159, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 1075419546, 1091043328, 1146348642, 0, 1075419546, 1091043328, 3212836864, 3185397406, 3205386455, 1065353216, 3185397406, 3205386455, 0, 3213192633, 3187254502, 0, 1064025188, 3204507220, 0, 3192087409, 3212528621])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-30852d50af72eb96-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-30852d50af72eb96-1.digest new file mode 100644 index 000000000..b5124a3d6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-30852d50af72eb96-1.digest @@ -0,0 +1,68 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.4, 8.5), lower_left_corner: Vec3A(-5.6632595, -2.6351454, -0.7084341), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.254111, -1.2156761), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98162717, -0.19080901), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 32, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/implicit_shapes.usda"], invisible_overrides: Some(0) } +layer: $DIR/implicit_shapes.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 11 geometries, PrimitiveBreakdown { triangles: 1403, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1403, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=380:885adf075f52175a camera=380:885adf075f52175a shadow=380:885adf075f52175a indirect=380:885adf075f52175a +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=256:b301ba5859c3ec21 camera=256:b301ba5859c3ec21 shadow=256:b301ba5859c3ec21 indirect=256:b301ba5859c3ec21 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=54:05aae0ee5542efae camera=54:05aae0ee5542efae shadow=54:05aae0ee5542efae indirect=54:05aae0ee5542efae +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=68:5712bb2e9c20938d camera=68:5712bb2e9c20938d shadow=68:5712bb2e9c20938d indirect=68:5712bb2e9c20938d +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=92:60fd3b5d633608aa camera=92:60fd3b5d633608aa shadow=92:60fd3b5d633608aa indirect=92:60fd3b5d633608aa +geom 5: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=380:c1baaae2e9a57c00 camera=380:c1baaae2e9a57c00 shadow=380:c1baaae2e9a57c00 indirect=380:c1baaae2e9a57c00 +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=69:7cda91fd97a28a69 camera=69:7cda91fd97a28a69 shadow=69:7cda91fd97a28a69 indirect=69:7cda91fd97a28a69 +geom 7: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=88:393a7515190ea8e5 camera=88:393a7515190ea8e5 shadow=88:393a7515190ea8e5 indirect=88:393a7515190ea8e5 +geom 8: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:aed60d32b622d9ad camera=12:aed60d32b622d9ad shadow=12:aed60d32b622d9ad indirect=12:aed60d32b622d9ad +geom 9: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:52e7bea0692cc322 camera=2:52e7bea0692cc322 shadow=2:52e7bea0692cc322 indirect=2:52e7bea0692cc322 +geom 10: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:525ac1a79196bfc5 camera=2:525ac1a79196bfc5 shadow=2:525ac1a79196bfc5 indirect=2:525ac1a79196bfc5 +provenance material /World/Looks/Brass: MaterialOrigin { slots: [0, 3, 6], displaced: false } +provenance material /World/Looks/Clay: MaterialOrigin { slots: [2, 5, 8], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [9, 10], displaced: false } +provenance material /World/Looks/Teal: MaterialOrigin { slots: [1, 4, 7], displaced: false } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 11..11 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 11..11 } +provenance geometry 0..1: /World/Drop +provenance geometry 1..2: /World/Pill +provenance geometry 2..3: /World/Spike +provenance geometry 3..4: /World/Log +provenance geometry 4..5: /World/Frustum +provenance geometry 5..6: /World/Capsule +provenance geometry 6..7: /World/Cone +provenance geometry 7..8: /World/Cylinder +provenance geometry 8..9: /World/Cube +provenance geometry 9..10: /World/Backdrop +provenance geometry 10..11: /World/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 9, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 10, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3350102790202927374, n_points: 192, n_indices: 798, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 842475585675173290, n_points: 130, n_indices: 544, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8155579581791176547, n_points: 55, n_indices: 126, n_uvs: None, smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9836686556183882764, n_points: 70, n_indices: 170, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 888819108523624605, n_points: 94, n_indices: 230, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15637138769175292785, n_points: 192, n_indices: 798, n_uvs: None, smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12949292162655400582, n_points: 70, n_indices: 161, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9655652409059035238, n_points: 90, n_indices: 220, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18161012096923765881, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10327073002095181176, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11540092840794327159, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 1075419546, 1091043328, 1146348642, 0, 1075419546, 1091043328, 3212836864, 3185397406, 3205386455, 1065353216, 3185397406, 3205386455, 0, 3213192633, 3187254502, 0, 1064025188, 3204507220, 0, 3192087409, 3212528621])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-41169aa3c303f69f-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-41169aa3c303f69f-1.digest new file mode 100644 index 000000000..17c490d15 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-41169aa3c303f69f-1.digest @@ -0,0 +1,68 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.4, 8.5), lower_left_corner: Vec3A(-5.6632595, -2.6351454, -0.7084341), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.254111, -1.2156761), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98162717, -0.19080901), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 32, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/implicit_shapes.usda"], invisible_overrides: Some(0) } +layer: $DIR/implicit_shapes.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 11 geometries, PrimitiveBreakdown { triangles: 1403, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1403, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=380:885adf075f52175a camera=380:885adf075f52175a shadow=380:885adf075f52175a indirect=380:885adf075f52175a +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=256:b301ba5859c3ec21 camera=256:b301ba5859c3ec21 shadow=256:b301ba5859c3ec21 indirect=256:b301ba5859c3ec21 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=54:05aae0ee5542efae camera=54:05aae0ee5542efae shadow=54:05aae0ee5542efae indirect=54:05aae0ee5542efae +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=68:5712bb2e9c20938d camera=68:5712bb2e9c20938d shadow=68:5712bb2e9c20938d indirect=68:5712bb2e9c20938d +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=92:60fd3b5d633608aa camera=92:60fd3b5d633608aa shadow=92:60fd3b5d633608aa indirect=92:60fd3b5d633608aa +geom 5: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=380:c1baaae2e9a57c00 camera=380:c1baaae2e9a57c00 shadow=380:c1baaae2e9a57c00 indirect=380:c1baaae2e9a57c00 +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=69:7cda91fd97a28a69 camera=69:7cda91fd97a28a69 shadow=69:7cda91fd97a28a69 indirect=69:7cda91fd97a28a69 +geom 7: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=88:393a7515190ea8e5 camera=88:393a7515190ea8e5 shadow=88:393a7515190ea8e5 indirect=88:393a7515190ea8e5 +geom 8: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:aed60d32b622d9ad camera=12:aed60d32b622d9ad shadow=12:aed60d32b622d9ad indirect=12:aed60d32b622d9ad +geom 9: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:52e7bea0692cc322 camera=2:52e7bea0692cc322 shadow=2:52e7bea0692cc322 indirect=2:52e7bea0692cc322 +geom 10: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:525ac1a79196bfc5 camera=2:525ac1a79196bfc5 shadow=2:525ac1a79196bfc5 indirect=2:525ac1a79196bfc5 +provenance material /World/Looks/Brass: MaterialOrigin { slots: [0, 3, 6], displaced: false } +provenance material /World/Looks/Clay: MaterialOrigin { slots: [2, 5, 8], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [9, 10], displaced: false } +provenance material /World/Looks/Teal: MaterialOrigin { slots: [1, 4, 7], displaced: false } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 11..11 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 11..11 } +provenance geometry 0..1: /World/Drop +provenance geometry 1..2: /World/Pill +provenance geometry 2..3: /World/Spike +provenance geometry 3..4: /World/Log +provenance geometry 4..5: /World/Frustum +provenance geometry 5..6: /World/Capsule +provenance geometry 6..7: /World/Cone +provenance geometry 7..8: /World/Cylinder +provenance geometry 8..9: /World/Cube +provenance geometry 9..10: /World/Backdrop +provenance geometry 10..11: /World/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 9, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 10, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3350102790202927374, n_points: 192, n_indices: 798, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 842475585675173290, n_points: 130, n_indices: 544, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8155579581791176547, n_points: 55, n_indices: 126, n_uvs: None, smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9836686556183882764, n_points: 70, n_indices: 170, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 888819108523624605, n_points: 94, n_indices: 230, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15637138769175292785, n_points: 192, n_indices: 798, n_uvs: None, smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12949292162655400582, n_points: 70, n_indices: 161, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9655652409059035238, n_points: 90, n_indices: 220, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18161012096923765881, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10327073002095181176, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11540092840794327159, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 1075419546, 1091043328, 1146348642, 0, 1075419546, 1091043328, 3212836864, 3185397406, 3205386455, 1065353216, 3185397406, 3205386455, 0, 3213192633, 3187254502, 0, 1064025188, 3204507220, 0, 3192087409, 3212528621])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/implicit_twins_usda-925c195d8a7f5a5c-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_twins_usda-925c195d8a7f5a5c-1.digest new file mode 100644 index 000000000..64b96fba9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_twins_usda-925c195d8a7f5a5c-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/implicit_twins.usda"], invisible_overrides: Some(0) } +layer: $DIR/implicit_twins.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:ac14f8c4cdc97059 camera=192:ac14f8c4cdc97059 shadow=192:ac14f8c4cdc97059 indirect=192:ac14f8c4cdc97059 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:888de211ce609fe9 camera=192:888de211ce609fe9 shadow=192:888de211ce609fe9 indirect=192:888de211ce609fe9 +provenance geometry 0..1: /World/B +provenance geometry 1..2: /World/A +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16571705108045419501, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/import_plain_usda-37ba4c8eb30aefb6-1.digest b/crates/crust-core/tests/data/import_baselines/import_plain_usda-37ba4c8eb30aefb6-1.digest new file mode 100644 index 000000000..16efa55f0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/import_plain_usda-37ba4c8eb30aefb6-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/import_plain.usda"], invisible_overrides: Some(0) } +layer: $DIR/import_plain.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/import_usda-a114cca514b1e2e9-1.digest b/crates/crust-core/tests/data/import_baselines/import_usda-a114cca514b1e2e9-1.digest new file mode 100644 index 000000000..2e3769a51 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/import_usda-a114cca514b1e2e9-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/import.usda"], invisible_overrides: Some(0) } +layer: $DIR/import.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/imported_motion_usda-98baf8cfec165d96-1.digest b/crates/crust-core/tests/data/import_baselines/imported_motion_usda-98baf8cfec165d96-1.digest new file mode 100644 index 000000000..c87ed765a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/imported_motion_usda-98baf8cfec165d96-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/imported_motion.usda"], invisible_overrides: Some(0) } +layer: $DIR/imported_motion.usda +warning: Warning { code: MeshNonInvertibleTransform, kind: Approximated, count: 1, prims: ["/World/Flat"], message: "Mesh at /World/Flat has a non-invertible transform — baking instead of instancing" } +warning: Warning { code: MeshMotionIgnored, kind: Skipped, count: 1, prims: ["/World/Flat"], message: "Mesh at /World/Flat: crust:motion:translate is ignored on baked (non-invertible) geometry" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.7, 0.0, 0.0))] pieces all=1:39345aa200c2bfe5 camera=1:39345aa200c2bfe5 shadow=1:39345aa200c2bfe5 indirect=1:39345aa200c2bfe5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2599211 motion [Translation(Vec3A(0.0, 0.5, 0.25))] pieces all=2:bb1528be251a1de5 camera=2:bb1528be251a1de5 shadow=2:bb1528be251a1de5 indirect=2:bb1528be251a1de5 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b4dfc0dd30bb66e5 camera=1:b4dfc0dd30bb66e5 shadow=1:b4dfc0dd30bb66e5 indirect=1:b4dfc0dd30bb66e5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1805dc7df3d30cb5 camera=2:1805dc7df3d30cb5 shadow=2:1805dc7df3d30cb5 indirect=2:1805dc7df3d30cb5 +provenance geometry 0..1: /World/Mover +provenance geometry 1..2: /World/Riser +provenance geometry 2..3: /World/Still +provenance geometry 3..4: /World/Flat +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/inf_light_usda-fd28273b2a9da24d-1.digest b/crates/crust-core/tests/data/import_baselines/inf_light_usda-fd28273b2a9da24d-1.digest new file mode 100644 index 000000000..e2f524a92 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/inf_light_usda-fd28273b2a9da24d-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/inf_light.usda"], invisible_overrides: Some(0) } +layer: $DIR/inf_light.usda +warning: Warning { code: LightNonFiniteInput, kind: Refused, count: 1, prims: ["/World/hot"], message: "/World/hot: inputs:intensity = inf is not finite — using its fallback 1" } +lights: 1 +light 0: area name Some("/World/hot") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:984632b55acb5495 +provenance light /World/hot: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/hot +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/infinite_usda-6e15312bf55ca148-1.digest b/crates/crust-core/tests/data/import_baselines/infinite_usda-6e15312bf55ca148-1.digest new file mode 100644 index 000000000..21de6950f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/infinite_usda-6e15312bf55ca148-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/infinite.usda"], invisible_overrides: Some(0) } +layer: $DIR/infinite.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance light /World/Sun: LightOrigin { index: 1, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/inherits_usda-946600d02d8755e0-1.digest b/crates/crust-core/tests/data/import_baselines/inherits_usda-946600d02d8755e0-1.digest new file mode 100644 index 000000000..64c1c77a1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/inherits_usda-946600d02d8755e0-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 5.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -5.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/beauty", name: "renders/beauty.exr", vars: [AovVar { prim_path: "/Render/beauty_var", name: "beauty_var", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/inherits.usda"], invisible_overrides: Some(0) } +layer: $DIR/inherits.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/input_usda-39af7a7dd8ccc053-1.digest b/crates/crust-core/tests/data/import_baselines/input_usda-39af7a7dd8ccc053-1.digest new file mode 100644 index 000000000..dbf5c11bc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/input_usda-39af7a7dd8ccc053-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-1.3761721, -0.91744804, 0.0), horizontal: Vec3A(2.7523441, 0.0, 0.0), vertical: Vec3A(0.0, 1.8348961, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0125, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 6.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/input.usda"], invisible_overrides: Some(0) } +layer: $DIR/input.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1cd1488d041dfcdb camera=1:1cd1488d041dfcdb shadow=1:1cd1488d041dfcdb indirect=1:1cd1488d041dfcdb +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2d90e22d27992fa5 camera=1:2d90e22d27992fa5 shadow=1:2d90e22d27992fa5 indirect=1:2d90e22d27992fa5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Far +provenance geometry 1..2: /World/Near +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instanced_curves_usda-4486def29adfc50e-1.digest b/crates/crust-core/tests/data/import_baselines/instanced_curves_usda-4486def29adfc50e-1.digest new file mode 100644 index 000000000..2ef008eeb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instanced_curves_usda-4486def29adfc50e-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/instanced_curves.usda"], invisible_overrides: Some(0) } +layer: $DIR/instanced_curves.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=1:662a7d01a2f8c859 camera=1:662a7d01a2f8c859 shadow=1:662a7d01a2f8c859 indirect=1:662a7d01a2f8c859 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 0.99999994 motion [] pieces all=1:0fb0956567e3c37e camera=1:0fb0956567e3c37e shadow=1:0fb0956567e3c37e indirect=1:0fb0956567e3c37e +provenance geometry 0..2: /World/Fur +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instancer_primvar_usda-6d97a3b7a8db1d2d-1.digest b/crates/crust-core/tests/data/import_baselines/instancer_primvar_usda-6d97a3b7a8db1d2d-1.digest new file mode 100644 index 000000000..ccbcbee0e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancer_primvar_usda-6d97a3b7a8db1d2d-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/objectId", name: "objectId", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Integer }), components: 1, precision: Uint, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/instancer_primvar.usda"], invisible_overrides: Some(0) } +layer: $DIR/instancer_primvar.usda +warning: Warning { code: PrimvarNotInherited, kind: Skipped, count: 1, prims: ["/World/scatter"], message: "/Render/objectId asks for primvar \"objectId\", which the PointInstancer authors on /World/scatter; crust does not inherit primvars yet, so the prims it would reach read the clear value" } +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6af591a28dce38d4 camera=2:6af591a28dce38d4 shadow=2:6af591a28dce38d4 indirect=2:6af591a28dce38d4 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f13fac7f14521ab4 camera=2:f13fac7f14521ab4 shadow=2:f13fac7f14521ab4 indirect=2:f13fac7f14521ab4 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:34dcfd9ad33939f4 camera=2:34dcfd9ad33939f4 shadow=2:34dcfd9ad33939f4 indirect=2:34dcfd9ad33939f4 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0896fdd98cec0018 camera=2:0896fdd98cec0018 shadow=2:0896fdd98cec0018 indirect=2:0896fdd98cec0018 +provenance light /World/dome: LightOrigin { index: 0, geoms: 4..4 } +provenance geometry 0..4: /World/scatter +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11528131988013333682, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14255589192073905558, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("objectId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instancer_proto_root_reset_child_usda-327d10b931ee4635-1.digest b/crates/crust-core/tests/data/import_baselines/instancer_proto_root_reset_child_usda-327d10b931ee4635-1.digest new file mode 100644 index 000000000..0d304254f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancer_proto_root_reset_child_usda-327d10b931ee4635-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/instancer_proto_root_reset_child.usda"], invisible_overrides: Some(0) } +layer: $DIR/instancer_proto_root_reset_child.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 0, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a1a131ee378392f8 camera=1:a1a131ee378392f8 shadow=1:a1a131ee378392f8 indirect=1:a1a131ee378392f8 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9c525b0d1818d4a8 camera=1:9c525b0d1818d4a8 shadow=1:9c525b0d1818d4a8 indirect=1:9c525b0d1818d4a8 +provenance geometry 0..3: /World/Scatter +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instancer_proto_root_xform_usda-824b2432496695f2-1.digest b/crates/crust-core/tests/data/import_baselines/instancer_proto_root_xform_usda-824b2432496695f2-1.digest new file mode 100644 index 000000000..b82da3769 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancer_proto_root_xform_usda-824b2432496695f2-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/instancer_proto_root_xform.usda"], invisible_overrides: Some(0) } +layer: $DIR/instancer_proto_root_xform.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2599211 motion [] pieces all=1:c639212ee48875b8 camera=1:c639212ee48875b8 shadow=1:c639212ee48875b8 indirect=1:c639212ee48875b8 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2599211 motion [] pieces all=1:850833f17b12a908 camera=1:850833f17b12a908 shadow=1:850833f17b12a908 indirect=1:850833f17b12a908 +provenance geometry 0..2: /World/Scatter +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instancer_usda-24b4955bd587b7fc-1.digest b/crates/crust-core/tests/data/import_baselines/instancer_usda-24b4955bd587b7fc-1.digest new file mode 100644 index 000000000..f34c45c13 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancer_usda-24b4955bd587b7fc-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/instancer.usda"], invisible_overrides: Some(0) } +layer: $DIR/instancer.usda +lights: 0 +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } top level, PrimitiveBreakdown { triangles: 24, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:7ec094e756691da5 camera=12:7ec094e756691da5 shadow=12:7ec094e756691da5 indirect=12:7ec094e756691da5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:beee3a8e41a91045 camera=12:beee3a8e41a91045 shadow=12:beee3a8e41a91045 indirect=12:beee3a8e41a91045 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:93c29f7becbb926d camera=12:93c29f7becbb926d shadow=12:93c29f7becbb926d indirect=12:93c29f7becbb926d +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:10969363fd2b6f51 camera=12:10969363fd2b6f51 shadow=12:10969363fd2b6f51 indirect=12:10969363fd2b6f51 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:5b3e0087dda92511 camera=12:5b3e0087dda92511 shadow=12:5b3e0087dda92511 indirect=12:5b3e0087dda92511 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:a9208ad63c62a98d camera=12:a9208ad63c62a98d shadow=12:a9208ad63c62a98d indirect=12:a9208ad63c62a98d +provenance material /W/Looks/Blue: MaterialOrigin { slots: [0, 2, 4], displaced: false } +provenance material /W/Looks/Red: MaterialOrigin { slots: [1, 3, 5], displaced: false } +provenance geometry 0..6: /W/Scatter +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 1 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instancer_usda-b5460e79ed990f95-1.digest b/crates/crust-core/tests/data/import_baselines/instancer_usda-b5460e79ed990f95-1.digest new file mode 100644 index 000000000..6f4cf90f6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancer_usda-b5460e79ed990f95-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/instancer.usda"], invisible_overrides: Some(0) } +layer: $DIR/instancer.usda +warning: Warning { code: InstancingNoPrototypes, kind: Skipped, count: 1, prims: ["/World/scatter"], message: "PointInstancer at /World/scatter has no `prototypes` targets — skipped" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instancer_usda-c51fcdc4de98cc87-1.digest b/crates/crust-core/tests/data/import_baselines/instancer_usda-c51fcdc4de98cc87-1.digest new file mode 100644 index 000000000..facc372df --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancer_usda-c51fcdc4de98cc87-1.digest @@ -0,0 +1,21 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: true, layer_stack: ["$DIR/instancer.usda"], invisible_overrides: Some(0) } +layer: $DIR/instancer.usda +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.0, 0.0, 0.0))] pieces all=1:da7e4116d4399824 camera=1:da7e4116d4399824 shadow=1:da7e4116d4399824 indirect=1:da7e4116d4399824 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.0, 0.0, 0.0))] pieces all=1:f548d1d419575bc7 camera=1:f548d1d419575bc7 shadow=1:f548d1d419575bc7 indirect=1:f548d1d419575bc7 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.0, 0.0, 0.0))] pieces all=1:fa370466341ccf24 camera=1:fa370466341ccf24 shadow=1:fa370466341ccf24 indirect=1:fa370466341ccf24 +provenance material /World/Glow: MaterialOrigin { slots: [0, 1, 2], displaced: false } +provenance geometry 0..3: /World/Scatter +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instances_usda-0e86a3f92c8bc5d3-1.digest b/crates/crust-core/tests/data/import_baselines/instances_usda-0e86a3f92c8bc5d3-1.digest new file mode 100644 index 000000000..d2ad13581 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instances_usda-0e86a3f92c8bc5d3-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/scatter", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/instances.usda"], invisible_overrides: Some(0) } +layer: $DIR/instances.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d51ecb642f0c8e15 camera=1:d51ecb642f0c8e15 shadow=1:d51ecb642f0c8e15 indirect=1:d51ecb642f0c8e15 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..2: /World/Scatter +provenance geometry 2..3: /World/Rock +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/scatter"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instances_usda-dd5f31a7c4515489-1.digest b/crates/crust-core/tests/data/import_baselines/instances_usda-dd5f31a7c4515489-1.digest new file mode 100644 index 000000000..48d244f28 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instances_usda-dd5f31a7c4515489-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/inside", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/instances.usda"], invisible_overrides: Some(0) } +layer: $DIR/instances.usda +warning: Warning { code: RenderPassTargetInInstance, kind: Approximated, count: 1, prims: ["/Render/Passes/inside"], message: "/Render/Passes/inside: collection:matte targets /World/Rock/Body, inside an instance — membership is judged on the instance, so the target cannot be told apart from its siblings" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d51ecb642f0c8e15 camera=1:d51ecb642f0c8e15 shadow=1:d51ecb642f0c8e15 indirect=1:d51ecb642f0c8e15 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..2: /World/Scatter +provenance geometry 2..3: /World/Rock +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/inside"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-046f52337fabb1a4-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-046f52337fabb1a4-1.digest new file mode 100644 index 000000000..114dabb43 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-046f52337fabb1a4-1.digest @@ -0,0 +1,48 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.2, 13.0), lower_left_corner: Vec3A(-5.6632595, -1.346313, 3.5406666), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.3091636, -0.8866952), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/instancing.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 13 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } top level, PrimitiveBreakdown { triangles: 36, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32b8fc7fab01f734 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:32b8fc7fab01f734 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2599211 motion [] pieces all=8:cb8213f19e1889e5 camera=8:cb8213f19e1889e5 shadow=8:cb8213f19e1889e5 indirect=8:cb8213f19e1889e5 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0079368 motion [] pieces all=8:9f690ca55fcd34b1 camera=8:9f690ca55fcd34b1 shadow=8:9f690ca55fcd34b1 indirect=8:9f690ca55fcd34b1 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.6378974 motion [] pieces all=8:bf00f68921a1ff6d camera=8:bf00f68921a1ff6d shadow=8:bf00f68921a1ff6d indirect=8:bf00f68921a1ff6d +geom 5: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1370313 motion [] pieces all=8:d86fbb7901e66cf5 camera=8:d86fbb7901e66cf5 shadow=8:d86fbb7901e66cf5 indirect=8:d86fbb7901e66cf5 +geom 6: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2962416 motion [] pieces all=8:100fb1034ea0bf45 camera=8:100fb1034ea0bf45 shadow=8:100fb1034ea0bf45 indirect=8:100fb1034ea0bf45 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:01961e1714f11539 camera=12:01961e1714f11539 shadow=12:01961e1714f11539 indirect=12:01961e1714f11539 +geom 8: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:94d0d184098e3ffd camera=12:94d0d184098e3ffd shadow=12:94d0d184098e3ffd indirect=12:94d0d184098e3ffd +geom 9: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d4ab18518f82edfd camera=12:d4ab18518f82edfd shadow=12:d4ab18518f82edfd indirect=12:d4ab18518f82edfd +geom 10: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:83f43ac124235a31 camera=12:83f43ac124235a31 shadow=12:83f43ac124235a31 indirect=12:83f43ac124235a31 +geom 11: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:295cfa9554179a8d camera=12:295cfa9554179a8d shadow=12:295cfa9554179a8d indirect=12:295cfa9554179a8d +geom 12: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:3ea47e28253b632d camera=12:3ea47e28253b632d shadow=12:3ea47e28253b632d indirect=12:3ea47e28253b632d +provenance material /World/Looks/Copper: MaterialOrigin { slots: [8, 10, 12], displaced: false } +provenance material /World/Looks/Emerald: MaterialOrigin { slots: [2, 3, 4, 5, 6, 7, 9, 11], displaced: false } +provenance material /World/Looks/Grey: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 13..13 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..7: /World/Scatter +provenance geometry 7..9: /World/TowerC +provenance geometry 9..11: /World/TowerB +provenance geometry 11..13: /World/TowerA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6822106956337694752, n_points: 6, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2005039782605831059, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-1b870942bf28e01d-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-1b870942bf28e01d-1.digest new file mode 100644 index 000000000..114dabb43 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-1b870942bf28e01d-1.digest @@ -0,0 +1,48 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.2, 13.0), lower_left_corner: Vec3A(-5.6632595, -1.346313, 3.5406666), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.3091636, -0.8866952), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/instancing.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 13 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } top level, PrimitiveBreakdown { triangles: 36, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32b8fc7fab01f734 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:32b8fc7fab01f734 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2599211 motion [] pieces all=8:cb8213f19e1889e5 camera=8:cb8213f19e1889e5 shadow=8:cb8213f19e1889e5 indirect=8:cb8213f19e1889e5 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0079368 motion [] pieces all=8:9f690ca55fcd34b1 camera=8:9f690ca55fcd34b1 shadow=8:9f690ca55fcd34b1 indirect=8:9f690ca55fcd34b1 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.6378974 motion [] pieces all=8:bf00f68921a1ff6d camera=8:bf00f68921a1ff6d shadow=8:bf00f68921a1ff6d indirect=8:bf00f68921a1ff6d +geom 5: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1370313 motion [] pieces all=8:d86fbb7901e66cf5 camera=8:d86fbb7901e66cf5 shadow=8:d86fbb7901e66cf5 indirect=8:d86fbb7901e66cf5 +geom 6: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2962416 motion [] pieces all=8:100fb1034ea0bf45 camera=8:100fb1034ea0bf45 shadow=8:100fb1034ea0bf45 indirect=8:100fb1034ea0bf45 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:01961e1714f11539 camera=12:01961e1714f11539 shadow=12:01961e1714f11539 indirect=12:01961e1714f11539 +geom 8: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:94d0d184098e3ffd camera=12:94d0d184098e3ffd shadow=12:94d0d184098e3ffd indirect=12:94d0d184098e3ffd +geom 9: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d4ab18518f82edfd camera=12:d4ab18518f82edfd shadow=12:d4ab18518f82edfd indirect=12:d4ab18518f82edfd +geom 10: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:83f43ac124235a31 camera=12:83f43ac124235a31 shadow=12:83f43ac124235a31 indirect=12:83f43ac124235a31 +geom 11: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:295cfa9554179a8d camera=12:295cfa9554179a8d shadow=12:295cfa9554179a8d indirect=12:295cfa9554179a8d +geom 12: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:3ea47e28253b632d camera=12:3ea47e28253b632d shadow=12:3ea47e28253b632d indirect=12:3ea47e28253b632d +provenance material /World/Looks/Copper: MaterialOrigin { slots: [8, 10, 12], displaced: false } +provenance material /World/Looks/Emerald: MaterialOrigin { slots: [2, 3, 4, 5, 6, 7, 9, 11], displaced: false } +provenance material /World/Looks/Grey: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 13..13 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..7: /World/Scatter +provenance geometry 7..9: /World/TowerC +provenance geometry 9..11: /World/TowerB +provenance geometry 11..13: /World/TowerA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6822106956337694752, n_points: 6, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2005039782605831059, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-37ed91a3e61701fe-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-37ed91a3e61701fe-1.digest new file mode 100644 index 000000000..114dabb43 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-37ed91a3e61701fe-1.digest @@ -0,0 +1,48 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.2, 13.0), lower_left_corner: Vec3A(-5.6632595, -1.346313, 3.5406666), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.3091636, -0.8866952), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/instancing.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 13 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } top level, PrimitiveBreakdown { triangles: 36, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32b8fc7fab01f734 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:32b8fc7fab01f734 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2599211 motion [] pieces all=8:cb8213f19e1889e5 camera=8:cb8213f19e1889e5 shadow=8:cb8213f19e1889e5 indirect=8:cb8213f19e1889e5 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0079368 motion [] pieces all=8:9f690ca55fcd34b1 camera=8:9f690ca55fcd34b1 shadow=8:9f690ca55fcd34b1 indirect=8:9f690ca55fcd34b1 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.6378974 motion [] pieces all=8:bf00f68921a1ff6d camera=8:bf00f68921a1ff6d shadow=8:bf00f68921a1ff6d indirect=8:bf00f68921a1ff6d +geom 5: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1370313 motion [] pieces all=8:d86fbb7901e66cf5 camera=8:d86fbb7901e66cf5 shadow=8:d86fbb7901e66cf5 indirect=8:d86fbb7901e66cf5 +geom 6: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2962416 motion [] pieces all=8:100fb1034ea0bf45 camera=8:100fb1034ea0bf45 shadow=8:100fb1034ea0bf45 indirect=8:100fb1034ea0bf45 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:01961e1714f11539 camera=12:01961e1714f11539 shadow=12:01961e1714f11539 indirect=12:01961e1714f11539 +geom 8: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:94d0d184098e3ffd camera=12:94d0d184098e3ffd shadow=12:94d0d184098e3ffd indirect=12:94d0d184098e3ffd +geom 9: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d4ab18518f82edfd camera=12:d4ab18518f82edfd shadow=12:d4ab18518f82edfd indirect=12:d4ab18518f82edfd +geom 10: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:83f43ac124235a31 camera=12:83f43ac124235a31 shadow=12:83f43ac124235a31 indirect=12:83f43ac124235a31 +geom 11: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:295cfa9554179a8d camera=12:295cfa9554179a8d shadow=12:295cfa9554179a8d indirect=12:295cfa9554179a8d +geom 12: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:3ea47e28253b632d camera=12:3ea47e28253b632d shadow=12:3ea47e28253b632d indirect=12:3ea47e28253b632d +provenance material /World/Looks/Copper: MaterialOrigin { slots: [8, 10, 12], displaced: false } +provenance material /World/Looks/Emerald: MaterialOrigin { slots: [2, 3, 4, 5, 6, 7, 9, 11], displaced: false } +provenance material /World/Looks/Grey: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 13..13 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..7: /World/Scatter +provenance geometry 7..9: /World/TowerC +provenance geometry 9..11: /World/TowerB +provenance geometry 11..13: /World/TowerA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6822106956337694752, n_points: 6, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2005039782605831059, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-1.digest new file mode 100644 index 000000000..114dabb43 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-1.digest @@ -0,0 +1,48 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.2, 13.0), lower_left_corner: Vec3A(-5.6632595, -1.346313, 3.5406666), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.3091636, -0.8866952), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/instancing.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 13 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } top level, PrimitiveBreakdown { triangles: 36, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32b8fc7fab01f734 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:32b8fc7fab01f734 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2599211 motion [] pieces all=8:cb8213f19e1889e5 camera=8:cb8213f19e1889e5 shadow=8:cb8213f19e1889e5 indirect=8:cb8213f19e1889e5 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0079368 motion [] pieces all=8:9f690ca55fcd34b1 camera=8:9f690ca55fcd34b1 shadow=8:9f690ca55fcd34b1 indirect=8:9f690ca55fcd34b1 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.6378974 motion [] pieces all=8:bf00f68921a1ff6d camera=8:bf00f68921a1ff6d shadow=8:bf00f68921a1ff6d indirect=8:bf00f68921a1ff6d +geom 5: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1370313 motion [] pieces all=8:d86fbb7901e66cf5 camera=8:d86fbb7901e66cf5 shadow=8:d86fbb7901e66cf5 indirect=8:d86fbb7901e66cf5 +geom 6: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2962416 motion [] pieces all=8:100fb1034ea0bf45 camera=8:100fb1034ea0bf45 shadow=8:100fb1034ea0bf45 indirect=8:100fb1034ea0bf45 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:01961e1714f11539 camera=12:01961e1714f11539 shadow=12:01961e1714f11539 indirect=12:01961e1714f11539 +geom 8: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:94d0d184098e3ffd camera=12:94d0d184098e3ffd shadow=12:94d0d184098e3ffd indirect=12:94d0d184098e3ffd +geom 9: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d4ab18518f82edfd camera=12:d4ab18518f82edfd shadow=12:d4ab18518f82edfd indirect=12:d4ab18518f82edfd +geom 10: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:83f43ac124235a31 camera=12:83f43ac124235a31 shadow=12:83f43ac124235a31 indirect=12:83f43ac124235a31 +geom 11: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:295cfa9554179a8d camera=12:295cfa9554179a8d shadow=12:295cfa9554179a8d indirect=12:295cfa9554179a8d +geom 12: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:3ea47e28253b632d camera=12:3ea47e28253b632d shadow=12:3ea47e28253b632d indirect=12:3ea47e28253b632d +provenance material /World/Looks/Copper: MaterialOrigin { slots: [8, 10, 12], displaced: false } +provenance material /World/Looks/Emerald: MaterialOrigin { slots: [2, 3, 4, 5, 6, 7, 9, 11], displaced: false } +provenance material /World/Looks/Grey: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 13..13 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..7: /World/Scatter +provenance geometry 7..9: /World/TowerC +provenance geometry 9..11: /World/TowerB +provenance geometry 11..13: /World/TowerA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6822106956337694752, n_points: 6, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2005039782605831059, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-2.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-2.digest new file mode 100644 index 000000000..114dabb43 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-2.digest @@ -0,0 +1,48 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.2, 13.0), lower_left_corner: Vec3A(-5.6632595, -1.346313, 3.5406666), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.3091636, -0.8866952), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/instancing.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 13 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } top level, PrimitiveBreakdown { triangles: 36, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32b8fc7fab01f734 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:32b8fc7fab01f734 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2599211 motion [] pieces all=8:cb8213f19e1889e5 camera=8:cb8213f19e1889e5 shadow=8:cb8213f19e1889e5 indirect=8:cb8213f19e1889e5 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0079368 motion [] pieces all=8:9f690ca55fcd34b1 camera=8:9f690ca55fcd34b1 shadow=8:9f690ca55fcd34b1 indirect=8:9f690ca55fcd34b1 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.6378974 motion [] pieces all=8:bf00f68921a1ff6d camera=8:bf00f68921a1ff6d shadow=8:bf00f68921a1ff6d indirect=8:bf00f68921a1ff6d +geom 5: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1370313 motion [] pieces all=8:d86fbb7901e66cf5 camera=8:d86fbb7901e66cf5 shadow=8:d86fbb7901e66cf5 indirect=8:d86fbb7901e66cf5 +geom 6: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2962416 motion [] pieces all=8:100fb1034ea0bf45 camera=8:100fb1034ea0bf45 shadow=8:100fb1034ea0bf45 indirect=8:100fb1034ea0bf45 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:01961e1714f11539 camera=12:01961e1714f11539 shadow=12:01961e1714f11539 indirect=12:01961e1714f11539 +geom 8: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:94d0d184098e3ffd camera=12:94d0d184098e3ffd shadow=12:94d0d184098e3ffd indirect=12:94d0d184098e3ffd +geom 9: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d4ab18518f82edfd camera=12:d4ab18518f82edfd shadow=12:d4ab18518f82edfd indirect=12:d4ab18518f82edfd +geom 10: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:83f43ac124235a31 camera=12:83f43ac124235a31 shadow=12:83f43ac124235a31 indirect=12:83f43ac124235a31 +geom 11: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:295cfa9554179a8d camera=12:295cfa9554179a8d shadow=12:295cfa9554179a8d indirect=12:295cfa9554179a8d +geom 12: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:3ea47e28253b632d camera=12:3ea47e28253b632d shadow=12:3ea47e28253b632d indirect=12:3ea47e28253b632d +provenance material /World/Looks/Copper: MaterialOrigin { slots: [8, 10, 12], displaced: false } +provenance material /World/Looks/Emerald: MaterialOrigin { slots: [2, 3, 4, 5, 6, 7, 9, 11], displaced: false } +provenance material /World/Looks/Grey: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 13..13 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..7: /World/Scatter +provenance geometry 7..9: /World/TowerC +provenance geometry 9..11: /World/TowerB +provenance geometry 11..13: /World/TowerA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6822106956337694752, n_points: 6, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2005039782605831059, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-4c123aa1f400f41f-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-4c123aa1f400f41f-1.digest new file mode 100644 index 000000000..114dabb43 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-4c123aa1f400f41f-1.digest @@ -0,0 +1,48 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.2, 13.0), lower_left_corner: Vec3A(-5.6632595, -1.346313, 3.5406666), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.3091636, -0.8866952), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/instancing.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 13 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } top level, PrimitiveBreakdown { triangles: 36, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32b8fc7fab01f734 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:32b8fc7fab01f734 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2599211 motion [] pieces all=8:cb8213f19e1889e5 camera=8:cb8213f19e1889e5 shadow=8:cb8213f19e1889e5 indirect=8:cb8213f19e1889e5 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0079368 motion [] pieces all=8:9f690ca55fcd34b1 camera=8:9f690ca55fcd34b1 shadow=8:9f690ca55fcd34b1 indirect=8:9f690ca55fcd34b1 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.6378974 motion [] pieces all=8:bf00f68921a1ff6d camera=8:bf00f68921a1ff6d shadow=8:bf00f68921a1ff6d indirect=8:bf00f68921a1ff6d +geom 5: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1370313 motion [] pieces all=8:d86fbb7901e66cf5 camera=8:d86fbb7901e66cf5 shadow=8:d86fbb7901e66cf5 indirect=8:d86fbb7901e66cf5 +geom 6: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2962416 motion [] pieces all=8:100fb1034ea0bf45 camera=8:100fb1034ea0bf45 shadow=8:100fb1034ea0bf45 indirect=8:100fb1034ea0bf45 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:01961e1714f11539 camera=12:01961e1714f11539 shadow=12:01961e1714f11539 indirect=12:01961e1714f11539 +geom 8: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:94d0d184098e3ffd camera=12:94d0d184098e3ffd shadow=12:94d0d184098e3ffd indirect=12:94d0d184098e3ffd +geom 9: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d4ab18518f82edfd camera=12:d4ab18518f82edfd shadow=12:d4ab18518f82edfd indirect=12:d4ab18518f82edfd +geom 10: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:83f43ac124235a31 camera=12:83f43ac124235a31 shadow=12:83f43ac124235a31 indirect=12:83f43ac124235a31 +geom 11: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:295cfa9554179a8d camera=12:295cfa9554179a8d shadow=12:295cfa9554179a8d indirect=12:295cfa9554179a8d +geom 12: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:3ea47e28253b632d camera=12:3ea47e28253b632d shadow=12:3ea47e28253b632d indirect=12:3ea47e28253b632d +provenance material /World/Looks/Copper: MaterialOrigin { slots: [8, 10, 12], displaced: false } +provenance material /World/Looks/Emerald: MaterialOrigin { slots: [2, 3, 4, 5, 6, 7, 9, 11], displaced: false } +provenance material /World/Looks/Grey: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 13..13 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..7: /World/Scatter +provenance geometry 7..9: /World/TowerC +provenance geometry 9..11: /World/TowerB +provenance geometry 11..13: /World/TowerA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6822106956337694752, n_points: 6, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2005039782605831059, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-4d15fe3f4f1fa7d2-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-4d15fe3f4f1fa7d2-1.digest new file mode 100644 index 000000000..114dabb43 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-4d15fe3f4f1fa7d2-1.digest @@ -0,0 +1,48 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.2, 13.0), lower_left_corner: Vec3A(-5.6632595, -1.346313, 3.5406666), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.3091636, -0.8866952), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/instancing.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 13 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } top level, PrimitiveBreakdown { triangles: 36, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32b8fc7fab01f734 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:32b8fc7fab01f734 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2599211 motion [] pieces all=8:cb8213f19e1889e5 camera=8:cb8213f19e1889e5 shadow=8:cb8213f19e1889e5 indirect=8:cb8213f19e1889e5 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0079368 motion [] pieces all=8:9f690ca55fcd34b1 camera=8:9f690ca55fcd34b1 shadow=8:9f690ca55fcd34b1 indirect=8:9f690ca55fcd34b1 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.6378974 motion [] pieces all=8:bf00f68921a1ff6d camera=8:bf00f68921a1ff6d shadow=8:bf00f68921a1ff6d indirect=8:bf00f68921a1ff6d +geom 5: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1370313 motion [] pieces all=8:d86fbb7901e66cf5 camera=8:d86fbb7901e66cf5 shadow=8:d86fbb7901e66cf5 indirect=8:d86fbb7901e66cf5 +geom 6: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2962416 motion [] pieces all=8:100fb1034ea0bf45 camera=8:100fb1034ea0bf45 shadow=8:100fb1034ea0bf45 indirect=8:100fb1034ea0bf45 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:01961e1714f11539 camera=12:01961e1714f11539 shadow=12:01961e1714f11539 indirect=12:01961e1714f11539 +geom 8: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:94d0d184098e3ffd camera=12:94d0d184098e3ffd shadow=12:94d0d184098e3ffd indirect=12:94d0d184098e3ffd +geom 9: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d4ab18518f82edfd camera=12:d4ab18518f82edfd shadow=12:d4ab18518f82edfd indirect=12:d4ab18518f82edfd +geom 10: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:83f43ac124235a31 camera=12:83f43ac124235a31 shadow=12:83f43ac124235a31 indirect=12:83f43ac124235a31 +geom 11: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:295cfa9554179a8d camera=12:295cfa9554179a8d shadow=12:295cfa9554179a8d indirect=12:295cfa9554179a8d +geom 12: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:3ea47e28253b632d camera=12:3ea47e28253b632d shadow=12:3ea47e28253b632d indirect=12:3ea47e28253b632d +provenance material /World/Looks/Copper: MaterialOrigin { slots: [8, 10, 12], displaced: false } +provenance material /World/Looks/Emerald: MaterialOrigin { slots: [2, 3, 4, 5, 6, 7, 9, 11], displaced: false } +provenance material /World/Looks/Grey: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 13..13 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..7: /World/Scatter +provenance geometry 7..9: /World/TowerC +provenance geometry 9..11: /World/TowerB +provenance geometry 11..13: /World/TowerA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6822106956337694752, n_points: 6, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2005039782605831059, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-5aa111b242f25730-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-5aa111b242f25730-1.digest new file mode 100644 index 000000000..cb5e3ab96 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-5aa111b242f25730-1.digest @@ -0,0 +1,47 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.2, 13.0), lower_left_corner: Vec3A(-5.6632595, -1.346313, 3.5406666), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.3091636, -0.8866952), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/instancing.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 13 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } top level, PrimitiveBreakdown { triangles: 36, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32b8fc7fab01f734 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:32b8fc7fab01f734 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2599211 motion [] pieces all=8:cb8213f19e1889e5 camera=8:cb8213f19e1889e5 shadow=8:cb8213f19e1889e5 indirect=8:cb8213f19e1889e5 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0079368 motion [] pieces all=8:9f690ca55fcd34b1 camera=8:9f690ca55fcd34b1 shadow=8:9f690ca55fcd34b1 indirect=8:9f690ca55fcd34b1 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.6378974 motion [] pieces all=8:bf00f68921a1ff6d camera=8:bf00f68921a1ff6d shadow=8:bf00f68921a1ff6d indirect=8:bf00f68921a1ff6d +geom 5: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1370313 motion [] pieces all=8:d86fbb7901e66cf5 camera=8:d86fbb7901e66cf5 shadow=8:d86fbb7901e66cf5 indirect=8:d86fbb7901e66cf5 +geom 6: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2962416 motion [] pieces all=8:100fb1034ea0bf45 camera=8:100fb1034ea0bf45 shadow=8:100fb1034ea0bf45 indirect=8:100fb1034ea0bf45 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:01961e1714f11539 camera=12:01961e1714f11539 shadow=12:01961e1714f11539 indirect=12:01961e1714f11539 +geom 8: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:94d0d184098e3ffd camera=12:94d0d184098e3ffd shadow=12:94d0d184098e3ffd indirect=12:94d0d184098e3ffd +geom 9: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d4ab18518f82edfd camera=12:d4ab18518f82edfd shadow=12:d4ab18518f82edfd indirect=12:d4ab18518f82edfd +geom 10: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:83f43ac124235a31 camera=12:83f43ac124235a31 shadow=12:83f43ac124235a31 indirect=12:83f43ac124235a31 +geom 11: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:295cfa9554179a8d camera=12:295cfa9554179a8d shadow=12:295cfa9554179a8d indirect=12:295cfa9554179a8d +geom 12: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:3ea47e28253b632d camera=12:3ea47e28253b632d shadow=12:3ea47e28253b632d indirect=12:3ea47e28253b632d +provenance material /World/Looks/Copper: MaterialOrigin { slots: [8, 10, 12], displaced: false } +provenance material /World/Looks/Emerald: MaterialOrigin { slots: [2, 3, 4, 5, 6, 7, 9, 11], displaced: false } +provenance material /World/Looks/Grey: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 13..13 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..7: /World/Scatter +provenance geometry 7..9: /World/TowerC +provenance geometry 9..11: /World/TowerB +provenance geometry 11..13: /World/TowerA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6822106956337694752, n_points: 6, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2005039782605831059, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-1.digest new file mode 100644 index 000000000..114dabb43 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-1.digest @@ -0,0 +1,48 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.2, 13.0), lower_left_corner: Vec3A(-5.6632595, -1.346313, 3.5406666), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.3091636, -0.8866952), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/instancing.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 13 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } top level, PrimitiveBreakdown { triangles: 36, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32b8fc7fab01f734 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:32b8fc7fab01f734 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2599211 motion [] pieces all=8:cb8213f19e1889e5 camera=8:cb8213f19e1889e5 shadow=8:cb8213f19e1889e5 indirect=8:cb8213f19e1889e5 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0079368 motion [] pieces all=8:9f690ca55fcd34b1 camera=8:9f690ca55fcd34b1 shadow=8:9f690ca55fcd34b1 indirect=8:9f690ca55fcd34b1 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.6378974 motion [] pieces all=8:bf00f68921a1ff6d camera=8:bf00f68921a1ff6d shadow=8:bf00f68921a1ff6d indirect=8:bf00f68921a1ff6d +geom 5: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1370313 motion [] pieces all=8:d86fbb7901e66cf5 camera=8:d86fbb7901e66cf5 shadow=8:d86fbb7901e66cf5 indirect=8:d86fbb7901e66cf5 +geom 6: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2962416 motion [] pieces all=8:100fb1034ea0bf45 camera=8:100fb1034ea0bf45 shadow=8:100fb1034ea0bf45 indirect=8:100fb1034ea0bf45 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:01961e1714f11539 camera=12:01961e1714f11539 shadow=12:01961e1714f11539 indirect=12:01961e1714f11539 +geom 8: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:94d0d184098e3ffd camera=12:94d0d184098e3ffd shadow=12:94d0d184098e3ffd indirect=12:94d0d184098e3ffd +geom 9: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d4ab18518f82edfd camera=12:d4ab18518f82edfd shadow=12:d4ab18518f82edfd indirect=12:d4ab18518f82edfd +geom 10: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:83f43ac124235a31 camera=12:83f43ac124235a31 shadow=12:83f43ac124235a31 indirect=12:83f43ac124235a31 +geom 11: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:295cfa9554179a8d camera=12:295cfa9554179a8d shadow=12:295cfa9554179a8d indirect=12:295cfa9554179a8d +geom 12: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:3ea47e28253b632d camera=12:3ea47e28253b632d shadow=12:3ea47e28253b632d indirect=12:3ea47e28253b632d +provenance material /World/Looks/Copper: MaterialOrigin { slots: [8, 10, 12], displaced: false } +provenance material /World/Looks/Emerald: MaterialOrigin { slots: [2, 3, 4, 5, 6, 7, 9, 11], displaced: false } +provenance material /World/Looks/Grey: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 13..13 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..7: /World/Scatter +provenance geometry 7..9: /World/TowerC +provenance geometry 9..11: /World/TowerB +provenance geometry 11..13: /World/TowerA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6822106956337694752, n_points: 6, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2005039782605831059, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-2.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-2.digest new file mode 100644 index 000000000..114dabb43 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-2.digest @@ -0,0 +1,48 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.2, 13.0), lower_left_corner: Vec3A(-5.6632595, -1.346313, 3.5406666), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.3091636, -0.8866952), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/instancing.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 13 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } top level, PrimitiveBreakdown { triangles: 36, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32b8fc7fab01f734 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:32b8fc7fab01f734 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2599211 motion [] pieces all=8:cb8213f19e1889e5 camera=8:cb8213f19e1889e5 shadow=8:cb8213f19e1889e5 indirect=8:cb8213f19e1889e5 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0079368 motion [] pieces all=8:9f690ca55fcd34b1 camera=8:9f690ca55fcd34b1 shadow=8:9f690ca55fcd34b1 indirect=8:9f690ca55fcd34b1 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.6378974 motion [] pieces all=8:bf00f68921a1ff6d camera=8:bf00f68921a1ff6d shadow=8:bf00f68921a1ff6d indirect=8:bf00f68921a1ff6d +geom 5: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1370313 motion [] pieces all=8:d86fbb7901e66cf5 camera=8:d86fbb7901e66cf5 shadow=8:d86fbb7901e66cf5 indirect=8:d86fbb7901e66cf5 +geom 6: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2962416 motion [] pieces all=8:100fb1034ea0bf45 camera=8:100fb1034ea0bf45 shadow=8:100fb1034ea0bf45 indirect=8:100fb1034ea0bf45 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:01961e1714f11539 camera=12:01961e1714f11539 shadow=12:01961e1714f11539 indirect=12:01961e1714f11539 +geom 8: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:94d0d184098e3ffd camera=12:94d0d184098e3ffd shadow=12:94d0d184098e3ffd indirect=12:94d0d184098e3ffd +geom 9: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d4ab18518f82edfd camera=12:d4ab18518f82edfd shadow=12:d4ab18518f82edfd indirect=12:d4ab18518f82edfd +geom 10: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:83f43ac124235a31 camera=12:83f43ac124235a31 shadow=12:83f43ac124235a31 indirect=12:83f43ac124235a31 +geom 11: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:295cfa9554179a8d camera=12:295cfa9554179a8d shadow=12:295cfa9554179a8d indirect=12:295cfa9554179a8d +geom 12: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:3ea47e28253b632d camera=12:3ea47e28253b632d shadow=12:3ea47e28253b632d indirect=12:3ea47e28253b632d +provenance material /World/Looks/Copper: MaterialOrigin { slots: [8, 10, 12], displaced: false } +provenance material /World/Looks/Emerald: MaterialOrigin { slots: [2, 3, 4, 5, 6, 7, 9, 11], displaced: false } +provenance material /World/Looks/Grey: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 13..13 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..7: /World/Scatter +provenance geometry 7..9: /World/TowerC +provenance geometry 9..11: /World/TowerB +provenance geometry 11..13: /World/TowerA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6822106956337694752, n_points: 6, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2005039782605831059, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-bee611607d893be7-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-bee611607d893be7-1.digest new file mode 100644 index 000000000..114dabb43 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-bee611607d893be7-1.digest @@ -0,0 +1,48 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.2, 13.0), lower_left_corner: Vec3A(-5.6632595, -1.346313, 3.5406666), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.3091636, -0.8866952), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/instancing.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 13 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } top level, PrimitiveBreakdown { triangles: 36, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32b8fc7fab01f734 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:32b8fc7fab01f734 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2599211 motion [] pieces all=8:cb8213f19e1889e5 camera=8:cb8213f19e1889e5 shadow=8:cb8213f19e1889e5 indirect=8:cb8213f19e1889e5 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0079368 motion [] pieces all=8:9f690ca55fcd34b1 camera=8:9f690ca55fcd34b1 shadow=8:9f690ca55fcd34b1 indirect=8:9f690ca55fcd34b1 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.6378974 motion [] pieces all=8:bf00f68921a1ff6d camera=8:bf00f68921a1ff6d shadow=8:bf00f68921a1ff6d indirect=8:bf00f68921a1ff6d +geom 5: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1370313 motion [] pieces all=8:d86fbb7901e66cf5 camera=8:d86fbb7901e66cf5 shadow=8:d86fbb7901e66cf5 indirect=8:d86fbb7901e66cf5 +geom 6: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2962416 motion [] pieces all=8:100fb1034ea0bf45 camera=8:100fb1034ea0bf45 shadow=8:100fb1034ea0bf45 indirect=8:100fb1034ea0bf45 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:01961e1714f11539 camera=12:01961e1714f11539 shadow=12:01961e1714f11539 indirect=12:01961e1714f11539 +geom 8: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:94d0d184098e3ffd camera=12:94d0d184098e3ffd shadow=12:94d0d184098e3ffd indirect=12:94d0d184098e3ffd +geom 9: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d4ab18518f82edfd camera=12:d4ab18518f82edfd shadow=12:d4ab18518f82edfd indirect=12:d4ab18518f82edfd +geom 10: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:83f43ac124235a31 camera=12:83f43ac124235a31 shadow=12:83f43ac124235a31 indirect=12:83f43ac124235a31 +geom 11: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:295cfa9554179a8d camera=12:295cfa9554179a8d shadow=12:295cfa9554179a8d indirect=12:295cfa9554179a8d +geom 12: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:3ea47e28253b632d camera=12:3ea47e28253b632d shadow=12:3ea47e28253b632d indirect=12:3ea47e28253b632d +provenance material /World/Looks/Copper: MaterialOrigin { slots: [8, 10, 12], displaced: false } +provenance material /World/Looks/Emerald: MaterialOrigin { slots: [2, 3, 4, 5, 6, 7, 9, 11], displaced: false } +provenance material /World/Looks/Grey: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 13..13 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..7: /World/Scatter +provenance geometry 7..9: /World/TowerC +provenance geometry 9..11: /World/TowerB +provenance geometry 11..13: /World/TowerA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6822106956337694752, n_points: 6, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2005039782605831059, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-c51a6942a8212cb9-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-c51a6942a8212cb9-1.digest new file mode 100644 index 000000000..114dabb43 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-c51a6942a8212cb9-1.digest @@ -0,0 +1,48 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.2, 13.0), lower_left_corner: Vec3A(-5.6632595, -1.346313, 3.5406666), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.3091636, -0.8866952), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/instancing.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 13 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } top level, PrimitiveBreakdown { triangles: 36, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32b8fc7fab01f734 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:32b8fc7fab01f734 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2599211 motion [] pieces all=8:cb8213f19e1889e5 camera=8:cb8213f19e1889e5 shadow=8:cb8213f19e1889e5 indirect=8:cb8213f19e1889e5 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0079368 motion [] pieces all=8:9f690ca55fcd34b1 camera=8:9f690ca55fcd34b1 shadow=8:9f690ca55fcd34b1 indirect=8:9f690ca55fcd34b1 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.6378974 motion [] pieces all=8:bf00f68921a1ff6d camera=8:bf00f68921a1ff6d shadow=8:bf00f68921a1ff6d indirect=8:bf00f68921a1ff6d +geom 5: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1370313 motion [] pieces all=8:d86fbb7901e66cf5 camera=8:d86fbb7901e66cf5 shadow=8:d86fbb7901e66cf5 indirect=8:d86fbb7901e66cf5 +geom 6: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2962416 motion [] pieces all=8:100fb1034ea0bf45 camera=8:100fb1034ea0bf45 shadow=8:100fb1034ea0bf45 indirect=8:100fb1034ea0bf45 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:01961e1714f11539 camera=12:01961e1714f11539 shadow=12:01961e1714f11539 indirect=12:01961e1714f11539 +geom 8: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:94d0d184098e3ffd camera=12:94d0d184098e3ffd shadow=12:94d0d184098e3ffd indirect=12:94d0d184098e3ffd +geom 9: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d4ab18518f82edfd camera=12:d4ab18518f82edfd shadow=12:d4ab18518f82edfd indirect=12:d4ab18518f82edfd +geom 10: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:83f43ac124235a31 camera=12:83f43ac124235a31 shadow=12:83f43ac124235a31 indirect=12:83f43ac124235a31 +geom 11: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:295cfa9554179a8d camera=12:295cfa9554179a8d shadow=12:295cfa9554179a8d indirect=12:295cfa9554179a8d +geom 12: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:3ea47e28253b632d camera=12:3ea47e28253b632d shadow=12:3ea47e28253b632d indirect=12:3ea47e28253b632d +provenance material /World/Looks/Copper: MaterialOrigin { slots: [8, 10, 12], displaced: false } +provenance material /World/Looks/Emerald: MaterialOrigin { slots: [2, 3, 4, 5, 6, 7, 9, 11], displaced: false } +provenance material /World/Looks/Grey: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 13..13 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..7: /World/Scatter +provenance geometry 7..9: /World/TowerC +provenance geometry 9..11: /World/TowerB +provenance geometry 11..13: /World/TowerA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6822106956337694752, n_points: 6, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2005039782605831059, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/instantaneous_usda-3e155a939a6cc6cd-1.digest b/crates/crust-core/tests/data/import_baselines/instantaneous_usda-3e155a939a6cc6cd-1.digest new file mode 100644 index 000000000..9b1002bfa --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instantaneous_usda-3e155a939a6cc6cd-1.digest @@ -0,0 +1,35 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/comp", name: "instant.exr", vars: [AovVar { prim_path: "/Render/comp/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/comp/forward", name: "forward", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/instantaneous.usda", "$ROOT/samples/animation.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/animation.usda +layer: $DIR/instantaneous.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $ROOT/samples/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +warning: Warning { code: CameraShutterInstantaneous, kind: Approximated, count: 1, prims: ["/World/Mover"], message: "A motionvector var is requested, but the camera's shutter is instantaneous: the time-sampled transforms of 1 drawn prim's move nothing and their vectors read zero (the first at /World/Mover). Author the camera's shutter:open / shutter:close to measure them" } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:04a229f6b721d5f0 camera=2:04a229f6b721d5f0 shadow=2:04a229f6b721d5f0 indirect=2:04a229f6b721d5f0 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:eca0c2f96d67613b camera=1:eca0c2f96d67613b shadow=1:eca0c2f96d67613b indirect=1:eca0c2f96d67613b +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 4..4 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Card +provenance geometry 3..4: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16680805309457723353, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/int_id_usda-520c4dc179153d4f-1.digest b/crates/crust-core/tests/data/import_baselines/int_id_usda-520c4dc179153d4f-1.digest new file mode 100644 index 000000000..b1d62184a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/int_id_usda-520c4dc179153d4f-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/objectId", name: "objectId", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Integer }), components: 1, precision: Uint, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/int_id.usda"], invisible_overrides: Some(0) } +layer: $DIR/int_id.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:32f1a52c797bfee5 camera=2:32f1a52c797bfee5 shadow=2:32f1a52c797bfee5 indirect=2:32f1a52c797bfee5 +provenance light /World/dome: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/mesh +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18307585920983551366, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("objectId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/invalid_light_sizes_usda-9c386d5a319bfe23-1.digest b/crates/crust-core/tests/data/import_baselines/invalid_light_sizes_usda-9c386d5a319bfe23-1.digest new file mode 100644 index 000000000..63ab49294 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/invalid_light_sizes_usda-9c386d5a319bfe23-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/invalid_light_sizes.usda"], invisible_overrides: Some(0) } +layer: $DIR/invalid_light_sizes.usda +warning: Warning { code: LightDegenerateShape, kind: Skipped, count: 4, prims: ["/World/NegativeDisk", "/World/ZeroTube", "/World/ZeroSphere", "/World/FlatRect"], message: "/World/NegativeDisk: Disk light radius -1 must be finite and positive — skipped" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/Fine") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 1, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 1, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:81f922b1ea201c01 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:81f922b1ea201c01 +provenance light /World/Fine: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Fine +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/invalid_usda-d575a3c70872d8d6-1.digest b/crates/crust-core/tests/data/import_baselines/invalid_usda-d575a3c70872d8d6-1.digest new file mode 100644 index 000000000..65f3712b6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/invalid_usda-d575a3c70872d8d6-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 5.0), lower_left_corner: Vec3A(-0.27183646, -0.15290801, -5.0), horizontal: Vec3A(0.5436729, 0.0, 0.0), vertical: Vec3A(0.0, 0.30581602, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 500.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/invalid.usda"], invisible_overrides: Some(0) } +layer: $DIR/invalid.usda +warning: Warning { code: CameraInvalidClipping, kind: Refused, count: 1, prims: ["/World/Cam"], message: "/World/Cam: clippingRange = (10, 2) is not 0 <= near < far; the camera clips to no range" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d5fa2ac5108a1585 camera=1:d5fa2ac5108a1585 shadow=1:d5fa2ac5108a1585 indirect=1:d5fa2ac5108a1585 +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/invariant_0_05_usda-adfdce9489c2fe04-1.digest b/crates/crust-core/tests/data/import_baselines/invariant_0_05_usda-adfdce9489c2fe04-1.digest new file mode 100644 index 000000000..5595d0219 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/invariant_0_05_usda-adfdce9489c2fe04-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 4, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/look_out", name: "look_out", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/final", name: "final", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 1, output: 0, components: 3, radiance: false }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/look"], display_filters: ["/Render/soft", "/Render/graded"], display: "final" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/invariant_0.05.usda"], invisible_overrides: Some(0) } +layer: $DIR/invariant_0.05.usda +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/invariant_0_usda-4ea5be31deb326f6-1.digest b/crates/crust-core/tests/data/import_baselines/invariant_0_usda-4ea5be31deb326f6-1.digest new file mode 100644 index 000000000..cb55ae95b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/invariant_0_usda-4ea5be31deb326f6-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 4, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/look_out", name: "look_out", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/final", name: "final", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 1, output: 0, components: 3, radiance: false }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/look"], display_filters: ["/Render/soft", "/Render/graded"], display: "final" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/invariant_0.usda"], invisible_overrides: Some(0) } +layer: $DIR/invariant_0.usda +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-1.digest b/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-1.digest new file mode 100644 index 000000000..cf9c6951a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/leaf.usda"], invisible_overrides: Some(0) } +layer: $DIR/leaf.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "UsdPreviewSurface (textured)", cutout: true, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02ff87c392969355 camera=2:02ff87c392969355 shadow=2:02ff87c392969355 indirect=2:02ff87c392969355 +provenance material /World/Asset/Leaf: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Card +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17822791014403781691, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-2.digest b/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-2.digest new file mode 100644 index 000000000..cf9c6951a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-2.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/leaf.usda"], invisible_overrides: Some(0) } +layer: $DIR/leaf.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "UsdPreviewSurface (textured)", cutout: true, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02ff87c392969355 camera=2:02ff87c392969355 shadow=2:02ff87c392969355 indirect=2:02ff87c392969355 +provenance material /World/Asset/Leaf: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Card +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17822791014403781691, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/leaf_usda-c026046b07c5fbb8-1.digest b/crates/crust-core/tests/data/import_baselines/leaf_usda-c026046b07c5fbb8-1.digest new file mode 100644 index 000000000..cf9c6951a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/leaf_usda-c026046b07c5fbb8-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/leaf.usda"], invisible_overrides: Some(0) } +layer: $DIR/leaf.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "UsdPreviewSurface (textured)", cutout: true, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02ff87c392969355 camera=2:02ff87c392969355 shadow=2:02ff87c392969355 indirect=2:02ff87c392969355 +provenance material /World/Asset/Leaf: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Card +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17822791014403781691, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/leaf_usda-d886c4e05035aaa7-1.digest b/crates/crust-core/tests/data/import_baselines/leaf_usda-d886c4e05035aaa7-1.digest new file mode 100644 index 000000000..cf9c6951a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/leaf_usda-d886c4e05035aaa7-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/leaf.usda"], invisible_overrides: Some(0) } +layer: $DIR/leaf.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "UsdPreviewSurface (textured)", cutout: true, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02ff87c392969355 camera=2:02ff87c392969355 shadow=2:02ff87c392969355 indirect=2:02ff87c392969355 +provenance material /World/Asset/Leaf: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Card +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17822791014403781691, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/leaf_usda-e14e254e24f8bc2e-1.digest b/crates/crust-core/tests/data/import_baselines/leaf_usda-e14e254e24f8bc2e-1.digest new file mode 100644 index 000000000..cf9c6951a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/leaf_usda-e14e254e24f8bc2e-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/leaf.usda"], invisible_overrides: Some(0) } +layer: $DIR/leaf.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "UsdPreviewSurface (textured)", cutout: true, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02ff87c392969355 camera=2:02ff87c392969355 shadow=2:02ff87c392969355 indirect=2:02ff87c392969355 +provenance material /World/Asset/Leaf: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Card +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17822791014403781691, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/left_handed_baked_usda-9363c3fa472cdcde-1.digest b/crates/crust-core/tests/data/import_baselines/left_handed_baked_usda-9363c3fa472cdcde-1.digest new file mode 100644 index 000000000..15c62a422 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/left_handed_baked_usda-9363c3fa472cdcde-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/left_handed_baked.usda"], invisible_overrides: Some(0) } +layer: $DIR/left_handed_baked.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:86c6f40691773ee5 camera=2:86c6f40691773ee5 shadow=2:86c6f40691773ee5 indirect=2:86c6f40691773ee5 +provenance geometry 0..1: /World/A/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12696385469104175492, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/left_handed_instanced_usda-f9d8d0fbabf00605-1.digest b/crates/crust-core/tests/data/import_baselines/left_handed_instanced_usda-f9d8d0fbabf00605-1.digest new file mode 100644 index 000000000..c83ca308b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/left_handed_instanced_usda-f9d8d0fbabf00605-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/left_handed_instanced.usda"], invisible_overrides: Some(0) } +layer: $DIR/left_handed_instanced.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:a7251036e0a63935 camera=2:a7251036e0a63935 shadow=2:a7251036e0a63935 indirect=2:a7251036e0a63935 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:86c6f40691773ee5 camera=2:86c6f40691773ee5 shadow=2:86c6f40691773ee5 indirect=2:86c6f40691773ee5 +provenance geometry 0..1: /World/B/Quad +provenance geometry 1..2: /World/A/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12696385469104175492, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/left_handed_mirrored_usda-b73e3433c9e6bccf-1.digest b/crates/crust-core/tests/data/import_baselines/left_handed_mirrored_usda-b73e3433c9e6bccf-1.digest new file mode 100644 index 000000000..01ff8fac8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/left_handed_mirrored_usda-b73e3433c9e6bccf-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/left_handed_mirrored.usda"], invisible_overrides: Some(0) } +layer: $DIR/left_handed_mirrored.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:bf8483ca0aa0dce5 camera=2:bf8483ca0aa0dce5 shadow=2:bf8483ca0aa0dce5 indirect=2:bf8483ca0aa0dce5 +provenance geometry 0..1: /World/M/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12696385469104175492, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/left_handed_subdivided_usda-bd37842befe48e18-1.digest b/crates/crust-core/tests/data/import_baselines/left_handed_subdivided_usda-bd37842befe48e18-1.digest new file mode 100644 index 000000000..1e3123fd9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/left_handed_subdivided_usda-bd37842befe48e18-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/left_handed_subdivided.usda"], invisible_overrides: Some(0) } +layer: $DIR/left_handed_subdivided.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=32:66fc8b710415fb25 camera=32:66fc8b710415fb25 shadow=32:66fc8b710415fb25 indirect=32:66fc8b710415fb25 +provenance geometry 0..1: /World/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1634387286851437130, n_points: 25, n_indices: 64, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/left_handed_tri_usda-ba795e2eb1c56aef-1.digest b/crates/crust-core/tests/data/import_baselines/left_handed_tri_usda-ba795e2eb1c56aef-1.digest new file mode 100644 index 000000000..8be440cbe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/left_handed_tri_usda-ba795e2eb1c56aef-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/left_handed_tri.usda"], invisible_overrides: Some(0) } +layer: $DIR/left_handed_tri.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 1, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7d46b655e85855d5 camera=1:7d46b655e85855d5 shadow=1:7d46b655e85855d5 indirect=1:7d46b655e85855d5 +provenance geometry 0..1: /World/Tri +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4650619398470359651, n_points: 3, n_indices: 3, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lens_cm_usda-73dbd961c243712e-1.digest b/crates/crust-core/tests/data/import_baselines/lens_cm_usda-73dbd961c243712e-1.digest new file mode 100644 index 000000000..c574d87f4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lens_cm_usda-73dbd961c243712e-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-135.91823, -76.454, -500.0), horizontal: Vec3A(271.83646, 0.0, 0.0), vertical: Vec3A(0.0, 152.908, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 1.25, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 500.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/lens_cm.usda"], invisible_overrides: Some(0) } +layer: $DIR/lens_cm.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lens_fstop_usda-da4d1cf71564d625-1.digest b/crates/crust-core/tests/data/import_baselines/lens_fstop_usda-da4d1cf71564d625-1.digest new file mode 100644 index 000000000..480e27f8a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lens_fstop_usda-da4d1cf71564d625-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.625, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 4.0, focus_distance: 10.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/lens_fstop.usda"], invisible_overrides: Some(0) } +layer: $DIR/lens_fstop.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lens_m_usda-983a5a6e5f39e694-1.digest b/crates/crust-core/tests/data/import_baselines/lens_m_usda-983a5a6e5f39e694-1.digest new file mode 100644 index 000000000..21ceeef75 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lens_m_usda-983a5a6e5f39e694-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0125, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 10.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/lens_m.usda"], invisible_overrides: Some(0) } +layer: $DIR/lens_m.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lens_unauthored_usda-24a6800a9f22c131-1.digest b/crates/crust-core/tests/data/import_baselines/lens_unauthored_usda-24a6800a9f22c131-1.digest new file mode 100644 index 000000000..0516643d1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lens_unauthored_usda-24a6800a9f22c131-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 1.25, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 10.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/lens_unauthored.usda"], invisible_overrides: Some(0) } +layer: $DIR/lens_unauthored.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/level_two_usda-9004a66abae4e107-1.digest b/crates/crust-core/tests/data/import_baselines/level_two_usda-9004a66abae4e107-1.digest new file mode 100644 index 000000000..4323c7401 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/level_two_usda-9004a66abae4e107-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/level_two.usda"], invisible_overrides: Some(0) } +layer: $DIR/level_two.usda +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 384, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:949758d384b32209 camera=192:949758d384b32209 shadow=192:949758d384b32209 indirect=192:949758d384b32209 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:5cc397e9d90a8ef9 camera=192:5cc397e9d90a8ef9 shadow=192:5cc397e9d90a8ef9 indirect=192:5cc397e9d90a8ef9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:1eae59518f3f3e89 camera=192:1eae59518f3f3e89 shadow=192:1eae59518f3f3e89 indirect=192:1eae59518f3f3e89 +provenance geometry 0..2: /W/Scatter +provenance geometry 2..3: /W/Near +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5789864894772039601, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: Some(2.0), skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 2])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-1.digest b/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-1.digest new file mode 100644 index 000000000..17cde0f45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-1.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 9.0), lower_left_corner: Vec3A(-5.6632595, -2.195088, -0.119155884), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.231942, -1.3246402), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9781476, -0.20791169), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/light_linking.usda"], invisible_overrides: Some(0) } +layer: $DIR/light_linking.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 8 geometries, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:147e304cdaa43315 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:147e304cdaa43315 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3bb65d4d618d300f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3bb65d4d618d300f +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:414b9060aeb9fa5b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:414b9060aeb9fa5b +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:66555abe449aad95 camera=12:66555abe449aad95 shadow=0:cbf29ce484222325 indirect=12:66555abe449aad95 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d864e332b6f2885f camera=1:d864e332b6f2885f shadow=1:d864e332b6f2885f indirect=1:d864e332b6f2885f +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b3ac5caa5601a5fa camera=1:b3ac5caa5601a5fa shadow=1:b3ac5caa5601a5fa indirect=1:b3ac5caa5601a5fa +geom 6: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3fd5e7ad4a18db8b camera=1:3fd5e7ad4a18db8b shadow=1:3fd5e7ad4a18db8b indirect=1:3fd5e7ad4a18db8b +geom 7: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Pillar +provenance geometry 4..5: /World/Right +provenance geometry 5..6: /World/Hero +provenance geometry 6..7: /World/Left +provenance geometry 7..8: /World/Floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8639962265279651952, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [4, 5, 6] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-2.digest b/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-2.digest new file mode 100644 index 000000000..17cde0f45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-2.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 9.0), lower_left_corner: Vec3A(-5.6632595, -2.195088, -0.119155884), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.231942, -1.3246402), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9781476, -0.20791169), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/light_linking.usda"], invisible_overrides: Some(0) } +layer: $DIR/light_linking.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 8 geometries, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:147e304cdaa43315 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:147e304cdaa43315 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3bb65d4d618d300f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3bb65d4d618d300f +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:414b9060aeb9fa5b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:414b9060aeb9fa5b +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:66555abe449aad95 camera=12:66555abe449aad95 shadow=0:cbf29ce484222325 indirect=12:66555abe449aad95 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d864e332b6f2885f camera=1:d864e332b6f2885f shadow=1:d864e332b6f2885f indirect=1:d864e332b6f2885f +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b3ac5caa5601a5fa camera=1:b3ac5caa5601a5fa shadow=1:b3ac5caa5601a5fa indirect=1:b3ac5caa5601a5fa +geom 6: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3fd5e7ad4a18db8b camera=1:3fd5e7ad4a18db8b shadow=1:3fd5e7ad4a18db8b indirect=1:3fd5e7ad4a18db8b +geom 7: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Pillar +provenance geometry 4..5: /World/Right +provenance geometry 5..6: /World/Hero +provenance geometry 6..7: /World/Left +provenance geometry 7..8: /World/Floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8639962265279651952, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [4, 5, 6] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/light_linking_usda-0df578a9208fb7cf-1.digest b/crates/crust-core/tests/data/import_baselines/light_linking_usda-0df578a9208fb7cf-1.digest new file mode 100644 index 000000000..17cde0f45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_linking_usda-0df578a9208fb7cf-1.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 9.0), lower_left_corner: Vec3A(-5.6632595, -2.195088, -0.119155884), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.231942, -1.3246402), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9781476, -0.20791169), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/light_linking.usda"], invisible_overrides: Some(0) } +layer: $DIR/light_linking.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 8 geometries, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:147e304cdaa43315 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:147e304cdaa43315 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3bb65d4d618d300f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3bb65d4d618d300f +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:414b9060aeb9fa5b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:414b9060aeb9fa5b +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:66555abe449aad95 camera=12:66555abe449aad95 shadow=0:cbf29ce484222325 indirect=12:66555abe449aad95 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d864e332b6f2885f camera=1:d864e332b6f2885f shadow=1:d864e332b6f2885f indirect=1:d864e332b6f2885f +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b3ac5caa5601a5fa camera=1:b3ac5caa5601a5fa shadow=1:b3ac5caa5601a5fa indirect=1:b3ac5caa5601a5fa +geom 6: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3fd5e7ad4a18db8b camera=1:3fd5e7ad4a18db8b shadow=1:3fd5e7ad4a18db8b indirect=1:3fd5e7ad4a18db8b +geom 7: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Pillar +provenance geometry 4..5: /World/Right +provenance geometry 5..6: /World/Hero +provenance geometry 6..7: /World/Left +provenance geometry 7..8: /World/Floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8639962265279651952, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [4, 5, 6] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/light_linking_usda-84012730e231d407-1.digest b/crates/crust-core/tests/data/import_baselines/light_linking_usda-84012730e231d407-1.digest new file mode 100644 index 000000000..17cde0f45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_linking_usda-84012730e231d407-1.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 9.0), lower_left_corner: Vec3A(-5.6632595, -2.195088, -0.119155884), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.231942, -1.3246402), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9781476, -0.20791169), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/light_linking.usda"], invisible_overrides: Some(0) } +layer: $DIR/light_linking.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 8 geometries, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:147e304cdaa43315 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:147e304cdaa43315 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3bb65d4d618d300f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3bb65d4d618d300f +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:414b9060aeb9fa5b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:414b9060aeb9fa5b +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:66555abe449aad95 camera=12:66555abe449aad95 shadow=0:cbf29ce484222325 indirect=12:66555abe449aad95 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d864e332b6f2885f camera=1:d864e332b6f2885f shadow=1:d864e332b6f2885f indirect=1:d864e332b6f2885f +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b3ac5caa5601a5fa camera=1:b3ac5caa5601a5fa shadow=1:b3ac5caa5601a5fa indirect=1:b3ac5caa5601a5fa +geom 6: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3fd5e7ad4a18db8b camera=1:3fd5e7ad4a18db8b shadow=1:3fd5e7ad4a18db8b indirect=1:3fd5e7ad4a18db8b +geom 7: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Pillar +provenance geometry 4..5: /World/Right +provenance geometry 5..6: /World/Hero +provenance geometry 6..7: /World/Left +provenance geometry 7..8: /World/Floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8639962265279651952, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [4, 5, 6] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/light_linking_usda-a83ba5cc073d5f22-1.digest b/crates/crust-core/tests/data/import_baselines/light_linking_usda-a83ba5cc073d5f22-1.digest new file mode 100644 index 000000000..18cd31ad2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_linking_usda-a83ba5cc073d5f22-1.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 9.0), lower_left_corner: Vec3A(-5.6632595, -2.195088, -0.119155884), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.231942, -1.3246402), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9781476, -0.20791169), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/light_linking.usda"], invisible_overrides: Some(0) } +layer: $DIR/light_linking.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe None pmf 0.33333334 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 8 geometries, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:147e304cdaa43315 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:147e304cdaa43315 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3bb65d4d618d300f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3bb65d4d618d300f +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:414b9060aeb9fa5b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:414b9060aeb9fa5b +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:66555abe449aad95 camera=12:66555abe449aad95 shadow=0:cbf29ce484222325 indirect=12:66555abe449aad95 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d864e332b6f2885f camera=1:d864e332b6f2885f shadow=1:d864e332b6f2885f indirect=1:d864e332b6f2885f +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b3ac5caa5601a5fa camera=1:b3ac5caa5601a5fa shadow=1:b3ac5caa5601a5fa indirect=1:b3ac5caa5601a5fa +geom 6: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3fd5e7ad4a18db8b camera=1:3fd5e7ad4a18db8b shadow=1:3fd5e7ad4a18db8b indirect=1:3fd5e7ad4a18db8b +geom 7: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Pillar +provenance geometry 4..5: /World/Right +provenance geometry 5..6: /World/Hero +provenance geometry 6..7: /World/Left +provenance geometry 7..8: /World/Floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8639962265279651952, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [4, 5, 6] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/light_samples_default_usda-6242aa388fa102a1-1.digest b/crates/crust-core/tests/data/import_baselines/light_samples_default_usda-6242aa388fa102a1-1.digest new file mode 100644 index 000000000..c11fdc76d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_samples_default_usda-6242aa388fa102a1-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/light_samples_default.usda"], invisible_overrides: Some(0) } +layer: $DIR/light_samples_default.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/light_samples_huge_usda-128d1881332e6fff-1.digest b/crates/crust-core/tests/data/import_baselines/light_samples_huge_usda-128d1881332e6fff-1.digest new file mode 100644 index 000000000..5cf508152 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_samples_huge_usda-128d1881332e6fff-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1024, light_samples_indirect: 1024, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/light_samples_huge.usda"], invisible_overrides: Some(0) } +layer: $DIR/light_samples_huge.usda +warning: Warning { code: SettingsLightSamplesClamped, kind: Approximated, count: 1, prims: ["/Render/settings"], message: "crust:lightSamples = 1000000000 is above 1024 — taking 1024" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/light_samples_zero_usda-516355bd0568c89e-1.digest b/crates/crust-core/tests/data/import_baselines/light_samples_zero_usda-516355bd0568c89e-1.digest new file mode 100644 index 000000000..21dd07674 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_samples_zero_usda-516355bd0568c89e-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/light_samples_zero.usda"], invisible_overrides: Some(0) } +layer: $DIR/light_samples_zero.usda +warning: Warning { code: SettingsInvalidValue, kind: Refused, count: 2, prims: ["/Render/settings"], message: "crust:lightSamples = 0 is below 1 — taking 1" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-1.digest b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-1.digest new file mode 100644 index 000000000..f67135ef8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-1.digest @@ -0,0 +1,32 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 8.0), lower_left_corner: Vec3A(-4.365625, -2.365625, -2.0), horizontal: Vec3A(8.73125, 0.0, 0.0), vertical: Vec3A(0.0, 8.73125, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 8, max_depth: 4, width: 64, height: 64, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 64 }, min_samples_per_pixel: 4, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/light_visibility.usda"], invisible_overrides: Some(0) } +layer: $DIR/light_visibility.usda +lights: 3 +light 0: area name Some("/World/Masked") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Visible") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Default") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 2, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fca091c7590bdfb8 camera=1:fca091c7590bdfb8 shadow=1:fca091c7590bdfb8 indirect=1:fca091c7590bdfb8 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ea8cf4535fd53b08 camera=1:ea8cf4535fd53b08 shadow=1:ea8cf4535fd53b08 indirect=1:ea8cf4535fd53b08 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d2febdc7836711b8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d2febdc7836711b8 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance light /World/Default: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Masked: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Visible: LightOrigin { index: 1, geoms: 1..2 } +provenance geometry 0..1: /World/Masked +provenance geometry 1..2: /World/Visible +provenance geometry 2..3: /World/Default +provenance geometry 3..4: /World/Floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-2.digest b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-2.digest new file mode 100644 index 000000000..f67135ef8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-2.digest @@ -0,0 +1,32 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 8.0), lower_left_corner: Vec3A(-4.365625, -2.365625, -2.0), horizontal: Vec3A(8.73125, 0.0, 0.0), vertical: Vec3A(0.0, 8.73125, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 8, max_depth: 4, width: 64, height: 64, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 64 }, min_samples_per_pixel: 4, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/light_visibility.usda"], invisible_overrides: Some(0) } +layer: $DIR/light_visibility.usda +lights: 3 +light 0: area name Some("/World/Masked") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Visible") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Default") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 2, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fca091c7590bdfb8 camera=1:fca091c7590bdfb8 shadow=1:fca091c7590bdfb8 indirect=1:fca091c7590bdfb8 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ea8cf4535fd53b08 camera=1:ea8cf4535fd53b08 shadow=1:ea8cf4535fd53b08 indirect=1:ea8cf4535fd53b08 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d2febdc7836711b8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d2febdc7836711b8 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance light /World/Default: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Masked: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Visible: LightOrigin { index: 1, geoms: 1..2 } +provenance geometry 0..1: /World/Masked +provenance geometry 1..2: /World/Visible +provenance geometry 2..3: /World/Default +provenance geometry 3..4: /World/Floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/light_visibility_usda-2b8ba6eb3030d1ec-1.digest b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-2b8ba6eb3030d1ec-1.digest new file mode 100644 index 000000000..f67135ef8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-2b8ba6eb3030d1ec-1.digest @@ -0,0 +1,32 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 8.0), lower_left_corner: Vec3A(-4.365625, -2.365625, -2.0), horizontal: Vec3A(8.73125, 0.0, 0.0), vertical: Vec3A(0.0, 8.73125, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 8, max_depth: 4, width: 64, height: 64, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 64 }, min_samples_per_pixel: 4, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/light_visibility.usda"], invisible_overrides: Some(0) } +layer: $DIR/light_visibility.usda +lights: 3 +light 0: area name Some("/World/Masked") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Visible") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Default") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 2, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fca091c7590bdfb8 camera=1:fca091c7590bdfb8 shadow=1:fca091c7590bdfb8 indirect=1:fca091c7590bdfb8 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ea8cf4535fd53b08 camera=1:ea8cf4535fd53b08 shadow=1:ea8cf4535fd53b08 indirect=1:ea8cf4535fd53b08 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d2febdc7836711b8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d2febdc7836711b8 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance light /World/Default: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Masked: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Visible: LightOrigin { index: 1, geoms: 1..2 } +provenance geometry 0..1: /World/Masked +provenance geometry 1..2: /World/Visible +provenance geometry 2..3: /World/Default +provenance geometry 3..4: /World/Floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/light_visibility_usda-3ea0aa2435326544-1.digest b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-3ea0aa2435326544-1.digest new file mode 100644 index 000000000..a255a52c9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-3ea0aa2435326544-1.digest @@ -0,0 +1,32 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 8.0), lower_left_corner: Vec3A(-4.365625, -2.365625, -2.0), horizontal: Vec3A(8.73125, 0.0, 0.0), vertical: Vec3A(0.0, 8.73125, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 8, max_depth: 4, width: 64, height: 64, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 64 }, min_samples_per_pixel: 4, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/light_visibility.usda"], invisible_overrides: Some(0) } +layer: $DIR/light_visibility.usda +lights: 3 +light 0: area name Some("/World/Masked") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Visible") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Default") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 2, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fca091c7590bdfb8 camera=1:fca091c7590bdfb8 shadow=1:fca091c7590bdfb8 indirect=1:fca091c7590bdfb8 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ea8cf4535fd53b08 camera=1:ea8cf4535fd53b08 shadow=1:ea8cf4535fd53b08 indirect=1:ea8cf4535fd53b08 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d2febdc7836711b8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d2febdc7836711b8 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance light /World/Default: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Masked: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Visible: LightOrigin { index: 1, geoms: 1..2 } +provenance geometry 0..1: /World/Masked +provenance geometry 1..2: /World/Visible +provenance geometry 2..3: /World/Default +provenance geometry 3..4: /World/Floor +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/linked_bsdf_1024_usda-00c8472dfa9bd263-1.digest b/crates/crust-core/tests/data/import_baselines/linked_bsdf_1024_usda-00c8472dfa9bd263-1.digest new file mode 100644 index 000000000..071d302aa --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/linked_bsdf_1024_usda-00c8472dfa9bd263-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 6.0, 0.0), lower_left_corner: Vec3A(-5.142858, -4.0, 5.142858), horizontal: Vec3A(10.285716, -0.0, 0.0), vertical: Vec3A(0.0, 2.2838878e-15, -10.285716), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 2.220446e-16, -1.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 1024, max_depth: 1, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 1024, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 36.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/linked_bsdf_1024.usda"], invisible_overrides: Some(0) } +layer: $DIR/linked_bsdf_1024.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:330029d7b0dd8ea5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:330029d7b0dd8ea5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Hero +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/linked_bsdf_16_usda-f488614962bd77c6-1.digest b/crates/crust-core/tests/data/import_baselines/linked_bsdf_16_usda-f488614962bd77c6-1.digest new file mode 100644 index 000000000..577ce4328 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/linked_bsdf_16_usda-f488614962bd77c6-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 6.0, 0.0), lower_left_corner: Vec3A(-5.142858, -4.0, 5.142858), horizontal: Vec3A(10.285716, -0.0, 0.0), vertical: Vec3A(0.0, 2.2838878e-15, -10.285716), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 2.220446e-16, -1.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 1, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 36.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/linked_bsdf_16.usda"], invisible_overrides: Some(0) } +layer: $DIR/linked_bsdf_16.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:330029d7b0dd8ea5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:330029d7b0dd8ea5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Hero +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/linked_light_1024_usda-42bcc0ce33e153f3-1.digest b/crates/crust-core/tests/data/import_baselines/linked_light_1024_usda-42bcc0ce33e153f3-1.digest new file mode 100644 index 000000000..9f008ef28 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/linked_light_1024_usda-42bcc0ce33e153f3-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 6.0, 0.0), lower_left_corner: Vec3A(-5.142858, -4.0, 5.142858), horizontal: Vec3A(10.285716, -0.0, 0.0), vertical: Vec3A(0.0, 2.2838878e-15, -10.285716), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 2.220446e-16, -1.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 1024, max_depth: 1, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 1024, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 36.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/linked_light_1024.usda"], invisible_overrides: Some(0) } +layer: $DIR/linked_light_1024.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:330029d7b0dd8ea5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:330029d7b0dd8ea5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Hero +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/linked_light_16_usda-94637210b45ab59a-1.digest b/crates/crust-core/tests/data/import_baselines/linked_light_16_usda-94637210b45ab59a-1.digest new file mode 100644 index 000000000..0e75d92c9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/linked_light_16_usda-94637210b45ab59a-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 6.0, 0.0), lower_left_corner: Vec3A(-5.142858, -4.0, 5.142858), horizontal: Vec3A(10.285716, -0.0, 0.0), vertical: Vec3A(0.0, 2.2838878e-15, -10.285716), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 2.220446e-16, -1.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 1, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 36.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/linked_light_16.usda"], invisible_overrides: Some(0) } +layer: $DIR/linked_light_16.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:330029d7b0dd8ea5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:330029d7b0dd8ea5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Hero +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/linked_power_16_usda-eebb6febe29b133c-1.digest b/crates/crust-core/tests/data/import_baselines/linked_power_16_usda-eebb6febe29b133c-1.digest new file mode 100644 index 000000000..8c395cb23 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/linked_power_16_usda-eebb6febe29b133c-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 6.0, 0.0), lower_left_corner: Vec3A(-5.142858, -4.0, 5.142858), horizontal: Vec3A(10.285716, -0.0, 0.0), vertical: Vec3A(0.0, 2.2838878e-15, -10.285716), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 2.220446e-16, -1.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 1, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 36.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/linked_power_16.usda"], invisible_overrides: Some(0) } +layer: $DIR/linked_power_16.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:330029d7b0dd8ea5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:330029d7b0dd8ea5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Hero +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/listing_usda-3efcced39a72eaa9-1.digest b/crates/crust-core/tests/data/import_baselines/listing_usda-3efcced39a72eaa9-1.digest new file mode 100644 index 000000000..7426a04f6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/listing_usda-3efcced39a72eaa9-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Main") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/listing.usda"], invisible_overrides: Some(0) } +layer: $DIR/listing.usda +warning: Warning { code: LightDegenerateShape, kind: Skipped, count: 1, prims: ["/W/Degenerate"], message: "/W/Degenerate: Sphere light radius 0 must be finite and positive — skipped" } +warning: Warning { code: InstancingEmptyPrototype, kind: Skipped, count: 2, prims: ["/W/Scatter/P", "/__Prototype_0"], message: "Prototype /W/Scatter/P contributed no geometry" } +lights: 2 +light 0: dome name Some("/W/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/W/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cb23190431d38ee5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:cb23190431d38ee5 +provenance light /W/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /W/Key +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/Main"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Main"), cameras: ["/W/Last", "/W/Hidden/Witness", "/W/Main"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Main"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/listing_usda-488ac4c542f2b8d8-1.digest b/crates/crust-core/tests/data/import_baselines/listing_usda-488ac4c542f2b8d8-1.digest new file mode 100644 index 000000000..05ae52e5f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/listing_usda-488ac4c542f2b8d8-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Last") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/listing.usda"], invisible_overrides: Some(0) } +layer: $DIR/listing.usda +warning: Warning { code: LightDegenerateShape, kind: Skipped, count: 1, prims: ["/W/Degenerate"], message: "/W/Degenerate: Sphere light radius 0 must be finite and positive — skipped" } +warning: Warning { code: InstancingEmptyPrototype, kind: Skipped, count: 2, prims: ["/W/Scatter/P", "/__Prototype_0"], message: "Prototype /W/Scatter/P contributed no geometry" } +lights: 2 +light 0: dome name Some("/W/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/W/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cb23190431d38ee5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:cb23190431d38ee5 +provenance light /W/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /W/Key +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Last"), cameras: ["/W/Last", "/W/Hidden/Witness", "/W/Main"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Last"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/listing_usda-f960655cad0d43f4-1.digest b/crates/crust-core/tests/data/import_baselines/listing_usda-f960655cad0d43f4-1.digest new file mode 100644 index 000000000..2b5bbb45e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/listing_usda-f960655cad0d43f4-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Hidden/Witness") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/listing.usda"], invisible_overrides: Some(0) } +layer: $DIR/listing.usda +warning: Warning { code: LightDegenerateShape, kind: Skipped, count: 1, prims: ["/W/Degenerate"], message: "/W/Degenerate: Sphere light radius 0 must be finite and positive — skipped" } +warning: Warning { code: InstancingEmptyPrototype, kind: Skipped, count: 2, prims: ["/W/Scatter/P", "/__Prototype_0"], message: "Prototype /W/Scatter/P contributed no geometry" } +lights: 2 +light 0: dome name Some("/W/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/W/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cb23190431d38ee5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:cb23190431d38ee5 +provenance light /W/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /W/Key +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/Hidden/Witness"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Hidden/Witness"), cameras: ["/W/Last", "/W/Hidden/Witness", "/W/Main"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Hidden/Witness"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/listing_usda-fd4c266bcdd26a9c-1.digest b/crates/crust-core/tests/data/import_baselines/listing_usda-fd4c266bcdd26a9c-1.digest new file mode 100644 index 000000000..3e288428f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/listing_usda-fd4c266bcdd26a9c-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Last") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/listing.usda"], invisible_overrides: Some(0) } +layer: $DIR/listing.usda +warning: Warning { code: LightDegenerateShape, kind: Skipped, count: 1, prims: ["/W/Degenerate"], message: "/W/Degenerate: Sphere light radius 0 must be finite and positive — skipped" } +warning: Warning { code: InstancingEmptyPrototype, kind: Skipped, count: 2, prims: ["/W/Scatter/P", "/__Prototype_0"], message: "Prototype /W/Scatter/P contributed no geometry" } +lights: 2 +light 0: dome name Some("/W/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/W/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cb23190431d38ee5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:cb23190431d38ee5 +provenance light /W/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /W/Key +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/Last"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Last"), cameras: ["/W/Last", "/W/Hidden/Witness", "/W/Main"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Last"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_cube_usda-4cf5f22f20fef745-1.digest b/crates/crust-core/tests/data/import_baselines/live_cube_usda-4cf5f22f20fef745-1.digest new file mode 100644 index 000000000..a60135693 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_cube_usda-4cf5f22f20fef745-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-3.0581603, -1.5290802, 0.0), horizontal: Vec3A(6.1163206, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_cube.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_cube.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d3f93325e3445105 camera=12:d3f93325e3445105 shadow=12:d3f93325e3445105 indirect=12:d3f93325e3445105 +provenance geometry 0..1: /W/Shape +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9204403525635746283, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_cylinder_unnamed_usda-7b7e7a1709504194-1.digest b/crates/crust-core/tests/data/import_baselines/live_cylinder_unnamed_usda-7b7e7a1709504194-1.digest new file mode 100644 index 000000000..3e7966f56 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_cylinder_unnamed_usda-7b7e7a1709504194-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-3.0581603, -1.5290802, 0.0), horizontal: Vec3A(6.1163206, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_cylinder_unnamed.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_cylinder_unnamed.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:417dbfabd3a17585 camera=192:417dbfabd3a17585 shadow=192:417dbfabd3a17585 indirect=192:417dbfabd3a17585 +provenance geometry 0..1: /W/Shape +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6877125351767401758, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_cylinder_usda-07218dcdd495ca91-1.digest b/crates/crust-core/tests/data/import_baselines/live_cylinder_usda-07218dcdd495ca91-1.digest new file mode 100644 index 000000000..11a050ceb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_cylinder_usda-07218dcdd495ca91-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-3.0581603, -1.5290802, 0.0), horizontal: Vec3A(6.1163206, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_cylinder.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_cylinder.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 64, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=64:5f84dcb3c52b7405 camera=64:5f84dcb3c52b7405 shadow=64:5f84dcb3c52b7405 indirect=64:5f84dcb3c52b7405 +provenance geometry 0..1: /W/Shape +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13212365895451826409, n_points: 66, n_indices: 160, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 1092616192, 1121011379, 0, 0, 1092616192, 3212836864, 0, 3197932522, 1065353216, 0, 3197932522, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-1.digest b/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-1.digest new file mode 100644 index 000000000..c19cac6d4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/live_demoted_light.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_demoted_light.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 4 +light 0: area name Some("/W/K1") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/W/K2") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/W/K3") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/W/K4") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee57dfea4661cce3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ee57dfea4661cce3 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:15501014f6ccffa4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:15501014f6ccffa4 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 3: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a357e5efbc0c08cc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a357e5efbc0c08cc +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:18dc8de5ad9d8317 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:18dc8de5ad9d8317 +geom 5: material #5 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /W/K1: LightOrigin { index: 0, geoms: 0..1 } +provenance light /W/K2: LightOrigin { index: 1, geoms: 1..2 } +provenance light /W/K3: LightOrigin { index: 2, geoms: 3..4 } +provenance light /W/K4: LightOrigin { index: 3, geoms: 4..5 } +provenance geometry 0..1: /W/K1 +provenance geometry 1..2: /W/K2 +provenance geometry 2..3: /W/Dead +provenance geometry 3..4: /W/K3 +provenance geometry 4..5: /W/K4 +provenance geometry 5..6: /W/Floor +provenance mesh: MeshOrigin { geom_id: 5, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-2.digest b/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-2.digest new file mode 100644 index 000000000..c19cac6d4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-2.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/live_demoted_light.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_demoted_light.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 4 +light 0: area name Some("/W/K1") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/W/K2") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/W/K3") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/W/K4") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee57dfea4661cce3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ee57dfea4661cce3 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:15501014f6ccffa4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:15501014f6ccffa4 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 3: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a357e5efbc0c08cc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a357e5efbc0c08cc +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:18dc8de5ad9d8317 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:18dc8de5ad9d8317 +geom 5: material #5 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /W/K1: LightOrigin { index: 0, geoms: 0..1 } +provenance light /W/K2: LightOrigin { index: 1, geoms: 1..2 } +provenance light /W/K3: LightOrigin { index: 2, geoms: 3..4 } +provenance light /W/K4: LightOrigin { index: 3, geoms: 4..5 } +provenance geometry 0..1: /W/K1 +provenance geometry 1..2: /W/K2 +provenance geometry 2..3: /W/Dead +provenance geometry 3..4: /W/K3 +provenance geometry 4..5: /W/K4 +provenance geometry 5..6: /W/Floor +provenance mesh: MeshOrigin { geom_id: 5, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_dicing_none_usda-fde7cae55b0adc90-1.digest b/crates/crust-core/tests/data/import_baselines/live_dicing_none_usda-fde7cae55b0adc90-1.digest new file mode 100644 index 000000000..64e1105c6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_dicing_none_usda-fde7cae55b0adc90-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-4.8, -2.4, 0.0), horizontal: Vec3A(9.6, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_dicing_none.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_dicing_none.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 714, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 714, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=714:3e4f5ff3a9a07f75 camera=714:3e4f5ff3a9a07f75 shadow=714:3e4f5ff3a9a07f75 indirect=714:3e4f5ff3a9a07f75 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /W/Cage +provenance geometry 1..2: /W/Ball +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2684244338757133449, n_points: 359, n_indices: 2142, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 1092616192, 1116034389, 0, 0, 1092616192, 3212836864, 0, 3203777167, 1065353216, 0, 3203777167, 0, 3212836864, 3195388559, 0, 1065353216, 3195388559, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Dicer", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_dicing_retarget_usda-682d6c0fca1a4c12-1.digest b/crates/crust-core/tests/data/import_baselines/live_dicing_retarget_usda-682d6c0fca1a4c12-1.digest new file mode 100644 index 000000000..e80f76961 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_dicing_retarget_usda-682d6c0fca1a4c12-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-4.8, -2.4, 0.0), horizontal: Vec3A(9.6, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_dicing_retarget.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_dicing_retarget.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 502, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 502, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=502:6396f027b367ad8a camera=502:6396f027b367ad8a shadow=502:6396f027b367ad8a indirect=502:6396f027b367ad8a +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /W/Cage +provenance geometry 1..2: /W/Ball +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9653551266655765309, n_points: 253, n_indices: 1506, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1065353216, 1094713344, 1116034389, 0, 1065353216, 1094713344, 3212836864, 0, 3203777167, 1065353216, 0, 3203777167, 0, 3212836864, 3195388559, 0, 1065353216, 3195388559, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Dicer", "/W/Cam"], dicing: Some("/W/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_dicing_usda-8bb261767fad5d1d-1.digest b/crates/crust-core/tests/data/import_baselines/live_dicing_usda-8bb261767fad5d1d-1.digest new file mode 100644 index 000000000..00cca413b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_dicing_usda-8bb261767fad5d1d-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-4.8, -2.4, 0.0), horizontal: Vec3A(9.6, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_dicing.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_dicing.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 502, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 502, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=502:6396f027b367ad8a camera=502:6396f027b367ad8a shadow=502:6396f027b367ad8a indirect=502:6396f027b367ad8a +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /W/Cage +provenance geometry 1..2: /W/Ball +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9653551266655765309, n_points: 253, n_indices: 1506, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1065353216, 1094713344, 1116034389, 0, 1065353216, 1094713344, 3212836864, 0, 3203777167, 1065353216, 0, 3203777167, 0, 3212836864, 3195388559, 0, 1065353216, 3195388559, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Dicer", "/W/Cam"], dicing: Some("/W/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_dicing_usda-c3c9ffc84677f809-1.digest b/crates/crust-core/tests/data/import_baselines/live_dicing_usda-c3c9ffc84677f809-1.digest new file mode 100644 index 000000000..d375c60eb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_dicing_usda-c3c9ffc84677f809-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 7.0), lower_left_corner: Vec3A(-4.8, -2.4, -3.0), horizontal: Vec3A(9.6, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_dicing.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_dicing.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 502, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 502, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=502:6396f027b367ad8a camera=502:6396f027b367ad8a shadow=502:6396f027b367ad8a indirect=502:6396f027b367ad8a +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /W/Cage +provenance geometry 1..2: /W/Ball +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9653551266655765309, n_points: 253, n_indices: 1506, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1065353216, 1094713344, 1116034389, 0, 1065353216, 1094713344, 3212836864, 0, 3203777167, 1065353216, 0, 3203777167, 0, 3212836864, 3195388559, 0, 1065353216, 3195388559, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Dicer", "/W/Cam"], dicing: Some("/W/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_framing_adaptive_usda-264a6722f87e2488-1.digest b/crates/crust-core/tests/data/import_baselines/live_framing_adaptive_usda-264a6722f87e2488-1.digest new file mode 100644 index 000000000..a391f0295 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_framing_adaptive_usda-264a6722f87e2488-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-4.8, -2.4, 0.0), horizontal: Vec3A(9.6, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_framing_adaptive.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_framing_adaptive.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 714, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 714, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=714:3e4f5ff3a9a07f75 camera=714:3e4f5ff3a9a07f75 shadow=714:3e4f5ff3a9a07f75 indirect=714:3e4f5ff3a9a07f75 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /W/Cage +provenance geometry 1..2: /W/Ball +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2684244338757133449, n_points: 359, n_indices: 2142, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 1092616192, 1116034389, 0, 0, 1092616192, 3212836864, 0, 3203777167, 1065353216, 0, 3203777167, 0, 3212836864, 3195388559, 0, 1065353216, 3195388559, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_framing_usda-21ec0fb4edc0e3e0-1.digest b/crates/crust-core/tests/data/import_baselines/live_framing_usda-21ec0fb4edc0e3e0-1.digest new file mode 100644 index 000000000..4cb67fdb6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_framing_usda-21ec0fb4edc0e3e0-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-3.6000001, -1.8000001, 0.0), horizontal: Vec3A(7.2000003, 0.0, 0.0), vertical: Vec3A(0.0, 3.6000001, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "adjustApertureHeight", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_framing.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_framing.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /W/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-1.digest b/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-1.digest new file mode 100644 index 000000000..3d088ce1b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-4.8, -2.4, 0.0), horizontal: Vec3A(9.6, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_framing.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_framing.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /W/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-2.digest b/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-2.digest new file mode 100644 index 000000000..3d088ce1b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-2.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-4.8, -2.4, 0.0), horizontal: Vec3A(9.6, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_framing.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_framing.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /W/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_primvar_warnings_usda-bb9c911d0ed38f94-1.digest b/crates/crust-core/tests/data/import_baselines/live_primvar_warnings_usda-bb9c911d0ed38f94-1.digest new file mode 100644 index 000000000..dc3f43a75 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_primvar_warnings_usda-bb9c911d0ed38f94-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0954998, -2.0954998, 0.0), horizontal: Vec3A(4.1909995, 0.0, 0.0), vertical: Vec3A(0.0, 4.1909995, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 32, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/withRest", name: "rest.exr", vars: [AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_primvar_warnings.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_primvar_warnings.usda +warning: Warning { code: PrimvarNotInherited, kind: Skipped, count: 1, prims: ["/W"], message: "/Render/Pref asks for primvar \"rest\", which an ancestor authors on /W above /W/M; crust does not inherit primvars yet, so the prims it would reach read the clear value" } +warning: Warning { code: PrimvarMismatch, kind: Skipped, count: 1, prims: ["/W/N"], message: "/Render/Pref asks for primvar \"rest\" as 3 component(s), but /W/N authors it as float2[] (2 component(s)); that prim reads the clear value" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 3, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 3, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32f1a52c797bfee5 camera=2:32f1a52c797bfee5 shadow=2:32f1a52c797bfee5 indirect=2:32f1a52c797bfee5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f5cbcc0cc135c768 camera=1:f5cbcc0cc135c768 shadow=1:f5cbcc0cc135c768 indirect=1:f5cbcc0cc135c768 +provenance geometry 0..1: /W/M +provenance geometry 1..2: /W/N +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16756132900457544540, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12220295910520633268, n_points: 3, n_indices: 3, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-59fb6cd49cb76e6b-1.digest b/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-59fb6cd49cb76e6b-1.digest new file mode 100644 index 000000000..5ff946553 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-59fb6cd49cb76e6b-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0954998, -2.0954998, 0.0), horizontal: Vec3A(4.1909995, 0.0, 0.0), vertical: Vec3A(0.0, 4.1909995, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 32, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/plain", name: "plain.exr", vars: [AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_primvars_retarget.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_primvars_retarget.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32f1a52c797bfee5 camera=2:32f1a52c797bfee5 shadow=2:32f1a52c797bfee5 indirect=2:32f1a52c797bfee5 +provenance geometry 0..1: /W/M +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-f4742b8648291059-1.digest b/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-f4742b8648291059-1.digest new file mode 100644 index 000000000..b80d8a67f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-f4742b8648291059-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0954998, -2.0954998, 0.0), horizontal: Vec3A(4.1909995, 0.0, 0.0), vertical: Vec3A(0.0, 4.1909995, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 32, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/withRest", name: "rest.exr", vars: [AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_primvars_retarget.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_primvars_retarget.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:32f1a52c797bfee5 camera=2:32f1a52c797bfee5 shadow=2:32f1a52c797bfee5 indirect=2:32f1a52c797bfee5 +provenance geometry 0..1: /W/M +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11801363609627443368, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_adaptive_usda-df276969e17c075b-1.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_adaptive_usda-df276969e17c075b-1.digest new file mode 100644 index 000000000..4162390a9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_adaptive_usda-df276969e17c075b-1.digest @@ -0,0 +1,28 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-4.8, -2.4, 0.0), horizontal: Vec3A(9.6, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_retarget_adaptive.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_retarget_adaptive.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 715, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 715, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=714:3e4f5ff3a9a07f75 camera=714:3e4f5ff3a9a07f75 shadow=714:3e4f5ff3a9a07f75 indirect=714:3e4f5ff3a9a07f75 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e04af0df4b5b5022 camera=1:e04af0df4b5b5022 shadow=1:e04af0df4b5b5022 indirect=1:e04af0df4b5b5022 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /W/Cage +provenance geometry 1..2: /W/Ball +provenance geometry 2..3: /W/Rig/Badge +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2684244338757133449, n_points: 359, n_indices: 2142, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 1092616192, 1116034389, 0, 0, 1092616192, 3212836864, 0, 3203777167, 1065353216, 0, 3203777167, 0, 3212836864, 3195388559, 0, 1065353216, 3195388559, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-68dfaa2802aa4ba4-1.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-68dfaa2802aa4ba4-1.digest new file mode 100644 index 000000000..79b9a5380 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-68dfaa2802aa4ba4-1.digest @@ -0,0 +1,28 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-4.8, -2.4, 0.0), horizontal: Vec3A(9.6, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_retarget_diced.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_retarget_diced.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 503, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 503, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=502:6396f027b367ad8a camera=502:6396f027b367ad8a shadow=502:6396f027b367ad8a indirect=502:6396f027b367ad8a +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e04af0df4b5b5022 camera=1:e04af0df4b5b5022 shadow=1:e04af0df4b5b5022 indirect=1:e04af0df4b5b5022 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /W/Cage +provenance geometry 1..2: /W/Ball +provenance geometry 2..3: /W/Rig/Badge +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9653551266655765309, n_points: 253, n_indices: 1506, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1065353216, 1094713344, 1116034389, 0, 1065353216, 1094713344, 3213490716, 0, 3196448852, 1063312268, 0, 3207424912, 3175899824, 3212836864, 3195036602, 3175899824, 1065353216, 3195036602, 3193235149, 0, 3212470242, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: Some("/W/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-91fe8df867e8f0cc-1.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-91fe8df867e8f0cc-1.digest new file mode 100644 index 000000000..3ba2e049b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-91fe8df867e8f0cc-1.digest @@ -0,0 +1,28 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam2") +camera: Camera { origin: Vec3A(1.5, 0.5, 9.0), lower_left_corner: Vec3A(-5.2742257, -1.9000003, 0.21650028), horizontal: Vec3A(9.390218, 0.0, -1.9959522), vertical: Vec3A(-0.0, 4.8000007, 0.0), u: Vec3A(0.9781476, 0.0, -0.20791169), v: Vec3A(-0.0, 1.0000001, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_retarget_diced.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_retarget_diced.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 503, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 503, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=502:6396f027b367ad8a camera=502:6396f027b367ad8a shadow=502:6396f027b367ad8a indirect=502:6396f027b367ad8a +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e04af0df4b5b5022 camera=1:e04af0df4b5b5022 shadow=1:e04af0df4b5b5022 indirect=1:e04af0df4b5b5022 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /W/Cage +provenance geometry 1..2: /W/Ball +provenance geometry 2..3: /W/Rig/Badge +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9653551266655765309, n_points: 253, n_indices: 1506, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1065353216, 1094713344, 1116034389, 0, 1065353216, 1094713344, 3213490716, 0, 3196448852, 1063312268, 0, 3207424912, 3175899824, 3212836864, 3195036602, 3175899824, 1065353216, 3195036602, 3193235149, 0, 3212470242, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam2"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: Some("/W/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_empty_usda-6f96b70b05bd5238-1.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_empty_usda-6f96b70b05bd5238-1.digest new file mode 100644 index 000000000..ed03110e0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_empty_usda-6f96b70b05bd5238-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-4.8, -2.4, 0.0), horizontal: Vec3A(9.6, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_retarget_empty.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_retarget_empty.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 1, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e04af0df4b5b5022 camera=1:e04af0df4b5b5022 shadow=1:e04af0df4b5b5022 indirect=1:e04af0df4b5b5022 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /W/Ball +provenance geometry 1..2: /W/Rig/Badge +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_rig_usda-c517fabd0cfe3025-1.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_rig_usda-c517fabd0cfe3025-1.digest new file mode 100644 index 000000000..c4267fcb1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_rig_usda-c517fabd0cfe3025-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-4.8, -2.4, 0.0), horizontal: Vec3A(9.6, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_retarget_rig.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_retarget_rig.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 1, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e04af0df4b5b5022 camera=1:e04af0df4b5b5022 shadow=1:e04af0df4b5b5022 indirect=1:e04af0df4b5b5022 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /W/Ball +provenance geometry 1..2: /W/Rig/Badge +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_slow_usda-abb2313197b2f2f6-1.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_slow_usda-abb2313197b2f2f6-1.digest new file mode 100644 index 000000000..791310a7e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_slow_usda-abb2313197b2f2f6-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-4.8, -2.4, 0.0), horizontal: Vec3A(9.6, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_retarget_slow.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_retarget_slow.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 1, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e04af0df4b5b5022 camera=1:e04af0df4b5b5022 shadow=1:e04af0df4b5b5022 indirect=1:e04af0df4b5b5022 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /W/Ball +provenance geometry 1..2: /W/Rig/Badge +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_unnamed_usda-11fb9c8dd8a6685f-1.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_unnamed_usda-11fb9c8dd8a6685f-1.digest new file mode 100644 index 000000000..2137fe459 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_unnamed_usda-11fb9c8dd8a6685f-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-4.8, -2.4, 0.0), horizontal: Vec3A(9.6, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_retarget_unnamed.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_retarget_unnamed.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 1, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e04af0df4b5b5022 camera=1:e04af0df4b5b5022 shadow=1:e04af0df4b5b5022 indirect=1:e04af0df4b5b5022 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /W/Ball +provenance geometry 1..2: /W/Rig/Badge +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-443a3934a068f8e2-1.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-443a3934a068f8e2-1.digest new file mode 100644 index 000000000..560f646e6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-443a3934a068f8e2-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam2") +camera: Camera { origin: Vec3A(1.5, 0.5, 9.0), lower_left_corner: Vec3A(-5.2742257, -1.9000003, 0.21650028), horizontal: Vec3A(9.390218, 0.0, -1.9959522), vertical: Vec3A(-0.0, 4.8000007, 0.0), u: Vec3A(0.9781476, 0.0, -0.20791169), v: Vec3A(-0.0, 1.0000001, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_retarget.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_retarget.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 1, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e04af0df4b5b5022 camera=1:e04af0df4b5b5022 shadow=1:e04af0df4b5b5022 indirect=1:e04af0df4b5b5022 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /W/Ball +provenance geometry 1..2: /W/Rig/Badge +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam2"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-1.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-1.digest new file mode 100644 index 000000000..c0de281a9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-4.8, -2.4, 0.0), horizontal: Vec3A(9.6, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_retarget.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_retarget.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 1, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e04af0df4b5b5022 camera=1:e04af0df4b5b5022 shadow=1:e04af0df4b5b5022 indirect=1:e04af0df4b5b5022 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /W/Ball +provenance geometry 1..2: /W/Rig/Badge +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-2.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-2.digest new file mode 100644 index 000000000..c0de281a9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-2.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-4.8, -2.4, 0.0), horizontal: Vec3A(9.6, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_retarget.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_retarget.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 1, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e04af0df4b5b5022 camera=1:e04af0df4b5b5022 shadow=1:e04af0df4b5b5022 indirect=1:e04af0df4b5b5022 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /W/Ball +provenance geometry 1..2: /W/Rig/Badge +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-3.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-3.digest new file mode 100644 index 000000000..c0de281a9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-3.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-4.8, -2.4, 0.0), horizontal: Vec3A(9.6, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_retarget.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_retarget.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 1, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e04af0df4b5b5022 camera=1:e04af0df4b5b5022 shadow=1:e04af0df4b5b5022 indirect=1:e04af0df4b5b5022 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /W/Ball +provenance geometry 1..2: /W/Rig/Badge +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-4.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-4.digest new file mode 100644 index 000000000..c0de281a9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-4.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-4.8, -2.4, 0.0), horizontal: Vec3A(9.6, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live_retarget.usda"], invisible_overrides: Some(0) } +layer: $DIR/live_retarget.usda +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 1, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e04af0df4b5b5022 camera=1:e04af0df4b5b5022 shadow=1:e04af0df4b5b5022 indirect=1:e04af0df4b5b5022 +provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /W/Ball +provenance geometry 1..2: /W/Rig/Badge +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-1.digest b/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-1.digest new file mode 100644 index 000000000..7b5172141 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live.usda"], invisible_overrides: Some(0) } +layer: $DIR/live.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-2.digest b/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-2.digest new file mode 100644 index 000000000..7b5172141 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-2.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live.usda"], invisible_overrides: Some(0) } +layer: $DIR/live.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/live_usda-b329c13621e10111-1.digest b/crates/crust-core/tests/data/import_baselines/live_usda-b329c13621e10111-1.digest new file mode 100644 index 000000000..bc15f261d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_usda-b329c13621e10111-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/live.usda"], invisible_overrides: Some(0) } +layer: $DIR/live.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-168fe99d44c7fbd8-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-168fe99d44c7fbd8-1.digest new file mode 100644 index 000000000..46b358add --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-168fe99d44c7fbd8-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-5.6632595, -1.9855835, -4.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/beauty", name: "renders/aovs_beauty.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sampleCount", name: "sampleCount", channel_prefix: None, source: SampleCount, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [("artist", "crust samples")] }, AovProduct { prim_path: "/Render/Products/data", name: "renders/aovs_data.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/Z", name: "Z", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/distance", name: "distance", channel_prefix: None, source: Distance, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Peye", name: "Peye", channel_prefix: None, source: Peye, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Half, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Neye", name: "Neye", channel_prefix: None, source: Neye, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/st", name: "st", channel_prefix: None, source: St, components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/alpha", name: "alpha", channel_prefix: None, source: Alpha, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$ROOT/samples/aovs.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/aovs.usda +layer: $DIR/lookdev.usda +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 1, prims: ["/Render/Products/Vars/diffuse_direct"], message: "/Render/Products/Vars/diffuse_direct: unknown raw source \"diffuse_direct\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cadf82024fa5b745 camera=2:cadf82024fa5b745 shadow=2:cadf82024fa5b745 indirect=2:cadf82024fa5b745 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-1.digest new file mode 100644 index 000000000..e2a613cf2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/lights.usda +layer: $DIR/lookdev.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-2.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-2.digest new file mode 100644 index 000000000..e2a613cf2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-2.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/lights.usda +layer: $DIR/lookdev.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-2df588e196076e2d-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-2df588e196076e2d-1.digest new file mode 100644 index 000000000..b9f39b026 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-2df588e196076e2d-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.1, 7.0), lower_left_corner: Vec3A(-4.8542223, -2.660827, -2.6598039), horizontal: Vec3A(9.708445, -0.0, 0.0), vertical: Vec3A(0.0, 5.4310846, -0.57083), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/precomp", name: "renders/precomp.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/key", name: "key", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/fill", name: "fill", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/rim", name: "rim", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/motion", name: "motion", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look", name: "look", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look_final", name: "look_final", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 2, output: 0, components: 3, radiance: false }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/Precomp/look"], display_filters: ["/Render/Precomp/glow", "/Render/Precomp/bloom", "/Render/Precomp/speed"], display: "look_final" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$ROOT/samples/precomp.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/precomp.usda +layer: $DIR/lookdev.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe Some("rim") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe Some("fill") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe Some("key") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 774, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4aada018ed0727e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4aada018ed0727e5 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1552f6dd41ffc0c8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1552f6dd41ffc0c8 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:832c8ed52d67b0f9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:832c8ed52d67b0f9 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6e02baf63b264ec5 camera=2:6e02baf63b264ec5 shadow=2:6e02baf63b264ec5 indirect=2:6e02baf63b264ec5 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.5 motion [Translation(Vec3A(1.3999999, 0.0, 0.0))] pieces all=768:dcf5d265b8c6f519 camera=768:dcf5d265b8c6f519 shadow=768:dcf5d265b8c6f519 indirect=768:dcf5d265b8c6f519 +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.75 motion [] pieces all=768:47a45983717bb5f1 camera=768:47a45983717bb5f1 shadow=768:47a45983717bb5f1 indirect=768:47a45983717bb5f1 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Runner +provenance geometry 5..6: /World/Hero +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3036384043218918496, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-37661541bc721de0-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-37661541bc721de0-1.digest new file mode 100644 index 000000000..5ef0b5c7b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-37661541bc721de0-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-451cadfaa7f8e528-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-451cadfaa7f8e528-1.digest new file mode 100644 index 000000000..afdcbc7fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-451cadfaa7f8e528-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-4e0b53f3e573c0d5-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-4e0b53f3e573c0d5-1.digest new file mode 100644 index 000000000..5ef0b5c7b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-4e0b53f3e573c0d5-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-1.digest new file mode 100644 index 000000000..e2a613cf2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/lights.usda +layer: $DIR/lookdev.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-2.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-2.digest new file mode 100644 index 000000000..e2a613cf2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-2.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/lights.usda +layer: $DIR/lookdev.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-619dbb27dff03edb-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-619dbb27dff03edb-1.digest new file mode 100644 index 000000000..afdcbc7fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-619dbb27dff03edb-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-6332af41b2f94037-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-6332af41b2f94037-1.digest new file mode 100644 index 000000000..5ef0b5c7b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-6332af41b2f94037-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-66e64ab7da1be7a8-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-66e64ab7da1be7a8-1.digest new file mode 100644 index 000000000..e2a613cf2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-66e64ab7da1be7a8-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/lights.usda +layer: $DIR/lookdev.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-675a4c56d7da2e1a-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-675a4c56d7da2e1a-1.digest new file mode 100644 index 000000000..674173bfa --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-675a4c56d7da2e1a-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-6a91390c6e2e8f32-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-6a91390c6e2e8f32-1.digest new file mode 100644 index 000000000..5ef0b5c7b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-6a91390c6e2e8f32-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-75d1c7f90fc366b6-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-75d1c7f90fc366b6-1.digest new file mode 100644 index 000000000..7962445d0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-75d1c7f90fc366b6-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a718186db3bab648 camera=1:a718186db3bab648 shadow=1:a718186db3bab648 indirect=1:a718186db3bab648 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ce0ae0f49d396d8-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ce0ae0f49d396d8-1.digest new file mode 100644 index 000000000..e2a613cf2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ce0ae0f49d396d8-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/lights.usda +layer: $DIR/lookdev.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ed4ae42b2f80bd6-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ed4ae42b2f80bd6-1.digest new file mode 100644 index 000000000..b11f3a7d1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ed4ae42b2f80bd6-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/lights.usda +layer: $DIR/lookdev.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8881e041bbb32975 camera=2:8881e041bbb32975 shadow=2:8881e041bbb32975 indirect=2:8881e041bbb32975 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-83b2bc40e66e8d90-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-83b2bc40e66e8d90-1.digest new file mode 100644 index 000000000..afdcbc7fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-83b2bc40e66e8d90-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-84687138ca39f6d2-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-84687138ca39f6d2-1.digest new file mode 100644 index 000000000..5ef0b5c7b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-84687138ca39f6d2-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-889e2ebeaf6f6f43-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-889e2ebeaf6f6f43-1.digest new file mode 100644 index 000000000..01f0c653a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-889e2ebeaf6f6f43-1.digest @@ -0,0 +1,50 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.2, 13.0), lower_left_corner: Vec3A(-5.6632595, -1.346313, 3.5406666), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.3091636, -0.8866952), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$ROOT/samples/instancing.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/instancing.usda +layer: $DIR/lookdev.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 13 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } top level, PrimitiveBreakdown { triangles: 36, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32b8fc7fab01f734 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:32b8fc7fab01f734 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2599211 motion [] pieces all=8:cb8213f19e1889e5 camera=8:cb8213f19e1889e5 shadow=8:cb8213f19e1889e5 indirect=8:cb8213f19e1889e5 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0079368 motion [] pieces all=8:9f690ca55fcd34b1 camera=8:9f690ca55fcd34b1 shadow=8:9f690ca55fcd34b1 indirect=8:9f690ca55fcd34b1 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.6378974 motion [] pieces all=8:bf00f68921a1ff6d camera=8:bf00f68921a1ff6d shadow=8:bf00f68921a1ff6d indirect=8:bf00f68921a1ff6d +geom 5: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1370313 motion [] pieces all=8:d86fbb7901e66cf5 camera=8:d86fbb7901e66cf5 shadow=8:d86fbb7901e66cf5 indirect=8:d86fbb7901e66cf5 +geom 6: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2962416 motion [] pieces all=8:100fb1034ea0bf45 camera=8:100fb1034ea0bf45 shadow=8:100fb1034ea0bf45 indirect=8:100fb1034ea0bf45 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:01961e1714f11539 camera=12:01961e1714f11539 shadow=12:01961e1714f11539 indirect=12:01961e1714f11539 +geom 8: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:94d0d184098e3ffd camera=12:94d0d184098e3ffd shadow=12:94d0d184098e3ffd indirect=12:94d0d184098e3ffd +geom 9: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d4ab18518f82edfd camera=12:d4ab18518f82edfd shadow=12:d4ab18518f82edfd indirect=12:d4ab18518f82edfd +geom 10: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:83f43ac124235a31 camera=12:83f43ac124235a31 shadow=12:83f43ac124235a31 indirect=12:83f43ac124235a31 +geom 11: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:295cfa9554179a8d camera=12:295cfa9554179a8d shadow=12:295cfa9554179a8d indirect=12:295cfa9554179a8d +geom 12: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:3ea47e28253b632d camera=12:3ea47e28253b632d shadow=12:3ea47e28253b632d indirect=12:3ea47e28253b632d +provenance material /World/Looks/Copper: MaterialOrigin { slots: [8, 10, 12], displaced: false } +provenance material /World/Looks/Emerald: MaterialOrigin { slots: [2, 3, 4, 5, 6, 7, 9, 11], displaced: false } +provenance material /World/Looks/Grey: MaterialOrigin { slots: [1], displaced: false } +provenance arc source: /World/Scatter/Protos/Gem +provenance arc source: /World/_Tower +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 13..13 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..7: /World/Scatter +provenance geometry 7..9: /World/TowerC +provenance geometry 9..11: /World/TowerB +provenance geometry 11..13: /World/TowerA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6822106956337694752, n_points: 6, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2005039782605831059, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-1.digest new file mode 100644 index 000000000..e2a613cf2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/lights.usda +layer: $DIR/lookdev.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-2.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-2.digest new file mode 100644 index 000000000..e2a613cf2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-2.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/lights.usda +layer: $DIR/lookdev.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-8e1d5d176c63c934-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-8e1d5d176c63c934-1.digest new file mode 100644 index 000000000..5ef0b5c7b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-8e1d5d176c63c934-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-96a10d1a1b799db6-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-96a10d1a1b799db6-1.digest new file mode 100644 index 000000000..5ef0b5c7b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-96a10d1a1b799db6-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-96b32b9e68a1ec9a-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-96b32b9e68a1ec9a-1.digest new file mode 100644 index 000000000..5ef0b5c7b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-96b32b9e68a1ec9a-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-9b73e2f3385f85a2-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-9b73e2f3385f85a2-1.digest new file mode 100644 index 000000000..e2a613cf2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-9b73e2f3385f85a2-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/lights.usda +layer: $DIR/lookdev.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-a96810dec00d46d8-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-a96810dec00d46d8-1.digest new file mode 100644 index 000000000..cd60d38ed --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-a96810dec00d46d8-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #2 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [2, 3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-ad6a0ecf2cf3c658-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-ad6a0ecf2cf3c658-1.digest new file mode 100644 index 000000000..8a22b1862 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-ad6a0ecf2cf3c658-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-b139810cbe0eac4c-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-b139810cbe0eac4c-1.digest new file mode 100644 index 000000000..e2a613cf2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-b139810cbe0eac4c-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/lights.usda +layer: $DIR/lookdev.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-b1d2ea509cf7ee23-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-b1d2ea509cf7ee23-1.digest new file mode 100644 index 000000000..f959adce3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-b1d2ea509cf7ee23-1.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 4, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 4: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 5: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3, 4], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 5..6 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance geometry 0..1: /World/Other +provenance geometry 1..2: /World/Right +provenance geometry 2..3: /World/Left +provenance geometry 3..4: /World/Ball +provenance geometry 4..5: /World/Floor +provenance geometry 5..6: /World/Key +provenance mesh: MeshOrigin { geom_id: 4, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-b23ccdb4706d3d98-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-b23ccdb4706d3d98-1.digest new file mode 100644 index 000000000..cc008ee69 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-b23ccdb4706d3d98-1.digest @@ -0,0 +1,43 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 4, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 4: material #4 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 5: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [4], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 5..6 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance geometry 0..1: /World/Other +provenance geometry 1..2: /World/Right +provenance geometry 2..3: /World/Left +provenance geometry 3..4: /World/Ball +provenance geometry 4..5: /World/Floor +provenance geometry 5..6: /World/Key +provenance mesh: MeshOrigin { geom_id: 4, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-bdef936e454d02c5-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-bdef936e454d02c5-1.digest new file mode 100644 index 000000000..5ef0b5c7b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-bdef936e454d02c5-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-c088c49aaf559905-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-c088c49aaf559905-1.digest new file mode 100644 index 000000000..e2a613cf2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-c088c49aaf559905-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/lights.usda +layer: $DIR/lookdev.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-c8874f17309d40f1-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-c8874f17309d40f1-1.digest new file mode 100644 index 000000000..5ef0b5c7b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-c8874f17309d40f1-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-cab3bf60bc31d2f7-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-cab3bf60bc31d2f7-1.digest new file mode 100644 index 000000000..e2a613cf2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-cab3bf60bc31d2f7-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/lights.usda +layer: $DIR/lookdev.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-cae9785463ecddf6-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-cae9785463ecddf6-1.digest new file mode 100644 index 000000000..5ef0b5c7b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-cae9785463ecddf6-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-d07bf630611d13b0-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-d07bf630611d13b0-1.digest new file mode 100644 index 000000000..73e91600a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-d07bf630611d13b0-1.digest @@ -0,0 +1,36 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/charSettings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 4, width: 32, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/char", name: "char.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/char", holdouts: 4, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: true }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-d977f122a6f754f5-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-d977f122a6f754f5-1.digest new file mode 100644 index 000000000..9a1ddf6d0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-d977f122a6f754f5-1.digest @@ -0,0 +1,36 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/charSettings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 4, width: 32, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/char", name: "char.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/char", holdouts: 3, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: true }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-da5095c5387fc6d5-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-da5095c5387fc6d5-1.digest new file mode 100644 index 000000000..afdcbc7fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-da5095c5387fc6d5-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-ddd9a472681fe394-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-ddd9a472681fe394-1.digest new file mode 100644 index 000000000..e2a613cf2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-ddd9a472681fe394-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/lights.usda +layer: $DIR/lookdev.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-e6376a73c80d838f-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-e6376a73c80d838f-1.digest new file mode 100644 index 000000000..e2a613cf2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-e6376a73c80d838f-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/lights.usda +layer: $DIR/lookdev.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-f0ebb00d074c9c96-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f0ebb00d074c9c96-1.digest new file mode 100644 index 000000000..1de5df034 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f0ebb00d074c9c96-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-5.6632595, -1.9855835, -4.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/beauty", name: "renders/aovs_beauty.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sampleCount", name: "sampleCount", channel_prefix: None, source: SampleCount, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [("artist", "crust samples")] }, AovProduct { prim_path: "/Render/Products/data", name: "renders/aovs_data.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/Z", name: "Z", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/distance", name: "distance", channel_prefix: None, source: Distance, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Peye", name: "Peye", channel_prefix: None, source: Peye, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Half, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Neye", name: "Neye", channel_prefix: None, source: Neye, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/st", name: "st", channel_prefix: None, source: St, components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/alpha", name: "alpha", channel_prefix: None, source: Alpha, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$ROOT/samples/aovs.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/aovs.usda +layer: $DIR/lookdev.usda +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 1, prims: ["/Render/Products/Vars/diffuse_direct"], message: "/Render/Products/Vars/diffuse_direct: unknown raw source \"diffuse_direct\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cadf82024fa5b745 camera=2:cadf82024fa5b745 shadow=2:cadf82024fa5b745 indirect=2:cadf82024fa5b745 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-1.digest new file mode 100644 index 000000000..02a62172e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-1.digest @@ -0,0 +1,36 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/charSettings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 4, width: 32, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/char", name: "char.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/char", holdouts: 3, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-2.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-2.digest new file mode 100644 index 000000000..02a62172e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-2.digest @@ -0,0 +1,36 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/charSettings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 4, width: 32, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/char", name: "char.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/char", holdouts: 3, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-f4c4e13661091485-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f4c4e13661091485-1.digest new file mode 100644 index 000000000..5ef0b5c7b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f4c4e13661091485-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-fa7c6612a51b87e4-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-fa7c6612a51b87e4-1.digest new file mode 100644 index 000000000..e2a613cf2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-fa7c6612a51b87e4-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/shot.usda", "$DIR/lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/lights.usda +layer: $DIR/lookdev.usda +layer: $DIR/pay.usda +layer: $DIR/prop.usda +layer: $DIR/shot.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6f550ecd4f901d05 camera=2:6f550ecd4f901d05 shadow=2:6f550ecd4f901d05 indirect=2:6f550ecd4f901d05 +geom 2: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance arc source: /Pay +provenance arc source: /Prop +provenance light /World/Key: LightOrigin { index: 1, geoms: 2..3 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Heavy +provenance geometry 1..2: /World/Prop +provenance geometry 2..3: /World/Key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-fad17720e6382b8f-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-fad17720e6382b8f-1.digest new file mode 100644 index 000000000..5ef0b5c7b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-fad17720e6382b8f-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 6.0), lower_left_corner: Vec3A(-4.7783756, -2.1855836, -4.0), horizontal: Vec3A(9.556751, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 4, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lookdev.usda", "$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/lookdev.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba01d90e2cc0d4f5 camera=1:ba01d90e2cc0d4f5 shadow=1:ba01d90e2cc0d4f5 indirect=1:ba01d90e2cc0d4f5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:910eeb9b40238145 camera=1:910eeb9b40238145 shadow=1:910eeb9b40238145 indirect=1:910eeb9b40238145 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7812e24c7b4d4335 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7812e24c7b4d4335 +provenance material /World/Looks/Base: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Derived: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Std: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Tex: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/World/Looks/Base", "/World/Looks/Derived") +provenance material read: ("/World/Looks/Base/Surface", "/World/Looks/Derived") +provenance arc source: /World/Looks/Base +provenance arc source: /World/Looks/Base/Surface +provenance light /World/Key: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/Right +provenance geometry 1..2: /World/Left +provenance geometry 2..3: /World/Ball +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Key +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/loop_plain_usda-47275a5a5923eb53-1.digest b/crates/crust-core/tests/data/import_baselines/loop_plain_usda-47275a5a5923eb53-1.digest new file mode 100644 index 000000000..939ea92a3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/loop_plain_usda-47275a5a5923eb53-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/loop_plain.usda"], invisible_overrides: Some(0) } +layer: $DIR/loop_plain.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=8:0045db54568c1f6e camera=8:0045db54568c1f6e shadow=8:0045db54568c1f6e indirect=8:0045db54568c1f6e +provenance geometry 0..1: /World/Tris +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3036682394347508041, n_points: 9, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/loop_ptex_usda-305da98d6891c0e8-1.digest b/crates/crust-core/tests/data/import_baselines/loop_ptex_usda-305da98d6891c0e8-1.digest new file mode 100644 index 000000000..2ef21df58 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/loop_ptex_usda-305da98d6891c0e8-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/loop_ptex.usda"], invisible_overrides: Some(0) } +layer: $DIR/loop_ptex.usda +warning: Warning { code: SubdivLoopPtex, kind: Approximated, count: 1, prims: ["/World/Tris"], message: "Mesh at /World/Tris: subdivisionScheme = loop with a per-face (Ptex) texture cannot keep its face ids through refinement — rendering the smooth base cage" } +warning: Warning { code: MeshPtexFaceMismatch, kind: Approximated, count: 1, prims: ["/World/Tris"], message: "Mesh at /World/Tris has 2 faces but its per-face texture has 1 — the texture does not match this geometry, so shading will be wrong" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: Some(1), curve: None, primvars: Some([]) } class 65535 holdout false transparent false map Some(0) uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02ff87c392969355 camera=2:02ff87c392969355 shadow=2:02ff87c392969355 indirect=2:02ff87c392969355 +provenance material /World/Looks/Rock: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Tris +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14901821066754195219, n_points: 4, n_indices: 6, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lpe_too_complex_usda-d110af4b6d4f2169-1.digest b/crates/crust-core/tests/data/import_baselines/lpe_too_complex_usda-d110af4b6d4f2169-1.digest new file mode 100644 index 000000000..1e8213fdb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lpe_too_complex_usda-d110af4b6d4f2169-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/ok", name: "ok", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/also_ok", name: "also_ok", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*[LO]"), raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lpe_too_complex.usda"], invisible_overrides: Some(0) } +layer: $DIR/lpe_too_complex.usda +warning: Warning { code: LpeInvalid, kind: Skipped, count: 2, prims: ["/Render/blowup", "/Render/nested"], message: "/Render/blowup: light path expression \"C.*.{16}[LO]\" refused: the expressions need more than 4096 automaton states" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lpe_variance_usda-eb6b4998eed83db2-1.digest b/crates/crust-core/tests/data/import_baselines/lpe_variance_usda-eb6b4998eed83db2-1.digest new file mode 100644 index 000000000..d5c830ae8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lpe_variance_usda-eb6b4998eed83db2-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/gi", name: "gi", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.+[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/gi_var", name: "gi_var", channel_prefix: None, source: Lpe, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.+[LO]"), raw: false, variance: true }, AovVar { prim_path: "/Render/gi_var_half", name: "gi_var_half", channel_prefix: None, source: Lpe, components: 1, precision: Half, accumulation: Filtered, clear: 0.0, expression: Some("C.+[LO]"), raw: false, variance: true }, AovVar { prim_path: "/Render/raw_var", name: "raw_var", channel_prefix: None, source: Lpe, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C[LO]"), raw: true, variance: true }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lpe_variance.usda"], invisible_overrides: Some(0) } +layer: $DIR/lpe_variance.usda +warning: Warning { code: AovInvalidVariance, kind: Skipped, count: 4, prims: ["/Render/on_raw_source", "/Render/on_variance", "/Render/closest", "/Render/as_color"], message: "/Render/on_raw_source: crust:aov:variance applies to light path expressions (sourceType \"lpe\"), not sourceType \"raw\"; no channel written" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/lpe_vars_usda-4a1166013a93c744-1.digest b/crates/crust-core/tests/data/import_baselines/lpe_vars_usda-4a1166013a93c744-1.digest new file mode 100644 index 000000000..640ce2df5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lpe_vars_usda-4a1166013a93c744-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/diffuse", name: "diffuse", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C[LO]"), raw: false, variance: false }, AovVar { prim_path: "/Render/prefixed", name: "prefixed", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/rgba", name: "rgba", channel_prefix: None, source: Lpe, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*L"), raw: false, variance: false }, AovVar { prim_path: "/Render/albedo", name: "albedo", channel_prefix: None, source: Albedo, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/lpe_vars.usda"], invisible_overrides: Some(0) } +layer: $DIR/lpe_vars.usda +warning: Warning { code: AovTypeMismatch, kind: Skipped, count: 1, prims: ["/Render/scalar"], message: "/Render/scalar: lpe cannot be written as \"float\"; no channel written" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/malformed_usda-6eca12ea39b96a60-1.digest b/crates/crust-core/tests/data/import_baselines/malformed_usda-6eca12ea39b96a60-1.digest new file mode 100644 index 000000000..311463149 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/malformed_usda-6eca12ea39b96a60-1.digest @@ -0,0 +1,31 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/malformed.usda"], invisible_overrides: Some(0) } +layer: $DIR/malformed.usda +warning: Warning { code: PrimvarMismatch, kind: Skipped, count: 2, prims: ["/World/bad_index", "/World/array"], message: "/Render/Pref asks for primvar \"rest\" as 3 component(s), but /World/bad_index authors it as point3f[] (indices out of its values' range); that prim reads the clear value" } +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5ba058a899a8d068 camera=2:5ba058a899a8d068 shadow=2:5ba058a899a8d068 indirect=2:5ba058a899a8d068 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6c4a5c3fcab4e355 camera=2:6c4a5c3fcab4e355 shadow=2:6c4a5c3fcab4e355 indirect=2:6c4a5c3fcab4e355 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:1df46b72c7566378 camera=2:1df46b72c7566378 shadow=2:1df46b72c7566378 indirect=2:1df46b72c7566378 +provenance light /World/dome: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/bad_index +provenance geometry 1..2: /World/array +provenance geometry 2..3: /World/varying +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8915584968090228797, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17547429537265271531, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1413835526155452052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/many_lights_usda-2896f3594596fed9-1.digest b/crates/crust-core/tests/data/import_baselines/many_lights_usda-2896f3594596fed9-1.digest new file mode 100644 index 000000000..2e8835a81 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/many_lights_usda-2896f3594596fed9-1.digest @@ -0,0 +1,1062 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 14.0, 26.0), lower_left_corner: Vec3A(-9.000002, 4.6157455, 19.870996), horizontal: Vec3A(18.000004, -0.0, 0.0), vertical: Vec3A(0.0, 8.768508, -5.062501), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.8660253, -0.5), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 20.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/many_lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/many_lights.usda +lights: 257 +light 0: dome name Some("/World/Fill") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Spot15") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Spot14") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/Spot13") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 4: area name Some("/World/Spot12") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 5: area name Some("/World/Spot11") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 6: area name Some("/World/Spot10") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 7: area name Some("/World/Spot09") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 8: area name Some("/World/Spot08") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 9: area name Some("/World/Spot07") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 10: area name Some("/World/Spot06") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 11: area name Some("/World/Spot05") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 12: area name Some("/World/Spot04") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 13: area name Some("/World/Spot03") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 14: area name Some("/World/Spot02") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 15: area name Some("/World/Spot01") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 16: area name Some("/World/Spot00") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 17: area name Some("/World/Panel079") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 18: area name Some("/World/Panel078") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 19: area name Some("/World/Panel077") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 20: area name Some("/World/Panel076") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 21: area name Some("/World/Panel075") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 22: area name Some("/World/Panel074") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 23: area name Some("/World/Panel073") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 24: area name Some("/World/Panel072") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 25: area name Some("/World/Panel071") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 26: area name Some("/World/Panel070") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 27: area name Some("/World/Panel069") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 28: area name Some("/World/Panel068") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 29: area name Some("/World/Panel067") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 30: area name Some("/World/Panel066") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 31: area name Some("/World/Panel065") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 32: area name Some("/World/Panel064") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 33: area name Some("/World/Panel063") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 34: area name Some("/World/Panel062") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 35: area name Some("/World/Panel061") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 36: area name Some("/World/Panel060") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 37: area name Some("/World/Panel059") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 38: area name Some("/World/Panel058") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 39: area name Some("/World/Panel057") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 40: area name Some("/World/Panel056") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 41: area name Some("/World/Panel055") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 42: area name Some("/World/Panel054") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 43: area name Some("/World/Panel053") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 44: area name Some("/World/Panel052") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 45: area name Some("/World/Panel051") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 46: area name Some("/World/Panel050") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 47: area name Some("/World/Panel049") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 48: area name Some("/World/Panel048") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 49: area name Some("/World/Panel047") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 50: area name Some("/World/Panel046") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 51: area name Some("/World/Panel045") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 52: area name Some("/World/Panel044") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 53: area name Some("/World/Panel043") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 54: area name Some("/World/Panel042") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 55: area name Some("/World/Panel041") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 56: area name Some("/World/Panel040") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 57: area name Some("/World/Panel039") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 58: area name Some("/World/Panel038") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 59: area name Some("/World/Panel037") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 60: area name Some("/World/Panel036") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 61: area name Some("/World/Panel035") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 62: area name Some("/World/Panel034") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 63: area name Some("/World/Panel033") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 64: area name Some("/World/Panel032") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 65: area name Some("/World/Panel031") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 66: area name Some("/World/Panel030") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 67: area name Some("/World/Panel029") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 68: area name Some("/World/Panel028") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 69: area name Some("/World/Panel027") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 70: area name Some("/World/Panel026") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 71: area name Some("/World/Panel025") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 72: area name Some("/World/Panel024") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 73: area name Some("/World/Panel023") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 74: area name Some("/World/Panel022") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 75: area name Some("/World/Panel021") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 76: area name Some("/World/Panel020") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 77: area name Some("/World/Panel019") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 78: area name Some("/World/Panel018") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 79: area name Some("/World/Panel017") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 80: area name Some("/World/Panel016") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 81: area name Some("/World/Panel015") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 82: area name Some("/World/Panel014") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 83: area name Some("/World/Panel013") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 84: area name Some("/World/Panel012") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 85: area name Some("/World/Panel011") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 86: area name Some("/World/Panel010") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 87: area name Some("/World/Panel009") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 88: area name Some("/World/Panel008") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 89: area name Some("/World/Panel007") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 90: area name Some("/World/Panel006") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 91: area name Some("/World/Panel005") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 92: area name Some("/World/Panel004") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 93: area name Some("/World/Panel003") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 94: area name Some("/World/Panel002") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 95: area name Some("/World/Panel001") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 96: area name Some("/World/Panel000") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 97: area name Some("/World/Sphere159") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 98: area name Some("/World/Sphere158") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 99: area name Some("/World/Sphere157") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 100: area name Some("/World/Sphere156") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 101: area name Some("/World/Sphere155") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 102: area name Some("/World/Sphere154") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 103: area name Some("/World/Sphere153") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 104: area name Some("/World/Sphere152") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 105: area name Some("/World/Sphere151") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 106: area name Some("/World/Sphere150") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 107: area name Some("/World/Sphere149") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 108: area name Some("/World/Sphere148") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 109: area name Some("/World/Sphere147") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 110: area name Some("/World/Sphere146") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 111: area name Some("/World/Sphere145") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 112: area name Some("/World/Sphere144") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 113: area name Some("/World/Sphere143") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 114: area name Some("/World/Sphere142") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 115: area name Some("/World/Sphere141") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 116: area name Some("/World/Sphere140") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 117: area name Some("/World/Sphere139") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 118: area name Some("/World/Sphere138") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 119: area name Some("/World/Sphere137") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 120: area name Some("/World/Sphere136") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 121: area name Some("/World/Sphere135") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 122: area name Some("/World/Sphere134") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 123: area name Some("/World/Sphere133") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 124: area name Some("/World/Sphere132") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 125: area name Some("/World/Sphere131") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 126: area name Some("/World/Sphere130") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 127: area name Some("/World/Sphere129") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 128: area name Some("/World/Sphere128") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 129: area name Some("/World/Sphere127") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 130: area name Some("/World/Sphere126") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 131: area name Some("/World/Sphere125") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 132: area name Some("/World/Sphere124") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 133: area name Some("/World/Sphere123") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 134: area name Some("/World/Sphere122") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 135: area name Some("/World/Sphere121") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 136: area name Some("/World/Sphere120") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 137: area name Some("/World/Sphere119") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 138: area name Some("/World/Sphere118") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 139: area name Some("/World/Sphere117") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 140: area name Some("/World/Sphere116") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 141: area name Some("/World/Sphere115") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 142: area name Some("/World/Sphere114") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 143: area name Some("/World/Sphere113") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 144: area name Some("/World/Sphere112") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 145: area name Some("/World/Sphere111") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 146: area name Some("/World/Sphere110") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 147: area name Some("/World/Sphere109") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 148: area name Some("/World/Sphere108") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 149: area name Some("/World/Sphere107") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 150: area name Some("/World/Sphere106") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 151: area name Some("/World/Sphere105") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 152: area name Some("/World/Sphere104") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 153: area name Some("/World/Sphere103") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 154: area name Some("/World/Sphere102") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 155: area name Some("/World/Sphere101") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 156: area name Some("/World/Sphere100") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 157: area name Some("/World/Sphere099") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 158: area name Some("/World/Sphere098") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 159: area name Some("/World/Sphere097") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 160: area name Some("/World/Sphere096") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 161: area name Some("/World/Sphere095") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 162: area name Some("/World/Sphere094") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 163: area name Some("/World/Sphere093") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 164: area name Some("/World/Sphere092") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 165: area name Some("/World/Sphere091") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 166: area name Some("/World/Sphere090") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 167: area name Some("/World/Sphere089") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 168: area name Some("/World/Sphere088") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 169: area name Some("/World/Sphere087") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 170: area name Some("/World/Sphere086") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 171: area name Some("/World/Sphere085") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 172: area name Some("/World/Sphere084") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 173: area name Some("/World/Sphere083") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 174: area name Some("/World/Sphere082") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 175: area name Some("/World/Sphere081") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 176: area name Some("/World/Sphere080") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 177: area name Some("/World/Sphere079") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 178: area name Some("/World/Sphere078") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 179: area name Some("/World/Sphere077") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 180: area name Some("/World/Sphere076") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 181: area name Some("/World/Sphere075") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 182: area name Some("/World/Sphere074") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 183: area name Some("/World/Sphere073") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 184: area name Some("/World/Sphere072") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 185: area name Some("/World/Sphere071") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 186: area name Some("/World/Sphere070") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 187: area name Some("/World/Sphere069") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 188: area name Some("/World/Sphere068") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 189: area name Some("/World/Sphere067") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 190: area name Some("/World/Sphere066") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 191: area name Some("/World/Sphere065") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 192: area name Some("/World/Sphere064") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 193: area name Some("/World/Sphere063") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 194: area name Some("/World/Sphere062") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 195: area name Some("/World/Sphere061") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 196: area name Some("/World/Sphere060") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 197: area name Some("/World/Sphere059") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 198: area name Some("/World/Sphere058") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 199: area name Some("/World/Sphere057") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 200: area name Some("/World/Sphere056") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 201: area name Some("/World/Sphere055") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 202: area name Some("/World/Sphere054") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 203: area name Some("/World/Sphere053") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 204: area name Some("/World/Sphere052") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 205: area name Some("/World/Sphere051") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 206: area name Some("/World/Sphere050") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 207: area name Some("/World/Sphere049") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 208: area name Some("/World/Sphere048") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 209: area name Some("/World/Sphere047") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 210: area name Some("/World/Sphere046") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 211: area name Some("/World/Sphere045") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 212: area name Some("/World/Sphere044") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 213: area name Some("/World/Sphere043") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 214: area name Some("/World/Sphere042") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 215: area name Some("/World/Sphere041") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 216: area name Some("/World/Sphere040") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 217: area name Some("/World/Sphere039") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 218: area name Some("/World/Sphere038") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 219: area name Some("/World/Sphere037") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 220: area name Some("/World/Sphere036") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 221: area name Some("/World/Sphere035") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 222: area name Some("/World/Sphere034") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 223: area name Some("/World/Sphere033") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 224: area name Some("/World/Sphere032") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 225: area name Some("/World/Sphere031") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 226: area name Some("/World/Sphere030") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 227: area name Some("/World/Sphere029") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 228: area name Some("/World/Sphere028") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 229: area name Some("/World/Sphere027") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 230: area name Some("/World/Sphere026") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 231: area name Some("/World/Sphere025") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 232: area name Some("/World/Sphere024") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 233: area name Some("/World/Sphere023") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 234: area name Some("/World/Sphere022") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 235: area name Some("/World/Sphere021") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 236: area name Some("/World/Sphere020") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 237: area name Some("/World/Sphere019") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 238: area name Some("/World/Sphere018") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 239: area name Some("/World/Sphere017") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 240: area name Some("/World/Sphere016") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 241: area name Some("/World/Sphere015") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 242: area name Some("/World/Sphere014") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 243: area name Some("/World/Sphere013") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 244: area name Some("/World/Sphere012") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 245: area name Some("/World/Sphere011") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 246: area name Some("/World/Sphere010") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 247: area name Some("/World/Sphere009") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 248: area name Some("/World/Sphere008") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 249: area name Some("/World/Sphere007") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 250: area name Some("/World/Sphere006") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 251: area name Some("/World/Sphere005") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 252: area name Some("/World/Sphere004") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 253: area name Some("/World/Sphere003") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 254: area name Some("/World/Sphere002") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 255: area name Some("/World/Sphere001") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 256: area name Some("/World/Sphere000") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 262 geometries, PrimitiveBreakdown { triangles: 194, spheres: 160, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } top level, PrimitiveBreakdown { triangles: 206, spheres: 160, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:188f260f6479aa4e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:188f260f6479aa4e +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:97f45dafeae7396c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:97f45dafeae7396c +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:50faa5f64b009067 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:50faa5f64b009067 +geom 3: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ebbba4921e332478 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ebbba4921e332478 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ff2a5c7e54e0f9db camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ff2a5c7e54e0f9db +geom 5: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:15036b6847d0d5d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:15036b6847d0d5d8 +geom 6: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:71e61c6a60d61f89 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:71e61c6a60d61f89 +geom 7: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f3217ea4860a8728 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:f3217ea4860a8728 +geom 8: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8d754f5908ca78e0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8d754f5908ca78e0 +geom 9: material #9 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5657f45de0cd5100 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:5657f45de0cd5100 +geom 10: material #10 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c8be539fca9f01fb camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:c8be539fca9f01fb +geom 11: material #11 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d48a20ec03c99200 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d48a20ec03c99200 +geom 12: material #12 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:a7923437effed43d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:a7923437effed43d +geom 13: material #13 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e3e3808d2094f90a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e3e3808d2094f90a +geom 14: material #14 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1e497659eef12a81 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1e497659eef12a81 +geom 15: material #15 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ffb2ef2f4a649fa6 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ffb2ef2f4a649fa6 +geom 16: material #16 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5d5e430ff41c1c08 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:5d5e430ff41c1c08 +geom 17: material #17 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8f13d27ca8bbe966 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8f13d27ca8bbe966 +geom 18: material #18 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8652e2305229cfa0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8652e2305229cfa0 +geom 19: material #19 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:483a297758388d5c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:483a297758388d5c +geom 20: material #20 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:48e5f0ef3110f507 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:48e5f0ef3110f507 +geom 21: material #21 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ca51c27c8e04bfa2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ca51c27c8e04bfa2 +geom 22: material #22 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:84e9bace9eab9ec8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:84e9bace9eab9ec8 +geom 23: material #23 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:803d49dff50a2f92 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:803d49dff50a2f92 +geom 24: material #24 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:70b184a9244bc562 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:70b184a9244bc562 +geom 25: material #25 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:3164ae4a6ea6d628 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:3164ae4a6ea6d628 +geom 26: material #26 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7a60eae3c5968816 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7a60eae3c5968816 +geom 27: material #27 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:bb4cd18f8464d34c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:bb4cd18f8464d34c +geom 28: material #28 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:38f56b391c7ea50c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:38f56b391c7ea50c +geom 29: material #29 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c3fcfe7c5ed85fba camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:c3fcfe7c5ed85fba +geom 30: material #30 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6e268625717faeb1 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:6e268625717faeb1 +geom 31: material #31 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4b348295ce7972e4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4b348295ce7972e4 +geom 32: material #32 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c2b7dd874f5bac98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:c2b7dd874f5bac98 +geom 33: material #33 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:559c4d11d19668c0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:559c4d11d19668c0 +geom 34: material #34 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77be229f0d292714 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:77be229f0d292714 +geom 35: material #35 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5c5e3e047f91145c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:5c5e3e047f91145c +geom 36: material #36 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f9c327e97a20da39 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:f9c327e97a20da39 +geom 37: material #37 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:819e740103d9eca1 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:819e740103d9eca1 +geom 38: material #38 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1212f418647714b4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1212f418647714b4 +geom 39: material #39 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:91e281ba2b7c3ed8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:91e281ba2b7c3ed8 +geom 40: material #40 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8221ec0a7aae962b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8221ec0a7aae962b +geom 41: material #41 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:642e441ce136ee76 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:642e441ce136ee76 +geom 42: material #42 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:dcf19867b54c51ee camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:dcf19867b54c51ee +geom 43: material #43 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f8a9d1e9cb434139 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:f8a9d1e9cb434139 +geom 44: material #44 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8ec3acc16ec533be camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8ec3acc16ec533be +geom 45: material #45 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9bf7fd7118ebe84b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9bf7fd7118ebe84b +geom 46: material #46 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2a1ff2463031af5c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:2a1ff2463031af5c +geom 47: material #47 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b1cd3ab713320246 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:b1cd3ab713320246 +geom 48: material #48 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:735c8859d1ebf01c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:735c8859d1ebf01c +geom 49: material #49 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cc7113938e1868a5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:cc7113938e1868a5 +geom 50: material #50 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1969f53dc4c4ea77 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1969f53dc4c4ea77 +geom 51: material #51 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e6dabd74d1339b52 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e6dabd74d1339b52 +geom 52: material #52 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:612357c385f2578a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:612357c385f2578a +geom 53: material #53 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8561f9be5e95e3bc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8561f9be5e95e3bc +geom 54: material #54 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:973e05ae3389609e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:973e05ae3389609e +geom 55: material #55 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4708e1aa46768578 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4708e1aa46768578 +geom 56: material #56 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ab79f4992c448603 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ab79f4992c448603 +geom 57: material #57 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:61f6f945726813f9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:61f6f945726813f9 +geom 58: material #58 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:73c8ba55366a587e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:73c8ba55366a587e +geom 59: material #59 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:218c05d1384633dc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:218c05d1384633dc +geom 60: material #60 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:44b7957c677bd226 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:44b7957c677bd226 +geom 61: material #61 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:30eecb7c25719c05 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:30eecb7c25719c05 +geom 62: material #62 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:176d644e7ee2e684 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:176d644e7ee2e684 +geom 63: material #63 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ec73b763308f9a3d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ec73b763308f9a3d +geom 64: material #64 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e915a0aae228bc79 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e915a0aae228bc79 +geom 65: material #65 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7d6401aa59da4e38 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7d6401aa59da4e38 +geom 66: material #66 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:76f66ce61a14aa96 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:76f66ce61a14aa96 +geom 67: material #67 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d0a2be6dd2ce3c54 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d0a2be6dd2ce3c54 +geom 68: material #68 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1b5dfcf5e87976c3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1b5dfcf5e87976c3 +geom 69: material #69 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9355c82e434ac2ae camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9355c82e434ac2ae +geom 70: material #70 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:a77e58d3ff3a2121 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:a77e58d3ff3a2121 +geom 71: material #71 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:93043b72a388e080 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:93043b72a388e080 +geom 72: material #72 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:05b2719429e398de camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:05b2719429e398de +geom 73: material #73 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f8a0dd5a739f2fc0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:f8a0dd5a739f2fc0 +geom 74: material #74 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:dca1a43f4a7538ed camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:dca1a43f4a7538ed +geom 75: material #75 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8a2f5974cca942dc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8a2f5974cca942dc +geom 76: material #76 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:65272fbe17dd0c64 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:65272fbe17dd0c64 +geom 77: material #77 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9060c015c4a0f6b7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9060c015c4a0f6b7 +geom 78: material #78 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ec32f023d0468b65 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ec32f023d0468b65 +geom 79: material #79 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:a09de738183c4a9b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:a09de738183c4a9b +geom 80: material #80 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2bab4c271329769d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:2bab4c271329769d +geom 81: material #81 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e82dcf28bab67bb5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e82dcf28bab67bb5 +geom 82: material #82 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6d6d95bf01b4588f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:6d6d95bf01b4588f +geom 83: material #83 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6878b98c6d332db9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:6878b98c6d332db9 +geom 84: material #84 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b0b31b42e1646ca9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:b0b31b42e1646ca9 +geom 85: material #85 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:22ef3600d3ffa0e0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:22ef3600d3ffa0e0 +geom 86: material #86 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b2a86cb870f0d22b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:b2a86cb870f0d22b +geom 87: material #87 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c476f12c52f01b49 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:c476f12c52f01b49 +geom 88: material #88 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b05e191db12bfb49 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:b05e191db12bfb49 +geom 89: material #89 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:a93852b39b01de54 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:a93852b39b01de54 +geom 90: material #90 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8e04888e8ea9c61b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8e04888e8ea9c61b +geom 91: material #91 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d15b848fb52b48dd camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d15b848fb52b48dd +geom 92: material #92 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e3399568cfdc5a68 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e3399568cfdc5a68 +geom 93: material #93 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fd3bc52d5481c68b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:fd3bc52d5481c68b +geom 94: material #94 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4b6bf9a286fa9c3b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4b6bf9a286fa9c3b +geom 95: material #95 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6383d37d0761a2db camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:6383d37d0761a2db +geom 96: material #96 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:71d02d53d4718c39 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:71d02d53d4718c39 +geom 97: material #97 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:400eb2d44fcb9a5f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:400eb2d44fcb9a5f +geom 98: material #98 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fffd2eb5365a513b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fffd2eb5365a513b +geom 99: material #99 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5940a8f1a0c95329 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5940a8f1a0c95329 +geom 100: material #100 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3b48db8226d17f85 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3b48db8226d17f85 +geom 101: material #101 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:aa1153c63e5ac43a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:aa1153c63e5ac43a +geom 102: material #102 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bd3bf6f3fc8aec36 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:bd3bf6f3fc8aec36 +geom 103: material #103 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7f6d3a47eae227d1 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:7f6d3a47eae227d1 +geom 104: material #104 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7a7b74661ebf0e33 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:7a7b74661ebf0e33 +geom 105: material #105 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:107fa63ad1e17fbe camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:107fa63ad1e17fbe +geom 106: material #106 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f3e0558ff85941c1 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f3e0558ff85941c1 +geom 107: material #107 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:14d37fd8433b6789 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:14d37fd8433b6789 +geom 108: material #108 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b6168793b8d79637 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b6168793b8d79637 +geom 109: material #109 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:dc663f564b4abf96 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:dc663f564b4abf96 +geom 110: material #110 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bc1ab26495c75862 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:bc1ab26495c75862 +geom 111: material #111 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9db71c4e77fa28d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9db71c4e77fa28d8 +geom 112: material #112 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:4972dd20205b307c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:4972dd20205b307c +geom 113: material #113 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:eee5b389ee4c636c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:eee5b389ee4c636c +geom 114: material #114 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bd20a93dbc58b878 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:bd20a93dbc58b878 +geom 115: material #115 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9c47ae7c87cc708c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9c47ae7c87cc708c +geom 116: material #116 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f1283608d88564d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f1283608d88564d8 +geom 117: material #117 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:adb11f5730302415 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:adb11f5730302415 +geom 118: material #118 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8e552e201d6f97dd camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:8e552e201d6f97dd +geom 119: material #119 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e4c119bc34c77786 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e4c119bc34c77786 +geom 120: material #120 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6027a624eb7c130d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:6027a624eb7c130d +geom 121: material #121 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fbc3e7d2d6198050 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fbc3e7d2d6198050 +geom 122: material #122 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:58ba3abee14d275d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:58ba3abee14d275d +geom 123: material #123 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:877f8e71cb1475d7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:877f8e71cb1475d7 +geom 124: material #124 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:09fa61b6cf060adf camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:09fa61b6cf060adf +geom 125: material #125 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8c246fcef2c2eef6 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:8c246fcef2c2eef6 +geom 126: material #126 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1cc47b5b2ca5f28d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1cc47b5b2ca5f28d +geom 127: material #127 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:676edaa19da16ebe camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:676edaa19da16ebe +geom 128: material #128 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7873b72124c26fca camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:7873b72124c26fca +geom 129: material #129 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2215c2d56c212a9c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2215c2d56c212a9c +geom 130: material #130 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:175872964bf90374 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:175872964bf90374 +geom 131: material #131 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2ff5450f19d57f22 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2ff5450f19d57f22 +geom 132: material #132 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0c6666e8ac1e0815 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0c6666e8ac1e0815 +geom 133: material #133 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c596d5c96c513ca7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c596d5c96c513ca7 +geom 134: material #134 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0040db78da514f25 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0040db78da514f25 +geom 135: material #135 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:de2a78a79bae9337 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:de2a78a79bae9337 +geom 136: material #136 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:59f3492650c5bc07 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:59f3492650c5bc07 +geom 137: material #137 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b9f804daae586a8f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b9f804daae586a8f +geom 138: material #138 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b4bd7d7624ce51dc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b4bd7d7624ce51dc +geom 139: material #139 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:15969e3a9502bd45 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:15969e3a9502bd45 +geom 140: material #140 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:11322851339c87d3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:11322851339c87d3 +geom 141: material #141 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:118b2d127dea8263 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:118b2d127dea8263 +geom 142: material #142 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6ad913d604c2db0e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:6ad913d604c2db0e +geom 143: material #143 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:211b8ca5005d7169 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:211b8ca5005d7169 +geom 144: material #144 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8c9de10a93729b62 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:8c9de10a93729b62 +geom 145: material #145 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f3e0220514f702da camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f3e0220514f702da +geom 146: material #146 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:17a63772a2b4d662 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:17a63772a2b4d662 +geom 147: material #147 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:061fda494c625726 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:061fda494c625726 +geom 148: material #148 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:4a3ce7feb848ff65 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:4a3ce7feb848ff65 +geom 149: material #149 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a9c0b7aaa2c5c0da camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a9c0b7aaa2c5c0da +geom 150: material #150 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ef79af21c911dba7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ef79af21c911dba7 +geom 151: material #151 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3adc1fd624a13b6c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3adc1fd624a13b6c +geom 152: material #152 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d575ffe25950246b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d575ffe25950246b +geom 153: material #153 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ad7b40d76703a529 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ad7b40d76703a529 +geom 154: material #154 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:15fb25e6f8719406 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:15fb25e6f8719406 +geom 155: material #155 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c923795f00a7a549 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c923795f00a7a549 +geom 156: material #156 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a2fce7f8c840e481 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a2fce7f8c840e481 +geom 157: material #157 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5d4ae1b4078e8157 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5d4ae1b4078e8157 +geom 158: material #158 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d20818291c5aff92 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d20818291c5aff92 +geom 159: material #159 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:4ac6d08d190c1587 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:4ac6d08d190c1587 +geom 160: material #160 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0619a347d5925d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0619a347d5925d98 +geom 161: material #161 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:693a177c70d0b502 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:693a177c70d0b502 +geom 162: material #162 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:36fa5959959f5b0a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:36fa5959959f5b0a +geom 163: material #163 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9e0327727b74c419 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9e0327727b74c419 +geom 164: material #164 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9be9f00827328ce8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9be9f00827328ce8 +geom 165: material #165 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:44027fba6cf235c3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:44027fba6cf235c3 +geom 166: material #166 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:65ec6c97e71cce65 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:65ec6c97e71cce65 +geom 167: material #167 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8da81d72b5295057 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:8da81d72b5295057 +geom 168: material #168 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1ec5342902b45b58 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1ec5342902b45b58 +geom 169: material #169 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:443f9f1c936a9628 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:443f9f1c936a9628 +geom 170: material #170 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f66cea641f71b36a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f66cea641f71b36a +geom 171: material #171 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:60c616eb240e6402 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:60c616eb240e6402 +geom 172: material #172 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:98d397b59416e85d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:98d397b59416e85d +geom 173: material #173 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:59ca60e72d09f8b7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:59ca60e72d09f8b7 +geom 174: material #174 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b8e65953e49aa5e0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b8e65953e49aa5e0 +geom 175: material #175 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:988a24366bb6f560 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:988a24366bb6f560 +geom 176: material #176 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2ee0b9a38473fe1e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2ee0b9a38473fe1e +geom 177: material #177 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e799240a24e6e0ed camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e799240a24e6e0ed +geom 178: material #178 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:14921443a0ba5679 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:14921443a0ba5679 +geom 179: material #179 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0e06c2b68632d68a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0e06c2b68632d68a +geom 180: material #180 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e258aefe6c1eea33 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e258aefe6c1eea33 +geom 181: material #181 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e924c14fb68a2966 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e924c14fb68a2966 +geom 182: material #182 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:964c7cd8651864ce camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:964c7cd8651864ce +geom 183: material #183 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:87e5bc8414e70215 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:87e5bc8414e70215 +geom 184: material #184 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6e9e25c1393a3c53 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:6e9e25c1393a3c53 +geom 185: material #185 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c9bd7baef6b3670e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c9bd7baef6b3670e +geom 186: material #186 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:27687b43ccaaa6b8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:27687b43ccaaa6b8 +geom 187: material #187 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:02956d1c81ba9d95 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:02956d1c81ba9d95 +geom 188: material #188 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:908ad3f258b711e0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:908ad3f258b711e0 +geom 189: material #189 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:815dea82c23858f4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:815dea82c23858f4 +geom 190: material #190 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0f1b94b69f573b6c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0f1b94b69f573b6c +geom 191: material #191 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ec171a47622e8061 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ec171a47622e8061 +geom 192: material #192 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:554f4cebf95ecfe3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:554f4cebf95ecfe3 +geom 193: material #193 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:16bed55e0309b62e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:16bed55e0309b62e +geom 194: material #194 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0e684b66dcf01ba camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c0e684b66dcf01ba +geom 195: material #195 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a64738315de64a25 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a64738315de64a25 +geom 196: material #196 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9c1762102c6dc4b4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9c1762102c6dc4b4 +geom 197: material #197 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f0321b3a4ed09a3b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f0321b3a4ed09a3b +geom 198: material #198 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b1a3198a95f3cf78 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b1a3198a95f3cf78 +geom 199: material #199 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:cf92243ed97e14dd camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:cf92243ed97e14dd +geom 200: material #200 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0bb08c482c2a4825 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0bb08c482c2a4825 +geom 201: material #201 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a0397d08dfdcd7d3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a0397d08dfdcd7d3 +geom 202: material #202 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3046d6a26702dc2f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3046d6a26702dc2f +geom 203: material #203 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:49722f19c258764a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:49722f19c258764a +geom 204: material #204 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:806003126719484f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:806003126719484f +geom 205: material #205 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3e407ed0e9a18a51 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3e407ed0e9a18a51 +geom 206: material #206 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f207a4a00c8d3a01 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f207a4a00c8d3a01 +geom 207: material #207 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f55536ed8d680a92 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f55536ed8d680a92 +geom 208: material #208 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:47a1fc0d2282312b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:47a1fc0d2282312b +geom 209: material #209 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:966a352e982dcb9c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:966a352e982dcb9c +geom 210: material #210 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c257f6a69029b511 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c257f6a69029b511 +geom 211: material #211 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2bed0c4c80e3d6d2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2bed0c4c80e3d6d2 +geom 212: material #212 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5f393a3e380cd82e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5f393a3e380cd82e +geom 213: material #213 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9c542db4d36eab87 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9c542db4d36eab87 +geom 214: material #214 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:31593b8d7172c3b7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:31593b8d7172c3b7 +geom 215: material #215 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2a49ac229eb540e4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2a49ac229eb540e4 +geom 216: material #216 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f04e7fe34b0c6820 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f04e7fe34b0c6820 +geom 217: material #217 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:45be58ec11205157 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:45be58ec11205157 +geom 218: material #218 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5871ca49e8651b78 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5871ca49e8651b78 +geom 219: material #219 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5f0af8ec75ea9587 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5f0af8ec75ea9587 +geom 220: material #220 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6c1bf6eb9a5aa677 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:6c1bf6eb9a5aa677 +geom 221: material #221 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7b0c993b216970f8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:7b0c993b216970f8 +geom 222: material #222 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:353ba33820aebbc5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:353ba33820aebbc5 +geom 223: material #223 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1b9101f5b5a80622 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1b9101f5b5a80622 +geom 224: material #224 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0cff0ca8584ce19c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0cff0ca8584ce19c +geom 225: material #225 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9e14b2927ce55e23 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9e14b2927ce55e23 +geom 226: material #226 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ead78e4030e47495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ead78e4030e47495 +geom 227: material #227 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:82799a21ebbd12c7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:82799a21ebbd12c7 +geom 228: material #228 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:cfa62b0d232a6726 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:cfa62b0d232a6726 +geom 229: material #229 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f03ea22a58fd023b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f03ea22a58fd023b +geom 230: material #230 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fabdb03f7a1224a6 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fabdb03f7a1224a6 +geom 231: material #231 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ea4e8636be19b5a3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ea4e8636be19b5a3 +geom 232: material #232 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ccf997672cd3888c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ccf997672cd3888c +geom 233: material #233 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:395c9438f3ac48ed camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:395c9438f3ac48ed +geom 234: material #234 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f124e0e9b1b1b2f6 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f124e0e9b1b1b2f6 +geom 235: material #235 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7886baa5ccab970a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:7886baa5ccab970a +geom 236: material #236 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8a173cdb9b4bb04d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:8a173cdb9b4bb04d +geom 237: material #237 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee1c52de13f10ce2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ee1c52de13f10ce2 +geom 238: material #238 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3c2a228fb3fdce2a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3c2a228fb3fdce2a +geom 239: material #239 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3e621998768847e0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3e621998768847e0 +geom 240: material #240 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bc99ab1eb02af696 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:bc99ab1eb02af696 +geom 241: material #241 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:eec882b8068c66e2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:eec882b8068c66e2 +geom 242: material #242 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:30fa1f19bd0432d0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:30fa1f19bd0432d0 +geom 243: material #243 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2ab176bb34e28d5b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2ab176bb34e28d5b +geom 244: material #244 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:985ffa1127d42a66 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:985ffa1127d42a66 +geom 245: material #245 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9818ddc3d963e1fc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9818ddc3d963e1fc +geom 246: material #246 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:056abe1be316d47c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:056abe1be316d47c +geom 247: material #247 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9cce1fe7d92c99f0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9cce1fe7d92c99f0 +geom 248: material #248 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ce299cb842a33236 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ce299cb842a33236 +geom 249: material #249 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3dfa2d08de2b6eef camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3dfa2d08de2b6eef +geom 250: material #250 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e47c78919a782071 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e47c78919a782071 +geom 251: material #251 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d4fce875fe9dd8b6 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d4fce875fe9dd8b6 +geom 252: material #252 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b3c525b609f2410c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b3c525b609f2410c +geom 253: material #253 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fd2311cdb7e72015 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fd2311cdb7e72015 +geom 254: material #254 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0730b9fdd252ce88 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0730b9fdd252ce88 +geom 255: material #255 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:490ebaba08c10957 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:490ebaba08c10957 +geom 256: material #256 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.8566356 motion [] pieces all=12:49c63dff4b2bf27d camera=12:49c63dff4b2bf27d shadow=12:49c63dff4b2bf27d indirect=12:49c63dff4b2bf27d +geom 257: material #256 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.8566356 motion [] pieces all=12:c99da1694bd0d57d camera=12:c99da1694bd0d57d shadow=12:c99da1694bd0d57d indirect=12:c99da1694bd0d57d +geom 258: material #256 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 2.237378 motion [] pieces all=12:f18564427496b1c9 camera=12:f18564427496b1c9 shadow=12:f18564427496b1c9 indirect=12:f18564427496b1c9 +geom 259: material #256 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 2.125317 motion [] pieces all=12:d45767a2f59b3a25 camera=12:d45767a2f59b3a25 shadow=12:d45767a2f59b3a25 indirect=12:d45767a2f59b3a25 +geom 260: material #256 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 2.0 motion [] pieces all=12:fd03a07ee92783ad camera=12:fd03a07ee92783ad shadow=12:fd03a07ee92783ad indirect=12:fd03a07ee92783ad +geom 261: material #256 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +provenance light /World/Fill: LightOrigin { index: 0, geoms: 0..0 } +provenance light /World/Panel000: LightOrigin { index: 96, geoms: 95..96 } +provenance light /World/Panel001: LightOrigin { index: 95, geoms: 94..95 } +provenance light /World/Panel002: LightOrigin { index: 94, geoms: 93..94 } +provenance light /World/Panel003: LightOrigin { index: 93, geoms: 92..93 } +provenance light /World/Panel004: LightOrigin { index: 92, geoms: 91..92 } +provenance light /World/Panel005: LightOrigin { index: 91, geoms: 90..91 } +provenance light /World/Panel006: LightOrigin { index: 90, geoms: 89..90 } +provenance light /World/Panel007: LightOrigin { index: 89, geoms: 88..89 } +provenance light /World/Panel008: LightOrigin { index: 88, geoms: 87..88 } +provenance light /World/Panel009: LightOrigin { index: 87, geoms: 86..87 } +provenance light /World/Panel010: LightOrigin { index: 86, geoms: 85..86 } +provenance light /World/Panel011: LightOrigin { index: 85, geoms: 84..85 } +provenance light /World/Panel012: LightOrigin { index: 84, geoms: 83..84 } +provenance light /World/Panel013: LightOrigin { index: 83, geoms: 82..83 } +provenance light /World/Panel014: LightOrigin { index: 82, geoms: 81..82 } +provenance light /World/Panel015: LightOrigin { index: 81, geoms: 80..81 } +provenance light /World/Panel016: LightOrigin { index: 80, geoms: 79..80 } +provenance light /World/Panel017: LightOrigin { index: 79, geoms: 78..79 } +provenance light /World/Panel018: LightOrigin { index: 78, geoms: 77..78 } +provenance light /World/Panel019: LightOrigin { index: 77, geoms: 76..77 } +provenance light /World/Panel020: LightOrigin { index: 76, geoms: 75..76 } +provenance light /World/Panel021: LightOrigin { index: 75, geoms: 74..75 } +provenance light /World/Panel022: LightOrigin { index: 74, geoms: 73..74 } +provenance light /World/Panel023: LightOrigin { index: 73, geoms: 72..73 } +provenance light /World/Panel024: LightOrigin { index: 72, geoms: 71..72 } +provenance light /World/Panel025: LightOrigin { index: 71, geoms: 70..71 } +provenance light /World/Panel026: LightOrigin { index: 70, geoms: 69..70 } +provenance light /World/Panel027: LightOrigin { index: 69, geoms: 68..69 } +provenance light /World/Panel028: LightOrigin { index: 68, geoms: 67..68 } +provenance light /World/Panel029: LightOrigin { index: 67, geoms: 66..67 } +provenance light /World/Panel030: LightOrigin { index: 66, geoms: 65..66 } +provenance light /World/Panel031: LightOrigin { index: 65, geoms: 64..65 } +provenance light /World/Panel032: LightOrigin { index: 64, geoms: 63..64 } +provenance light /World/Panel033: LightOrigin { index: 63, geoms: 62..63 } +provenance light /World/Panel034: LightOrigin { index: 62, geoms: 61..62 } +provenance light /World/Panel035: LightOrigin { index: 61, geoms: 60..61 } +provenance light /World/Panel036: LightOrigin { index: 60, geoms: 59..60 } +provenance light /World/Panel037: LightOrigin { index: 59, geoms: 58..59 } +provenance light /World/Panel038: LightOrigin { index: 58, geoms: 57..58 } +provenance light /World/Panel039: LightOrigin { index: 57, geoms: 56..57 } +provenance light /World/Panel040: LightOrigin { index: 56, geoms: 55..56 } +provenance light /World/Panel041: LightOrigin { index: 55, geoms: 54..55 } +provenance light /World/Panel042: LightOrigin { index: 54, geoms: 53..54 } +provenance light /World/Panel043: LightOrigin { index: 53, geoms: 52..53 } +provenance light /World/Panel044: LightOrigin { index: 52, geoms: 51..52 } +provenance light /World/Panel045: LightOrigin { index: 51, geoms: 50..51 } +provenance light /World/Panel046: LightOrigin { index: 50, geoms: 49..50 } +provenance light /World/Panel047: LightOrigin { index: 49, geoms: 48..49 } +provenance light /World/Panel048: LightOrigin { index: 48, geoms: 47..48 } +provenance light /World/Panel049: LightOrigin { index: 47, geoms: 46..47 } +provenance light /World/Panel050: LightOrigin { index: 46, geoms: 45..46 } +provenance light /World/Panel051: LightOrigin { index: 45, geoms: 44..45 } +provenance light /World/Panel052: LightOrigin { index: 44, geoms: 43..44 } +provenance light /World/Panel053: LightOrigin { index: 43, geoms: 42..43 } +provenance light /World/Panel054: LightOrigin { index: 42, geoms: 41..42 } +provenance light /World/Panel055: LightOrigin { index: 41, geoms: 40..41 } +provenance light /World/Panel056: LightOrigin { index: 40, geoms: 39..40 } +provenance light /World/Panel057: LightOrigin { index: 39, geoms: 38..39 } +provenance light /World/Panel058: LightOrigin { index: 38, geoms: 37..38 } +provenance light /World/Panel059: LightOrigin { index: 37, geoms: 36..37 } +provenance light /World/Panel060: LightOrigin { index: 36, geoms: 35..36 } +provenance light /World/Panel061: LightOrigin { index: 35, geoms: 34..35 } +provenance light /World/Panel062: LightOrigin { index: 34, geoms: 33..34 } +provenance light /World/Panel063: LightOrigin { index: 33, geoms: 32..33 } +provenance light /World/Panel064: LightOrigin { index: 32, geoms: 31..32 } +provenance light /World/Panel065: LightOrigin { index: 31, geoms: 30..31 } +provenance light /World/Panel066: LightOrigin { index: 30, geoms: 29..30 } +provenance light /World/Panel067: LightOrigin { index: 29, geoms: 28..29 } +provenance light /World/Panel068: LightOrigin { index: 28, geoms: 27..28 } +provenance light /World/Panel069: LightOrigin { index: 27, geoms: 26..27 } +provenance light /World/Panel070: LightOrigin { index: 26, geoms: 25..26 } +provenance light /World/Panel071: LightOrigin { index: 25, geoms: 24..25 } +provenance light /World/Panel072: LightOrigin { index: 24, geoms: 23..24 } +provenance light /World/Panel073: LightOrigin { index: 23, geoms: 22..23 } +provenance light /World/Panel074: LightOrigin { index: 22, geoms: 21..22 } +provenance light /World/Panel075: LightOrigin { index: 21, geoms: 20..21 } +provenance light /World/Panel076: LightOrigin { index: 20, geoms: 19..20 } +provenance light /World/Panel077: LightOrigin { index: 19, geoms: 18..19 } +provenance light /World/Panel078: LightOrigin { index: 18, geoms: 17..18 } +provenance light /World/Panel079: LightOrigin { index: 17, geoms: 16..17 } +provenance light /World/Sphere000: LightOrigin { index: 256, geoms: 255..256 } +provenance light /World/Sphere001: LightOrigin { index: 255, geoms: 254..255 } +provenance light /World/Sphere002: LightOrigin { index: 254, geoms: 253..254 } +provenance light /World/Sphere003: LightOrigin { index: 253, geoms: 252..253 } +provenance light /World/Sphere004: LightOrigin { index: 252, geoms: 251..252 } +provenance light /World/Sphere005: LightOrigin { index: 251, geoms: 250..251 } +provenance light /World/Sphere006: LightOrigin { index: 250, geoms: 249..250 } +provenance light /World/Sphere007: LightOrigin { index: 249, geoms: 248..249 } +provenance light /World/Sphere008: LightOrigin { index: 248, geoms: 247..248 } +provenance light /World/Sphere009: LightOrigin { index: 247, geoms: 246..247 } +provenance light /World/Sphere010: LightOrigin { index: 246, geoms: 245..246 } +provenance light /World/Sphere011: LightOrigin { index: 245, geoms: 244..245 } +provenance light /World/Sphere012: LightOrigin { index: 244, geoms: 243..244 } +provenance light /World/Sphere013: LightOrigin { index: 243, geoms: 242..243 } +provenance light /World/Sphere014: LightOrigin { index: 242, geoms: 241..242 } +provenance light /World/Sphere015: LightOrigin { index: 241, geoms: 240..241 } +provenance light /World/Sphere016: LightOrigin { index: 240, geoms: 239..240 } +provenance light /World/Sphere017: LightOrigin { index: 239, geoms: 238..239 } +provenance light /World/Sphere018: LightOrigin { index: 238, geoms: 237..238 } +provenance light /World/Sphere019: LightOrigin { index: 237, geoms: 236..237 } +provenance light /World/Sphere020: LightOrigin { index: 236, geoms: 235..236 } +provenance light /World/Sphere021: LightOrigin { index: 235, geoms: 234..235 } +provenance light /World/Sphere022: LightOrigin { index: 234, geoms: 233..234 } +provenance light /World/Sphere023: LightOrigin { index: 233, geoms: 232..233 } +provenance light /World/Sphere024: LightOrigin { index: 232, geoms: 231..232 } +provenance light /World/Sphere025: LightOrigin { index: 231, geoms: 230..231 } +provenance light /World/Sphere026: LightOrigin { index: 230, geoms: 229..230 } +provenance light /World/Sphere027: LightOrigin { index: 229, geoms: 228..229 } +provenance light /World/Sphere028: LightOrigin { index: 228, geoms: 227..228 } +provenance light /World/Sphere029: LightOrigin { index: 227, geoms: 226..227 } +provenance light /World/Sphere030: LightOrigin { index: 226, geoms: 225..226 } +provenance light /World/Sphere031: LightOrigin { index: 225, geoms: 224..225 } +provenance light /World/Sphere032: LightOrigin { index: 224, geoms: 223..224 } +provenance light /World/Sphere033: LightOrigin { index: 223, geoms: 222..223 } +provenance light /World/Sphere034: LightOrigin { index: 222, geoms: 221..222 } +provenance light /World/Sphere035: LightOrigin { index: 221, geoms: 220..221 } +provenance light /World/Sphere036: LightOrigin { index: 220, geoms: 219..220 } +provenance light /World/Sphere037: LightOrigin { index: 219, geoms: 218..219 } +provenance light /World/Sphere038: LightOrigin { index: 218, geoms: 217..218 } +provenance light /World/Sphere039: LightOrigin { index: 217, geoms: 216..217 } +provenance light /World/Sphere040: LightOrigin { index: 216, geoms: 215..216 } +provenance light /World/Sphere041: LightOrigin { index: 215, geoms: 214..215 } +provenance light /World/Sphere042: LightOrigin { index: 214, geoms: 213..214 } +provenance light /World/Sphere043: LightOrigin { index: 213, geoms: 212..213 } +provenance light /World/Sphere044: LightOrigin { index: 212, geoms: 211..212 } +provenance light /World/Sphere045: LightOrigin { index: 211, geoms: 210..211 } +provenance light /World/Sphere046: LightOrigin { index: 210, geoms: 209..210 } +provenance light /World/Sphere047: LightOrigin { index: 209, geoms: 208..209 } +provenance light /World/Sphere048: LightOrigin { index: 208, geoms: 207..208 } +provenance light /World/Sphere049: LightOrigin { index: 207, geoms: 206..207 } +provenance light /World/Sphere050: LightOrigin { index: 206, geoms: 205..206 } +provenance light /World/Sphere051: LightOrigin { index: 205, geoms: 204..205 } +provenance light /World/Sphere052: LightOrigin { index: 204, geoms: 203..204 } +provenance light /World/Sphere053: LightOrigin { index: 203, geoms: 202..203 } +provenance light /World/Sphere054: LightOrigin { index: 202, geoms: 201..202 } +provenance light /World/Sphere055: LightOrigin { index: 201, geoms: 200..201 } +provenance light /World/Sphere056: LightOrigin { index: 200, geoms: 199..200 } +provenance light /World/Sphere057: LightOrigin { index: 199, geoms: 198..199 } +provenance light /World/Sphere058: LightOrigin { index: 198, geoms: 197..198 } +provenance light /World/Sphere059: LightOrigin { index: 197, geoms: 196..197 } +provenance light /World/Sphere060: LightOrigin { index: 196, geoms: 195..196 } +provenance light /World/Sphere061: LightOrigin { index: 195, geoms: 194..195 } +provenance light /World/Sphere062: LightOrigin { index: 194, geoms: 193..194 } +provenance light /World/Sphere063: LightOrigin { index: 193, geoms: 192..193 } +provenance light /World/Sphere064: LightOrigin { index: 192, geoms: 191..192 } +provenance light /World/Sphere065: LightOrigin { index: 191, geoms: 190..191 } +provenance light /World/Sphere066: LightOrigin { index: 190, geoms: 189..190 } +provenance light /World/Sphere067: LightOrigin { index: 189, geoms: 188..189 } +provenance light /World/Sphere068: LightOrigin { index: 188, geoms: 187..188 } +provenance light /World/Sphere069: LightOrigin { index: 187, geoms: 186..187 } +provenance light /World/Sphere070: LightOrigin { index: 186, geoms: 185..186 } +provenance light /World/Sphere071: LightOrigin { index: 185, geoms: 184..185 } +provenance light /World/Sphere072: LightOrigin { index: 184, geoms: 183..184 } +provenance light /World/Sphere073: LightOrigin { index: 183, geoms: 182..183 } +provenance light /World/Sphere074: LightOrigin { index: 182, geoms: 181..182 } +provenance light /World/Sphere075: LightOrigin { index: 181, geoms: 180..181 } +provenance light /World/Sphere076: LightOrigin { index: 180, geoms: 179..180 } +provenance light /World/Sphere077: LightOrigin { index: 179, geoms: 178..179 } +provenance light /World/Sphere078: LightOrigin { index: 178, geoms: 177..178 } +provenance light /World/Sphere079: LightOrigin { index: 177, geoms: 176..177 } +provenance light /World/Sphere080: LightOrigin { index: 176, geoms: 175..176 } +provenance light /World/Sphere081: LightOrigin { index: 175, geoms: 174..175 } +provenance light /World/Sphere082: LightOrigin { index: 174, geoms: 173..174 } +provenance light /World/Sphere083: LightOrigin { index: 173, geoms: 172..173 } +provenance light /World/Sphere084: LightOrigin { index: 172, geoms: 171..172 } +provenance light /World/Sphere085: LightOrigin { index: 171, geoms: 170..171 } +provenance light /World/Sphere086: LightOrigin { index: 170, geoms: 169..170 } +provenance light /World/Sphere087: LightOrigin { index: 169, geoms: 168..169 } +provenance light /World/Sphere088: LightOrigin { index: 168, geoms: 167..168 } +provenance light /World/Sphere089: LightOrigin { index: 167, geoms: 166..167 } +provenance light /World/Sphere090: LightOrigin { index: 166, geoms: 165..166 } +provenance light /World/Sphere091: LightOrigin { index: 165, geoms: 164..165 } +provenance light /World/Sphere092: LightOrigin { index: 164, geoms: 163..164 } +provenance light /World/Sphere093: LightOrigin { index: 163, geoms: 162..163 } +provenance light /World/Sphere094: LightOrigin { index: 162, geoms: 161..162 } +provenance light /World/Sphere095: LightOrigin { index: 161, geoms: 160..161 } +provenance light /World/Sphere096: LightOrigin { index: 160, geoms: 159..160 } +provenance light /World/Sphere097: LightOrigin { index: 159, geoms: 158..159 } +provenance light /World/Sphere098: LightOrigin { index: 158, geoms: 157..158 } +provenance light /World/Sphere099: LightOrigin { index: 157, geoms: 156..157 } +provenance light /World/Sphere100: LightOrigin { index: 156, geoms: 155..156 } +provenance light /World/Sphere101: LightOrigin { index: 155, geoms: 154..155 } +provenance light /World/Sphere102: LightOrigin { index: 154, geoms: 153..154 } +provenance light /World/Sphere103: LightOrigin { index: 153, geoms: 152..153 } +provenance light /World/Sphere104: LightOrigin { index: 152, geoms: 151..152 } +provenance light /World/Sphere105: LightOrigin { index: 151, geoms: 150..151 } +provenance light /World/Sphere106: LightOrigin { index: 150, geoms: 149..150 } +provenance light /World/Sphere107: LightOrigin { index: 149, geoms: 148..149 } +provenance light /World/Sphere108: LightOrigin { index: 148, geoms: 147..148 } +provenance light /World/Sphere109: LightOrigin { index: 147, geoms: 146..147 } +provenance light /World/Sphere110: LightOrigin { index: 146, geoms: 145..146 } +provenance light /World/Sphere111: LightOrigin { index: 145, geoms: 144..145 } +provenance light /World/Sphere112: LightOrigin { index: 144, geoms: 143..144 } +provenance light /World/Sphere113: LightOrigin { index: 143, geoms: 142..143 } +provenance light /World/Sphere114: LightOrigin { index: 142, geoms: 141..142 } +provenance light /World/Sphere115: LightOrigin { index: 141, geoms: 140..141 } +provenance light /World/Sphere116: LightOrigin { index: 140, geoms: 139..140 } +provenance light /World/Sphere117: LightOrigin { index: 139, geoms: 138..139 } +provenance light /World/Sphere118: LightOrigin { index: 138, geoms: 137..138 } +provenance light /World/Sphere119: LightOrigin { index: 137, geoms: 136..137 } +provenance light /World/Sphere120: LightOrigin { index: 136, geoms: 135..136 } +provenance light /World/Sphere121: LightOrigin { index: 135, geoms: 134..135 } +provenance light /World/Sphere122: LightOrigin { index: 134, geoms: 133..134 } +provenance light /World/Sphere123: LightOrigin { index: 133, geoms: 132..133 } +provenance light /World/Sphere124: LightOrigin { index: 132, geoms: 131..132 } +provenance light /World/Sphere125: LightOrigin { index: 131, geoms: 130..131 } +provenance light /World/Sphere126: LightOrigin { index: 130, geoms: 129..130 } +provenance light /World/Sphere127: LightOrigin { index: 129, geoms: 128..129 } +provenance light /World/Sphere128: LightOrigin { index: 128, geoms: 127..128 } +provenance light /World/Sphere129: LightOrigin { index: 127, geoms: 126..127 } +provenance light /World/Sphere130: LightOrigin { index: 126, geoms: 125..126 } +provenance light /World/Sphere131: LightOrigin { index: 125, geoms: 124..125 } +provenance light /World/Sphere132: LightOrigin { index: 124, geoms: 123..124 } +provenance light /World/Sphere133: LightOrigin { index: 123, geoms: 122..123 } +provenance light /World/Sphere134: LightOrigin { index: 122, geoms: 121..122 } +provenance light /World/Sphere135: LightOrigin { index: 121, geoms: 120..121 } +provenance light /World/Sphere136: LightOrigin { index: 120, geoms: 119..120 } +provenance light /World/Sphere137: LightOrigin { index: 119, geoms: 118..119 } +provenance light /World/Sphere138: LightOrigin { index: 118, geoms: 117..118 } +provenance light /World/Sphere139: LightOrigin { index: 117, geoms: 116..117 } +provenance light /World/Sphere140: LightOrigin { index: 116, geoms: 115..116 } +provenance light /World/Sphere141: LightOrigin { index: 115, geoms: 114..115 } +provenance light /World/Sphere142: LightOrigin { index: 114, geoms: 113..114 } +provenance light /World/Sphere143: LightOrigin { index: 113, geoms: 112..113 } +provenance light /World/Sphere144: LightOrigin { index: 112, geoms: 111..112 } +provenance light /World/Sphere145: LightOrigin { index: 111, geoms: 110..111 } +provenance light /World/Sphere146: LightOrigin { index: 110, geoms: 109..110 } +provenance light /World/Sphere147: LightOrigin { index: 109, geoms: 108..109 } +provenance light /World/Sphere148: LightOrigin { index: 108, geoms: 107..108 } +provenance light /World/Sphere149: LightOrigin { index: 107, geoms: 106..107 } +provenance light /World/Sphere150: LightOrigin { index: 106, geoms: 105..106 } +provenance light /World/Sphere151: LightOrigin { index: 105, geoms: 104..105 } +provenance light /World/Sphere152: LightOrigin { index: 104, geoms: 103..104 } +provenance light /World/Sphere153: LightOrigin { index: 103, geoms: 102..103 } +provenance light /World/Sphere154: LightOrigin { index: 102, geoms: 101..102 } +provenance light /World/Sphere155: LightOrigin { index: 101, geoms: 100..101 } +provenance light /World/Sphere156: LightOrigin { index: 100, geoms: 99..100 } +provenance light /World/Sphere157: LightOrigin { index: 99, geoms: 98..99 } +provenance light /World/Sphere158: LightOrigin { index: 98, geoms: 97..98 } +provenance light /World/Sphere159: LightOrigin { index: 97, geoms: 96..97 } +provenance light /World/Spot00: LightOrigin { index: 16, geoms: 15..16 } +provenance light /World/Spot01: LightOrigin { index: 15, geoms: 14..15 } +provenance light /World/Spot02: LightOrigin { index: 14, geoms: 13..14 } +provenance light /World/Spot03: LightOrigin { index: 13, geoms: 12..13 } +provenance light /World/Spot04: LightOrigin { index: 12, geoms: 11..12 } +provenance light /World/Spot05: LightOrigin { index: 11, geoms: 10..11 } +provenance light /World/Spot06: LightOrigin { index: 10, geoms: 9..10 } +provenance light /World/Spot07: LightOrigin { index: 9, geoms: 8..9 } +provenance light /World/Spot08: LightOrigin { index: 8, geoms: 7..8 } +provenance light /World/Spot09: LightOrigin { index: 7, geoms: 6..7 } +provenance light /World/Spot10: LightOrigin { index: 6, geoms: 5..6 } +provenance light /World/Spot11: LightOrigin { index: 5, geoms: 4..5 } +provenance light /World/Spot12: LightOrigin { index: 4, geoms: 3..4 } +provenance light /World/Spot13: LightOrigin { index: 3, geoms: 2..3 } +provenance light /World/Spot14: LightOrigin { index: 2, geoms: 1..2 } +provenance light /World/Spot15: LightOrigin { index: 1, geoms: 0..1 } +provenance geometry 0..1: /World/Spot15 +provenance geometry 1..2: /World/Spot14 +provenance geometry 2..3: /World/Spot13 +provenance geometry 3..4: /World/Spot12 +provenance geometry 4..5: /World/Spot11 +provenance geometry 5..6: /World/Spot10 +provenance geometry 6..7: /World/Spot09 +provenance geometry 7..8: /World/Spot08 +provenance geometry 8..9: /World/Spot07 +provenance geometry 9..10: /World/Spot06 +provenance geometry 10..11: /World/Spot05 +provenance geometry 11..12: /World/Spot04 +provenance geometry 12..13: /World/Spot03 +provenance geometry 13..14: /World/Spot02 +provenance geometry 14..15: /World/Spot01 +provenance geometry 15..16: /World/Spot00 +provenance geometry 16..17: /World/Panel079 +provenance geometry 17..18: /World/Panel078 +provenance geometry 18..19: /World/Panel077 +provenance geometry 19..20: /World/Panel076 +provenance geometry 20..21: /World/Panel075 +provenance geometry 21..22: /World/Panel074 +provenance geometry 22..23: /World/Panel073 +provenance geometry 23..24: /World/Panel072 +provenance geometry 24..25: /World/Panel071 +provenance geometry 25..26: /World/Panel070 +provenance geometry 26..27: /World/Panel069 +provenance geometry 27..28: /World/Panel068 +provenance geometry 28..29: /World/Panel067 +provenance geometry 29..30: /World/Panel066 +provenance geometry 30..31: /World/Panel065 +provenance geometry 31..32: /World/Panel064 +provenance geometry 32..33: /World/Panel063 +provenance geometry 33..34: /World/Panel062 +provenance geometry 34..35: /World/Panel061 +provenance geometry 35..36: /World/Panel060 +provenance geometry 36..37: /World/Panel059 +provenance geometry 37..38: /World/Panel058 +provenance geometry 38..39: /World/Panel057 +provenance geometry 39..40: /World/Panel056 +provenance geometry 40..41: /World/Panel055 +provenance geometry 41..42: /World/Panel054 +provenance geometry 42..43: /World/Panel053 +provenance geometry 43..44: /World/Panel052 +provenance geometry 44..45: /World/Panel051 +provenance geometry 45..46: /World/Panel050 +provenance geometry 46..47: /World/Panel049 +provenance geometry 47..48: /World/Panel048 +provenance geometry 48..49: /World/Panel047 +provenance geometry 49..50: /World/Panel046 +provenance geometry 50..51: /World/Panel045 +provenance geometry 51..52: /World/Panel044 +provenance geometry 52..53: /World/Panel043 +provenance geometry 53..54: /World/Panel042 +provenance geometry 54..55: /World/Panel041 +provenance geometry 55..56: /World/Panel040 +provenance geometry 56..57: /World/Panel039 +provenance geometry 57..58: /World/Panel038 +provenance geometry 58..59: /World/Panel037 +provenance geometry 59..60: /World/Panel036 +provenance geometry 60..61: /World/Panel035 +provenance geometry 61..62: /World/Panel034 +provenance geometry 62..63: /World/Panel033 +provenance geometry 63..64: /World/Panel032 +provenance geometry 64..65: /World/Panel031 +provenance geometry 65..66: /World/Panel030 +provenance geometry 66..67: /World/Panel029 +provenance geometry 67..68: /World/Panel028 +provenance geometry 68..69: /World/Panel027 +provenance geometry 69..70: /World/Panel026 +provenance geometry 70..71: /World/Panel025 +provenance geometry 71..72: /World/Panel024 +provenance geometry 72..73: /World/Panel023 +provenance geometry 73..74: /World/Panel022 +provenance geometry 74..75: /World/Panel021 +provenance geometry 75..76: /World/Panel020 +provenance geometry 76..77: /World/Panel019 +provenance geometry 77..78: /World/Panel018 +provenance geometry 78..79: /World/Panel017 +provenance geometry 79..80: /World/Panel016 +provenance geometry 80..81: /World/Panel015 +provenance geometry 81..82: /World/Panel014 +provenance geometry 82..83: /World/Panel013 +provenance geometry 83..84: /World/Panel012 +provenance geometry 84..85: /World/Panel011 +provenance geometry 85..86: /World/Panel010 +provenance geometry 86..87: /World/Panel009 +provenance geometry 87..88: /World/Panel008 +provenance geometry 88..89: /World/Panel007 +provenance geometry 89..90: /World/Panel006 +provenance geometry 90..91: /World/Panel005 +provenance geometry 91..92: /World/Panel004 +provenance geometry 92..93: /World/Panel003 +provenance geometry 93..94: /World/Panel002 +provenance geometry 94..95: /World/Panel001 +provenance geometry 95..96: /World/Panel000 +provenance geometry 96..97: /World/Sphere159 +provenance geometry 97..98: /World/Sphere158 +provenance geometry 98..99: /World/Sphere157 +provenance geometry 99..100: /World/Sphere156 +provenance geometry 100..101: /World/Sphere155 +provenance geometry 101..102: /World/Sphere154 +provenance geometry 102..103: /World/Sphere153 +provenance geometry 103..104: /World/Sphere152 +provenance geometry 104..105: /World/Sphere151 +provenance geometry 105..106: /World/Sphere150 +provenance geometry 106..107: /World/Sphere149 +provenance geometry 107..108: /World/Sphere148 +provenance geometry 108..109: /World/Sphere147 +provenance geometry 109..110: /World/Sphere146 +provenance geometry 110..111: /World/Sphere145 +provenance geometry 111..112: /World/Sphere144 +provenance geometry 112..113: /World/Sphere143 +provenance geometry 113..114: /World/Sphere142 +provenance geometry 114..115: /World/Sphere141 +provenance geometry 115..116: /World/Sphere140 +provenance geometry 116..117: /World/Sphere139 +provenance geometry 117..118: /World/Sphere138 +provenance geometry 118..119: /World/Sphere137 +provenance geometry 119..120: /World/Sphere136 +provenance geometry 120..121: /World/Sphere135 +provenance geometry 121..122: /World/Sphere134 +provenance geometry 122..123: /World/Sphere133 +provenance geometry 123..124: /World/Sphere132 +provenance geometry 124..125: /World/Sphere131 +provenance geometry 125..126: /World/Sphere130 +provenance geometry 126..127: /World/Sphere129 +provenance geometry 127..128: /World/Sphere128 +provenance geometry 128..129: /World/Sphere127 +provenance geometry 129..130: /World/Sphere126 +provenance geometry 130..131: /World/Sphere125 +provenance geometry 131..132: /World/Sphere124 +provenance geometry 132..133: /World/Sphere123 +provenance geometry 133..134: /World/Sphere122 +provenance geometry 134..135: /World/Sphere121 +provenance geometry 135..136: /World/Sphere120 +provenance geometry 136..137: /World/Sphere119 +provenance geometry 137..138: /World/Sphere118 +provenance geometry 138..139: /World/Sphere117 +provenance geometry 139..140: /World/Sphere116 +provenance geometry 140..141: /World/Sphere115 +provenance geometry 141..142: /World/Sphere114 +provenance geometry 142..143: /World/Sphere113 +provenance geometry 143..144: /World/Sphere112 +provenance geometry 144..145: /World/Sphere111 +provenance geometry 145..146: /World/Sphere110 +provenance geometry 146..147: /World/Sphere109 +provenance geometry 147..148: /World/Sphere108 +provenance geometry 148..149: /World/Sphere107 +provenance geometry 149..150: /World/Sphere106 +provenance geometry 150..151: /World/Sphere105 +provenance geometry 151..152: /World/Sphere104 +provenance geometry 152..153: /World/Sphere103 +provenance geometry 153..154: /World/Sphere102 +provenance geometry 154..155: /World/Sphere101 +provenance geometry 155..156: /World/Sphere100 +provenance geometry 156..157: /World/Sphere099 +provenance geometry 157..158: /World/Sphere098 +provenance geometry 158..159: /World/Sphere097 +provenance geometry 159..160: /World/Sphere096 +provenance geometry 160..161: /World/Sphere095 +provenance geometry 161..162: /World/Sphere094 +provenance geometry 162..163: /World/Sphere093 +provenance geometry 163..164: /World/Sphere092 +provenance geometry 164..165: /World/Sphere091 +provenance geometry 165..166: /World/Sphere090 +provenance geometry 166..167: /World/Sphere089 +provenance geometry 167..168: /World/Sphere088 +provenance geometry 168..169: /World/Sphere087 +provenance geometry 169..170: /World/Sphere086 +provenance geometry 170..171: /World/Sphere085 +provenance geometry 171..172: /World/Sphere084 +provenance geometry 172..173: /World/Sphere083 +provenance geometry 173..174: /World/Sphere082 +provenance geometry 174..175: /World/Sphere081 +provenance geometry 175..176: /World/Sphere080 +provenance geometry 176..177: /World/Sphere079 +provenance geometry 177..178: /World/Sphere078 +provenance geometry 178..179: /World/Sphere077 +provenance geometry 179..180: /World/Sphere076 +provenance geometry 180..181: /World/Sphere075 +provenance geometry 181..182: /World/Sphere074 +provenance geometry 182..183: /World/Sphere073 +provenance geometry 183..184: /World/Sphere072 +provenance geometry 184..185: /World/Sphere071 +provenance geometry 185..186: /World/Sphere070 +provenance geometry 186..187: /World/Sphere069 +provenance geometry 187..188: /World/Sphere068 +provenance geometry 188..189: /World/Sphere067 +provenance geometry 189..190: /World/Sphere066 +provenance geometry 190..191: /World/Sphere065 +provenance geometry 191..192: /World/Sphere064 +provenance geometry 192..193: /World/Sphere063 +provenance geometry 193..194: /World/Sphere062 +provenance geometry 194..195: /World/Sphere061 +provenance geometry 195..196: /World/Sphere060 +provenance geometry 196..197: /World/Sphere059 +provenance geometry 197..198: /World/Sphere058 +provenance geometry 198..199: /World/Sphere057 +provenance geometry 199..200: /World/Sphere056 +provenance geometry 200..201: /World/Sphere055 +provenance geometry 201..202: /World/Sphere054 +provenance geometry 202..203: /World/Sphere053 +provenance geometry 203..204: /World/Sphere052 +provenance geometry 204..205: /World/Sphere051 +provenance geometry 205..206: /World/Sphere050 +provenance geometry 206..207: /World/Sphere049 +provenance geometry 207..208: /World/Sphere048 +provenance geometry 208..209: /World/Sphere047 +provenance geometry 209..210: /World/Sphere046 +provenance geometry 210..211: /World/Sphere045 +provenance geometry 211..212: /World/Sphere044 +provenance geometry 212..213: /World/Sphere043 +provenance geometry 213..214: /World/Sphere042 +provenance geometry 214..215: /World/Sphere041 +provenance geometry 215..216: /World/Sphere040 +provenance geometry 216..217: /World/Sphere039 +provenance geometry 217..218: /World/Sphere038 +provenance geometry 218..219: /World/Sphere037 +provenance geometry 219..220: /World/Sphere036 +provenance geometry 220..221: /World/Sphere035 +provenance geometry 221..222: /World/Sphere034 +provenance geometry 222..223: /World/Sphere033 +provenance geometry 223..224: /World/Sphere032 +provenance geometry 224..225: /World/Sphere031 +provenance geometry 225..226: /World/Sphere030 +provenance geometry 226..227: /World/Sphere029 +provenance geometry 227..228: /World/Sphere028 +provenance geometry 228..229: /World/Sphere027 +provenance geometry 229..230: /World/Sphere026 +provenance geometry 230..231: /World/Sphere025 +provenance geometry 231..232: /World/Sphere024 +provenance geometry 232..233: /World/Sphere023 +provenance geometry 233..234: /World/Sphere022 +provenance geometry 234..235: /World/Sphere021 +provenance geometry 235..236: /World/Sphere020 +provenance geometry 236..237: /World/Sphere019 +provenance geometry 237..238: /World/Sphere018 +provenance geometry 238..239: /World/Sphere017 +provenance geometry 239..240: /World/Sphere016 +provenance geometry 240..241: /World/Sphere015 +provenance geometry 241..242: /World/Sphere014 +provenance geometry 242..243: /World/Sphere013 +provenance geometry 243..244: /World/Sphere012 +provenance geometry 244..245: /World/Sphere011 +provenance geometry 245..246: /World/Sphere010 +provenance geometry 246..247: /World/Sphere009 +provenance geometry 247..248: /World/Sphere008 +provenance geometry 248..249: /World/Sphere007 +provenance geometry 249..250: /World/Sphere006 +provenance geometry 250..251: /World/Sphere005 +provenance geometry 251..252: /World/Sphere004 +provenance geometry 252..253: /World/Sphere003 +provenance geometry 253..254: /World/Sphere002 +provenance geometry 254..255: /World/Sphere001 +provenance geometry 255..256: /World/Sphere000 +provenance geometry 256..257: /World/Wall4 +provenance geometry 257..258: /World/Wall3 +provenance geometry 258..259: /World/Wall2 +provenance geometry 259..260: /World/Wall1 +provenance geometry 260..261: /World/Wall0 +provenance geometry 261..262: /World/Floor +provenance mesh: MeshOrigin { geom_id: 256, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 257, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 258, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 259, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 260, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 261, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18161012096923765881, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 5, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-1.digest b/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-1.digest new file mode 100644 index 000000000..109194759 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-1.digest @@ -0,0 +1,1062 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 14.0, 26.0), lower_left_corner: Vec3A(-9.000002, 4.6157455, 19.870996), horizontal: Vec3A(18.000004, -0.0, 0.0), vertical: Vec3A(0.0, 8.768508, -5.062501), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.8660253, -0.5), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 20.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/many_lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/many_lights.usda +lights: 257 +light 0: dome name Some("/World/Fill") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Spot15") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Spot14") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/Spot13") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 4: area name Some("/World/Spot12") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 5: area name Some("/World/Spot11") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 6: area name Some("/World/Spot10") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 7: area name Some("/World/Spot09") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 8: area name Some("/World/Spot08") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 9: area name Some("/World/Spot07") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 10: area name Some("/World/Spot06") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 11: area name Some("/World/Spot05") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 12: area name Some("/World/Spot04") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 13: area name Some("/World/Spot03") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 14: area name Some("/World/Spot02") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 15: area name Some("/World/Spot01") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 16: area name Some("/World/Spot00") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 17: area name Some("/World/Panel079") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 18: area name Some("/World/Panel078") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 19: area name Some("/World/Panel077") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 20: area name Some("/World/Panel076") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 21: area name Some("/World/Panel075") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 22: area name Some("/World/Panel074") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 23: area name Some("/World/Panel073") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 24: area name Some("/World/Panel072") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 25: area name Some("/World/Panel071") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 26: area name Some("/World/Panel070") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 27: area name Some("/World/Panel069") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 28: area name Some("/World/Panel068") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 29: area name Some("/World/Panel067") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 30: area name Some("/World/Panel066") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 31: area name Some("/World/Panel065") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 32: area name Some("/World/Panel064") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 33: area name Some("/World/Panel063") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 34: area name Some("/World/Panel062") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 35: area name Some("/World/Panel061") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 36: area name Some("/World/Panel060") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 37: area name Some("/World/Panel059") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 38: area name Some("/World/Panel058") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 39: area name Some("/World/Panel057") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 40: area name Some("/World/Panel056") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 41: area name Some("/World/Panel055") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 42: area name Some("/World/Panel054") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 43: area name Some("/World/Panel053") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 44: area name Some("/World/Panel052") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 45: area name Some("/World/Panel051") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 46: area name Some("/World/Panel050") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 47: area name Some("/World/Panel049") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 48: area name Some("/World/Panel048") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 49: area name Some("/World/Panel047") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 50: area name Some("/World/Panel046") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 51: area name Some("/World/Panel045") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 52: area name Some("/World/Panel044") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 53: area name Some("/World/Panel043") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 54: area name Some("/World/Panel042") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 55: area name Some("/World/Panel041") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 56: area name Some("/World/Panel040") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 57: area name Some("/World/Panel039") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 58: area name Some("/World/Panel038") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 59: area name Some("/World/Panel037") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 60: area name Some("/World/Panel036") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 61: area name Some("/World/Panel035") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 62: area name Some("/World/Panel034") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 63: area name Some("/World/Panel033") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 64: area name Some("/World/Panel032") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 65: area name Some("/World/Panel031") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 66: area name Some("/World/Panel030") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 67: area name Some("/World/Panel029") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 68: area name Some("/World/Panel028") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 69: area name Some("/World/Panel027") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 70: area name Some("/World/Panel026") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 71: area name Some("/World/Panel025") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 72: area name Some("/World/Panel024") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 73: area name Some("/World/Panel023") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 74: area name Some("/World/Panel022") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 75: area name Some("/World/Panel021") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 76: area name Some("/World/Panel020") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 77: area name Some("/World/Panel019") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 78: area name Some("/World/Panel018") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 79: area name Some("/World/Panel017") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 80: area name Some("/World/Panel016") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 81: area name Some("/World/Panel015") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 82: area name Some("/World/Panel014") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 83: area name Some("/World/Panel013") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 84: area name Some("/World/Panel012") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 85: area name Some("/World/Panel011") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 86: area name Some("/World/Panel010") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 87: area name Some("/World/Panel009") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 88: area name Some("/World/Panel008") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 89: area name Some("/World/Panel007") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 90: area name Some("/World/Panel006") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 91: area name Some("/World/Panel005") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 92: area name Some("/World/Panel004") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 93: area name Some("/World/Panel003") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 94: area name Some("/World/Panel002") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 95: area name Some("/World/Panel001") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 96: area name Some("/World/Panel000") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 97: area name Some("/World/Sphere159") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 98: area name Some("/World/Sphere158") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 99: area name Some("/World/Sphere157") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 100: area name Some("/World/Sphere156") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 101: area name Some("/World/Sphere155") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 102: area name Some("/World/Sphere154") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 103: area name Some("/World/Sphere153") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 104: area name Some("/World/Sphere152") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 105: area name Some("/World/Sphere151") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 106: area name Some("/World/Sphere150") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 107: area name Some("/World/Sphere149") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 108: area name Some("/World/Sphere148") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 109: area name Some("/World/Sphere147") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 110: area name Some("/World/Sphere146") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 111: area name Some("/World/Sphere145") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 112: area name Some("/World/Sphere144") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 113: area name Some("/World/Sphere143") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 114: area name Some("/World/Sphere142") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 115: area name Some("/World/Sphere141") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 116: area name Some("/World/Sphere140") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 117: area name Some("/World/Sphere139") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 118: area name Some("/World/Sphere138") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 119: area name Some("/World/Sphere137") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 120: area name Some("/World/Sphere136") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 121: area name Some("/World/Sphere135") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 122: area name Some("/World/Sphere134") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 123: area name Some("/World/Sphere133") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 124: area name Some("/World/Sphere132") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 125: area name Some("/World/Sphere131") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 126: area name Some("/World/Sphere130") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 127: area name Some("/World/Sphere129") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 128: area name Some("/World/Sphere128") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 129: area name Some("/World/Sphere127") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 130: area name Some("/World/Sphere126") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 131: area name Some("/World/Sphere125") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 132: area name Some("/World/Sphere124") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 133: area name Some("/World/Sphere123") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 134: area name Some("/World/Sphere122") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 135: area name Some("/World/Sphere121") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 136: area name Some("/World/Sphere120") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 137: area name Some("/World/Sphere119") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 138: area name Some("/World/Sphere118") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 139: area name Some("/World/Sphere117") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 140: area name Some("/World/Sphere116") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 141: area name Some("/World/Sphere115") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 142: area name Some("/World/Sphere114") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 143: area name Some("/World/Sphere113") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 144: area name Some("/World/Sphere112") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 145: area name Some("/World/Sphere111") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 146: area name Some("/World/Sphere110") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 147: area name Some("/World/Sphere109") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 148: area name Some("/World/Sphere108") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 149: area name Some("/World/Sphere107") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 150: area name Some("/World/Sphere106") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 151: area name Some("/World/Sphere105") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 152: area name Some("/World/Sphere104") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 153: area name Some("/World/Sphere103") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 154: area name Some("/World/Sphere102") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 155: area name Some("/World/Sphere101") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 156: area name Some("/World/Sphere100") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 157: area name Some("/World/Sphere099") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 158: area name Some("/World/Sphere098") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 159: area name Some("/World/Sphere097") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 160: area name Some("/World/Sphere096") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 161: area name Some("/World/Sphere095") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 162: area name Some("/World/Sphere094") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 163: area name Some("/World/Sphere093") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 164: area name Some("/World/Sphere092") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 165: area name Some("/World/Sphere091") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 166: area name Some("/World/Sphere090") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 167: area name Some("/World/Sphere089") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 168: area name Some("/World/Sphere088") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 169: area name Some("/World/Sphere087") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 170: area name Some("/World/Sphere086") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 171: area name Some("/World/Sphere085") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 172: area name Some("/World/Sphere084") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 173: area name Some("/World/Sphere083") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 174: area name Some("/World/Sphere082") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 175: area name Some("/World/Sphere081") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 176: area name Some("/World/Sphere080") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 177: area name Some("/World/Sphere079") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 178: area name Some("/World/Sphere078") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 179: area name Some("/World/Sphere077") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 180: area name Some("/World/Sphere076") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 181: area name Some("/World/Sphere075") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 182: area name Some("/World/Sphere074") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 183: area name Some("/World/Sphere073") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 184: area name Some("/World/Sphere072") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 185: area name Some("/World/Sphere071") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 186: area name Some("/World/Sphere070") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 187: area name Some("/World/Sphere069") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 188: area name Some("/World/Sphere068") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 189: area name Some("/World/Sphere067") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 190: area name Some("/World/Sphere066") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 191: area name Some("/World/Sphere065") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 192: area name Some("/World/Sphere064") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 193: area name Some("/World/Sphere063") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 194: area name Some("/World/Sphere062") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 195: area name Some("/World/Sphere061") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 196: area name Some("/World/Sphere060") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 197: area name Some("/World/Sphere059") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 198: area name Some("/World/Sphere058") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 199: area name Some("/World/Sphere057") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 200: area name Some("/World/Sphere056") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 201: area name Some("/World/Sphere055") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 202: area name Some("/World/Sphere054") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 203: area name Some("/World/Sphere053") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 204: area name Some("/World/Sphere052") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 205: area name Some("/World/Sphere051") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 206: area name Some("/World/Sphere050") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 207: area name Some("/World/Sphere049") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 208: area name Some("/World/Sphere048") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 209: area name Some("/World/Sphere047") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 210: area name Some("/World/Sphere046") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 211: area name Some("/World/Sphere045") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 212: area name Some("/World/Sphere044") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 213: area name Some("/World/Sphere043") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 214: area name Some("/World/Sphere042") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 215: area name Some("/World/Sphere041") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 216: area name Some("/World/Sphere040") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 217: area name Some("/World/Sphere039") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 218: area name Some("/World/Sphere038") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 219: area name Some("/World/Sphere037") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 220: area name Some("/World/Sphere036") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 221: area name Some("/World/Sphere035") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 222: area name Some("/World/Sphere034") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 223: area name Some("/World/Sphere033") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 224: area name Some("/World/Sphere032") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 225: area name Some("/World/Sphere031") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 226: area name Some("/World/Sphere030") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 227: area name Some("/World/Sphere029") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 228: area name Some("/World/Sphere028") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 229: area name Some("/World/Sphere027") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 230: area name Some("/World/Sphere026") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 231: area name Some("/World/Sphere025") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 232: area name Some("/World/Sphere024") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 233: area name Some("/World/Sphere023") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 234: area name Some("/World/Sphere022") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 235: area name Some("/World/Sphere021") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 236: area name Some("/World/Sphere020") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 237: area name Some("/World/Sphere019") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 238: area name Some("/World/Sphere018") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 239: area name Some("/World/Sphere017") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 240: area name Some("/World/Sphere016") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 241: area name Some("/World/Sphere015") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 242: area name Some("/World/Sphere014") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 243: area name Some("/World/Sphere013") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 244: area name Some("/World/Sphere012") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 245: area name Some("/World/Sphere011") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 246: area name Some("/World/Sphere010") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 247: area name Some("/World/Sphere009") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 248: area name Some("/World/Sphere008") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 249: area name Some("/World/Sphere007") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 250: area name Some("/World/Sphere006") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 251: area name Some("/World/Sphere005") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 252: area name Some("/World/Sphere004") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 253: area name Some("/World/Sphere003") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 254: area name Some("/World/Sphere002") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 255: area name Some("/World/Sphere001") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 256: area name Some("/World/Sphere000") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 262 geometries, PrimitiveBreakdown { triangles: 194, spheres: 160, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } top level, PrimitiveBreakdown { triangles: 206, spheres: 160, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:188f260f6479aa4e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:188f260f6479aa4e +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:97f45dafeae7396c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:97f45dafeae7396c +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:50faa5f64b009067 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:50faa5f64b009067 +geom 3: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ebbba4921e332478 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ebbba4921e332478 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ff2a5c7e54e0f9db camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ff2a5c7e54e0f9db +geom 5: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:15036b6847d0d5d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:15036b6847d0d5d8 +geom 6: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:71e61c6a60d61f89 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:71e61c6a60d61f89 +geom 7: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f3217ea4860a8728 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:f3217ea4860a8728 +geom 8: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8d754f5908ca78e0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8d754f5908ca78e0 +geom 9: material #9 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5657f45de0cd5100 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:5657f45de0cd5100 +geom 10: material #10 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c8be539fca9f01fb camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:c8be539fca9f01fb +geom 11: material #11 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d48a20ec03c99200 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d48a20ec03c99200 +geom 12: material #12 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:a7923437effed43d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:a7923437effed43d +geom 13: material #13 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e3e3808d2094f90a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e3e3808d2094f90a +geom 14: material #14 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1e497659eef12a81 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1e497659eef12a81 +geom 15: material #15 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ffb2ef2f4a649fa6 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ffb2ef2f4a649fa6 +geom 16: material #16 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5d5e430ff41c1c08 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:5d5e430ff41c1c08 +geom 17: material #17 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8f13d27ca8bbe966 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8f13d27ca8bbe966 +geom 18: material #18 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8652e2305229cfa0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8652e2305229cfa0 +geom 19: material #19 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:483a297758388d5c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:483a297758388d5c +geom 20: material #20 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:48e5f0ef3110f507 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:48e5f0ef3110f507 +geom 21: material #21 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ca51c27c8e04bfa2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ca51c27c8e04bfa2 +geom 22: material #22 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:84e9bace9eab9ec8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:84e9bace9eab9ec8 +geom 23: material #23 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:803d49dff50a2f92 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:803d49dff50a2f92 +geom 24: material #24 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:70b184a9244bc562 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:70b184a9244bc562 +geom 25: material #25 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:3164ae4a6ea6d628 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:3164ae4a6ea6d628 +geom 26: material #26 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7a60eae3c5968816 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7a60eae3c5968816 +geom 27: material #27 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:bb4cd18f8464d34c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:bb4cd18f8464d34c +geom 28: material #28 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:38f56b391c7ea50c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:38f56b391c7ea50c +geom 29: material #29 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c3fcfe7c5ed85fba camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:c3fcfe7c5ed85fba +geom 30: material #30 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6e268625717faeb1 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:6e268625717faeb1 +geom 31: material #31 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4b348295ce7972e4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4b348295ce7972e4 +geom 32: material #32 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c2b7dd874f5bac98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:c2b7dd874f5bac98 +geom 33: material #33 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:559c4d11d19668c0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:559c4d11d19668c0 +geom 34: material #34 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77be229f0d292714 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:77be229f0d292714 +geom 35: material #35 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5c5e3e047f91145c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:5c5e3e047f91145c +geom 36: material #36 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f9c327e97a20da39 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:f9c327e97a20da39 +geom 37: material #37 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:819e740103d9eca1 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:819e740103d9eca1 +geom 38: material #38 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1212f418647714b4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1212f418647714b4 +geom 39: material #39 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:91e281ba2b7c3ed8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:91e281ba2b7c3ed8 +geom 40: material #40 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8221ec0a7aae962b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8221ec0a7aae962b +geom 41: material #41 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:642e441ce136ee76 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:642e441ce136ee76 +geom 42: material #42 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:dcf19867b54c51ee camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:dcf19867b54c51ee +geom 43: material #43 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f8a9d1e9cb434139 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:f8a9d1e9cb434139 +geom 44: material #44 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8ec3acc16ec533be camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8ec3acc16ec533be +geom 45: material #45 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9bf7fd7118ebe84b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9bf7fd7118ebe84b +geom 46: material #46 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2a1ff2463031af5c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:2a1ff2463031af5c +geom 47: material #47 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b1cd3ab713320246 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:b1cd3ab713320246 +geom 48: material #48 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:735c8859d1ebf01c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:735c8859d1ebf01c +geom 49: material #49 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cc7113938e1868a5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:cc7113938e1868a5 +geom 50: material #50 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1969f53dc4c4ea77 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1969f53dc4c4ea77 +geom 51: material #51 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e6dabd74d1339b52 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e6dabd74d1339b52 +geom 52: material #52 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:612357c385f2578a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:612357c385f2578a +geom 53: material #53 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8561f9be5e95e3bc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8561f9be5e95e3bc +geom 54: material #54 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:973e05ae3389609e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:973e05ae3389609e +geom 55: material #55 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4708e1aa46768578 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4708e1aa46768578 +geom 56: material #56 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ab79f4992c448603 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ab79f4992c448603 +geom 57: material #57 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:61f6f945726813f9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:61f6f945726813f9 +geom 58: material #58 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:73c8ba55366a587e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:73c8ba55366a587e +geom 59: material #59 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:218c05d1384633dc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:218c05d1384633dc +geom 60: material #60 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:44b7957c677bd226 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:44b7957c677bd226 +geom 61: material #61 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:30eecb7c25719c05 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:30eecb7c25719c05 +geom 62: material #62 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:176d644e7ee2e684 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:176d644e7ee2e684 +geom 63: material #63 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ec73b763308f9a3d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ec73b763308f9a3d +geom 64: material #64 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e915a0aae228bc79 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e915a0aae228bc79 +geom 65: material #65 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7d6401aa59da4e38 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7d6401aa59da4e38 +geom 66: material #66 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:76f66ce61a14aa96 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:76f66ce61a14aa96 +geom 67: material #67 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d0a2be6dd2ce3c54 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d0a2be6dd2ce3c54 +geom 68: material #68 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1b5dfcf5e87976c3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1b5dfcf5e87976c3 +geom 69: material #69 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9355c82e434ac2ae camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9355c82e434ac2ae +geom 70: material #70 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:a77e58d3ff3a2121 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:a77e58d3ff3a2121 +geom 71: material #71 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:93043b72a388e080 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:93043b72a388e080 +geom 72: material #72 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:05b2719429e398de camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:05b2719429e398de +geom 73: material #73 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f8a0dd5a739f2fc0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:f8a0dd5a739f2fc0 +geom 74: material #74 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:dca1a43f4a7538ed camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:dca1a43f4a7538ed +geom 75: material #75 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8a2f5974cca942dc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8a2f5974cca942dc +geom 76: material #76 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:65272fbe17dd0c64 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:65272fbe17dd0c64 +geom 77: material #77 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9060c015c4a0f6b7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9060c015c4a0f6b7 +geom 78: material #78 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ec32f023d0468b65 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ec32f023d0468b65 +geom 79: material #79 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:a09de738183c4a9b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:a09de738183c4a9b +geom 80: material #80 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2bab4c271329769d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:2bab4c271329769d +geom 81: material #81 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e82dcf28bab67bb5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e82dcf28bab67bb5 +geom 82: material #82 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6d6d95bf01b4588f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:6d6d95bf01b4588f +geom 83: material #83 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6878b98c6d332db9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:6878b98c6d332db9 +geom 84: material #84 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b0b31b42e1646ca9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:b0b31b42e1646ca9 +geom 85: material #85 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:22ef3600d3ffa0e0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:22ef3600d3ffa0e0 +geom 86: material #86 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b2a86cb870f0d22b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:b2a86cb870f0d22b +geom 87: material #87 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c476f12c52f01b49 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:c476f12c52f01b49 +geom 88: material #88 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b05e191db12bfb49 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:b05e191db12bfb49 +geom 89: material #89 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:a93852b39b01de54 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:a93852b39b01de54 +geom 90: material #90 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8e04888e8ea9c61b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8e04888e8ea9c61b +geom 91: material #91 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d15b848fb52b48dd camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d15b848fb52b48dd +geom 92: material #92 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e3399568cfdc5a68 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e3399568cfdc5a68 +geom 93: material #93 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fd3bc52d5481c68b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:fd3bc52d5481c68b +geom 94: material #94 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4b6bf9a286fa9c3b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4b6bf9a286fa9c3b +geom 95: material #95 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6383d37d0761a2db camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:6383d37d0761a2db +geom 96: material #96 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:71d02d53d4718c39 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:71d02d53d4718c39 +geom 97: material #97 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:400eb2d44fcb9a5f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:400eb2d44fcb9a5f +geom 98: material #98 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fffd2eb5365a513b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fffd2eb5365a513b +geom 99: material #99 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5940a8f1a0c95329 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5940a8f1a0c95329 +geom 100: material #100 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3b48db8226d17f85 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3b48db8226d17f85 +geom 101: material #101 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:aa1153c63e5ac43a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:aa1153c63e5ac43a +geom 102: material #102 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bd3bf6f3fc8aec36 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:bd3bf6f3fc8aec36 +geom 103: material #103 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7f6d3a47eae227d1 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:7f6d3a47eae227d1 +geom 104: material #104 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7a7b74661ebf0e33 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:7a7b74661ebf0e33 +geom 105: material #105 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:107fa63ad1e17fbe camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:107fa63ad1e17fbe +geom 106: material #106 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f3e0558ff85941c1 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f3e0558ff85941c1 +geom 107: material #107 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:14d37fd8433b6789 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:14d37fd8433b6789 +geom 108: material #108 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b6168793b8d79637 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b6168793b8d79637 +geom 109: material #109 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:dc663f564b4abf96 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:dc663f564b4abf96 +geom 110: material #110 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bc1ab26495c75862 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:bc1ab26495c75862 +geom 111: material #111 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9db71c4e77fa28d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9db71c4e77fa28d8 +geom 112: material #112 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:4972dd20205b307c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:4972dd20205b307c +geom 113: material #113 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:eee5b389ee4c636c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:eee5b389ee4c636c +geom 114: material #114 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bd20a93dbc58b878 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:bd20a93dbc58b878 +geom 115: material #115 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9c47ae7c87cc708c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9c47ae7c87cc708c +geom 116: material #116 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f1283608d88564d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f1283608d88564d8 +geom 117: material #117 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:adb11f5730302415 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:adb11f5730302415 +geom 118: material #118 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8e552e201d6f97dd camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:8e552e201d6f97dd +geom 119: material #119 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e4c119bc34c77786 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e4c119bc34c77786 +geom 120: material #120 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6027a624eb7c130d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:6027a624eb7c130d +geom 121: material #121 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fbc3e7d2d6198050 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fbc3e7d2d6198050 +geom 122: material #122 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:58ba3abee14d275d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:58ba3abee14d275d +geom 123: material #123 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:877f8e71cb1475d7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:877f8e71cb1475d7 +geom 124: material #124 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:09fa61b6cf060adf camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:09fa61b6cf060adf +geom 125: material #125 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8c246fcef2c2eef6 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:8c246fcef2c2eef6 +geom 126: material #126 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1cc47b5b2ca5f28d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1cc47b5b2ca5f28d +geom 127: material #127 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:676edaa19da16ebe camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:676edaa19da16ebe +geom 128: material #128 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7873b72124c26fca camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:7873b72124c26fca +geom 129: material #129 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2215c2d56c212a9c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2215c2d56c212a9c +geom 130: material #130 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:175872964bf90374 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:175872964bf90374 +geom 131: material #131 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2ff5450f19d57f22 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2ff5450f19d57f22 +geom 132: material #132 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0c6666e8ac1e0815 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0c6666e8ac1e0815 +geom 133: material #133 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c596d5c96c513ca7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c596d5c96c513ca7 +geom 134: material #134 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0040db78da514f25 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0040db78da514f25 +geom 135: material #135 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:de2a78a79bae9337 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:de2a78a79bae9337 +geom 136: material #136 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:59f3492650c5bc07 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:59f3492650c5bc07 +geom 137: material #137 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b9f804daae586a8f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b9f804daae586a8f +geom 138: material #138 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b4bd7d7624ce51dc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b4bd7d7624ce51dc +geom 139: material #139 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:15969e3a9502bd45 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:15969e3a9502bd45 +geom 140: material #140 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:11322851339c87d3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:11322851339c87d3 +geom 141: material #141 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:118b2d127dea8263 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:118b2d127dea8263 +geom 142: material #142 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6ad913d604c2db0e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:6ad913d604c2db0e +geom 143: material #143 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:211b8ca5005d7169 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:211b8ca5005d7169 +geom 144: material #144 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8c9de10a93729b62 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:8c9de10a93729b62 +geom 145: material #145 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f3e0220514f702da camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f3e0220514f702da +geom 146: material #146 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:17a63772a2b4d662 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:17a63772a2b4d662 +geom 147: material #147 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:061fda494c625726 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:061fda494c625726 +geom 148: material #148 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:4a3ce7feb848ff65 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:4a3ce7feb848ff65 +geom 149: material #149 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a9c0b7aaa2c5c0da camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a9c0b7aaa2c5c0da +geom 150: material #150 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ef79af21c911dba7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ef79af21c911dba7 +geom 151: material #151 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3adc1fd624a13b6c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3adc1fd624a13b6c +geom 152: material #152 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d575ffe25950246b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d575ffe25950246b +geom 153: material #153 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ad7b40d76703a529 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ad7b40d76703a529 +geom 154: material #154 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:15fb25e6f8719406 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:15fb25e6f8719406 +geom 155: material #155 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c923795f00a7a549 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c923795f00a7a549 +geom 156: material #156 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a2fce7f8c840e481 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a2fce7f8c840e481 +geom 157: material #157 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5d4ae1b4078e8157 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5d4ae1b4078e8157 +geom 158: material #158 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d20818291c5aff92 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d20818291c5aff92 +geom 159: material #159 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:4ac6d08d190c1587 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:4ac6d08d190c1587 +geom 160: material #160 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0619a347d5925d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0619a347d5925d98 +geom 161: material #161 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:693a177c70d0b502 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:693a177c70d0b502 +geom 162: material #162 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:36fa5959959f5b0a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:36fa5959959f5b0a +geom 163: material #163 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9e0327727b74c419 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9e0327727b74c419 +geom 164: material #164 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9be9f00827328ce8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9be9f00827328ce8 +geom 165: material #165 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:44027fba6cf235c3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:44027fba6cf235c3 +geom 166: material #166 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:65ec6c97e71cce65 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:65ec6c97e71cce65 +geom 167: material #167 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8da81d72b5295057 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:8da81d72b5295057 +geom 168: material #168 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1ec5342902b45b58 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1ec5342902b45b58 +geom 169: material #169 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:443f9f1c936a9628 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:443f9f1c936a9628 +geom 170: material #170 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f66cea641f71b36a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f66cea641f71b36a +geom 171: material #171 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:60c616eb240e6402 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:60c616eb240e6402 +geom 172: material #172 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:98d397b59416e85d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:98d397b59416e85d +geom 173: material #173 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:59ca60e72d09f8b7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:59ca60e72d09f8b7 +geom 174: material #174 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b8e65953e49aa5e0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b8e65953e49aa5e0 +geom 175: material #175 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:988a24366bb6f560 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:988a24366bb6f560 +geom 176: material #176 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2ee0b9a38473fe1e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2ee0b9a38473fe1e +geom 177: material #177 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e799240a24e6e0ed camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e799240a24e6e0ed +geom 178: material #178 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:14921443a0ba5679 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:14921443a0ba5679 +geom 179: material #179 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0e06c2b68632d68a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0e06c2b68632d68a +geom 180: material #180 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e258aefe6c1eea33 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e258aefe6c1eea33 +geom 181: material #181 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e924c14fb68a2966 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e924c14fb68a2966 +geom 182: material #182 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:964c7cd8651864ce camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:964c7cd8651864ce +geom 183: material #183 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:87e5bc8414e70215 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:87e5bc8414e70215 +geom 184: material #184 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6e9e25c1393a3c53 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:6e9e25c1393a3c53 +geom 185: material #185 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c9bd7baef6b3670e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c9bd7baef6b3670e +geom 186: material #186 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:27687b43ccaaa6b8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:27687b43ccaaa6b8 +geom 187: material #187 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:02956d1c81ba9d95 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:02956d1c81ba9d95 +geom 188: material #188 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:908ad3f258b711e0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:908ad3f258b711e0 +geom 189: material #189 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:815dea82c23858f4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:815dea82c23858f4 +geom 190: material #190 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0f1b94b69f573b6c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0f1b94b69f573b6c +geom 191: material #191 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ec171a47622e8061 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ec171a47622e8061 +geom 192: material #192 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:554f4cebf95ecfe3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:554f4cebf95ecfe3 +geom 193: material #193 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:16bed55e0309b62e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:16bed55e0309b62e +geom 194: material #194 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0e684b66dcf01ba camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c0e684b66dcf01ba +geom 195: material #195 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a64738315de64a25 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a64738315de64a25 +geom 196: material #196 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9c1762102c6dc4b4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9c1762102c6dc4b4 +geom 197: material #197 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f0321b3a4ed09a3b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f0321b3a4ed09a3b +geom 198: material #198 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b1a3198a95f3cf78 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b1a3198a95f3cf78 +geom 199: material #199 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:cf92243ed97e14dd camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:cf92243ed97e14dd +geom 200: material #200 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0bb08c482c2a4825 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0bb08c482c2a4825 +geom 201: material #201 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a0397d08dfdcd7d3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a0397d08dfdcd7d3 +geom 202: material #202 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3046d6a26702dc2f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3046d6a26702dc2f +geom 203: material #203 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:49722f19c258764a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:49722f19c258764a +geom 204: material #204 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:806003126719484f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:806003126719484f +geom 205: material #205 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3e407ed0e9a18a51 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3e407ed0e9a18a51 +geom 206: material #206 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f207a4a00c8d3a01 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f207a4a00c8d3a01 +geom 207: material #207 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f55536ed8d680a92 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f55536ed8d680a92 +geom 208: material #208 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:47a1fc0d2282312b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:47a1fc0d2282312b +geom 209: material #209 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:966a352e982dcb9c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:966a352e982dcb9c +geom 210: material #210 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c257f6a69029b511 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c257f6a69029b511 +geom 211: material #211 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2bed0c4c80e3d6d2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2bed0c4c80e3d6d2 +geom 212: material #212 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5f393a3e380cd82e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5f393a3e380cd82e +geom 213: material #213 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9c542db4d36eab87 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9c542db4d36eab87 +geom 214: material #214 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:31593b8d7172c3b7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:31593b8d7172c3b7 +geom 215: material #215 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2a49ac229eb540e4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2a49ac229eb540e4 +geom 216: material #216 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f04e7fe34b0c6820 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f04e7fe34b0c6820 +geom 217: material #217 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:45be58ec11205157 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:45be58ec11205157 +geom 218: material #218 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5871ca49e8651b78 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5871ca49e8651b78 +geom 219: material #219 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5f0af8ec75ea9587 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5f0af8ec75ea9587 +geom 220: material #220 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6c1bf6eb9a5aa677 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:6c1bf6eb9a5aa677 +geom 221: material #221 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7b0c993b216970f8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:7b0c993b216970f8 +geom 222: material #222 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:353ba33820aebbc5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:353ba33820aebbc5 +geom 223: material #223 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1b9101f5b5a80622 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1b9101f5b5a80622 +geom 224: material #224 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0cff0ca8584ce19c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0cff0ca8584ce19c +geom 225: material #225 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9e14b2927ce55e23 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9e14b2927ce55e23 +geom 226: material #226 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ead78e4030e47495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ead78e4030e47495 +geom 227: material #227 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:82799a21ebbd12c7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:82799a21ebbd12c7 +geom 228: material #228 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:cfa62b0d232a6726 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:cfa62b0d232a6726 +geom 229: material #229 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f03ea22a58fd023b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f03ea22a58fd023b +geom 230: material #230 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fabdb03f7a1224a6 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fabdb03f7a1224a6 +geom 231: material #231 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ea4e8636be19b5a3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ea4e8636be19b5a3 +geom 232: material #232 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ccf997672cd3888c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ccf997672cd3888c +geom 233: material #233 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:395c9438f3ac48ed camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:395c9438f3ac48ed +geom 234: material #234 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f124e0e9b1b1b2f6 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f124e0e9b1b1b2f6 +geom 235: material #235 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7886baa5ccab970a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:7886baa5ccab970a +geom 236: material #236 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8a173cdb9b4bb04d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:8a173cdb9b4bb04d +geom 237: material #237 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee1c52de13f10ce2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ee1c52de13f10ce2 +geom 238: material #238 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3c2a228fb3fdce2a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3c2a228fb3fdce2a +geom 239: material #239 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3e621998768847e0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3e621998768847e0 +geom 240: material #240 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bc99ab1eb02af696 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:bc99ab1eb02af696 +geom 241: material #241 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:eec882b8068c66e2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:eec882b8068c66e2 +geom 242: material #242 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:30fa1f19bd0432d0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:30fa1f19bd0432d0 +geom 243: material #243 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2ab176bb34e28d5b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2ab176bb34e28d5b +geom 244: material #244 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:985ffa1127d42a66 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:985ffa1127d42a66 +geom 245: material #245 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9818ddc3d963e1fc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9818ddc3d963e1fc +geom 246: material #246 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:056abe1be316d47c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:056abe1be316d47c +geom 247: material #247 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9cce1fe7d92c99f0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9cce1fe7d92c99f0 +geom 248: material #248 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ce299cb842a33236 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ce299cb842a33236 +geom 249: material #249 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3dfa2d08de2b6eef camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3dfa2d08de2b6eef +geom 250: material #250 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e47c78919a782071 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e47c78919a782071 +geom 251: material #251 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d4fce875fe9dd8b6 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d4fce875fe9dd8b6 +geom 252: material #252 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b3c525b609f2410c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b3c525b609f2410c +geom 253: material #253 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fd2311cdb7e72015 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fd2311cdb7e72015 +geom 254: material #254 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0730b9fdd252ce88 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0730b9fdd252ce88 +geom 255: material #255 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:490ebaba08c10957 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:490ebaba08c10957 +geom 256: material #256 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.8566356 motion [] pieces all=12:49c63dff4b2bf27d camera=12:49c63dff4b2bf27d shadow=12:49c63dff4b2bf27d indirect=12:49c63dff4b2bf27d +geom 257: material #256 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.8566356 motion [] pieces all=12:c99da1694bd0d57d camera=12:c99da1694bd0d57d shadow=12:c99da1694bd0d57d indirect=12:c99da1694bd0d57d +geom 258: material #256 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 2.237378 motion [] pieces all=12:f18564427496b1c9 camera=12:f18564427496b1c9 shadow=12:f18564427496b1c9 indirect=12:f18564427496b1c9 +geom 259: material #256 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 2.125317 motion [] pieces all=12:d45767a2f59b3a25 camera=12:d45767a2f59b3a25 shadow=12:d45767a2f59b3a25 indirect=12:d45767a2f59b3a25 +geom 260: material #256 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 2.0 motion [] pieces all=12:fd03a07ee92783ad camera=12:fd03a07ee92783ad shadow=12:fd03a07ee92783ad indirect=12:fd03a07ee92783ad +geom 261: material #256 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +provenance light /World/Fill: LightOrigin { index: 0, geoms: 0..0 } +provenance light /World/Panel000: LightOrigin { index: 96, geoms: 95..96 } +provenance light /World/Panel001: LightOrigin { index: 95, geoms: 94..95 } +provenance light /World/Panel002: LightOrigin { index: 94, geoms: 93..94 } +provenance light /World/Panel003: LightOrigin { index: 93, geoms: 92..93 } +provenance light /World/Panel004: LightOrigin { index: 92, geoms: 91..92 } +provenance light /World/Panel005: LightOrigin { index: 91, geoms: 90..91 } +provenance light /World/Panel006: LightOrigin { index: 90, geoms: 89..90 } +provenance light /World/Panel007: LightOrigin { index: 89, geoms: 88..89 } +provenance light /World/Panel008: LightOrigin { index: 88, geoms: 87..88 } +provenance light /World/Panel009: LightOrigin { index: 87, geoms: 86..87 } +provenance light /World/Panel010: LightOrigin { index: 86, geoms: 85..86 } +provenance light /World/Panel011: LightOrigin { index: 85, geoms: 84..85 } +provenance light /World/Panel012: LightOrigin { index: 84, geoms: 83..84 } +provenance light /World/Panel013: LightOrigin { index: 83, geoms: 82..83 } +provenance light /World/Panel014: LightOrigin { index: 82, geoms: 81..82 } +provenance light /World/Panel015: LightOrigin { index: 81, geoms: 80..81 } +provenance light /World/Panel016: LightOrigin { index: 80, geoms: 79..80 } +provenance light /World/Panel017: LightOrigin { index: 79, geoms: 78..79 } +provenance light /World/Panel018: LightOrigin { index: 78, geoms: 77..78 } +provenance light /World/Panel019: LightOrigin { index: 77, geoms: 76..77 } +provenance light /World/Panel020: LightOrigin { index: 76, geoms: 75..76 } +provenance light /World/Panel021: LightOrigin { index: 75, geoms: 74..75 } +provenance light /World/Panel022: LightOrigin { index: 74, geoms: 73..74 } +provenance light /World/Panel023: LightOrigin { index: 73, geoms: 72..73 } +provenance light /World/Panel024: LightOrigin { index: 72, geoms: 71..72 } +provenance light /World/Panel025: LightOrigin { index: 71, geoms: 70..71 } +provenance light /World/Panel026: LightOrigin { index: 70, geoms: 69..70 } +provenance light /World/Panel027: LightOrigin { index: 69, geoms: 68..69 } +provenance light /World/Panel028: LightOrigin { index: 68, geoms: 67..68 } +provenance light /World/Panel029: LightOrigin { index: 67, geoms: 66..67 } +provenance light /World/Panel030: LightOrigin { index: 66, geoms: 65..66 } +provenance light /World/Panel031: LightOrigin { index: 65, geoms: 64..65 } +provenance light /World/Panel032: LightOrigin { index: 64, geoms: 63..64 } +provenance light /World/Panel033: LightOrigin { index: 63, geoms: 62..63 } +provenance light /World/Panel034: LightOrigin { index: 62, geoms: 61..62 } +provenance light /World/Panel035: LightOrigin { index: 61, geoms: 60..61 } +provenance light /World/Panel036: LightOrigin { index: 60, geoms: 59..60 } +provenance light /World/Panel037: LightOrigin { index: 59, geoms: 58..59 } +provenance light /World/Panel038: LightOrigin { index: 58, geoms: 57..58 } +provenance light /World/Panel039: LightOrigin { index: 57, geoms: 56..57 } +provenance light /World/Panel040: LightOrigin { index: 56, geoms: 55..56 } +provenance light /World/Panel041: LightOrigin { index: 55, geoms: 54..55 } +provenance light /World/Panel042: LightOrigin { index: 54, geoms: 53..54 } +provenance light /World/Panel043: LightOrigin { index: 53, geoms: 52..53 } +provenance light /World/Panel044: LightOrigin { index: 52, geoms: 51..52 } +provenance light /World/Panel045: LightOrigin { index: 51, geoms: 50..51 } +provenance light /World/Panel046: LightOrigin { index: 50, geoms: 49..50 } +provenance light /World/Panel047: LightOrigin { index: 49, geoms: 48..49 } +provenance light /World/Panel048: LightOrigin { index: 48, geoms: 47..48 } +provenance light /World/Panel049: LightOrigin { index: 47, geoms: 46..47 } +provenance light /World/Panel050: LightOrigin { index: 46, geoms: 45..46 } +provenance light /World/Panel051: LightOrigin { index: 45, geoms: 44..45 } +provenance light /World/Panel052: LightOrigin { index: 44, geoms: 43..44 } +provenance light /World/Panel053: LightOrigin { index: 43, geoms: 42..43 } +provenance light /World/Panel054: LightOrigin { index: 42, geoms: 41..42 } +provenance light /World/Panel055: LightOrigin { index: 41, geoms: 40..41 } +provenance light /World/Panel056: LightOrigin { index: 40, geoms: 39..40 } +provenance light /World/Panel057: LightOrigin { index: 39, geoms: 38..39 } +provenance light /World/Panel058: LightOrigin { index: 38, geoms: 37..38 } +provenance light /World/Panel059: LightOrigin { index: 37, geoms: 36..37 } +provenance light /World/Panel060: LightOrigin { index: 36, geoms: 35..36 } +provenance light /World/Panel061: LightOrigin { index: 35, geoms: 34..35 } +provenance light /World/Panel062: LightOrigin { index: 34, geoms: 33..34 } +provenance light /World/Panel063: LightOrigin { index: 33, geoms: 32..33 } +provenance light /World/Panel064: LightOrigin { index: 32, geoms: 31..32 } +provenance light /World/Panel065: LightOrigin { index: 31, geoms: 30..31 } +provenance light /World/Panel066: LightOrigin { index: 30, geoms: 29..30 } +provenance light /World/Panel067: LightOrigin { index: 29, geoms: 28..29 } +provenance light /World/Panel068: LightOrigin { index: 28, geoms: 27..28 } +provenance light /World/Panel069: LightOrigin { index: 27, geoms: 26..27 } +provenance light /World/Panel070: LightOrigin { index: 26, geoms: 25..26 } +provenance light /World/Panel071: LightOrigin { index: 25, geoms: 24..25 } +provenance light /World/Panel072: LightOrigin { index: 24, geoms: 23..24 } +provenance light /World/Panel073: LightOrigin { index: 23, geoms: 22..23 } +provenance light /World/Panel074: LightOrigin { index: 22, geoms: 21..22 } +provenance light /World/Panel075: LightOrigin { index: 21, geoms: 20..21 } +provenance light /World/Panel076: LightOrigin { index: 20, geoms: 19..20 } +provenance light /World/Panel077: LightOrigin { index: 19, geoms: 18..19 } +provenance light /World/Panel078: LightOrigin { index: 18, geoms: 17..18 } +provenance light /World/Panel079: LightOrigin { index: 17, geoms: 16..17 } +provenance light /World/Sphere000: LightOrigin { index: 256, geoms: 255..256 } +provenance light /World/Sphere001: LightOrigin { index: 255, geoms: 254..255 } +provenance light /World/Sphere002: LightOrigin { index: 254, geoms: 253..254 } +provenance light /World/Sphere003: LightOrigin { index: 253, geoms: 252..253 } +provenance light /World/Sphere004: LightOrigin { index: 252, geoms: 251..252 } +provenance light /World/Sphere005: LightOrigin { index: 251, geoms: 250..251 } +provenance light /World/Sphere006: LightOrigin { index: 250, geoms: 249..250 } +provenance light /World/Sphere007: LightOrigin { index: 249, geoms: 248..249 } +provenance light /World/Sphere008: LightOrigin { index: 248, geoms: 247..248 } +provenance light /World/Sphere009: LightOrigin { index: 247, geoms: 246..247 } +provenance light /World/Sphere010: LightOrigin { index: 246, geoms: 245..246 } +provenance light /World/Sphere011: LightOrigin { index: 245, geoms: 244..245 } +provenance light /World/Sphere012: LightOrigin { index: 244, geoms: 243..244 } +provenance light /World/Sphere013: LightOrigin { index: 243, geoms: 242..243 } +provenance light /World/Sphere014: LightOrigin { index: 242, geoms: 241..242 } +provenance light /World/Sphere015: LightOrigin { index: 241, geoms: 240..241 } +provenance light /World/Sphere016: LightOrigin { index: 240, geoms: 239..240 } +provenance light /World/Sphere017: LightOrigin { index: 239, geoms: 238..239 } +provenance light /World/Sphere018: LightOrigin { index: 238, geoms: 237..238 } +provenance light /World/Sphere019: LightOrigin { index: 237, geoms: 236..237 } +provenance light /World/Sphere020: LightOrigin { index: 236, geoms: 235..236 } +provenance light /World/Sphere021: LightOrigin { index: 235, geoms: 234..235 } +provenance light /World/Sphere022: LightOrigin { index: 234, geoms: 233..234 } +provenance light /World/Sphere023: LightOrigin { index: 233, geoms: 232..233 } +provenance light /World/Sphere024: LightOrigin { index: 232, geoms: 231..232 } +provenance light /World/Sphere025: LightOrigin { index: 231, geoms: 230..231 } +provenance light /World/Sphere026: LightOrigin { index: 230, geoms: 229..230 } +provenance light /World/Sphere027: LightOrigin { index: 229, geoms: 228..229 } +provenance light /World/Sphere028: LightOrigin { index: 228, geoms: 227..228 } +provenance light /World/Sphere029: LightOrigin { index: 227, geoms: 226..227 } +provenance light /World/Sphere030: LightOrigin { index: 226, geoms: 225..226 } +provenance light /World/Sphere031: LightOrigin { index: 225, geoms: 224..225 } +provenance light /World/Sphere032: LightOrigin { index: 224, geoms: 223..224 } +provenance light /World/Sphere033: LightOrigin { index: 223, geoms: 222..223 } +provenance light /World/Sphere034: LightOrigin { index: 222, geoms: 221..222 } +provenance light /World/Sphere035: LightOrigin { index: 221, geoms: 220..221 } +provenance light /World/Sphere036: LightOrigin { index: 220, geoms: 219..220 } +provenance light /World/Sphere037: LightOrigin { index: 219, geoms: 218..219 } +provenance light /World/Sphere038: LightOrigin { index: 218, geoms: 217..218 } +provenance light /World/Sphere039: LightOrigin { index: 217, geoms: 216..217 } +provenance light /World/Sphere040: LightOrigin { index: 216, geoms: 215..216 } +provenance light /World/Sphere041: LightOrigin { index: 215, geoms: 214..215 } +provenance light /World/Sphere042: LightOrigin { index: 214, geoms: 213..214 } +provenance light /World/Sphere043: LightOrigin { index: 213, geoms: 212..213 } +provenance light /World/Sphere044: LightOrigin { index: 212, geoms: 211..212 } +provenance light /World/Sphere045: LightOrigin { index: 211, geoms: 210..211 } +provenance light /World/Sphere046: LightOrigin { index: 210, geoms: 209..210 } +provenance light /World/Sphere047: LightOrigin { index: 209, geoms: 208..209 } +provenance light /World/Sphere048: LightOrigin { index: 208, geoms: 207..208 } +provenance light /World/Sphere049: LightOrigin { index: 207, geoms: 206..207 } +provenance light /World/Sphere050: LightOrigin { index: 206, geoms: 205..206 } +provenance light /World/Sphere051: LightOrigin { index: 205, geoms: 204..205 } +provenance light /World/Sphere052: LightOrigin { index: 204, geoms: 203..204 } +provenance light /World/Sphere053: LightOrigin { index: 203, geoms: 202..203 } +provenance light /World/Sphere054: LightOrigin { index: 202, geoms: 201..202 } +provenance light /World/Sphere055: LightOrigin { index: 201, geoms: 200..201 } +provenance light /World/Sphere056: LightOrigin { index: 200, geoms: 199..200 } +provenance light /World/Sphere057: LightOrigin { index: 199, geoms: 198..199 } +provenance light /World/Sphere058: LightOrigin { index: 198, geoms: 197..198 } +provenance light /World/Sphere059: LightOrigin { index: 197, geoms: 196..197 } +provenance light /World/Sphere060: LightOrigin { index: 196, geoms: 195..196 } +provenance light /World/Sphere061: LightOrigin { index: 195, geoms: 194..195 } +provenance light /World/Sphere062: LightOrigin { index: 194, geoms: 193..194 } +provenance light /World/Sphere063: LightOrigin { index: 193, geoms: 192..193 } +provenance light /World/Sphere064: LightOrigin { index: 192, geoms: 191..192 } +provenance light /World/Sphere065: LightOrigin { index: 191, geoms: 190..191 } +provenance light /World/Sphere066: LightOrigin { index: 190, geoms: 189..190 } +provenance light /World/Sphere067: LightOrigin { index: 189, geoms: 188..189 } +provenance light /World/Sphere068: LightOrigin { index: 188, geoms: 187..188 } +provenance light /World/Sphere069: LightOrigin { index: 187, geoms: 186..187 } +provenance light /World/Sphere070: LightOrigin { index: 186, geoms: 185..186 } +provenance light /World/Sphere071: LightOrigin { index: 185, geoms: 184..185 } +provenance light /World/Sphere072: LightOrigin { index: 184, geoms: 183..184 } +provenance light /World/Sphere073: LightOrigin { index: 183, geoms: 182..183 } +provenance light /World/Sphere074: LightOrigin { index: 182, geoms: 181..182 } +provenance light /World/Sphere075: LightOrigin { index: 181, geoms: 180..181 } +provenance light /World/Sphere076: LightOrigin { index: 180, geoms: 179..180 } +provenance light /World/Sphere077: LightOrigin { index: 179, geoms: 178..179 } +provenance light /World/Sphere078: LightOrigin { index: 178, geoms: 177..178 } +provenance light /World/Sphere079: LightOrigin { index: 177, geoms: 176..177 } +provenance light /World/Sphere080: LightOrigin { index: 176, geoms: 175..176 } +provenance light /World/Sphere081: LightOrigin { index: 175, geoms: 174..175 } +provenance light /World/Sphere082: LightOrigin { index: 174, geoms: 173..174 } +provenance light /World/Sphere083: LightOrigin { index: 173, geoms: 172..173 } +provenance light /World/Sphere084: LightOrigin { index: 172, geoms: 171..172 } +provenance light /World/Sphere085: LightOrigin { index: 171, geoms: 170..171 } +provenance light /World/Sphere086: LightOrigin { index: 170, geoms: 169..170 } +provenance light /World/Sphere087: LightOrigin { index: 169, geoms: 168..169 } +provenance light /World/Sphere088: LightOrigin { index: 168, geoms: 167..168 } +provenance light /World/Sphere089: LightOrigin { index: 167, geoms: 166..167 } +provenance light /World/Sphere090: LightOrigin { index: 166, geoms: 165..166 } +provenance light /World/Sphere091: LightOrigin { index: 165, geoms: 164..165 } +provenance light /World/Sphere092: LightOrigin { index: 164, geoms: 163..164 } +provenance light /World/Sphere093: LightOrigin { index: 163, geoms: 162..163 } +provenance light /World/Sphere094: LightOrigin { index: 162, geoms: 161..162 } +provenance light /World/Sphere095: LightOrigin { index: 161, geoms: 160..161 } +provenance light /World/Sphere096: LightOrigin { index: 160, geoms: 159..160 } +provenance light /World/Sphere097: LightOrigin { index: 159, geoms: 158..159 } +provenance light /World/Sphere098: LightOrigin { index: 158, geoms: 157..158 } +provenance light /World/Sphere099: LightOrigin { index: 157, geoms: 156..157 } +provenance light /World/Sphere100: LightOrigin { index: 156, geoms: 155..156 } +provenance light /World/Sphere101: LightOrigin { index: 155, geoms: 154..155 } +provenance light /World/Sphere102: LightOrigin { index: 154, geoms: 153..154 } +provenance light /World/Sphere103: LightOrigin { index: 153, geoms: 152..153 } +provenance light /World/Sphere104: LightOrigin { index: 152, geoms: 151..152 } +provenance light /World/Sphere105: LightOrigin { index: 151, geoms: 150..151 } +provenance light /World/Sphere106: LightOrigin { index: 150, geoms: 149..150 } +provenance light /World/Sphere107: LightOrigin { index: 149, geoms: 148..149 } +provenance light /World/Sphere108: LightOrigin { index: 148, geoms: 147..148 } +provenance light /World/Sphere109: LightOrigin { index: 147, geoms: 146..147 } +provenance light /World/Sphere110: LightOrigin { index: 146, geoms: 145..146 } +provenance light /World/Sphere111: LightOrigin { index: 145, geoms: 144..145 } +provenance light /World/Sphere112: LightOrigin { index: 144, geoms: 143..144 } +provenance light /World/Sphere113: LightOrigin { index: 143, geoms: 142..143 } +provenance light /World/Sphere114: LightOrigin { index: 142, geoms: 141..142 } +provenance light /World/Sphere115: LightOrigin { index: 141, geoms: 140..141 } +provenance light /World/Sphere116: LightOrigin { index: 140, geoms: 139..140 } +provenance light /World/Sphere117: LightOrigin { index: 139, geoms: 138..139 } +provenance light /World/Sphere118: LightOrigin { index: 138, geoms: 137..138 } +provenance light /World/Sphere119: LightOrigin { index: 137, geoms: 136..137 } +provenance light /World/Sphere120: LightOrigin { index: 136, geoms: 135..136 } +provenance light /World/Sphere121: LightOrigin { index: 135, geoms: 134..135 } +provenance light /World/Sphere122: LightOrigin { index: 134, geoms: 133..134 } +provenance light /World/Sphere123: LightOrigin { index: 133, geoms: 132..133 } +provenance light /World/Sphere124: LightOrigin { index: 132, geoms: 131..132 } +provenance light /World/Sphere125: LightOrigin { index: 131, geoms: 130..131 } +provenance light /World/Sphere126: LightOrigin { index: 130, geoms: 129..130 } +provenance light /World/Sphere127: LightOrigin { index: 129, geoms: 128..129 } +provenance light /World/Sphere128: LightOrigin { index: 128, geoms: 127..128 } +provenance light /World/Sphere129: LightOrigin { index: 127, geoms: 126..127 } +provenance light /World/Sphere130: LightOrigin { index: 126, geoms: 125..126 } +provenance light /World/Sphere131: LightOrigin { index: 125, geoms: 124..125 } +provenance light /World/Sphere132: LightOrigin { index: 124, geoms: 123..124 } +provenance light /World/Sphere133: LightOrigin { index: 123, geoms: 122..123 } +provenance light /World/Sphere134: LightOrigin { index: 122, geoms: 121..122 } +provenance light /World/Sphere135: LightOrigin { index: 121, geoms: 120..121 } +provenance light /World/Sphere136: LightOrigin { index: 120, geoms: 119..120 } +provenance light /World/Sphere137: LightOrigin { index: 119, geoms: 118..119 } +provenance light /World/Sphere138: LightOrigin { index: 118, geoms: 117..118 } +provenance light /World/Sphere139: LightOrigin { index: 117, geoms: 116..117 } +provenance light /World/Sphere140: LightOrigin { index: 116, geoms: 115..116 } +provenance light /World/Sphere141: LightOrigin { index: 115, geoms: 114..115 } +provenance light /World/Sphere142: LightOrigin { index: 114, geoms: 113..114 } +provenance light /World/Sphere143: LightOrigin { index: 113, geoms: 112..113 } +provenance light /World/Sphere144: LightOrigin { index: 112, geoms: 111..112 } +provenance light /World/Sphere145: LightOrigin { index: 111, geoms: 110..111 } +provenance light /World/Sphere146: LightOrigin { index: 110, geoms: 109..110 } +provenance light /World/Sphere147: LightOrigin { index: 109, geoms: 108..109 } +provenance light /World/Sphere148: LightOrigin { index: 108, geoms: 107..108 } +provenance light /World/Sphere149: LightOrigin { index: 107, geoms: 106..107 } +provenance light /World/Sphere150: LightOrigin { index: 106, geoms: 105..106 } +provenance light /World/Sphere151: LightOrigin { index: 105, geoms: 104..105 } +provenance light /World/Sphere152: LightOrigin { index: 104, geoms: 103..104 } +provenance light /World/Sphere153: LightOrigin { index: 103, geoms: 102..103 } +provenance light /World/Sphere154: LightOrigin { index: 102, geoms: 101..102 } +provenance light /World/Sphere155: LightOrigin { index: 101, geoms: 100..101 } +provenance light /World/Sphere156: LightOrigin { index: 100, geoms: 99..100 } +provenance light /World/Sphere157: LightOrigin { index: 99, geoms: 98..99 } +provenance light /World/Sphere158: LightOrigin { index: 98, geoms: 97..98 } +provenance light /World/Sphere159: LightOrigin { index: 97, geoms: 96..97 } +provenance light /World/Spot00: LightOrigin { index: 16, geoms: 15..16 } +provenance light /World/Spot01: LightOrigin { index: 15, geoms: 14..15 } +provenance light /World/Spot02: LightOrigin { index: 14, geoms: 13..14 } +provenance light /World/Spot03: LightOrigin { index: 13, geoms: 12..13 } +provenance light /World/Spot04: LightOrigin { index: 12, geoms: 11..12 } +provenance light /World/Spot05: LightOrigin { index: 11, geoms: 10..11 } +provenance light /World/Spot06: LightOrigin { index: 10, geoms: 9..10 } +provenance light /World/Spot07: LightOrigin { index: 9, geoms: 8..9 } +provenance light /World/Spot08: LightOrigin { index: 8, geoms: 7..8 } +provenance light /World/Spot09: LightOrigin { index: 7, geoms: 6..7 } +provenance light /World/Spot10: LightOrigin { index: 6, geoms: 5..6 } +provenance light /World/Spot11: LightOrigin { index: 5, geoms: 4..5 } +provenance light /World/Spot12: LightOrigin { index: 4, geoms: 3..4 } +provenance light /World/Spot13: LightOrigin { index: 3, geoms: 2..3 } +provenance light /World/Spot14: LightOrigin { index: 2, geoms: 1..2 } +provenance light /World/Spot15: LightOrigin { index: 1, geoms: 0..1 } +provenance geometry 0..1: /World/Spot15 +provenance geometry 1..2: /World/Spot14 +provenance geometry 2..3: /World/Spot13 +provenance geometry 3..4: /World/Spot12 +provenance geometry 4..5: /World/Spot11 +provenance geometry 5..6: /World/Spot10 +provenance geometry 6..7: /World/Spot09 +provenance geometry 7..8: /World/Spot08 +provenance geometry 8..9: /World/Spot07 +provenance geometry 9..10: /World/Spot06 +provenance geometry 10..11: /World/Spot05 +provenance geometry 11..12: /World/Spot04 +provenance geometry 12..13: /World/Spot03 +provenance geometry 13..14: /World/Spot02 +provenance geometry 14..15: /World/Spot01 +provenance geometry 15..16: /World/Spot00 +provenance geometry 16..17: /World/Panel079 +provenance geometry 17..18: /World/Panel078 +provenance geometry 18..19: /World/Panel077 +provenance geometry 19..20: /World/Panel076 +provenance geometry 20..21: /World/Panel075 +provenance geometry 21..22: /World/Panel074 +provenance geometry 22..23: /World/Panel073 +provenance geometry 23..24: /World/Panel072 +provenance geometry 24..25: /World/Panel071 +provenance geometry 25..26: /World/Panel070 +provenance geometry 26..27: /World/Panel069 +provenance geometry 27..28: /World/Panel068 +provenance geometry 28..29: /World/Panel067 +provenance geometry 29..30: /World/Panel066 +provenance geometry 30..31: /World/Panel065 +provenance geometry 31..32: /World/Panel064 +provenance geometry 32..33: /World/Panel063 +provenance geometry 33..34: /World/Panel062 +provenance geometry 34..35: /World/Panel061 +provenance geometry 35..36: /World/Panel060 +provenance geometry 36..37: /World/Panel059 +provenance geometry 37..38: /World/Panel058 +provenance geometry 38..39: /World/Panel057 +provenance geometry 39..40: /World/Panel056 +provenance geometry 40..41: /World/Panel055 +provenance geometry 41..42: /World/Panel054 +provenance geometry 42..43: /World/Panel053 +provenance geometry 43..44: /World/Panel052 +provenance geometry 44..45: /World/Panel051 +provenance geometry 45..46: /World/Panel050 +provenance geometry 46..47: /World/Panel049 +provenance geometry 47..48: /World/Panel048 +provenance geometry 48..49: /World/Panel047 +provenance geometry 49..50: /World/Panel046 +provenance geometry 50..51: /World/Panel045 +provenance geometry 51..52: /World/Panel044 +provenance geometry 52..53: /World/Panel043 +provenance geometry 53..54: /World/Panel042 +provenance geometry 54..55: /World/Panel041 +provenance geometry 55..56: /World/Panel040 +provenance geometry 56..57: /World/Panel039 +provenance geometry 57..58: /World/Panel038 +provenance geometry 58..59: /World/Panel037 +provenance geometry 59..60: /World/Panel036 +provenance geometry 60..61: /World/Panel035 +provenance geometry 61..62: /World/Panel034 +provenance geometry 62..63: /World/Panel033 +provenance geometry 63..64: /World/Panel032 +provenance geometry 64..65: /World/Panel031 +provenance geometry 65..66: /World/Panel030 +provenance geometry 66..67: /World/Panel029 +provenance geometry 67..68: /World/Panel028 +provenance geometry 68..69: /World/Panel027 +provenance geometry 69..70: /World/Panel026 +provenance geometry 70..71: /World/Panel025 +provenance geometry 71..72: /World/Panel024 +provenance geometry 72..73: /World/Panel023 +provenance geometry 73..74: /World/Panel022 +provenance geometry 74..75: /World/Panel021 +provenance geometry 75..76: /World/Panel020 +provenance geometry 76..77: /World/Panel019 +provenance geometry 77..78: /World/Panel018 +provenance geometry 78..79: /World/Panel017 +provenance geometry 79..80: /World/Panel016 +provenance geometry 80..81: /World/Panel015 +provenance geometry 81..82: /World/Panel014 +provenance geometry 82..83: /World/Panel013 +provenance geometry 83..84: /World/Panel012 +provenance geometry 84..85: /World/Panel011 +provenance geometry 85..86: /World/Panel010 +provenance geometry 86..87: /World/Panel009 +provenance geometry 87..88: /World/Panel008 +provenance geometry 88..89: /World/Panel007 +provenance geometry 89..90: /World/Panel006 +provenance geometry 90..91: /World/Panel005 +provenance geometry 91..92: /World/Panel004 +provenance geometry 92..93: /World/Panel003 +provenance geometry 93..94: /World/Panel002 +provenance geometry 94..95: /World/Panel001 +provenance geometry 95..96: /World/Panel000 +provenance geometry 96..97: /World/Sphere159 +provenance geometry 97..98: /World/Sphere158 +provenance geometry 98..99: /World/Sphere157 +provenance geometry 99..100: /World/Sphere156 +provenance geometry 100..101: /World/Sphere155 +provenance geometry 101..102: /World/Sphere154 +provenance geometry 102..103: /World/Sphere153 +provenance geometry 103..104: /World/Sphere152 +provenance geometry 104..105: /World/Sphere151 +provenance geometry 105..106: /World/Sphere150 +provenance geometry 106..107: /World/Sphere149 +provenance geometry 107..108: /World/Sphere148 +provenance geometry 108..109: /World/Sphere147 +provenance geometry 109..110: /World/Sphere146 +provenance geometry 110..111: /World/Sphere145 +provenance geometry 111..112: /World/Sphere144 +provenance geometry 112..113: /World/Sphere143 +provenance geometry 113..114: /World/Sphere142 +provenance geometry 114..115: /World/Sphere141 +provenance geometry 115..116: /World/Sphere140 +provenance geometry 116..117: /World/Sphere139 +provenance geometry 117..118: /World/Sphere138 +provenance geometry 118..119: /World/Sphere137 +provenance geometry 119..120: /World/Sphere136 +provenance geometry 120..121: /World/Sphere135 +provenance geometry 121..122: /World/Sphere134 +provenance geometry 122..123: /World/Sphere133 +provenance geometry 123..124: /World/Sphere132 +provenance geometry 124..125: /World/Sphere131 +provenance geometry 125..126: /World/Sphere130 +provenance geometry 126..127: /World/Sphere129 +provenance geometry 127..128: /World/Sphere128 +provenance geometry 128..129: /World/Sphere127 +provenance geometry 129..130: /World/Sphere126 +provenance geometry 130..131: /World/Sphere125 +provenance geometry 131..132: /World/Sphere124 +provenance geometry 132..133: /World/Sphere123 +provenance geometry 133..134: /World/Sphere122 +provenance geometry 134..135: /World/Sphere121 +provenance geometry 135..136: /World/Sphere120 +provenance geometry 136..137: /World/Sphere119 +provenance geometry 137..138: /World/Sphere118 +provenance geometry 138..139: /World/Sphere117 +provenance geometry 139..140: /World/Sphere116 +provenance geometry 140..141: /World/Sphere115 +provenance geometry 141..142: /World/Sphere114 +provenance geometry 142..143: /World/Sphere113 +provenance geometry 143..144: /World/Sphere112 +provenance geometry 144..145: /World/Sphere111 +provenance geometry 145..146: /World/Sphere110 +provenance geometry 146..147: /World/Sphere109 +provenance geometry 147..148: /World/Sphere108 +provenance geometry 148..149: /World/Sphere107 +provenance geometry 149..150: /World/Sphere106 +provenance geometry 150..151: /World/Sphere105 +provenance geometry 151..152: /World/Sphere104 +provenance geometry 152..153: /World/Sphere103 +provenance geometry 153..154: /World/Sphere102 +provenance geometry 154..155: /World/Sphere101 +provenance geometry 155..156: /World/Sphere100 +provenance geometry 156..157: /World/Sphere099 +provenance geometry 157..158: /World/Sphere098 +provenance geometry 158..159: /World/Sphere097 +provenance geometry 159..160: /World/Sphere096 +provenance geometry 160..161: /World/Sphere095 +provenance geometry 161..162: /World/Sphere094 +provenance geometry 162..163: /World/Sphere093 +provenance geometry 163..164: /World/Sphere092 +provenance geometry 164..165: /World/Sphere091 +provenance geometry 165..166: /World/Sphere090 +provenance geometry 166..167: /World/Sphere089 +provenance geometry 167..168: /World/Sphere088 +provenance geometry 168..169: /World/Sphere087 +provenance geometry 169..170: /World/Sphere086 +provenance geometry 170..171: /World/Sphere085 +provenance geometry 171..172: /World/Sphere084 +provenance geometry 172..173: /World/Sphere083 +provenance geometry 173..174: /World/Sphere082 +provenance geometry 174..175: /World/Sphere081 +provenance geometry 175..176: /World/Sphere080 +provenance geometry 176..177: /World/Sphere079 +provenance geometry 177..178: /World/Sphere078 +provenance geometry 178..179: /World/Sphere077 +provenance geometry 179..180: /World/Sphere076 +provenance geometry 180..181: /World/Sphere075 +provenance geometry 181..182: /World/Sphere074 +provenance geometry 182..183: /World/Sphere073 +provenance geometry 183..184: /World/Sphere072 +provenance geometry 184..185: /World/Sphere071 +provenance geometry 185..186: /World/Sphere070 +provenance geometry 186..187: /World/Sphere069 +provenance geometry 187..188: /World/Sphere068 +provenance geometry 188..189: /World/Sphere067 +provenance geometry 189..190: /World/Sphere066 +provenance geometry 190..191: /World/Sphere065 +provenance geometry 191..192: /World/Sphere064 +provenance geometry 192..193: /World/Sphere063 +provenance geometry 193..194: /World/Sphere062 +provenance geometry 194..195: /World/Sphere061 +provenance geometry 195..196: /World/Sphere060 +provenance geometry 196..197: /World/Sphere059 +provenance geometry 197..198: /World/Sphere058 +provenance geometry 198..199: /World/Sphere057 +provenance geometry 199..200: /World/Sphere056 +provenance geometry 200..201: /World/Sphere055 +provenance geometry 201..202: /World/Sphere054 +provenance geometry 202..203: /World/Sphere053 +provenance geometry 203..204: /World/Sphere052 +provenance geometry 204..205: /World/Sphere051 +provenance geometry 205..206: /World/Sphere050 +provenance geometry 206..207: /World/Sphere049 +provenance geometry 207..208: /World/Sphere048 +provenance geometry 208..209: /World/Sphere047 +provenance geometry 209..210: /World/Sphere046 +provenance geometry 210..211: /World/Sphere045 +provenance geometry 211..212: /World/Sphere044 +provenance geometry 212..213: /World/Sphere043 +provenance geometry 213..214: /World/Sphere042 +provenance geometry 214..215: /World/Sphere041 +provenance geometry 215..216: /World/Sphere040 +provenance geometry 216..217: /World/Sphere039 +provenance geometry 217..218: /World/Sphere038 +provenance geometry 218..219: /World/Sphere037 +provenance geometry 219..220: /World/Sphere036 +provenance geometry 220..221: /World/Sphere035 +provenance geometry 221..222: /World/Sphere034 +provenance geometry 222..223: /World/Sphere033 +provenance geometry 223..224: /World/Sphere032 +provenance geometry 224..225: /World/Sphere031 +provenance geometry 225..226: /World/Sphere030 +provenance geometry 226..227: /World/Sphere029 +provenance geometry 227..228: /World/Sphere028 +provenance geometry 228..229: /World/Sphere027 +provenance geometry 229..230: /World/Sphere026 +provenance geometry 230..231: /World/Sphere025 +provenance geometry 231..232: /World/Sphere024 +provenance geometry 232..233: /World/Sphere023 +provenance geometry 233..234: /World/Sphere022 +provenance geometry 234..235: /World/Sphere021 +provenance geometry 235..236: /World/Sphere020 +provenance geometry 236..237: /World/Sphere019 +provenance geometry 237..238: /World/Sphere018 +provenance geometry 238..239: /World/Sphere017 +provenance geometry 239..240: /World/Sphere016 +provenance geometry 240..241: /World/Sphere015 +provenance geometry 241..242: /World/Sphere014 +provenance geometry 242..243: /World/Sphere013 +provenance geometry 243..244: /World/Sphere012 +provenance geometry 244..245: /World/Sphere011 +provenance geometry 245..246: /World/Sphere010 +provenance geometry 246..247: /World/Sphere009 +provenance geometry 247..248: /World/Sphere008 +provenance geometry 248..249: /World/Sphere007 +provenance geometry 249..250: /World/Sphere006 +provenance geometry 250..251: /World/Sphere005 +provenance geometry 251..252: /World/Sphere004 +provenance geometry 252..253: /World/Sphere003 +provenance geometry 253..254: /World/Sphere002 +provenance geometry 254..255: /World/Sphere001 +provenance geometry 255..256: /World/Sphere000 +provenance geometry 256..257: /World/Wall4 +provenance geometry 257..258: /World/Wall3 +provenance geometry 258..259: /World/Wall2 +provenance geometry 259..260: /World/Wall1 +provenance geometry 260..261: /World/Wall0 +provenance geometry 261..262: /World/Floor +provenance mesh: MeshOrigin { geom_id: 256, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 257, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 258, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 259, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 260, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 261, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18161012096923765881, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 5, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-2.digest b/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-2.digest new file mode 100644 index 000000000..109194759 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-2.digest @@ -0,0 +1,1062 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 14.0, 26.0), lower_left_corner: Vec3A(-9.000002, 4.6157455, 19.870996), horizontal: Vec3A(18.000004, -0.0, 0.0), vertical: Vec3A(0.0, 8.768508, -5.062501), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.8660253, -0.5), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 20.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/many_lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/many_lights.usda +lights: 257 +light 0: dome name Some("/World/Fill") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Spot15") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Spot14") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/Spot13") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 4: area name Some("/World/Spot12") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 5: area name Some("/World/Spot11") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 6: area name Some("/World/Spot10") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 7: area name Some("/World/Spot09") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 8: area name Some("/World/Spot08") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 9: area name Some("/World/Spot07") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 10: area name Some("/World/Spot06") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 11: area name Some("/World/Spot05") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 12: area name Some("/World/Spot04") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 13: area name Some("/World/Spot03") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 14: area name Some("/World/Spot02") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 15: area name Some("/World/Spot01") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 16: area name Some("/World/Spot00") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 17: area name Some("/World/Panel079") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 18: area name Some("/World/Panel078") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 19: area name Some("/World/Panel077") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 20: area name Some("/World/Panel076") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 21: area name Some("/World/Panel075") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 22: area name Some("/World/Panel074") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 23: area name Some("/World/Panel073") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 24: area name Some("/World/Panel072") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 25: area name Some("/World/Panel071") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 26: area name Some("/World/Panel070") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 27: area name Some("/World/Panel069") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 28: area name Some("/World/Panel068") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 29: area name Some("/World/Panel067") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 30: area name Some("/World/Panel066") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 31: area name Some("/World/Panel065") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 32: area name Some("/World/Panel064") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 33: area name Some("/World/Panel063") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 34: area name Some("/World/Panel062") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 35: area name Some("/World/Panel061") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 36: area name Some("/World/Panel060") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 37: area name Some("/World/Panel059") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 38: area name Some("/World/Panel058") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 39: area name Some("/World/Panel057") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 40: area name Some("/World/Panel056") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 41: area name Some("/World/Panel055") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 42: area name Some("/World/Panel054") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 43: area name Some("/World/Panel053") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 44: area name Some("/World/Panel052") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 45: area name Some("/World/Panel051") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 46: area name Some("/World/Panel050") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 47: area name Some("/World/Panel049") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 48: area name Some("/World/Panel048") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 49: area name Some("/World/Panel047") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 50: area name Some("/World/Panel046") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 51: area name Some("/World/Panel045") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 52: area name Some("/World/Panel044") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 53: area name Some("/World/Panel043") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 54: area name Some("/World/Panel042") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 55: area name Some("/World/Panel041") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 56: area name Some("/World/Panel040") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 57: area name Some("/World/Panel039") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 58: area name Some("/World/Panel038") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 59: area name Some("/World/Panel037") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 60: area name Some("/World/Panel036") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 61: area name Some("/World/Panel035") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 62: area name Some("/World/Panel034") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 63: area name Some("/World/Panel033") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 64: area name Some("/World/Panel032") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 65: area name Some("/World/Panel031") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 66: area name Some("/World/Panel030") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 67: area name Some("/World/Panel029") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 68: area name Some("/World/Panel028") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 69: area name Some("/World/Panel027") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 70: area name Some("/World/Panel026") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 71: area name Some("/World/Panel025") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 72: area name Some("/World/Panel024") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 73: area name Some("/World/Panel023") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 74: area name Some("/World/Panel022") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 75: area name Some("/World/Panel021") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 76: area name Some("/World/Panel020") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 77: area name Some("/World/Panel019") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 78: area name Some("/World/Panel018") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 79: area name Some("/World/Panel017") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 80: area name Some("/World/Panel016") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 81: area name Some("/World/Panel015") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 82: area name Some("/World/Panel014") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 83: area name Some("/World/Panel013") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 84: area name Some("/World/Panel012") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 85: area name Some("/World/Panel011") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 86: area name Some("/World/Panel010") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 87: area name Some("/World/Panel009") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 88: area name Some("/World/Panel008") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 89: area name Some("/World/Panel007") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 90: area name Some("/World/Panel006") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 91: area name Some("/World/Panel005") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 92: area name Some("/World/Panel004") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 93: area name Some("/World/Panel003") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 94: area name Some("/World/Panel002") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 95: area name Some("/World/Panel001") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 96: area name Some("/World/Panel000") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 97: area name Some("/World/Sphere159") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 98: area name Some("/World/Sphere158") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 99: area name Some("/World/Sphere157") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 100: area name Some("/World/Sphere156") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 101: area name Some("/World/Sphere155") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 102: area name Some("/World/Sphere154") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 103: area name Some("/World/Sphere153") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 104: area name Some("/World/Sphere152") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 105: area name Some("/World/Sphere151") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 106: area name Some("/World/Sphere150") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 107: area name Some("/World/Sphere149") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 108: area name Some("/World/Sphere148") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 109: area name Some("/World/Sphere147") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 110: area name Some("/World/Sphere146") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 111: area name Some("/World/Sphere145") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 112: area name Some("/World/Sphere144") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 113: area name Some("/World/Sphere143") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 114: area name Some("/World/Sphere142") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 115: area name Some("/World/Sphere141") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 116: area name Some("/World/Sphere140") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 117: area name Some("/World/Sphere139") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 118: area name Some("/World/Sphere138") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 119: area name Some("/World/Sphere137") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 120: area name Some("/World/Sphere136") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 121: area name Some("/World/Sphere135") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 122: area name Some("/World/Sphere134") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 123: area name Some("/World/Sphere133") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 124: area name Some("/World/Sphere132") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 125: area name Some("/World/Sphere131") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 126: area name Some("/World/Sphere130") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 127: area name Some("/World/Sphere129") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 128: area name Some("/World/Sphere128") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 129: area name Some("/World/Sphere127") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 130: area name Some("/World/Sphere126") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 131: area name Some("/World/Sphere125") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 132: area name Some("/World/Sphere124") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 133: area name Some("/World/Sphere123") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 134: area name Some("/World/Sphere122") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 135: area name Some("/World/Sphere121") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 136: area name Some("/World/Sphere120") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 137: area name Some("/World/Sphere119") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 138: area name Some("/World/Sphere118") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 139: area name Some("/World/Sphere117") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 140: area name Some("/World/Sphere116") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 141: area name Some("/World/Sphere115") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 142: area name Some("/World/Sphere114") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 143: area name Some("/World/Sphere113") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 144: area name Some("/World/Sphere112") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 145: area name Some("/World/Sphere111") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 146: area name Some("/World/Sphere110") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 147: area name Some("/World/Sphere109") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 148: area name Some("/World/Sphere108") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 149: area name Some("/World/Sphere107") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 150: area name Some("/World/Sphere106") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 151: area name Some("/World/Sphere105") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 152: area name Some("/World/Sphere104") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 153: area name Some("/World/Sphere103") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 154: area name Some("/World/Sphere102") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 155: area name Some("/World/Sphere101") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 156: area name Some("/World/Sphere100") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 157: area name Some("/World/Sphere099") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 158: area name Some("/World/Sphere098") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 159: area name Some("/World/Sphere097") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 160: area name Some("/World/Sphere096") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 161: area name Some("/World/Sphere095") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 162: area name Some("/World/Sphere094") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 163: area name Some("/World/Sphere093") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 164: area name Some("/World/Sphere092") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 165: area name Some("/World/Sphere091") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 166: area name Some("/World/Sphere090") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 167: area name Some("/World/Sphere089") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 168: area name Some("/World/Sphere088") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 169: area name Some("/World/Sphere087") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 170: area name Some("/World/Sphere086") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 171: area name Some("/World/Sphere085") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 172: area name Some("/World/Sphere084") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 173: area name Some("/World/Sphere083") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 174: area name Some("/World/Sphere082") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 175: area name Some("/World/Sphere081") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 176: area name Some("/World/Sphere080") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 177: area name Some("/World/Sphere079") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 178: area name Some("/World/Sphere078") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 179: area name Some("/World/Sphere077") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 180: area name Some("/World/Sphere076") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 181: area name Some("/World/Sphere075") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 182: area name Some("/World/Sphere074") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 183: area name Some("/World/Sphere073") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 184: area name Some("/World/Sphere072") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 185: area name Some("/World/Sphere071") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 186: area name Some("/World/Sphere070") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 187: area name Some("/World/Sphere069") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 188: area name Some("/World/Sphere068") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 189: area name Some("/World/Sphere067") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 190: area name Some("/World/Sphere066") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 191: area name Some("/World/Sphere065") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 192: area name Some("/World/Sphere064") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 193: area name Some("/World/Sphere063") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 194: area name Some("/World/Sphere062") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 195: area name Some("/World/Sphere061") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 196: area name Some("/World/Sphere060") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 197: area name Some("/World/Sphere059") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 198: area name Some("/World/Sphere058") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 199: area name Some("/World/Sphere057") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 200: area name Some("/World/Sphere056") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 201: area name Some("/World/Sphere055") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 202: area name Some("/World/Sphere054") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 203: area name Some("/World/Sphere053") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 204: area name Some("/World/Sphere052") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 205: area name Some("/World/Sphere051") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 206: area name Some("/World/Sphere050") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 207: area name Some("/World/Sphere049") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 208: area name Some("/World/Sphere048") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 209: area name Some("/World/Sphere047") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 210: area name Some("/World/Sphere046") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 211: area name Some("/World/Sphere045") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 212: area name Some("/World/Sphere044") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 213: area name Some("/World/Sphere043") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 214: area name Some("/World/Sphere042") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 215: area name Some("/World/Sphere041") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 216: area name Some("/World/Sphere040") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 217: area name Some("/World/Sphere039") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 218: area name Some("/World/Sphere038") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 219: area name Some("/World/Sphere037") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 220: area name Some("/World/Sphere036") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 221: area name Some("/World/Sphere035") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 222: area name Some("/World/Sphere034") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 223: area name Some("/World/Sphere033") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 224: area name Some("/World/Sphere032") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 225: area name Some("/World/Sphere031") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 226: area name Some("/World/Sphere030") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 227: area name Some("/World/Sphere029") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 228: area name Some("/World/Sphere028") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 229: area name Some("/World/Sphere027") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 230: area name Some("/World/Sphere026") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 231: area name Some("/World/Sphere025") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 232: area name Some("/World/Sphere024") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 233: area name Some("/World/Sphere023") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 234: area name Some("/World/Sphere022") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 235: area name Some("/World/Sphere021") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 236: area name Some("/World/Sphere020") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 237: area name Some("/World/Sphere019") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 238: area name Some("/World/Sphere018") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 239: area name Some("/World/Sphere017") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 240: area name Some("/World/Sphere016") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 241: area name Some("/World/Sphere015") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 242: area name Some("/World/Sphere014") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 243: area name Some("/World/Sphere013") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 244: area name Some("/World/Sphere012") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 245: area name Some("/World/Sphere011") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 246: area name Some("/World/Sphere010") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 247: area name Some("/World/Sphere009") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 248: area name Some("/World/Sphere008") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 249: area name Some("/World/Sphere007") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 250: area name Some("/World/Sphere006") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 251: area name Some("/World/Sphere005") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 252: area name Some("/World/Sphere004") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 253: area name Some("/World/Sphere003") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 254: area name Some("/World/Sphere002") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 255: area name Some("/World/Sphere001") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 256: area name Some("/World/Sphere000") lpe None pmf 0.0038910506 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 262 geometries, PrimitiveBreakdown { triangles: 194, spheres: 160, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } top level, PrimitiveBreakdown { triangles: 206, spheres: 160, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:188f260f6479aa4e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:188f260f6479aa4e +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:97f45dafeae7396c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:97f45dafeae7396c +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:50faa5f64b009067 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:50faa5f64b009067 +geom 3: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ebbba4921e332478 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ebbba4921e332478 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ff2a5c7e54e0f9db camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ff2a5c7e54e0f9db +geom 5: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:15036b6847d0d5d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:15036b6847d0d5d8 +geom 6: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:71e61c6a60d61f89 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:71e61c6a60d61f89 +geom 7: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f3217ea4860a8728 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:f3217ea4860a8728 +geom 8: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8d754f5908ca78e0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8d754f5908ca78e0 +geom 9: material #9 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5657f45de0cd5100 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:5657f45de0cd5100 +geom 10: material #10 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c8be539fca9f01fb camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:c8be539fca9f01fb +geom 11: material #11 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d48a20ec03c99200 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d48a20ec03c99200 +geom 12: material #12 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:a7923437effed43d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:a7923437effed43d +geom 13: material #13 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e3e3808d2094f90a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e3e3808d2094f90a +geom 14: material #14 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1e497659eef12a81 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1e497659eef12a81 +geom 15: material #15 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ffb2ef2f4a649fa6 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ffb2ef2f4a649fa6 +geom 16: material #16 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5d5e430ff41c1c08 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:5d5e430ff41c1c08 +geom 17: material #17 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8f13d27ca8bbe966 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8f13d27ca8bbe966 +geom 18: material #18 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8652e2305229cfa0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8652e2305229cfa0 +geom 19: material #19 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:483a297758388d5c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:483a297758388d5c +geom 20: material #20 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:48e5f0ef3110f507 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:48e5f0ef3110f507 +geom 21: material #21 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ca51c27c8e04bfa2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ca51c27c8e04bfa2 +geom 22: material #22 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:84e9bace9eab9ec8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:84e9bace9eab9ec8 +geom 23: material #23 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:803d49dff50a2f92 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:803d49dff50a2f92 +geom 24: material #24 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:70b184a9244bc562 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:70b184a9244bc562 +geom 25: material #25 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:3164ae4a6ea6d628 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:3164ae4a6ea6d628 +geom 26: material #26 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7a60eae3c5968816 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7a60eae3c5968816 +geom 27: material #27 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:bb4cd18f8464d34c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:bb4cd18f8464d34c +geom 28: material #28 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:38f56b391c7ea50c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:38f56b391c7ea50c +geom 29: material #29 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c3fcfe7c5ed85fba camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:c3fcfe7c5ed85fba +geom 30: material #30 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6e268625717faeb1 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:6e268625717faeb1 +geom 31: material #31 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4b348295ce7972e4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4b348295ce7972e4 +geom 32: material #32 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c2b7dd874f5bac98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:c2b7dd874f5bac98 +geom 33: material #33 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:559c4d11d19668c0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:559c4d11d19668c0 +geom 34: material #34 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77be229f0d292714 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:77be229f0d292714 +geom 35: material #35 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5c5e3e047f91145c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:5c5e3e047f91145c +geom 36: material #36 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f9c327e97a20da39 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:f9c327e97a20da39 +geom 37: material #37 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:819e740103d9eca1 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:819e740103d9eca1 +geom 38: material #38 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1212f418647714b4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1212f418647714b4 +geom 39: material #39 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:91e281ba2b7c3ed8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:91e281ba2b7c3ed8 +geom 40: material #40 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8221ec0a7aae962b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8221ec0a7aae962b +geom 41: material #41 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:642e441ce136ee76 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:642e441ce136ee76 +geom 42: material #42 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:dcf19867b54c51ee camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:dcf19867b54c51ee +geom 43: material #43 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f8a9d1e9cb434139 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:f8a9d1e9cb434139 +geom 44: material #44 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8ec3acc16ec533be camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8ec3acc16ec533be +geom 45: material #45 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9bf7fd7118ebe84b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9bf7fd7118ebe84b +geom 46: material #46 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2a1ff2463031af5c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:2a1ff2463031af5c +geom 47: material #47 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b1cd3ab713320246 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:b1cd3ab713320246 +geom 48: material #48 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:735c8859d1ebf01c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:735c8859d1ebf01c +geom 49: material #49 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cc7113938e1868a5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:cc7113938e1868a5 +geom 50: material #50 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1969f53dc4c4ea77 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1969f53dc4c4ea77 +geom 51: material #51 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e6dabd74d1339b52 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e6dabd74d1339b52 +geom 52: material #52 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:612357c385f2578a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:612357c385f2578a +geom 53: material #53 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8561f9be5e95e3bc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8561f9be5e95e3bc +geom 54: material #54 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:973e05ae3389609e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:973e05ae3389609e +geom 55: material #55 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4708e1aa46768578 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4708e1aa46768578 +geom 56: material #56 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ab79f4992c448603 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ab79f4992c448603 +geom 57: material #57 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:61f6f945726813f9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:61f6f945726813f9 +geom 58: material #58 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:73c8ba55366a587e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:73c8ba55366a587e +geom 59: material #59 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:218c05d1384633dc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:218c05d1384633dc +geom 60: material #60 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:44b7957c677bd226 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:44b7957c677bd226 +geom 61: material #61 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:30eecb7c25719c05 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:30eecb7c25719c05 +geom 62: material #62 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:176d644e7ee2e684 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:176d644e7ee2e684 +geom 63: material #63 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ec73b763308f9a3d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ec73b763308f9a3d +geom 64: material #64 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e915a0aae228bc79 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e915a0aae228bc79 +geom 65: material #65 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7d6401aa59da4e38 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7d6401aa59da4e38 +geom 66: material #66 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:76f66ce61a14aa96 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:76f66ce61a14aa96 +geom 67: material #67 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d0a2be6dd2ce3c54 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d0a2be6dd2ce3c54 +geom 68: material #68 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1b5dfcf5e87976c3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1b5dfcf5e87976c3 +geom 69: material #69 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9355c82e434ac2ae camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9355c82e434ac2ae +geom 70: material #70 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:a77e58d3ff3a2121 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:a77e58d3ff3a2121 +geom 71: material #71 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:93043b72a388e080 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:93043b72a388e080 +geom 72: material #72 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:05b2719429e398de camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:05b2719429e398de +geom 73: material #73 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f8a0dd5a739f2fc0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:f8a0dd5a739f2fc0 +geom 74: material #74 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:dca1a43f4a7538ed camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:dca1a43f4a7538ed +geom 75: material #75 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8a2f5974cca942dc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8a2f5974cca942dc +geom 76: material #76 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:65272fbe17dd0c64 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:65272fbe17dd0c64 +geom 77: material #77 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9060c015c4a0f6b7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9060c015c4a0f6b7 +geom 78: material #78 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ec32f023d0468b65 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ec32f023d0468b65 +geom 79: material #79 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:a09de738183c4a9b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:a09de738183c4a9b +geom 80: material #80 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2bab4c271329769d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:2bab4c271329769d +geom 81: material #81 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e82dcf28bab67bb5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e82dcf28bab67bb5 +geom 82: material #82 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6d6d95bf01b4588f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:6d6d95bf01b4588f +geom 83: material #83 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6878b98c6d332db9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:6878b98c6d332db9 +geom 84: material #84 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b0b31b42e1646ca9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:b0b31b42e1646ca9 +geom 85: material #85 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:22ef3600d3ffa0e0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:22ef3600d3ffa0e0 +geom 86: material #86 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b2a86cb870f0d22b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:b2a86cb870f0d22b +geom 87: material #87 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c476f12c52f01b49 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:c476f12c52f01b49 +geom 88: material #88 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b05e191db12bfb49 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:b05e191db12bfb49 +geom 89: material #89 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:a93852b39b01de54 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:a93852b39b01de54 +geom 90: material #90 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8e04888e8ea9c61b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8e04888e8ea9c61b +geom 91: material #91 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d15b848fb52b48dd camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d15b848fb52b48dd +geom 92: material #92 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e3399568cfdc5a68 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e3399568cfdc5a68 +geom 93: material #93 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fd3bc52d5481c68b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:fd3bc52d5481c68b +geom 94: material #94 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4b6bf9a286fa9c3b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4b6bf9a286fa9c3b +geom 95: material #95 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6383d37d0761a2db camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:6383d37d0761a2db +geom 96: material #96 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:71d02d53d4718c39 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:71d02d53d4718c39 +geom 97: material #97 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:400eb2d44fcb9a5f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:400eb2d44fcb9a5f +geom 98: material #98 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fffd2eb5365a513b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fffd2eb5365a513b +geom 99: material #99 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5940a8f1a0c95329 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5940a8f1a0c95329 +geom 100: material #100 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3b48db8226d17f85 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3b48db8226d17f85 +geom 101: material #101 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:aa1153c63e5ac43a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:aa1153c63e5ac43a +geom 102: material #102 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bd3bf6f3fc8aec36 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:bd3bf6f3fc8aec36 +geom 103: material #103 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7f6d3a47eae227d1 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:7f6d3a47eae227d1 +geom 104: material #104 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7a7b74661ebf0e33 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:7a7b74661ebf0e33 +geom 105: material #105 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:107fa63ad1e17fbe camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:107fa63ad1e17fbe +geom 106: material #106 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f3e0558ff85941c1 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f3e0558ff85941c1 +geom 107: material #107 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:14d37fd8433b6789 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:14d37fd8433b6789 +geom 108: material #108 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b6168793b8d79637 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b6168793b8d79637 +geom 109: material #109 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:dc663f564b4abf96 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:dc663f564b4abf96 +geom 110: material #110 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bc1ab26495c75862 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:bc1ab26495c75862 +geom 111: material #111 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9db71c4e77fa28d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9db71c4e77fa28d8 +geom 112: material #112 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:4972dd20205b307c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:4972dd20205b307c +geom 113: material #113 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:eee5b389ee4c636c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:eee5b389ee4c636c +geom 114: material #114 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bd20a93dbc58b878 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:bd20a93dbc58b878 +geom 115: material #115 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9c47ae7c87cc708c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9c47ae7c87cc708c +geom 116: material #116 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f1283608d88564d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f1283608d88564d8 +geom 117: material #117 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:adb11f5730302415 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:adb11f5730302415 +geom 118: material #118 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8e552e201d6f97dd camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:8e552e201d6f97dd +geom 119: material #119 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e4c119bc34c77786 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e4c119bc34c77786 +geom 120: material #120 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6027a624eb7c130d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:6027a624eb7c130d +geom 121: material #121 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fbc3e7d2d6198050 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fbc3e7d2d6198050 +geom 122: material #122 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:58ba3abee14d275d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:58ba3abee14d275d +geom 123: material #123 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:877f8e71cb1475d7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:877f8e71cb1475d7 +geom 124: material #124 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:09fa61b6cf060adf camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:09fa61b6cf060adf +geom 125: material #125 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8c246fcef2c2eef6 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:8c246fcef2c2eef6 +geom 126: material #126 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1cc47b5b2ca5f28d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1cc47b5b2ca5f28d +geom 127: material #127 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:676edaa19da16ebe camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:676edaa19da16ebe +geom 128: material #128 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7873b72124c26fca camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:7873b72124c26fca +geom 129: material #129 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2215c2d56c212a9c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2215c2d56c212a9c +geom 130: material #130 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:175872964bf90374 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:175872964bf90374 +geom 131: material #131 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2ff5450f19d57f22 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2ff5450f19d57f22 +geom 132: material #132 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0c6666e8ac1e0815 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0c6666e8ac1e0815 +geom 133: material #133 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c596d5c96c513ca7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c596d5c96c513ca7 +geom 134: material #134 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0040db78da514f25 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0040db78da514f25 +geom 135: material #135 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:de2a78a79bae9337 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:de2a78a79bae9337 +geom 136: material #136 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:59f3492650c5bc07 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:59f3492650c5bc07 +geom 137: material #137 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b9f804daae586a8f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b9f804daae586a8f +geom 138: material #138 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b4bd7d7624ce51dc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b4bd7d7624ce51dc +geom 139: material #139 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:15969e3a9502bd45 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:15969e3a9502bd45 +geom 140: material #140 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:11322851339c87d3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:11322851339c87d3 +geom 141: material #141 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:118b2d127dea8263 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:118b2d127dea8263 +geom 142: material #142 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6ad913d604c2db0e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:6ad913d604c2db0e +geom 143: material #143 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:211b8ca5005d7169 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:211b8ca5005d7169 +geom 144: material #144 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8c9de10a93729b62 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:8c9de10a93729b62 +geom 145: material #145 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f3e0220514f702da camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f3e0220514f702da +geom 146: material #146 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:17a63772a2b4d662 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:17a63772a2b4d662 +geom 147: material #147 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:061fda494c625726 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:061fda494c625726 +geom 148: material #148 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:4a3ce7feb848ff65 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:4a3ce7feb848ff65 +geom 149: material #149 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a9c0b7aaa2c5c0da camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a9c0b7aaa2c5c0da +geom 150: material #150 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ef79af21c911dba7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ef79af21c911dba7 +geom 151: material #151 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3adc1fd624a13b6c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3adc1fd624a13b6c +geom 152: material #152 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d575ffe25950246b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d575ffe25950246b +geom 153: material #153 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ad7b40d76703a529 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ad7b40d76703a529 +geom 154: material #154 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:15fb25e6f8719406 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:15fb25e6f8719406 +geom 155: material #155 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c923795f00a7a549 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c923795f00a7a549 +geom 156: material #156 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a2fce7f8c840e481 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a2fce7f8c840e481 +geom 157: material #157 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5d4ae1b4078e8157 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5d4ae1b4078e8157 +geom 158: material #158 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d20818291c5aff92 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d20818291c5aff92 +geom 159: material #159 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:4ac6d08d190c1587 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:4ac6d08d190c1587 +geom 160: material #160 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0619a347d5925d98 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0619a347d5925d98 +geom 161: material #161 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:693a177c70d0b502 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:693a177c70d0b502 +geom 162: material #162 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:36fa5959959f5b0a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:36fa5959959f5b0a +geom 163: material #163 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9e0327727b74c419 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9e0327727b74c419 +geom 164: material #164 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9be9f00827328ce8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9be9f00827328ce8 +geom 165: material #165 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:44027fba6cf235c3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:44027fba6cf235c3 +geom 166: material #166 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:65ec6c97e71cce65 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:65ec6c97e71cce65 +geom 167: material #167 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8da81d72b5295057 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:8da81d72b5295057 +geom 168: material #168 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1ec5342902b45b58 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1ec5342902b45b58 +geom 169: material #169 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:443f9f1c936a9628 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:443f9f1c936a9628 +geom 170: material #170 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f66cea641f71b36a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f66cea641f71b36a +geom 171: material #171 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:60c616eb240e6402 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:60c616eb240e6402 +geom 172: material #172 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:98d397b59416e85d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:98d397b59416e85d +geom 173: material #173 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:59ca60e72d09f8b7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:59ca60e72d09f8b7 +geom 174: material #174 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b8e65953e49aa5e0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b8e65953e49aa5e0 +geom 175: material #175 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:988a24366bb6f560 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:988a24366bb6f560 +geom 176: material #176 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2ee0b9a38473fe1e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2ee0b9a38473fe1e +geom 177: material #177 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e799240a24e6e0ed camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e799240a24e6e0ed +geom 178: material #178 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:14921443a0ba5679 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:14921443a0ba5679 +geom 179: material #179 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0e06c2b68632d68a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0e06c2b68632d68a +geom 180: material #180 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e258aefe6c1eea33 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e258aefe6c1eea33 +geom 181: material #181 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e924c14fb68a2966 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e924c14fb68a2966 +geom 182: material #182 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:964c7cd8651864ce camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:964c7cd8651864ce +geom 183: material #183 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:87e5bc8414e70215 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:87e5bc8414e70215 +geom 184: material #184 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6e9e25c1393a3c53 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:6e9e25c1393a3c53 +geom 185: material #185 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c9bd7baef6b3670e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c9bd7baef6b3670e +geom 186: material #186 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:27687b43ccaaa6b8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:27687b43ccaaa6b8 +geom 187: material #187 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:02956d1c81ba9d95 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:02956d1c81ba9d95 +geom 188: material #188 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:908ad3f258b711e0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:908ad3f258b711e0 +geom 189: material #189 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:815dea82c23858f4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:815dea82c23858f4 +geom 190: material #190 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0f1b94b69f573b6c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0f1b94b69f573b6c +geom 191: material #191 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ec171a47622e8061 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ec171a47622e8061 +geom 192: material #192 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:554f4cebf95ecfe3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:554f4cebf95ecfe3 +geom 193: material #193 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:16bed55e0309b62e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:16bed55e0309b62e +geom 194: material #194 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0e684b66dcf01ba camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c0e684b66dcf01ba +geom 195: material #195 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a64738315de64a25 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a64738315de64a25 +geom 196: material #196 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9c1762102c6dc4b4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9c1762102c6dc4b4 +geom 197: material #197 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f0321b3a4ed09a3b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f0321b3a4ed09a3b +geom 198: material #198 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b1a3198a95f3cf78 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b1a3198a95f3cf78 +geom 199: material #199 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:cf92243ed97e14dd camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:cf92243ed97e14dd +geom 200: material #200 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0bb08c482c2a4825 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0bb08c482c2a4825 +geom 201: material #201 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a0397d08dfdcd7d3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a0397d08dfdcd7d3 +geom 202: material #202 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3046d6a26702dc2f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3046d6a26702dc2f +geom 203: material #203 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:49722f19c258764a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:49722f19c258764a +geom 204: material #204 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:806003126719484f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:806003126719484f +geom 205: material #205 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3e407ed0e9a18a51 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3e407ed0e9a18a51 +geom 206: material #206 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f207a4a00c8d3a01 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f207a4a00c8d3a01 +geom 207: material #207 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f55536ed8d680a92 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f55536ed8d680a92 +geom 208: material #208 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:47a1fc0d2282312b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:47a1fc0d2282312b +geom 209: material #209 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:966a352e982dcb9c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:966a352e982dcb9c +geom 210: material #210 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c257f6a69029b511 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c257f6a69029b511 +geom 211: material #211 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2bed0c4c80e3d6d2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2bed0c4c80e3d6d2 +geom 212: material #212 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5f393a3e380cd82e camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5f393a3e380cd82e +geom 213: material #213 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9c542db4d36eab87 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9c542db4d36eab87 +geom 214: material #214 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:31593b8d7172c3b7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:31593b8d7172c3b7 +geom 215: material #215 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2a49ac229eb540e4 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2a49ac229eb540e4 +geom 216: material #216 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f04e7fe34b0c6820 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f04e7fe34b0c6820 +geom 217: material #217 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:45be58ec11205157 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:45be58ec11205157 +geom 218: material #218 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5871ca49e8651b78 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5871ca49e8651b78 +geom 219: material #219 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5f0af8ec75ea9587 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5f0af8ec75ea9587 +geom 220: material #220 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6c1bf6eb9a5aa677 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:6c1bf6eb9a5aa677 +geom 221: material #221 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7b0c993b216970f8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:7b0c993b216970f8 +geom 222: material #222 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:353ba33820aebbc5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:353ba33820aebbc5 +geom 223: material #223 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1b9101f5b5a80622 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1b9101f5b5a80622 +geom 224: material #224 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0cff0ca8584ce19c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0cff0ca8584ce19c +geom 225: material #225 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9e14b2927ce55e23 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9e14b2927ce55e23 +geom 226: material #226 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ead78e4030e47495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ead78e4030e47495 +geom 227: material #227 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:82799a21ebbd12c7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:82799a21ebbd12c7 +geom 228: material #228 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:cfa62b0d232a6726 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:cfa62b0d232a6726 +geom 229: material #229 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f03ea22a58fd023b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f03ea22a58fd023b +geom 230: material #230 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fabdb03f7a1224a6 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fabdb03f7a1224a6 +geom 231: material #231 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ea4e8636be19b5a3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ea4e8636be19b5a3 +geom 232: material #232 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ccf997672cd3888c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ccf997672cd3888c +geom 233: material #233 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:395c9438f3ac48ed camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:395c9438f3ac48ed +geom 234: material #234 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f124e0e9b1b1b2f6 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f124e0e9b1b1b2f6 +geom 235: material #235 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7886baa5ccab970a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:7886baa5ccab970a +geom 236: material #236 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8a173cdb9b4bb04d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:8a173cdb9b4bb04d +geom 237: material #237 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee1c52de13f10ce2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ee1c52de13f10ce2 +geom 238: material #238 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3c2a228fb3fdce2a camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3c2a228fb3fdce2a +geom 239: material #239 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3e621998768847e0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3e621998768847e0 +geom 240: material #240 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bc99ab1eb02af696 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:bc99ab1eb02af696 +geom 241: material #241 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:eec882b8068c66e2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:eec882b8068c66e2 +geom 242: material #242 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:30fa1f19bd0432d0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:30fa1f19bd0432d0 +geom 243: material #243 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2ab176bb34e28d5b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2ab176bb34e28d5b +geom 244: material #244 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:985ffa1127d42a66 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:985ffa1127d42a66 +geom 245: material #245 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9818ddc3d963e1fc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9818ddc3d963e1fc +geom 246: material #246 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:056abe1be316d47c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:056abe1be316d47c +geom 247: material #247 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9cce1fe7d92c99f0 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9cce1fe7d92c99f0 +geom 248: material #248 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ce299cb842a33236 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ce299cb842a33236 +geom 249: material #249 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3dfa2d08de2b6eef camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3dfa2d08de2b6eef +geom 250: material #250 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e47c78919a782071 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e47c78919a782071 +geom 251: material #251 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d4fce875fe9dd8b6 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d4fce875fe9dd8b6 +geom 252: material #252 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b3c525b609f2410c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b3c525b609f2410c +geom 253: material #253 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fd2311cdb7e72015 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fd2311cdb7e72015 +geom 254: material #254 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0730b9fdd252ce88 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0730b9fdd252ce88 +geom 255: material #255 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:490ebaba08c10957 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:490ebaba08c10957 +geom 256: material #256 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.8566356 motion [] pieces all=12:49c63dff4b2bf27d camera=12:49c63dff4b2bf27d shadow=12:49c63dff4b2bf27d indirect=12:49c63dff4b2bf27d +geom 257: material #256 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.8566356 motion [] pieces all=12:c99da1694bd0d57d camera=12:c99da1694bd0d57d shadow=12:c99da1694bd0d57d indirect=12:c99da1694bd0d57d +geom 258: material #256 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 2.237378 motion [] pieces all=12:f18564427496b1c9 camera=12:f18564427496b1c9 shadow=12:f18564427496b1c9 indirect=12:f18564427496b1c9 +geom 259: material #256 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 2.125317 motion [] pieces all=12:d45767a2f59b3a25 camera=12:d45767a2f59b3a25 shadow=12:d45767a2f59b3a25 indirect=12:d45767a2f59b3a25 +geom 260: material #256 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 2.0 motion [] pieces all=12:fd03a07ee92783ad camera=12:fd03a07ee92783ad shadow=12:fd03a07ee92783ad indirect=12:fd03a07ee92783ad +geom 261: material #256 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +provenance light /World/Fill: LightOrigin { index: 0, geoms: 0..0 } +provenance light /World/Panel000: LightOrigin { index: 96, geoms: 95..96 } +provenance light /World/Panel001: LightOrigin { index: 95, geoms: 94..95 } +provenance light /World/Panel002: LightOrigin { index: 94, geoms: 93..94 } +provenance light /World/Panel003: LightOrigin { index: 93, geoms: 92..93 } +provenance light /World/Panel004: LightOrigin { index: 92, geoms: 91..92 } +provenance light /World/Panel005: LightOrigin { index: 91, geoms: 90..91 } +provenance light /World/Panel006: LightOrigin { index: 90, geoms: 89..90 } +provenance light /World/Panel007: LightOrigin { index: 89, geoms: 88..89 } +provenance light /World/Panel008: LightOrigin { index: 88, geoms: 87..88 } +provenance light /World/Panel009: LightOrigin { index: 87, geoms: 86..87 } +provenance light /World/Panel010: LightOrigin { index: 86, geoms: 85..86 } +provenance light /World/Panel011: LightOrigin { index: 85, geoms: 84..85 } +provenance light /World/Panel012: LightOrigin { index: 84, geoms: 83..84 } +provenance light /World/Panel013: LightOrigin { index: 83, geoms: 82..83 } +provenance light /World/Panel014: LightOrigin { index: 82, geoms: 81..82 } +provenance light /World/Panel015: LightOrigin { index: 81, geoms: 80..81 } +provenance light /World/Panel016: LightOrigin { index: 80, geoms: 79..80 } +provenance light /World/Panel017: LightOrigin { index: 79, geoms: 78..79 } +provenance light /World/Panel018: LightOrigin { index: 78, geoms: 77..78 } +provenance light /World/Panel019: LightOrigin { index: 77, geoms: 76..77 } +provenance light /World/Panel020: LightOrigin { index: 76, geoms: 75..76 } +provenance light /World/Panel021: LightOrigin { index: 75, geoms: 74..75 } +provenance light /World/Panel022: LightOrigin { index: 74, geoms: 73..74 } +provenance light /World/Panel023: LightOrigin { index: 73, geoms: 72..73 } +provenance light /World/Panel024: LightOrigin { index: 72, geoms: 71..72 } +provenance light /World/Panel025: LightOrigin { index: 71, geoms: 70..71 } +provenance light /World/Panel026: LightOrigin { index: 70, geoms: 69..70 } +provenance light /World/Panel027: LightOrigin { index: 69, geoms: 68..69 } +provenance light /World/Panel028: LightOrigin { index: 68, geoms: 67..68 } +provenance light /World/Panel029: LightOrigin { index: 67, geoms: 66..67 } +provenance light /World/Panel030: LightOrigin { index: 66, geoms: 65..66 } +provenance light /World/Panel031: LightOrigin { index: 65, geoms: 64..65 } +provenance light /World/Panel032: LightOrigin { index: 64, geoms: 63..64 } +provenance light /World/Panel033: LightOrigin { index: 63, geoms: 62..63 } +provenance light /World/Panel034: LightOrigin { index: 62, geoms: 61..62 } +provenance light /World/Panel035: LightOrigin { index: 61, geoms: 60..61 } +provenance light /World/Panel036: LightOrigin { index: 60, geoms: 59..60 } +provenance light /World/Panel037: LightOrigin { index: 59, geoms: 58..59 } +provenance light /World/Panel038: LightOrigin { index: 58, geoms: 57..58 } +provenance light /World/Panel039: LightOrigin { index: 57, geoms: 56..57 } +provenance light /World/Panel040: LightOrigin { index: 56, geoms: 55..56 } +provenance light /World/Panel041: LightOrigin { index: 55, geoms: 54..55 } +provenance light /World/Panel042: LightOrigin { index: 54, geoms: 53..54 } +provenance light /World/Panel043: LightOrigin { index: 53, geoms: 52..53 } +provenance light /World/Panel044: LightOrigin { index: 52, geoms: 51..52 } +provenance light /World/Panel045: LightOrigin { index: 51, geoms: 50..51 } +provenance light /World/Panel046: LightOrigin { index: 50, geoms: 49..50 } +provenance light /World/Panel047: LightOrigin { index: 49, geoms: 48..49 } +provenance light /World/Panel048: LightOrigin { index: 48, geoms: 47..48 } +provenance light /World/Panel049: LightOrigin { index: 47, geoms: 46..47 } +provenance light /World/Panel050: LightOrigin { index: 46, geoms: 45..46 } +provenance light /World/Panel051: LightOrigin { index: 45, geoms: 44..45 } +provenance light /World/Panel052: LightOrigin { index: 44, geoms: 43..44 } +provenance light /World/Panel053: LightOrigin { index: 43, geoms: 42..43 } +provenance light /World/Panel054: LightOrigin { index: 42, geoms: 41..42 } +provenance light /World/Panel055: LightOrigin { index: 41, geoms: 40..41 } +provenance light /World/Panel056: LightOrigin { index: 40, geoms: 39..40 } +provenance light /World/Panel057: LightOrigin { index: 39, geoms: 38..39 } +provenance light /World/Panel058: LightOrigin { index: 38, geoms: 37..38 } +provenance light /World/Panel059: LightOrigin { index: 37, geoms: 36..37 } +provenance light /World/Panel060: LightOrigin { index: 36, geoms: 35..36 } +provenance light /World/Panel061: LightOrigin { index: 35, geoms: 34..35 } +provenance light /World/Panel062: LightOrigin { index: 34, geoms: 33..34 } +provenance light /World/Panel063: LightOrigin { index: 33, geoms: 32..33 } +provenance light /World/Panel064: LightOrigin { index: 32, geoms: 31..32 } +provenance light /World/Panel065: LightOrigin { index: 31, geoms: 30..31 } +provenance light /World/Panel066: LightOrigin { index: 30, geoms: 29..30 } +provenance light /World/Panel067: LightOrigin { index: 29, geoms: 28..29 } +provenance light /World/Panel068: LightOrigin { index: 28, geoms: 27..28 } +provenance light /World/Panel069: LightOrigin { index: 27, geoms: 26..27 } +provenance light /World/Panel070: LightOrigin { index: 26, geoms: 25..26 } +provenance light /World/Panel071: LightOrigin { index: 25, geoms: 24..25 } +provenance light /World/Panel072: LightOrigin { index: 24, geoms: 23..24 } +provenance light /World/Panel073: LightOrigin { index: 23, geoms: 22..23 } +provenance light /World/Panel074: LightOrigin { index: 22, geoms: 21..22 } +provenance light /World/Panel075: LightOrigin { index: 21, geoms: 20..21 } +provenance light /World/Panel076: LightOrigin { index: 20, geoms: 19..20 } +provenance light /World/Panel077: LightOrigin { index: 19, geoms: 18..19 } +provenance light /World/Panel078: LightOrigin { index: 18, geoms: 17..18 } +provenance light /World/Panel079: LightOrigin { index: 17, geoms: 16..17 } +provenance light /World/Sphere000: LightOrigin { index: 256, geoms: 255..256 } +provenance light /World/Sphere001: LightOrigin { index: 255, geoms: 254..255 } +provenance light /World/Sphere002: LightOrigin { index: 254, geoms: 253..254 } +provenance light /World/Sphere003: LightOrigin { index: 253, geoms: 252..253 } +provenance light /World/Sphere004: LightOrigin { index: 252, geoms: 251..252 } +provenance light /World/Sphere005: LightOrigin { index: 251, geoms: 250..251 } +provenance light /World/Sphere006: LightOrigin { index: 250, geoms: 249..250 } +provenance light /World/Sphere007: LightOrigin { index: 249, geoms: 248..249 } +provenance light /World/Sphere008: LightOrigin { index: 248, geoms: 247..248 } +provenance light /World/Sphere009: LightOrigin { index: 247, geoms: 246..247 } +provenance light /World/Sphere010: LightOrigin { index: 246, geoms: 245..246 } +provenance light /World/Sphere011: LightOrigin { index: 245, geoms: 244..245 } +provenance light /World/Sphere012: LightOrigin { index: 244, geoms: 243..244 } +provenance light /World/Sphere013: LightOrigin { index: 243, geoms: 242..243 } +provenance light /World/Sphere014: LightOrigin { index: 242, geoms: 241..242 } +provenance light /World/Sphere015: LightOrigin { index: 241, geoms: 240..241 } +provenance light /World/Sphere016: LightOrigin { index: 240, geoms: 239..240 } +provenance light /World/Sphere017: LightOrigin { index: 239, geoms: 238..239 } +provenance light /World/Sphere018: LightOrigin { index: 238, geoms: 237..238 } +provenance light /World/Sphere019: LightOrigin { index: 237, geoms: 236..237 } +provenance light /World/Sphere020: LightOrigin { index: 236, geoms: 235..236 } +provenance light /World/Sphere021: LightOrigin { index: 235, geoms: 234..235 } +provenance light /World/Sphere022: LightOrigin { index: 234, geoms: 233..234 } +provenance light /World/Sphere023: LightOrigin { index: 233, geoms: 232..233 } +provenance light /World/Sphere024: LightOrigin { index: 232, geoms: 231..232 } +provenance light /World/Sphere025: LightOrigin { index: 231, geoms: 230..231 } +provenance light /World/Sphere026: LightOrigin { index: 230, geoms: 229..230 } +provenance light /World/Sphere027: LightOrigin { index: 229, geoms: 228..229 } +provenance light /World/Sphere028: LightOrigin { index: 228, geoms: 227..228 } +provenance light /World/Sphere029: LightOrigin { index: 227, geoms: 226..227 } +provenance light /World/Sphere030: LightOrigin { index: 226, geoms: 225..226 } +provenance light /World/Sphere031: LightOrigin { index: 225, geoms: 224..225 } +provenance light /World/Sphere032: LightOrigin { index: 224, geoms: 223..224 } +provenance light /World/Sphere033: LightOrigin { index: 223, geoms: 222..223 } +provenance light /World/Sphere034: LightOrigin { index: 222, geoms: 221..222 } +provenance light /World/Sphere035: LightOrigin { index: 221, geoms: 220..221 } +provenance light /World/Sphere036: LightOrigin { index: 220, geoms: 219..220 } +provenance light /World/Sphere037: LightOrigin { index: 219, geoms: 218..219 } +provenance light /World/Sphere038: LightOrigin { index: 218, geoms: 217..218 } +provenance light /World/Sphere039: LightOrigin { index: 217, geoms: 216..217 } +provenance light /World/Sphere040: LightOrigin { index: 216, geoms: 215..216 } +provenance light /World/Sphere041: LightOrigin { index: 215, geoms: 214..215 } +provenance light /World/Sphere042: LightOrigin { index: 214, geoms: 213..214 } +provenance light /World/Sphere043: LightOrigin { index: 213, geoms: 212..213 } +provenance light /World/Sphere044: LightOrigin { index: 212, geoms: 211..212 } +provenance light /World/Sphere045: LightOrigin { index: 211, geoms: 210..211 } +provenance light /World/Sphere046: LightOrigin { index: 210, geoms: 209..210 } +provenance light /World/Sphere047: LightOrigin { index: 209, geoms: 208..209 } +provenance light /World/Sphere048: LightOrigin { index: 208, geoms: 207..208 } +provenance light /World/Sphere049: LightOrigin { index: 207, geoms: 206..207 } +provenance light /World/Sphere050: LightOrigin { index: 206, geoms: 205..206 } +provenance light /World/Sphere051: LightOrigin { index: 205, geoms: 204..205 } +provenance light /World/Sphere052: LightOrigin { index: 204, geoms: 203..204 } +provenance light /World/Sphere053: LightOrigin { index: 203, geoms: 202..203 } +provenance light /World/Sphere054: LightOrigin { index: 202, geoms: 201..202 } +provenance light /World/Sphere055: LightOrigin { index: 201, geoms: 200..201 } +provenance light /World/Sphere056: LightOrigin { index: 200, geoms: 199..200 } +provenance light /World/Sphere057: LightOrigin { index: 199, geoms: 198..199 } +provenance light /World/Sphere058: LightOrigin { index: 198, geoms: 197..198 } +provenance light /World/Sphere059: LightOrigin { index: 197, geoms: 196..197 } +provenance light /World/Sphere060: LightOrigin { index: 196, geoms: 195..196 } +provenance light /World/Sphere061: LightOrigin { index: 195, geoms: 194..195 } +provenance light /World/Sphere062: LightOrigin { index: 194, geoms: 193..194 } +provenance light /World/Sphere063: LightOrigin { index: 193, geoms: 192..193 } +provenance light /World/Sphere064: LightOrigin { index: 192, geoms: 191..192 } +provenance light /World/Sphere065: LightOrigin { index: 191, geoms: 190..191 } +provenance light /World/Sphere066: LightOrigin { index: 190, geoms: 189..190 } +provenance light /World/Sphere067: LightOrigin { index: 189, geoms: 188..189 } +provenance light /World/Sphere068: LightOrigin { index: 188, geoms: 187..188 } +provenance light /World/Sphere069: LightOrigin { index: 187, geoms: 186..187 } +provenance light /World/Sphere070: LightOrigin { index: 186, geoms: 185..186 } +provenance light /World/Sphere071: LightOrigin { index: 185, geoms: 184..185 } +provenance light /World/Sphere072: LightOrigin { index: 184, geoms: 183..184 } +provenance light /World/Sphere073: LightOrigin { index: 183, geoms: 182..183 } +provenance light /World/Sphere074: LightOrigin { index: 182, geoms: 181..182 } +provenance light /World/Sphere075: LightOrigin { index: 181, geoms: 180..181 } +provenance light /World/Sphere076: LightOrigin { index: 180, geoms: 179..180 } +provenance light /World/Sphere077: LightOrigin { index: 179, geoms: 178..179 } +provenance light /World/Sphere078: LightOrigin { index: 178, geoms: 177..178 } +provenance light /World/Sphere079: LightOrigin { index: 177, geoms: 176..177 } +provenance light /World/Sphere080: LightOrigin { index: 176, geoms: 175..176 } +provenance light /World/Sphere081: LightOrigin { index: 175, geoms: 174..175 } +provenance light /World/Sphere082: LightOrigin { index: 174, geoms: 173..174 } +provenance light /World/Sphere083: LightOrigin { index: 173, geoms: 172..173 } +provenance light /World/Sphere084: LightOrigin { index: 172, geoms: 171..172 } +provenance light /World/Sphere085: LightOrigin { index: 171, geoms: 170..171 } +provenance light /World/Sphere086: LightOrigin { index: 170, geoms: 169..170 } +provenance light /World/Sphere087: LightOrigin { index: 169, geoms: 168..169 } +provenance light /World/Sphere088: LightOrigin { index: 168, geoms: 167..168 } +provenance light /World/Sphere089: LightOrigin { index: 167, geoms: 166..167 } +provenance light /World/Sphere090: LightOrigin { index: 166, geoms: 165..166 } +provenance light /World/Sphere091: LightOrigin { index: 165, geoms: 164..165 } +provenance light /World/Sphere092: LightOrigin { index: 164, geoms: 163..164 } +provenance light /World/Sphere093: LightOrigin { index: 163, geoms: 162..163 } +provenance light /World/Sphere094: LightOrigin { index: 162, geoms: 161..162 } +provenance light /World/Sphere095: LightOrigin { index: 161, geoms: 160..161 } +provenance light /World/Sphere096: LightOrigin { index: 160, geoms: 159..160 } +provenance light /World/Sphere097: LightOrigin { index: 159, geoms: 158..159 } +provenance light /World/Sphere098: LightOrigin { index: 158, geoms: 157..158 } +provenance light /World/Sphere099: LightOrigin { index: 157, geoms: 156..157 } +provenance light /World/Sphere100: LightOrigin { index: 156, geoms: 155..156 } +provenance light /World/Sphere101: LightOrigin { index: 155, geoms: 154..155 } +provenance light /World/Sphere102: LightOrigin { index: 154, geoms: 153..154 } +provenance light /World/Sphere103: LightOrigin { index: 153, geoms: 152..153 } +provenance light /World/Sphere104: LightOrigin { index: 152, geoms: 151..152 } +provenance light /World/Sphere105: LightOrigin { index: 151, geoms: 150..151 } +provenance light /World/Sphere106: LightOrigin { index: 150, geoms: 149..150 } +provenance light /World/Sphere107: LightOrigin { index: 149, geoms: 148..149 } +provenance light /World/Sphere108: LightOrigin { index: 148, geoms: 147..148 } +provenance light /World/Sphere109: LightOrigin { index: 147, geoms: 146..147 } +provenance light /World/Sphere110: LightOrigin { index: 146, geoms: 145..146 } +provenance light /World/Sphere111: LightOrigin { index: 145, geoms: 144..145 } +provenance light /World/Sphere112: LightOrigin { index: 144, geoms: 143..144 } +provenance light /World/Sphere113: LightOrigin { index: 143, geoms: 142..143 } +provenance light /World/Sphere114: LightOrigin { index: 142, geoms: 141..142 } +provenance light /World/Sphere115: LightOrigin { index: 141, geoms: 140..141 } +provenance light /World/Sphere116: LightOrigin { index: 140, geoms: 139..140 } +provenance light /World/Sphere117: LightOrigin { index: 139, geoms: 138..139 } +provenance light /World/Sphere118: LightOrigin { index: 138, geoms: 137..138 } +provenance light /World/Sphere119: LightOrigin { index: 137, geoms: 136..137 } +provenance light /World/Sphere120: LightOrigin { index: 136, geoms: 135..136 } +provenance light /World/Sphere121: LightOrigin { index: 135, geoms: 134..135 } +provenance light /World/Sphere122: LightOrigin { index: 134, geoms: 133..134 } +provenance light /World/Sphere123: LightOrigin { index: 133, geoms: 132..133 } +provenance light /World/Sphere124: LightOrigin { index: 132, geoms: 131..132 } +provenance light /World/Sphere125: LightOrigin { index: 131, geoms: 130..131 } +provenance light /World/Sphere126: LightOrigin { index: 130, geoms: 129..130 } +provenance light /World/Sphere127: LightOrigin { index: 129, geoms: 128..129 } +provenance light /World/Sphere128: LightOrigin { index: 128, geoms: 127..128 } +provenance light /World/Sphere129: LightOrigin { index: 127, geoms: 126..127 } +provenance light /World/Sphere130: LightOrigin { index: 126, geoms: 125..126 } +provenance light /World/Sphere131: LightOrigin { index: 125, geoms: 124..125 } +provenance light /World/Sphere132: LightOrigin { index: 124, geoms: 123..124 } +provenance light /World/Sphere133: LightOrigin { index: 123, geoms: 122..123 } +provenance light /World/Sphere134: LightOrigin { index: 122, geoms: 121..122 } +provenance light /World/Sphere135: LightOrigin { index: 121, geoms: 120..121 } +provenance light /World/Sphere136: LightOrigin { index: 120, geoms: 119..120 } +provenance light /World/Sphere137: LightOrigin { index: 119, geoms: 118..119 } +provenance light /World/Sphere138: LightOrigin { index: 118, geoms: 117..118 } +provenance light /World/Sphere139: LightOrigin { index: 117, geoms: 116..117 } +provenance light /World/Sphere140: LightOrigin { index: 116, geoms: 115..116 } +provenance light /World/Sphere141: LightOrigin { index: 115, geoms: 114..115 } +provenance light /World/Sphere142: LightOrigin { index: 114, geoms: 113..114 } +provenance light /World/Sphere143: LightOrigin { index: 113, geoms: 112..113 } +provenance light /World/Sphere144: LightOrigin { index: 112, geoms: 111..112 } +provenance light /World/Sphere145: LightOrigin { index: 111, geoms: 110..111 } +provenance light /World/Sphere146: LightOrigin { index: 110, geoms: 109..110 } +provenance light /World/Sphere147: LightOrigin { index: 109, geoms: 108..109 } +provenance light /World/Sphere148: LightOrigin { index: 108, geoms: 107..108 } +provenance light /World/Sphere149: LightOrigin { index: 107, geoms: 106..107 } +provenance light /World/Sphere150: LightOrigin { index: 106, geoms: 105..106 } +provenance light /World/Sphere151: LightOrigin { index: 105, geoms: 104..105 } +provenance light /World/Sphere152: LightOrigin { index: 104, geoms: 103..104 } +provenance light /World/Sphere153: LightOrigin { index: 103, geoms: 102..103 } +provenance light /World/Sphere154: LightOrigin { index: 102, geoms: 101..102 } +provenance light /World/Sphere155: LightOrigin { index: 101, geoms: 100..101 } +provenance light /World/Sphere156: LightOrigin { index: 100, geoms: 99..100 } +provenance light /World/Sphere157: LightOrigin { index: 99, geoms: 98..99 } +provenance light /World/Sphere158: LightOrigin { index: 98, geoms: 97..98 } +provenance light /World/Sphere159: LightOrigin { index: 97, geoms: 96..97 } +provenance light /World/Spot00: LightOrigin { index: 16, geoms: 15..16 } +provenance light /World/Spot01: LightOrigin { index: 15, geoms: 14..15 } +provenance light /World/Spot02: LightOrigin { index: 14, geoms: 13..14 } +provenance light /World/Spot03: LightOrigin { index: 13, geoms: 12..13 } +provenance light /World/Spot04: LightOrigin { index: 12, geoms: 11..12 } +provenance light /World/Spot05: LightOrigin { index: 11, geoms: 10..11 } +provenance light /World/Spot06: LightOrigin { index: 10, geoms: 9..10 } +provenance light /World/Spot07: LightOrigin { index: 9, geoms: 8..9 } +provenance light /World/Spot08: LightOrigin { index: 8, geoms: 7..8 } +provenance light /World/Spot09: LightOrigin { index: 7, geoms: 6..7 } +provenance light /World/Spot10: LightOrigin { index: 6, geoms: 5..6 } +provenance light /World/Spot11: LightOrigin { index: 5, geoms: 4..5 } +provenance light /World/Spot12: LightOrigin { index: 4, geoms: 3..4 } +provenance light /World/Spot13: LightOrigin { index: 3, geoms: 2..3 } +provenance light /World/Spot14: LightOrigin { index: 2, geoms: 1..2 } +provenance light /World/Spot15: LightOrigin { index: 1, geoms: 0..1 } +provenance geometry 0..1: /World/Spot15 +provenance geometry 1..2: /World/Spot14 +provenance geometry 2..3: /World/Spot13 +provenance geometry 3..4: /World/Spot12 +provenance geometry 4..5: /World/Spot11 +provenance geometry 5..6: /World/Spot10 +provenance geometry 6..7: /World/Spot09 +provenance geometry 7..8: /World/Spot08 +provenance geometry 8..9: /World/Spot07 +provenance geometry 9..10: /World/Spot06 +provenance geometry 10..11: /World/Spot05 +provenance geometry 11..12: /World/Spot04 +provenance geometry 12..13: /World/Spot03 +provenance geometry 13..14: /World/Spot02 +provenance geometry 14..15: /World/Spot01 +provenance geometry 15..16: /World/Spot00 +provenance geometry 16..17: /World/Panel079 +provenance geometry 17..18: /World/Panel078 +provenance geometry 18..19: /World/Panel077 +provenance geometry 19..20: /World/Panel076 +provenance geometry 20..21: /World/Panel075 +provenance geometry 21..22: /World/Panel074 +provenance geometry 22..23: /World/Panel073 +provenance geometry 23..24: /World/Panel072 +provenance geometry 24..25: /World/Panel071 +provenance geometry 25..26: /World/Panel070 +provenance geometry 26..27: /World/Panel069 +provenance geometry 27..28: /World/Panel068 +provenance geometry 28..29: /World/Panel067 +provenance geometry 29..30: /World/Panel066 +provenance geometry 30..31: /World/Panel065 +provenance geometry 31..32: /World/Panel064 +provenance geometry 32..33: /World/Panel063 +provenance geometry 33..34: /World/Panel062 +provenance geometry 34..35: /World/Panel061 +provenance geometry 35..36: /World/Panel060 +provenance geometry 36..37: /World/Panel059 +provenance geometry 37..38: /World/Panel058 +provenance geometry 38..39: /World/Panel057 +provenance geometry 39..40: /World/Panel056 +provenance geometry 40..41: /World/Panel055 +provenance geometry 41..42: /World/Panel054 +provenance geometry 42..43: /World/Panel053 +provenance geometry 43..44: /World/Panel052 +provenance geometry 44..45: /World/Panel051 +provenance geometry 45..46: /World/Panel050 +provenance geometry 46..47: /World/Panel049 +provenance geometry 47..48: /World/Panel048 +provenance geometry 48..49: /World/Panel047 +provenance geometry 49..50: /World/Panel046 +provenance geometry 50..51: /World/Panel045 +provenance geometry 51..52: /World/Panel044 +provenance geometry 52..53: /World/Panel043 +provenance geometry 53..54: /World/Panel042 +provenance geometry 54..55: /World/Panel041 +provenance geometry 55..56: /World/Panel040 +provenance geometry 56..57: /World/Panel039 +provenance geometry 57..58: /World/Panel038 +provenance geometry 58..59: /World/Panel037 +provenance geometry 59..60: /World/Panel036 +provenance geometry 60..61: /World/Panel035 +provenance geometry 61..62: /World/Panel034 +provenance geometry 62..63: /World/Panel033 +provenance geometry 63..64: /World/Panel032 +provenance geometry 64..65: /World/Panel031 +provenance geometry 65..66: /World/Panel030 +provenance geometry 66..67: /World/Panel029 +provenance geometry 67..68: /World/Panel028 +provenance geometry 68..69: /World/Panel027 +provenance geometry 69..70: /World/Panel026 +provenance geometry 70..71: /World/Panel025 +provenance geometry 71..72: /World/Panel024 +provenance geometry 72..73: /World/Panel023 +provenance geometry 73..74: /World/Panel022 +provenance geometry 74..75: /World/Panel021 +provenance geometry 75..76: /World/Panel020 +provenance geometry 76..77: /World/Panel019 +provenance geometry 77..78: /World/Panel018 +provenance geometry 78..79: /World/Panel017 +provenance geometry 79..80: /World/Panel016 +provenance geometry 80..81: /World/Panel015 +provenance geometry 81..82: /World/Panel014 +provenance geometry 82..83: /World/Panel013 +provenance geometry 83..84: /World/Panel012 +provenance geometry 84..85: /World/Panel011 +provenance geometry 85..86: /World/Panel010 +provenance geometry 86..87: /World/Panel009 +provenance geometry 87..88: /World/Panel008 +provenance geometry 88..89: /World/Panel007 +provenance geometry 89..90: /World/Panel006 +provenance geometry 90..91: /World/Panel005 +provenance geometry 91..92: /World/Panel004 +provenance geometry 92..93: /World/Panel003 +provenance geometry 93..94: /World/Panel002 +provenance geometry 94..95: /World/Panel001 +provenance geometry 95..96: /World/Panel000 +provenance geometry 96..97: /World/Sphere159 +provenance geometry 97..98: /World/Sphere158 +provenance geometry 98..99: /World/Sphere157 +provenance geometry 99..100: /World/Sphere156 +provenance geometry 100..101: /World/Sphere155 +provenance geometry 101..102: /World/Sphere154 +provenance geometry 102..103: /World/Sphere153 +provenance geometry 103..104: /World/Sphere152 +provenance geometry 104..105: /World/Sphere151 +provenance geometry 105..106: /World/Sphere150 +provenance geometry 106..107: /World/Sphere149 +provenance geometry 107..108: /World/Sphere148 +provenance geometry 108..109: /World/Sphere147 +provenance geometry 109..110: /World/Sphere146 +provenance geometry 110..111: /World/Sphere145 +provenance geometry 111..112: /World/Sphere144 +provenance geometry 112..113: /World/Sphere143 +provenance geometry 113..114: /World/Sphere142 +provenance geometry 114..115: /World/Sphere141 +provenance geometry 115..116: /World/Sphere140 +provenance geometry 116..117: /World/Sphere139 +provenance geometry 117..118: /World/Sphere138 +provenance geometry 118..119: /World/Sphere137 +provenance geometry 119..120: /World/Sphere136 +provenance geometry 120..121: /World/Sphere135 +provenance geometry 121..122: /World/Sphere134 +provenance geometry 122..123: /World/Sphere133 +provenance geometry 123..124: /World/Sphere132 +provenance geometry 124..125: /World/Sphere131 +provenance geometry 125..126: /World/Sphere130 +provenance geometry 126..127: /World/Sphere129 +provenance geometry 127..128: /World/Sphere128 +provenance geometry 128..129: /World/Sphere127 +provenance geometry 129..130: /World/Sphere126 +provenance geometry 130..131: /World/Sphere125 +provenance geometry 131..132: /World/Sphere124 +provenance geometry 132..133: /World/Sphere123 +provenance geometry 133..134: /World/Sphere122 +provenance geometry 134..135: /World/Sphere121 +provenance geometry 135..136: /World/Sphere120 +provenance geometry 136..137: /World/Sphere119 +provenance geometry 137..138: /World/Sphere118 +provenance geometry 138..139: /World/Sphere117 +provenance geometry 139..140: /World/Sphere116 +provenance geometry 140..141: /World/Sphere115 +provenance geometry 141..142: /World/Sphere114 +provenance geometry 142..143: /World/Sphere113 +provenance geometry 143..144: /World/Sphere112 +provenance geometry 144..145: /World/Sphere111 +provenance geometry 145..146: /World/Sphere110 +provenance geometry 146..147: /World/Sphere109 +provenance geometry 147..148: /World/Sphere108 +provenance geometry 148..149: /World/Sphere107 +provenance geometry 149..150: /World/Sphere106 +provenance geometry 150..151: /World/Sphere105 +provenance geometry 151..152: /World/Sphere104 +provenance geometry 152..153: /World/Sphere103 +provenance geometry 153..154: /World/Sphere102 +provenance geometry 154..155: /World/Sphere101 +provenance geometry 155..156: /World/Sphere100 +provenance geometry 156..157: /World/Sphere099 +provenance geometry 157..158: /World/Sphere098 +provenance geometry 158..159: /World/Sphere097 +provenance geometry 159..160: /World/Sphere096 +provenance geometry 160..161: /World/Sphere095 +provenance geometry 161..162: /World/Sphere094 +provenance geometry 162..163: /World/Sphere093 +provenance geometry 163..164: /World/Sphere092 +provenance geometry 164..165: /World/Sphere091 +provenance geometry 165..166: /World/Sphere090 +provenance geometry 166..167: /World/Sphere089 +provenance geometry 167..168: /World/Sphere088 +provenance geometry 168..169: /World/Sphere087 +provenance geometry 169..170: /World/Sphere086 +provenance geometry 170..171: /World/Sphere085 +provenance geometry 171..172: /World/Sphere084 +provenance geometry 172..173: /World/Sphere083 +provenance geometry 173..174: /World/Sphere082 +provenance geometry 174..175: /World/Sphere081 +provenance geometry 175..176: /World/Sphere080 +provenance geometry 176..177: /World/Sphere079 +provenance geometry 177..178: /World/Sphere078 +provenance geometry 178..179: /World/Sphere077 +provenance geometry 179..180: /World/Sphere076 +provenance geometry 180..181: /World/Sphere075 +provenance geometry 181..182: /World/Sphere074 +provenance geometry 182..183: /World/Sphere073 +provenance geometry 183..184: /World/Sphere072 +provenance geometry 184..185: /World/Sphere071 +provenance geometry 185..186: /World/Sphere070 +provenance geometry 186..187: /World/Sphere069 +provenance geometry 187..188: /World/Sphere068 +provenance geometry 188..189: /World/Sphere067 +provenance geometry 189..190: /World/Sphere066 +provenance geometry 190..191: /World/Sphere065 +provenance geometry 191..192: /World/Sphere064 +provenance geometry 192..193: /World/Sphere063 +provenance geometry 193..194: /World/Sphere062 +provenance geometry 194..195: /World/Sphere061 +provenance geometry 195..196: /World/Sphere060 +provenance geometry 196..197: /World/Sphere059 +provenance geometry 197..198: /World/Sphere058 +provenance geometry 198..199: /World/Sphere057 +provenance geometry 199..200: /World/Sphere056 +provenance geometry 200..201: /World/Sphere055 +provenance geometry 201..202: /World/Sphere054 +provenance geometry 202..203: /World/Sphere053 +provenance geometry 203..204: /World/Sphere052 +provenance geometry 204..205: /World/Sphere051 +provenance geometry 205..206: /World/Sphere050 +provenance geometry 206..207: /World/Sphere049 +provenance geometry 207..208: /World/Sphere048 +provenance geometry 208..209: /World/Sphere047 +provenance geometry 209..210: /World/Sphere046 +provenance geometry 210..211: /World/Sphere045 +provenance geometry 211..212: /World/Sphere044 +provenance geometry 212..213: /World/Sphere043 +provenance geometry 213..214: /World/Sphere042 +provenance geometry 214..215: /World/Sphere041 +provenance geometry 215..216: /World/Sphere040 +provenance geometry 216..217: /World/Sphere039 +provenance geometry 217..218: /World/Sphere038 +provenance geometry 218..219: /World/Sphere037 +provenance geometry 219..220: /World/Sphere036 +provenance geometry 220..221: /World/Sphere035 +provenance geometry 221..222: /World/Sphere034 +provenance geometry 222..223: /World/Sphere033 +provenance geometry 223..224: /World/Sphere032 +provenance geometry 224..225: /World/Sphere031 +provenance geometry 225..226: /World/Sphere030 +provenance geometry 226..227: /World/Sphere029 +provenance geometry 227..228: /World/Sphere028 +provenance geometry 228..229: /World/Sphere027 +provenance geometry 229..230: /World/Sphere026 +provenance geometry 230..231: /World/Sphere025 +provenance geometry 231..232: /World/Sphere024 +provenance geometry 232..233: /World/Sphere023 +provenance geometry 233..234: /World/Sphere022 +provenance geometry 234..235: /World/Sphere021 +provenance geometry 235..236: /World/Sphere020 +provenance geometry 236..237: /World/Sphere019 +provenance geometry 237..238: /World/Sphere018 +provenance geometry 238..239: /World/Sphere017 +provenance geometry 239..240: /World/Sphere016 +provenance geometry 240..241: /World/Sphere015 +provenance geometry 241..242: /World/Sphere014 +provenance geometry 242..243: /World/Sphere013 +provenance geometry 243..244: /World/Sphere012 +provenance geometry 244..245: /World/Sphere011 +provenance geometry 245..246: /World/Sphere010 +provenance geometry 246..247: /World/Sphere009 +provenance geometry 247..248: /World/Sphere008 +provenance geometry 248..249: /World/Sphere007 +provenance geometry 249..250: /World/Sphere006 +provenance geometry 250..251: /World/Sphere005 +provenance geometry 251..252: /World/Sphere004 +provenance geometry 252..253: /World/Sphere003 +provenance geometry 253..254: /World/Sphere002 +provenance geometry 254..255: /World/Sphere001 +provenance geometry 255..256: /World/Sphere000 +provenance geometry 256..257: /World/Wall4 +provenance geometry 257..258: /World/Wall3 +provenance geometry 258..259: /World/Wall2 +provenance geometry 259..260: /World/Wall1 +provenance geometry 260..261: /World/Wall0 +provenance geometry 261..262: /World/Floor +provenance mesh: MeshOrigin { geom_id: 256, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 257, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 258, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 259, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 260, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 261, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18161012096923765881, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 5, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/marks_usda-92136ff2d6b2d34c-1.digest b/crates/crust-core/tests/data/import_baselines/marks_usda-92136ff2d6b2d34c-1.digest new file mode 100644 index 000000000..6733614b2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/marks_usda-92136ff2d6b2d34c-1.digest @@ -0,0 +1,37 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/marks.usda"], invisible_overrides: Some(0) } +layer: $DIR/marks.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 5 +light 0: area name Some("/World/Hidden") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Visible") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Prman") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/Masked") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 4: area name Some("/World/Blocker") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 0, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:984632b55acb5495 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b4dfc0dd30bb66e5 camera=1:b4dfc0dd30bb66e5 shadow=1:b4dfc0dd30bb66e5 indirect=1:b4dfc0dd30bb66e5 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:35cdd9a0d6e50805 camera=1:35cdd9a0d6e50805 shadow=1:35cdd9a0d6e50805 indirect=1:35cdd9a0d6e50805 +geom 3: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5502ac7a1bf17ab5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5502ac7a1bf17ab5 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c4216be242caaf75 camera=0:cbf29ce484222325 shadow=1:c4216be242caaf75 indirect=1:c4216be242caaf75 +provenance light /World/Blocker: LightOrigin { index: 4, geoms: 4..5 } +provenance light /World/Hidden: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Masked: LightOrigin { index: 3, geoms: 3..4 } +provenance light /World/Prman: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Visible: LightOrigin { index: 1, geoms: 1..2 } +provenance geometry 0..1: /World/Hidden +provenance geometry 1..2: /World/Visible +provenance geometry 2..3: /World/Prman +provenance geometry 3..4: /World/Masked +provenance geometry 4..5: /World/Blocker +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/masks_usda-0b1d6cd46ef5aa7b-1.digest b/crates/crust-core/tests/data/import_baselines/masks_usda-0b1d6cd46ef5aa7b-1.digest new file mode 100644 index 000000000..5544296ff --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/masks_usda-0b1d6cd46ef5aa7b-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/masks.usda"], invisible_overrides: Some(0) } +layer: $DIR/masks.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/L") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9dde2e2d7b5e3ea5 camera=0:cbf29ce484222325 shadow=1:9dde2e2d7b5e3ea5 indirect=1:9dde2e2d7b5e3ea5 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +provenance light /World/L: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Hidden +provenance geometry 1..2: /World/L +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-1.digest b/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-1.digest new file mode 100644 index 000000000..c6bbccdf7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Camera") +camera: Camera { origin: Vec3A(0.5, 0.0, 12.0), lower_left_corner: Vec3A(-3.766667, -2.4, 2.0), horizontal: Vec3A(8.533334, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/mass_spike.usda"], invisible_overrides: Some(0) } +layer: $DIR/mass_spike.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: distant name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 285, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=67:41c4aab06daa3489 camera=67:41c4aab06daa3489 shadow=67:41c4aab06daa3489 indirect=67:41c4aab06daa3489 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=67:173faf3820eec7d9 camera=67:173faf3820eec7d9 shadow=67:173faf3820eec7d9 indirect=67:173faf3820eec7d9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=151:5a69269f17ec09e3 camera=151:5a69269f17ec09e3 shadow=151:5a69269f17ec09e3 indirect=151:5a69269f17ec09e3 +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..0 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/SheetA +provenance geometry 1..2: /World/SheetB +provenance geometry 2..3: /World/Clump +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Camera"), cameras: ["/World/Camera"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Camera"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-2.digest b/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-2.digest new file mode 100644 index 000000000..c6bbccdf7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-2.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Camera") +camera: Camera { origin: Vec3A(0.5, 0.0, 12.0), lower_left_corner: Vec3A(-3.766667, -2.4, 2.0), horizontal: Vec3A(8.533334, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/mass_spike.usda"], invisible_overrides: Some(0) } +layer: $DIR/mass_spike.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: distant name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 285, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=67:41c4aab06daa3489 camera=67:41c4aab06daa3489 shadow=67:41c4aab06daa3489 indirect=67:41c4aab06daa3489 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=67:173faf3820eec7d9 camera=67:173faf3820eec7d9 shadow=67:173faf3820eec7d9 indirect=67:173faf3820eec7d9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=151:5a69269f17ec09e3 camera=151:5a69269f17ec09e3 shadow=151:5a69269f17ec09e3 indirect=151:5a69269f17ec09e3 +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..0 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/SheetA +provenance geometry 1..2: /World/SheetB +provenance geometry 2..3: /World/Clump +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Camera"), cameras: ["/World/Camera"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Camera"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/mass_spike_usda-dee5e21f531bb6c7-1.digest b/crates/crust-core/tests/data/import_baselines/mass_spike_usda-dee5e21f531bb6c7-1.digest new file mode 100644 index 000000000..5f1eaa624 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mass_spike_usda-dee5e21f531bb6c7-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Camera") +camera: Camera { origin: Vec3A(0.5, 0.0, 12.0), lower_left_corner: Vec3A(-3.766667, -2.4, 2.0), horizontal: Vec3A(8.533334, 0.0, 0.0), vertical: Vec3A(0.0, 4.8, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 24.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/mass_spike.usda"], invisible_overrides: Some(0) } +layer: $DIR/mass_spike.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: distant name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 285, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=67:41c4aab06daa3489 camera=67:41c4aab06daa3489 shadow=67:41c4aab06daa3489 indirect=67:41c4aab06daa3489 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=67:173faf3820eec7d9 camera=67:173faf3820eec7d9 shadow=67:173faf3820eec7d9 indirect=67:173faf3820eec7d9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=151:5a69269f17ec09e3 camera=151:5a69269f17ec09e3 shadow=151:5a69269f17ec09e3 indirect=151:5a69269f17ec09e3 +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..0 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/SheetA +provenance geometry 1..2: /World/SheetB +provenance geometry 2..3: /World/Clump +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Camera"), cameras: ["/World/Camera"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Camera"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-1.digest new file mode 100644 index 000000000..4e9ef615a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-1.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 0.4, 8.5), lower_left_corner: Vec3A(-3.0600004, -1.3212503, 0.0), horizontal: Vec3A(6.120001, 0.0, 0.0), vertical: Vec3A(0.0, 3.4425006, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 8.5 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_basic.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_basic.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 3, prims: [], message: "Asset loader does not decode UV textures: $DIR/textures/mtlx_mask.png ignored — the input falls back to its constant value." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d922ac2ec48f4f97 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d922ac2ec48f4f97 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:23063c3980664227 camera=2:23063c3980664227 shadow=2:23063c3980664227 indirect=2:23063c3980664227 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:380b2e0280de83db camera=2:380b2e0280de83db shadow=2:380b2e0280de83db indirect=2:380b2e0280de83db +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2f3c5568e1dbd031 camera=2:2f3c5568e1dbd031 shadow=2:2f3c5568e1dbd031 indirect=2:2f3c5568e1dbd031 +geom 4: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(3) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fbc0ea070d0254d5 camera=2:fbc0ea070d0254d5 shadow=2:fbc0ea070d0254d5 indirect=2:fbc0ea070d0254d5 +provenance material /World/Looks/Ceramic: MaterialOrigin { slots: [3, 4], displaced: false } +provenance material /World/Looks/Lacquer: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/LacquerBar +provenance geometry 2..3: /World/MetalBar +provenance geometry 3..4: /World/TileB +provenance geometry 4..5: /World/TileA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9086379455125602793, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17635173815764174797, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16866940305613015801, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2259531437156517646, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-2.digest b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-2.digest new file mode 100644 index 000000000..4e9ef615a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-2.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 0.4, 8.5), lower_left_corner: Vec3A(-3.0600004, -1.3212503, 0.0), horizontal: Vec3A(6.120001, 0.0, 0.0), vertical: Vec3A(0.0, 3.4425006, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 8.5 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_basic.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_basic.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 3, prims: [], message: "Asset loader does not decode UV textures: $DIR/textures/mtlx_mask.png ignored — the input falls back to its constant value." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d922ac2ec48f4f97 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d922ac2ec48f4f97 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:23063c3980664227 camera=2:23063c3980664227 shadow=2:23063c3980664227 indirect=2:23063c3980664227 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:380b2e0280de83db camera=2:380b2e0280de83db shadow=2:380b2e0280de83db indirect=2:380b2e0280de83db +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2f3c5568e1dbd031 camera=2:2f3c5568e1dbd031 shadow=2:2f3c5568e1dbd031 indirect=2:2f3c5568e1dbd031 +geom 4: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(3) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fbc0ea070d0254d5 camera=2:fbc0ea070d0254d5 shadow=2:fbc0ea070d0254d5 indirect=2:fbc0ea070d0254d5 +provenance material /World/Looks/Ceramic: MaterialOrigin { slots: [3, 4], displaced: false } +provenance material /World/Looks/Lacquer: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/LacquerBar +provenance geometry 2..3: /World/MetalBar +provenance geometry 3..4: /World/TileB +provenance geometry 4..5: /World/TileA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9086379455125602793, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17635173815764174797, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16866940305613015801, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2259531437156517646, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-47f44502b8b66093-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-47f44502b8b66093-1.digest new file mode 100644 index 000000000..4e9ef615a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-47f44502b8b66093-1.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 0.4, 8.5), lower_left_corner: Vec3A(-3.0600004, -1.3212503, 0.0), horizontal: Vec3A(6.120001, 0.0, 0.0), vertical: Vec3A(0.0, 3.4425006, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 8.5 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_basic.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_basic.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 3, prims: [], message: "Asset loader does not decode UV textures: $DIR/textures/mtlx_mask.png ignored — the input falls back to its constant value." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d922ac2ec48f4f97 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d922ac2ec48f4f97 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:23063c3980664227 camera=2:23063c3980664227 shadow=2:23063c3980664227 indirect=2:23063c3980664227 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:380b2e0280de83db camera=2:380b2e0280de83db shadow=2:380b2e0280de83db indirect=2:380b2e0280de83db +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2f3c5568e1dbd031 camera=2:2f3c5568e1dbd031 shadow=2:2f3c5568e1dbd031 indirect=2:2f3c5568e1dbd031 +geom 4: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(3) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fbc0ea070d0254d5 camera=2:fbc0ea070d0254d5 shadow=2:fbc0ea070d0254d5 indirect=2:fbc0ea070d0254d5 +provenance material /World/Looks/Ceramic: MaterialOrigin { slots: [3, 4], displaced: false } +provenance material /World/Looks/Lacquer: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/LacquerBar +provenance geometry 2..3: /World/MetalBar +provenance geometry 3..4: /World/TileB +provenance geometry 4..5: /World/TileA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9086379455125602793, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17635173815764174797, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16866940305613015801, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2259531437156517646, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-5e3c6402db738e98-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-5e3c6402db738e98-1.digest new file mode 100644 index 000000000..9272d2cb1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-5e3c6402db738e98-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 0.4, 8.5), lower_left_corner: Vec3A(-3.0600004, -1.3212503, 0.0), horizontal: Vec3A(6.120001, 0.0, 0.0), vertical: Vec3A(0.0, 3.4425006, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 8.5 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_basic.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_basic.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d922ac2ec48f4f97 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d922ac2ec48f4f97 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:23063c3980664227 camera=2:23063c3980664227 shadow=2:23063c3980664227 indirect=2:23063c3980664227 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:380b2e0280de83db camera=2:380b2e0280de83db shadow=2:380b2e0280de83db indirect=2:380b2e0280de83db +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2f3c5568e1dbd031 camera=2:2f3c5568e1dbd031 shadow=2:2f3c5568e1dbd031 indirect=2:2f3c5568e1dbd031 +geom 4: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(3) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fbc0ea070d0254d5 camera=2:fbc0ea070d0254d5 shadow=2:fbc0ea070d0254d5 indirect=2:fbc0ea070d0254d5 +provenance material /World/Looks/Ceramic: MaterialOrigin { slots: [3, 4], displaced: false } +provenance material /World/Looks/Lacquer: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/LacquerBar +provenance geometry 2..3: /World/MetalBar +provenance geometry 3..4: /World/TileB +provenance geometry 4..5: /World/TileA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9086379455125602793, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17635173815764174797, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16866940305613015801, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2259531437156517646, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-605f278bcaf83bcb-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-605f278bcaf83bcb-1.digest new file mode 100644 index 000000000..4e9ef615a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-605f278bcaf83bcb-1.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 0.4, 8.5), lower_left_corner: Vec3A(-3.0600004, -1.3212503, 0.0), horizontal: Vec3A(6.120001, 0.0, 0.0), vertical: Vec3A(0.0, 3.4425006, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 8.5 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_basic.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_basic.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 3, prims: [], message: "Asset loader does not decode UV textures: $DIR/textures/mtlx_mask.png ignored — the input falls back to its constant value." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d922ac2ec48f4f97 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d922ac2ec48f4f97 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:23063c3980664227 camera=2:23063c3980664227 shadow=2:23063c3980664227 indirect=2:23063c3980664227 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:380b2e0280de83db camera=2:380b2e0280de83db shadow=2:380b2e0280de83db indirect=2:380b2e0280de83db +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2f3c5568e1dbd031 camera=2:2f3c5568e1dbd031 shadow=2:2f3c5568e1dbd031 indirect=2:2f3c5568e1dbd031 +geom 4: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(3) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fbc0ea070d0254d5 camera=2:fbc0ea070d0254d5 shadow=2:fbc0ea070d0254d5 indirect=2:fbc0ea070d0254d5 +provenance material /World/Looks/Ceramic: MaterialOrigin { slots: [3, 4], displaced: false } +provenance material /World/Looks/Lacquer: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/LacquerBar +provenance geometry 2..3: /World/MetalBar +provenance geometry 3..4: /World/TileB +provenance geometry 4..5: /World/TileA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9086379455125602793, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17635173815764174797, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16866940305613015801, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2259531437156517646, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-7efe0aff05c6d47a-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-7efe0aff05c6d47a-1.digest new file mode 100644 index 000000000..18f27a78f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-7efe0aff05c6d47a-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 0.4, 8.5), lower_left_corner: Vec3A(-3.0600004, -1.3212503, 0.0), horizontal: Vec3A(6.120001, 0.0, 0.0), vertical: Vec3A(0.0, 3.4425006, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 8.5 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_basic.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_basic.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d922ac2ec48f4f97 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d922ac2ec48f4f97 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:23063c3980664227 camera=2:23063c3980664227 shadow=2:23063c3980664227 indirect=2:23063c3980664227 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:380b2e0280de83db camera=2:380b2e0280de83db shadow=2:380b2e0280de83db indirect=2:380b2e0280de83db +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2f3c5568e1dbd031 camera=2:2f3c5568e1dbd031 shadow=2:2f3c5568e1dbd031 indirect=2:2f3c5568e1dbd031 +geom 4: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(3) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fbc0ea070d0254d5 camera=2:fbc0ea070d0254d5 shadow=2:fbc0ea070d0254d5 indirect=2:fbc0ea070d0254d5 +provenance material /World/Looks/Ceramic: MaterialOrigin { slots: [3, 4], displaced: false } +provenance material /World/Looks/Lacquer: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/LacquerBar +provenance geometry 2..3: /World/MetalBar +provenance geometry 3..4: /World/TileB +provenance geometry 4..5: /World/TileA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9086379455125602793, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17635173815764174797, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16866940305613015801, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2259531437156517646, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-ee87ad7ab34333f5-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-ee87ad7ab34333f5-1.digest new file mode 100644 index 000000000..4e9ef615a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-ee87ad7ab34333f5-1.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 0.4, 8.5), lower_left_corner: Vec3A(-3.0600004, -1.3212503, 0.0), horizontal: Vec3A(6.120001, 0.0, 0.0), vertical: Vec3A(0.0, 3.4425006, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 8.5 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_basic.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_basic.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 3, prims: [], message: "Asset loader does not decode UV textures: $DIR/textures/mtlx_mask.png ignored — the input falls back to its constant value." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d922ac2ec48f4f97 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d922ac2ec48f4f97 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:23063c3980664227 camera=2:23063c3980664227 shadow=2:23063c3980664227 indirect=2:23063c3980664227 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:380b2e0280de83db camera=2:380b2e0280de83db shadow=2:380b2e0280de83db indirect=2:380b2e0280de83db +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2f3c5568e1dbd031 camera=2:2f3c5568e1dbd031 shadow=2:2f3c5568e1dbd031 indirect=2:2f3c5568e1dbd031 +geom 4: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(3) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fbc0ea070d0254d5 camera=2:fbc0ea070d0254d5 shadow=2:fbc0ea070d0254d5 indirect=2:fbc0ea070d0254d5 +provenance material /World/Looks/Ceramic: MaterialOrigin { slots: [3, 4], displaced: false } +provenance material /World/Looks/Lacquer: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Metal: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/LacquerBar +provenance geometry 2..3: /World/MetalBar +provenance geometry 3..4: /World/TileB +provenance geometry 4..5: /World/TileA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9086379455125602793, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17635173815764174797, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16866940305613015801, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2259531437156517646, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-1.digest new file mode 100644 index 000000000..929daecd0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 1.2, 7.0), lower_left_corner: Vec3A(-4.5, -1.570276, -2.8685398), horizontal: Vec3A(9.0, -0.0, 0.0), vertical: Vec3A(0.0, 4.493833, -0.23551181), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.99862957, -0.05233596), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 12, width: 640, height: 320, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 320 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 40.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_cutout.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_cutout.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_env.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:09acf82f9592b955 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:09acf82f9592b955 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:741514c546e5584d camera=1:741514c546e5584d shadow=1:741514c546e5584d indirect=1:741514c546e5584d +geom 3: material #3 Signature { kind: "MaterialX", cutout: true, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:259535af9ea7b96d camera=1:259535af9ea7b96d shadow=1:259535af9ea7b96d indirect=1:259535af9ea7b96d +geom 4: material #4 Signature { kind: "MaterialX", cutout: true, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:13faf23073bbee99 camera=2:13faf23073bbee99 shadow=2:13faf23073bbee99 indirect=2:13faf23073bbee99 +provenance material /World/Looks/Floor: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/GltfCard: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Looks/OpenPbrGhost: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/StandardBrushed: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/StandardBrushed +provenance geometry 3..4: /World/OpenPbrGhost +provenance geometry 4..5: /World/GltfCard +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8640034384489181113, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-2.digest b/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-2.digest new file mode 100644 index 000000000..929daecd0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-2.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 1.2, 7.0), lower_left_corner: Vec3A(-4.5, -1.570276, -2.8685398), horizontal: Vec3A(9.0, -0.0, 0.0), vertical: Vec3A(0.0, 4.493833, -0.23551181), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.99862957, -0.05233596), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 12, width: 640, height: 320, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 320 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 40.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_cutout.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_cutout.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_env.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:09acf82f9592b955 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:09acf82f9592b955 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:741514c546e5584d camera=1:741514c546e5584d shadow=1:741514c546e5584d indirect=1:741514c546e5584d +geom 3: material #3 Signature { kind: "MaterialX", cutout: true, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:259535af9ea7b96d camera=1:259535af9ea7b96d shadow=1:259535af9ea7b96d indirect=1:259535af9ea7b96d +geom 4: material #4 Signature { kind: "MaterialX", cutout: true, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:13faf23073bbee99 camera=2:13faf23073bbee99 shadow=2:13faf23073bbee99 indirect=2:13faf23073bbee99 +provenance material /World/Looks/Floor: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/GltfCard: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Looks/OpenPbrGhost: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/StandardBrushed: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/StandardBrushed +provenance geometry 3..4: /World/OpenPbrGhost +provenance geometry 4..5: /World/GltfCard +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8640034384489181113, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-ae65df7de0c507fa-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-ae65df7de0c507fa-1.digest new file mode 100644 index 000000000..3422b758b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-ae65df7de0c507fa-1.digest @@ -0,0 +1,38 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 1.2, 7.0), lower_left_corner: Vec3A(-4.5, -1.570276, -2.8685398), horizontal: Vec3A(9.0, -0.0, 0.0), vertical: Vec3A(0.0, 4.493833, -0.23551181), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.99862957, -0.05233596), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 12, width: 640, height: 320, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 320 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 40.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_cutout.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_cutout.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:09acf82f9592b955 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:09acf82f9592b955 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:741514c546e5584d camera=1:741514c546e5584d shadow=1:741514c546e5584d indirect=1:741514c546e5584d +geom 3: material #3 Signature { kind: "MaterialX", cutout: true, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:259535af9ea7b96d camera=1:259535af9ea7b96d shadow=1:259535af9ea7b96d indirect=1:259535af9ea7b96d +geom 4: material #4 Signature { kind: "MaterialX", cutout: true, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:13faf23073bbee99 camera=2:13faf23073bbee99 shadow=2:13faf23073bbee99 indirect=2:13faf23073bbee99 +provenance material /World/Looks/Floor: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/GltfCard: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Looks/OpenPbrGhost: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/StandardBrushed: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/StandardBrushed +provenance geometry 3..4: /World/OpenPbrGhost +provenance geometry 4..5: /World/GltfCard +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8640034384489181113, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-1.digest new file mode 100644 index 000000000..8b1e6e8af --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-1.digest @@ -0,0 +1,36 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 0.1, 8.5), lower_left_corner: Vec3A(-3.0600004, -1.6212503, 0.0), horizontal: Vec3A(6.120001, 0.0, 0.0), vertical: Vec3A(0.0, 3.4425006, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 256, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 8.5 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_emissive.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_emissive.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "Asset loader does not decode UV textures: $DIR/textures/mtlx_emission.hdr ignored — the input falls back to its constant value." } +lights: 0 +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9c4830a587543e65 camera=2:9c4830a587543e65 shadow=2:9c4830a587543e65 indirect=2:9c4830a587543e65 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5aae1978ab8dd265 camera=2:5aae1978ab8dd265 shadow=2:5aae1978ab8dd265 indirect=2:5aae1978ab8dd265 +geom 2: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b587000d709e76b0 camera=2:b587000d709e76b0 shadow=2:b587000d709e76b0 indirect=2:b587000d709e76b0 +geom 3: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0d7d73d5e0563034 camera=2:0d7d73d5e0563034 shadow=2:0d7d73d5e0563034 indirect=2:0d7d73d5e0563034 +provenance material /World/Looks/EmitterConstant: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/EmitterTextured: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Floor: MaterialOrigin { slots: [0, 1], displaced: false } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Backdrop +provenance geometry 2..3: /World/HdrPanel +provenance geometry 3..4: /World/LampPanel +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8314674973970688493, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11246051425605312490, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14590333405597940504, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17361204448718928378, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-2.digest b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-2.digest new file mode 100644 index 000000000..8b1e6e8af --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-2.digest @@ -0,0 +1,36 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 0.1, 8.5), lower_left_corner: Vec3A(-3.0600004, -1.6212503, 0.0), horizontal: Vec3A(6.120001, 0.0, 0.0), vertical: Vec3A(0.0, 3.4425006, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 256, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 8.5 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_emissive.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_emissive.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "Asset loader does not decode UV textures: $DIR/textures/mtlx_emission.hdr ignored — the input falls back to its constant value." } +lights: 0 +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9c4830a587543e65 camera=2:9c4830a587543e65 shadow=2:9c4830a587543e65 indirect=2:9c4830a587543e65 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5aae1978ab8dd265 camera=2:5aae1978ab8dd265 shadow=2:5aae1978ab8dd265 indirect=2:5aae1978ab8dd265 +geom 2: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b587000d709e76b0 camera=2:b587000d709e76b0 shadow=2:b587000d709e76b0 indirect=2:b587000d709e76b0 +geom 3: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0d7d73d5e0563034 camera=2:0d7d73d5e0563034 shadow=2:0d7d73d5e0563034 indirect=2:0d7d73d5e0563034 +provenance material /World/Looks/EmitterConstant: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/EmitterTextured: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Floor: MaterialOrigin { slots: [0, 1], displaced: false } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Backdrop +provenance geometry 2..3: /World/HdrPanel +provenance geometry 3..4: /World/LampPanel +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8314674973970688493, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11246051425605312490, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14590333405597940504, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17361204448718928378, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-3c55abed0c2329af-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-3c55abed0c2329af-1.digest new file mode 100644 index 000000000..d11fc1d11 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-3c55abed0c2329af-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 0.1, 8.5), lower_left_corner: Vec3A(-3.0600004, -1.6212503, 0.0), horizontal: Vec3A(6.120001, 0.0, 0.0), vertical: Vec3A(0.0, 3.4425006, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 256, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 8.5 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_emissive.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_emissive.usda +lights: 0 +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9c4830a587543e65 camera=2:9c4830a587543e65 shadow=2:9c4830a587543e65 indirect=2:9c4830a587543e65 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5aae1978ab8dd265 camera=2:5aae1978ab8dd265 shadow=2:5aae1978ab8dd265 indirect=2:5aae1978ab8dd265 +geom 2: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b587000d709e76b0 camera=2:b587000d709e76b0 shadow=2:b587000d709e76b0 indirect=2:b587000d709e76b0 +geom 3: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0d7d73d5e0563034 camera=2:0d7d73d5e0563034 shadow=2:0d7d73d5e0563034 indirect=2:0d7d73d5e0563034 +provenance material /World/Looks/EmitterConstant: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/EmitterTextured: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Floor: MaterialOrigin { slots: [0, 1], displaced: false } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Backdrop +provenance geometry 2..3: /World/HdrPanel +provenance geometry 3..4: /World/LampPanel +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8314674973970688493, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11246051425605312490, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14590333405597940504, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17361204448718928378, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-746e6884e4aa1a13-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-746e6884e4aa1a13-1.digest new file mode 100644 index 000000000..8b1e6e8af --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-746e6884e4aa1a13-1.digest @@ -0,0 +1,36 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 0.1, 8.5), lower_left_corner: Vec3A(-3.0600004, -1.6212503, 0.0), horizontal: Vec3A(6.120001, 0.0, 0.0), vertical: Vec3A(0.0, 3.4425006, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 256, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 8.5 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_emissive.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_emissive.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "Asset loader does not decode UV textures: $DIR/textures/mtlx_emission.hdr ignored — the input falls back to its constant value." } +lights: 0 +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9c4830a587543e65 camera=2:9c4830a587543e65 shadow=2:9c4830a587543e65 indirect=2:9c4830a587543e65 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5aae1978ab8dd265 camera=2:5aae1978ab8dd265 shadow=2:5aae1978ab8dd265 indirect=2:5aae1978ab8dd265 +geom 2: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b587000d709e76b0 camera=2:b587000d709e76b0 shadow=2:b587000d709e76b0 indirect=2:b587000d709e76b0 +geom 3: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0d7d73d5e0563034 camera=2:0d7d73d5e0563034 shadow=2:0d7d73d5e0563034 indirect=2:0d7d73d5e0563034 +provenance material /World/Looks/EmitterConstant: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/EmitterTextured: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Floor: MaterialOrigin { slots: [0, 1], displaced: false } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Backdrop +provenance geometry 2..3: /World/HdrPanel +provenance geometry 3..4: /World/LampPanel +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8314674973970688493, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11246051425605312490, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14590333405597940504, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17361204448718928378, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-8dd82f7591e605f2-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-8dd82f7591e605f2-1.digest new file mode 100644 index 000000000..8b1e6e8af --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-8dd82f7591e605f2-1.digest @@ -0,0 +1,36 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 0.1, 8.5), lower_left_corner: Vec3A(-3.0600004, -1.6212503, 0.0), horizontal: Vec3A(6.120001, 0.0, 0.0), vertical: Vec3A(0.0, 3.4425006, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 256, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 8.5 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_emissive.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_emissive.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "Asset loader does not decode UV textures: $DIR/textures/mtlx_emission.hdr ignored — the input falls back to its constant value." } +lights: 0 +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9c4830a587543e65 camera=2:9c4830a587543e65 shadow=2:9c4830a587543e65 indirect=2:9c4830a587543e65 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5aae1978ab8dd265 camera=2:5aae1978ab8dd265 shadow=2:5aae1978ab8dd265 indirect=2:5aae1978ab8dd265 +geom 2: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b587000d709e76b0 camera=2:b587000d709e76b0 shadow=2:b587000d709e76b0 indirect=2:b587000d709e76b0 +geom 3: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0d7d73d5e0563034 camera=2:0d7d73d5e0563034 shadow=2:0d7d73d5e0563034 indirect=2:0d7d73d5e0563034 +provenance material /World/Looks/EmitterConstant: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/EmitterTextured: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Floor: MaterialOrigin { slots: [0, 1], displaced: false } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Backdrop +provenance geometry 2..3: /World/HdrPanel +provenance geometry 3..4: /World/LampPanel +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8314674973970688493, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11246051425605312490, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14590333405597940504, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17361204448718928378, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-a62e7b45a5b76dea-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-a62e7b45a5b76dea-1.digest new file mode 100644 index 000000000..686dc6619 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-a62e7b45a5b76dea-1.digest @@ -0,0 +1,43 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.3, -0.52, 0.3), lower_left_corner: Vec3A(-0.20956933, -0.17536479, -0.026081339), horizontal: Vec3A(0.4632069, 0.26878545, 3.990106e-9), vertical: Vec3A(-0.044039004, 0.07589388, 0.2881804), u: Vec3A(0.86492956, 0.5018934, 7.4505815e-9), v: Vec3A(-0.14619102, 0.25193584, 0.9566381), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 12, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 42.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 0.6248 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_lion.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_lion.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/Geometry/lion_statue_lq.usd +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/lion.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 1060268, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1060268, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1068fc4a796550f2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1068fc4a796550f2 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:30d55baf131c75e7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:30d55baf131c75e7 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d4a5c9127205c3c5 camera=2:d4a5c9127205c3c5 shadow=2:d4a5c9127205c3c5 indirect=2:d4a5c9127205c3c5 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=79996:e73538b26933b929 camera=79996:e73538b26933b929 shadow=79996:e73538b26933b929 indirect=79996:e73538b26933b929 +geom 4: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=980266:787952c0e7711032 camera=980266:787952c0e7711032 shadow=980266:787952c0e7711032 indirect=980266:787952c0e7711032 +provenance material /World/Looks/GroundMaterial: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Statue/Looks/StatueMaterial: MaterialOrigin { slots: [3, 4], displaced: false } +provenance material read: ("/Statue/Looks/StatueMaterial", "/World/Statue/Looks/StatueMaterial") +provenance light /World/Key: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 2, geoms: 2..2 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Ground +provenance geometry 3..4: /World/Statue/base/base +provenance geometry 4..5: /World/Statue/statue/statue +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12600948678966428397, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6367222363041144018, n_points: 40000, n_indices: 239988, n_uvs: Some(40781), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5067503788512982755, n_points: 490133, n_indices: 1960532, n_uvs: Some(497721), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-1.digest new file mode 100644 index 000000000..50705d8d5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-1.digest @@ -0,0 +1,44 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.3, -0.52, 0.3), lower_left_corner: Vec3A(-0.20956933, -0.17536479, -0.026081339), horizontal: Vec3A(0.4632069, 0.26878545, 3.990106e-9), vertical: Vec3A(-0.044039004, 0.07589388, 0.2881804), u: Vec3A(0.86492956, 0.5018934, 7.4505815e-9), v: Vec3A(-0.14619102, 0.25193584, 0.9566381), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 12, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 42.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 0.6248 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_lion.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_lion.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/Geometry/lion_statue_lq.usd +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/lion.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 7, prims: [], message: "Asset loader does not decode UV textures: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/Looks/../Textures/T_Sculpture_A1_Int_Normal..png ignored — the input falls back to its constant value." } +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 1060268, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1060268, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1068fc4a796550f2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1068fc4a796550f2 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:30d55baf131c75e7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:30d55baf131c75e7 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d4a5c9127205c3c5 camera=2:d4a5c9127205c3c5 shadow=2:d4a5c9127205c3c5 indirect=2:d4a5c9127205c3c5 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=79996:e73538b26933b929 camera=79996:e73538b26933b929 shadow=79996:e73538b26933b929 indirect=79996:e73538b26933b929 +geom 4: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=980266:787952c0e7711032 camera=980266:787952c0e7711032 shadow=980266:787952c0e7711032 indirect=980266:787952c0e7711032 +provenance material /World/Looks/GroundMaterial: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Statue/Looks/StatueMaterial: MaterialOrigin { slots: [3, 4], displaced: false } +provenance material read: ("/Statue/Looks/StatueMaterial", "/World/Statue/Looks/StatueMaterial") +provenance light /World/Key: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 2, geoms: 2..2 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Ground +provenance geometry 3..4: /World/Statue/base/base +provenance geometry 4..5: /World/Statue/statue/statue +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12600948678966428397, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6367222363041144018, n_points: 40000, n_indices: 239988, n_uvs: Some(40781), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5067503788512982755, n_points: 490133, n_indices: 1960532, n_uvs: Some(497721), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-2.digest b/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-2.digest new file mode 100644 index 000000000..50705d8d5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-2.digest @@ -0,0 +1,44 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.3, -0.52, 0.3), lower_left_corner: Vec3A(-0.20956933, -0.17536479, -0.026081339), horizontal: Vec3A(0.4632069, 0.26878545, 3.990106e-9), vertical: Vec3A(-0.044039004, 0.07589388, 0.2881804), u: Vec3A(0.86492956, 0.5018934, 7.4505815e-9), v: Vec3A(-0.14619102, 0.25193584, 0.9566381), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 12, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 42.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 0.6248 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_lion.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_lion.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/Geometry/lion_statue_lq.usd +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/lion.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 7, prims: [], message: "Asset loader does not decode UV textures: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/Looks/../Textures/T_Sculpture_A1_Int_Normal..png ignored — the input falls back to its constant value." } +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 1060268, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1060268, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1068fc4a796550f2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1068fc4a796550f2 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:30d55baf131c75e7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:30d55baf131c75e7 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d4a5c9127205c3c5 camera=2:d4a5c9127205c3c5 shadow=2:d4a5c9127205c3c5 indirect=2:d4a5c9127205c3c5 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=79996:e73538b26933b929 camera=79996:e73538b26933b929 shadow=79996:e73538b26933b929 indirect=79996:e73538b26933b929 +geom 4: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=980266:787952c0e7711032 camera=980266:787952c0e7711032 shadow=980266:787952c0e7711032 indirect=980266:787952c0e7711032 +provenance material /World/Looks/GroundMaterial: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Statue/Looks/StatueMaterial: MaterialOrigin { slots: [3, 4], displaced: false } +provenance material read: ("/Statue/Looks/StatueMaterial", "/World/Statue/Looks/StatueMaterial") +provenance light /World/Key: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 2, geoms: 2..2 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Ground +provenance geometry 3..4: /World/Statue/base/base +provenance geometry 4..5: /World/Statue/statue/statue +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12600948678966428397, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6367222363041144018, n_points: 40000, n_indices: 239988, n_uvs: Some(40781), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5067503788512982755, n_points: 490133, n_indices: 1960532, n_uvs: Some(497721), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-1e9e0f7089dbbfd5-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-1e9e0f7089dbbfd5-1.digest new file mode 100644 index 000000000..917b84417 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-1e9e0f7089dbbfd5-1.digest @@ -0,0 +1,73 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.02, -1.08, 0.28), lower_left_corner: Vec3A(-0.2819569, -0.023333311, -0.038240433), horizontal: Vec3A(0.60391384, 0.0, -0.0), vertical: Vec3A(0.0, 0.046732187, 0.33647177), u: Vec3A(1.0, 0.0, -0.0), v: Vec3A(0.0, 0.13756837, 0.99049234), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 12, width: 1920, height: 1080, region: PixelRect { x0: 0, y0: 0, x1: 1920, y1: 1080 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 65.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 1.0904 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_showcase.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_showcase.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/Geometry/lion_statue_lq.usd +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/lion.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/Geometry/teapot.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/teapot.usda +lights: 5 +light 0: area name Some("/World/Sweep") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Top") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Fill") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/Key") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 4: dome name Some("/World/Ambient") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 11 geometries, PrimitiveBreakdown { triangles: 1320184, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1320184, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:95f4302540ae75bb camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:95f4302540ae75bb +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d3456bbfab5f963b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d3456bbfab5f963b +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:722fab8b7df8d571 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:722fab8b7df8d571 +geom 3: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:24a3f7e1c347d95d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:24a3f7e1c347d95d +geom 4: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:ab362d3c1f55a37a camera=48:ab362d3c1f55a37a shadow=48:ab362d3c1f55a37a indirect=48:ab362d3c1f55a37a +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:247a9f05691f6842 camera=2:247a9f05691f6842 shadow=2:247a9f05691f6842 indirect=2:247a9f05691f6842 +geom 6: material #5 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 0.52 motion [] pieces all=79996:fcb4179389611158 camera=79996:fcb4179389611158 shadow=79996:fcb4179389611158 indirect=79996:fcb4179389611158 +geom 7: material #5 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 0.52 motion [] pieces all=980266:412f800b00d9e4fc camera=980266:412f800b00d9e4fc shadow=980266:412f800b00d9e4fc indirect=980266:412f800b00d9e4fc +geom 8: material #6 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=39620:e598fda52b0339e5 camera=39620:e598fda52b0339e5 shadow=39620:e598fda52b0339e5 indirect=39620:e598fda52b0339e5 +geom 9: material #7 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(3) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=44096:6e172da5a7328a8d camera=44096:6e172da5a7328a8d shadow=44096:6e172da5a7328a8d indirect=44096:6e172da5a7328a8d +geom 10: material #7 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(4) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=176148:1bd75640dcbb45b5 camera=176148:1bd75640dcbb45b5 shadow=176148:1bd75640dcbb45b5 indirect=176148:1bd75640dcbb45b5 +provenance material /World/Lion/Looks/StatueMaterial: MaterialOrigin { slots: [6, 7], displaced: false } +provenance material /World/Looks/Sweep: MaterialOrigin { slots: [4, 5], displaced: false } +provenance material /World/Teapot/Looks/TeapotCeramic: MaterialOrigin { slots: [9, 10], displaced: false } +provenance material /World/Teapot/Looks/TeapotMetal: MaterialOrigin { slots: [8], displaced: false } +provenance material read: ("/Statue/Looks/StatueMaterial", "/World/Lion/Looks/StatueMaterial") +provenance material read: ("/Teapot/Looks/TeapotCeramic", "/World/Teapot/Looks/TeapotCeramic") +provenance material read: ("/Teapot/Looks/TeapotMetal", "/World/Teapot/Looks/TeapotMetal") +provenance light /World/Ambient: LightOrigin { index: 4, geoms: 4..4 } +provenance light /World/Fill: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Key: LightOrigin { index: 3, geoms: 3..4 } +provenance light /World/Sweep: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Top: LightOrigin { index: 1, geoms: 1..2 } +provenance geometry 0..1: /World/Sweep +provenance geometry 1..2: /World/Top +provenance geometry 2..3: /World/Fill +provenance geometry 3..4: /World/Key +provenance geometry 4..5: /World/Cove +provenance geometry 5..6: /World/Floor +provenance geometry 6..7: /World/Lion/base/base +provenance geometry 7..8: /World/Lion/statue/statue +provenance geometry 8..9: /World/Teapot/Teapot_Handle/Teapot_Handle +provenance geometry 9..10: /World/Teapot/Teapot_Lid/Teapot_Lid +provenance geometry 10..11: /World/Teapot/Teapot_Body/Teapot_Body +provenance mesh: MeshOrigin { geom_id: 4, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 6, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14191107629590770974, n_points: 50, n_indices: 96, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9726477393562575874, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6367222363041144018, n_points: 40000, n_indices: 239988, n_uvs: Some(40781), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5067503788512982755, n_points: 490133, n_indices: 1960532, n_uvs: Some(497721), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1756143909479177731, n_points: 19812, n_indices: 79240, n_uvs: Some(20810), smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12119563787018499533, n_points: 22050, n_indices: 88192, n_uvs: Some(22250), smooth: true, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14759424648495852877, n_points: 88070, n_indices: 352296, n_uvs: Some(91044), smooth: true, material: 3 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-1.digest new file mode 100644 index 000000000..a1b199262 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-1.digest @@ -0,0 +1,74 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.02, -1.08, 0.28), lower_left_corner: Vec3A(-0.2819569, -0.023333311, -0.038240433), horizontal: Vec3A(0.60391384, 0.0, -0.0), vertical: Vec3A(0.0, 0.046732187, 0.33647177), u: Vec3A(1.0, 0.0, -0.0), v: Vec3A(0.0, 0.13756837, 0.99049234), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 12, width: 1920, height: 1080, region: PixelRect { x0: 0, y0: 0, x1: 1920, y1: 1080 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 65.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 1.0904 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_showcase.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_showcase.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/Geometry/lion_statue_lq.usd +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/lion.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/Geometry/teapot.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/teapot.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 22, prims: [], message: "Asset loader does not decode UV textures: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/Looks/../Textures/T_Sculpture_A1_Int_Normal..png ignored — the input falls back to its constant value." } +lights: 5 +light 0: area name Some("/World/Sweep") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Top") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Fill") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/Key") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 4: dome name Some("/World/Ambient") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 11 geometries, PrimitiveBreakdown { triangles: 1320184, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1320184, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:95f4302540ae75bb camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:95f4302540ae75bb +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d3456bbfab5f963b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d3456bbfab5f963b +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:722fab8b7df8d571 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:722fab8b7df8d571 +geom 3: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:24a3f7e1c347d95d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:24a3f7e1c347d95d +geom 4: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:ab362d3c1f55a37a camera=48:ab362d3c1f55a37a shadow=48:ab362d3c1f55a37a indirect=48:ab362d3c1f55a37a +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:247a9f05691f6842 camera=2:247a9f05691f6842 shadow=2:247a9f05691f6842 indirect=2:247a9f05691f6842 +geom 6: material #5 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 0.52 motion [] pieces all=79996:fcb4179389611158 camera=79996:fcb4179389611158 shadow=79996:fcb4179389611158 indirect=79996:fcb4179389611158 +geom 7: material #5 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 0.52 motion [] pieces all=980266:412f800b00d9e4fc camera=980266:412f800b00d9e4fc shadow=980266:412f800b00d9e4fc indirect=980266:412f800b00d9e4fc +geom 8: material #6 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=39620:e598fda52b0339e5 camera=39620:e598fda52b0339e5 shadow=39620:e598fda52b0339e5 indirect=39620:e598fda52b0339e5 +geom 9: material #7 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(3) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=44096:6e172da5a7328a8d camera=44096:6e172da5a7328a8d shadow=44096:6e172da5a7328a8d indirect=44096:6e172da5a7328a8d +geom 10: material #7 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(4) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=176148:1bd75640dcbb45b5 camera=176148:1bd75640dcbb45b5 shadow=176148:1bd75640dcbb45b5 indirect=176148:1bd75640dcbb45b5 +provenance material /World/Lion/Looks/StatueMaterial: MaterialOrigin { slots: [6, 7], displaced: false } +provenance material /World/Looks/Sweep: MaterialOrigin { slots: [4, 5], displaced: false } +provenance material /World/Teapot/Looks/TeapotCeramic: MaterialOrigin { slots: [9, 10], displaced: false } +provenance material /World/Teapot/Looks/TeapotMetal: MaterialOrigin { slots: [8], displaced: false } +provenance material read: ("/Statue/Looks/StatueMaterial", "/World/Lion/Looks/StatueMaterial") +provenance material read: ("/Teapot/Looks/TeapotCeramic", "/World/Teapot/Looks/TeapotCeramic") +provenance material read: ("/Teapot/Looks/TeapotMetal", "/World/Teapot/Looks/TeapotMetal") +provenance light /World/Ambient: LightOrigin { index: 4, geoms: 4..4 } +provenance light /World/Fill: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Key: LightOrigin { index: 3, geoms: 3..4 } +provenance light /World/Sweep: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Top: LightOrigin { index: 1, geoms: 1..2 } +provenance geometry 0..1: /World/Sweep +provenance geometry 1..2: /World/Top +provenance geometry 2..3: /World/Fill +provenance geometry 3..4: /World/Key +provenance geometry 4..5: /World/Cove +provenance geometry 5..6: /World/Floor +provenance geometry 6..7: /World/Lion/base/base +provenance geometry 7..8: /World/Lion/statue/statue +provenance geometry 8..9: /World/Teapot/Teapot_Handle/Teapot_Handle +provenance geometry 9..10: /World/Teapot/Teapot_Lid/Teapot_Lid +provenance geometry 10..11: /World/Teapot/Teapot_Body/Teapot_Body +provenance mesh: MeshOrigin { geom_id: 4, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 6, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14191107629590770974, n_points: 50, n_indices: 96, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9726477393562575874, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6367222363041144018, n_points: 40000, n_indices: 239988, n_uvs: Some(40781), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5067503788512982755, n_points: 490133, n_indices: 1960532, n_uvs: Some(497721), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1756143909479177731, n_points: 19812, n_indices: 79240, n_uvs: Some(20810), smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12119563787018499533, n_points: 22050, n_indices: 88192, n_uvs: Some(22250), smooth: true, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14759424648495852877, n_points: 88070, n_indices: 352296, n_uvs: Some(91044), smooth: true, material: 3 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-2.digest b/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-2.digest new file mode 100644 index 000000000..a1b199262 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-2.digest @@ -0,0 +1,74 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.02, -1.08, 0.28), lower_left_corner: Vec3A(-0.2819569, -0.023333311, -0.038240433), horizontal: Vec3A(0.60391384, 0.0, -0.0), vertical: Vec3A(0.0, 0.046732187, 0.33647177), u: Vec3A(1.0, 0.0, -0.0), v: Vec3A(0.0, 0.13756837, 0.99049234), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 12, width: 1920, height: 1080, region: PixelRect { x0: 0, y0: 0, x1: 1920, y1: 1080 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 65.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 1.0904 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_showcase.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_showcase.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/Geometry/lion_statue_lq.usd +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/lion.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/Geometry/teapot.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/teapot.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 22, prims: [], message: "Asset loader does not decode UV textures: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/Looks/../Textures/T_Sculpture_A1_Int_Normal..png ignored — the input falls back to its constant value." } +lights: 5 +light 0: area name Some("/World/Sweep") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Top") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Fill") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/Key") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 4: dome name Some("/World/Ambient") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 11 geometries, PrimitiveBreakdown { triangles: 1320184, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1320184, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:95f4302540ae75bb camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:95f4302540ae75bb +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d3456bbfab5f963b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d3456bbfab5f963b +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:722fab8b7df8d571 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:722fab8b7df8d571 +geom 3: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:24a3f7e1c347d95d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:24a3f7e1c347d95d +geom 4: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:ab362d3c1f55a37a camera=48:ab362d3c1f55a37a shadow=48:ab362d3c1f55a37a indirect=48:ab362d3c1f55a37a +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:247a9f05691f6842 camera=2:247a9f05691f6842 shadow=2:247a9f05691f6842 indirect=2:247a9f05691f6842 +geom 6: material #5 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 0.52 motion [] pieces all=79996:fcb4179389611158 camera=79996:fcb4179389611158 shadow=79996:fcb4179389611158 indirect=79996:fcb4179389611158 +geom 7: material #5 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 0.52 motion [] pieces all=980266:412f800b00d9e4fc camera=980266:412f800b00d9e4fc shadow=980266:412f800b00d9e4fc indirect=980266:412f800b00d9e4fc +geom 8: material #6 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=39620:e598fda52b0339e5 camera=39620:e598fda52b0339e5 shadow=39620:e598fda52b0339e5 indirect=39620:e598fda52b0339e5 +geom 9: material #7 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(3) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=44096:6e172da5a7328a8d camera=44096:6e172da5a7328a8d shadow=44096:6e172da5a7328a8d indirect=44096:6e172da5a7328a8d +geom 10: material #7 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(4) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=176148:1bd75640dcbb45b5 camera=176148:1bd75640dcbb45b5 shadow=176148:1bd75640dcbb45b5 indirect=176148:1bd75640dcbb45b5 +provenance material /World/Lion/Looks/StatueMaterial: MaterialOrigin { slots: [6, 7], displaced: false } +provenance material /World/Looks/Sweep: MaterialOrigin { slots: [4, 5], displaced: false } +provenance material /World/Teapot/Looks/TeapotCeramic: MaterialOrigin { slots: [9, 10], displaced: false } +provenance material /World/Teapot/Looks/TeapotMetal: MaterialOrigin { slots: [8], displaced: false } +provenance material read: ("/Statue/Looks/StatueMaterial", "/World/Lion/Looks/StatueMaterial") +provenance material read: ("/Teapot/Looks/TeapotCeramic", "/World/Teapot/Looks/TeapotCeramic") +provenance material read: ("/Teapot/Looks/TeapotMetal", "/World/Teapot/Looks/TeapotMetal") +provenance light /World/Ambient: LightOrigin { index: 4, geoms: 4..4 } +provenance light /World/Fill: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Key: LightOrigin { index: 3, geoms: 3..4 } +provenance light /World/Sweep: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Top: LightOrigin { index: 1, geoms: 1..2 } +provenance geometry 0..1: /World/Sweep +provenance geometry 1..2: /World/Top +provenance geometry 2..3: /World/Fill +provenance geometry 3..4: /World/Key +provenance geometry 4..5: /World/Cove +provenance geometry 5..6: /World/Floor +provenance geometry 6..7: /World/Lion/base/base +provenance geometry 7..8: /World/Lion/statue/statue +provenance geometry 8..9: /World/Teapot/Teapot_Handle/Teapot_Handle +provenance geometry 9..10: /World/Teapot/Teapot_Lid/Teapot_Lid +provenance geometry 10..11: /World/Teapot/Teapot_Body/Teapot_Body +provenance mesh: MeshOrigin { geom_id: 4, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 6, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14191107629590770974, n_points: 50, n_indices: 96, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9726477393562575874, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6367222363041144018, n_points: 40000, n_indices: 239988, n_uvs: Some(40781), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5067503788512982755, n_points: 490133, n_indices: 1960532, n_uvs: Some(497721), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1756143909479177731, n_points: 19812, n_indices: 79240, n_uvs: Some(20810), smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12119563787018499533, n_points: 22050, n_indices: 88192, n_uvs: Some(22250), smooth: true, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14759424648495852877, n_points: 88070, n_indices: 352296, n_uvs: Some(91044), smooth: true, material: 3 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-218ab79fb5de55b5-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-218ab79fb5de55b5-1.digest new file mode 100644 index 000000000..4df56c108 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-218ab79fb5de55b5-1.digest @@ -0,0 +1,36 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 1.2, 7.0), lower_left_corner: Vec3A(-4.5, -1.570276, -2.8685398), horizontal: Vec3A(9.0, -0.0, 0.0), vertical: Vec3A(0.0, 4.493833, -0.23551181), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.99862957, -0.05233596), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 12, width: 640, height: 320, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 320 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 40.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_subsurface.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_subsurface.usda +lights: 2 +light 0: area name Some("/World/Back") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 2, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9bdebc8a6e7a4cb6 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9bdebc8a6e7a4cb6 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:741514c546e5584d camera=1:741514c546e5584d shadow=1:741514c546e5584d indirect=1:741514c546e5584d +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:259535af9ea7b96d camera=1:259535af9ea7b96d shadow=1:259535af9ea7b96d indirect=1:259535af9ea7b96d +geom 4: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f1400f70f7cd4059 camera=1:f1400f70f7cd4059 shadow=1:f1400f70f7cd4059 indirect=1:f1400f70f7cd4059 +provenance material /World/Looks/BareJade: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Floor: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/OpenPbrSkin: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Looks/StandardMarble: MaterialOrigin { slots: [3], displaced: false } +provenance light /World/Back: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Back +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/BareJade +provenance geometry 3..4: /World/StandardMarble +provenance geometry 4..5: /World/OpenPbrSkin +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2, 3, 4] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-1.digest new file mode 100644 index 000000000..1e88e98b5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-1.digest @@ -0,0 +1,37 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 1.2, 7.0), lower_left_corner: Vec3A(-4.5, -1.570276, -2.8685398), horizontal: Vec3A(9.0, -0.0, 0.0), vertical: Vec3A(0.0, 4.493833, -0.23551181), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.99862957, -0.05233596), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 12, width: 640, height: 320, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 320 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 40.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_subsurface.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_subsurface.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_env.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Back") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 2, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9bdebc8a6e7a4cb6 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9bdebc8a6e7a4cb6 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:741514c546e5584d camera=1:741514c546e5584d shadow=1:741514c546e5584d indirect=1:741514c546e5584d +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:259535af9ea7b96d camera=1:259535af9ea7b96d shadow=1:259535af9ea7b96d indirect=1:259535af9ea7b96d +geom 4: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f1400f70f7cd4059 camera=1:f1400f70f7cd4059 shadow=1:f1400f70f7cd4059 indirect=1:f1400f70f7cd4059 +provenance material /World/Looks/BareJade: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Floor: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/OpenPbrSkin: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Looks/StandardMarble: MaterialOrigin { slots: [3], displaced: false } +provenance light /World/Back: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Back +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/BareJade +provenance geometry 3..4: /World/StandardMarble +provenance geometry 4..5: /World/OpenPbrSkin +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2, 3, 4] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-2.digest b/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-2.digest new file mode 100644 index 000000000..1e88e98b5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-2.digest @@ -0,0 +1,37 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 1.2, 7.0), lower_left_corner: Vec3A(-4.5, -1.570276, -2.8685398), horizontal: Vec3A(9.0, -0.0, 0.0), vertical: Vec3A(0.0, 4.493833, -0.23551181), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.99862957, -0.05233596), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 12, width: 640, height: 320, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 320 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 40.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_subsurface.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_subsurface.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_env.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Back") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 2, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9bdebc8a6e7a4cb6 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9bdebc8a6e7a4cb6 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:741514c546e5584d camera=1:741514c546e5584d shadow=1:741514c546e5584d indirect=1:741514c546e5584d +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:259535af9ea7b96d camera=1:259535af9ea7b96d shadow=1:259535af9ea7b96d indirect=1:259535af9ea7b96d +geom 4: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f1400f70f7cd4059 camera=1:f1400f70f7cd4059 shadow=1:f1400f70f7cd4059 indirect=1:f1400f70f7cd4059 +provenance material /World/Looks/BareJade: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Floor: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/OpenPbrSkin: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Looks/StandardMarble: MaterialOrigin { slots: [3], displaced: false } +provenance light /World/Back: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Back +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/BareJade +provenance geometry 3..4: /World/StandardMarble +provenance geometry 4..5: /World/OpenPbrSkin +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2, 3, 4] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-1.digest new file mode 100644 index 000000000..a4843916f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-1.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 1.8, 9.0), lower_left_corner: Vec3A(-4.5000005, -1.7032137, -0.7794504), horizontal: Vec3A(9.000001, -0.0, 0.0), vertical: Vec3A(0.0, 5.611298, -0.39238015), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.997564, -0.06975646), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 12, width: 640, height: 400, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 400 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 40.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_surfaces.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_surfaces.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_env.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 7 geometries, PrimitiveBreakdown { triangles: 2, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:741514c546e5584d camera=1:741514c546e5584d shadow=1:741514c546e5584d indirect=1:741514c546e5584d +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:259535af9ea7b96d camera=1:259535af9ea7b96d shadow=1:259535af9ea7b96d indirect=1:259535af9ea7b96d +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: true, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f1400f70f7cd4059 camera=1:f1400f70f7cd4059 shadow=1:f1400f70f7cd4059 indirect=1:f1400f70f7cd4059 +geom 4: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d6b61f1dc9e3f1b5 camera=1:d6b61f1dc9e3f1b5 shadow=1:d6b61f1dc9e3f1b5 indirect=1:d6b61f1dc9e3f1b5 +geom 5: material #5 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2dab617e9e864c39 camera=1:2dab617e9e864c39 shadow=1:2dab617e9e864c39 indirect=1:2dab617e9e864c39 +geom 6: material #6 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e505b85d6d1eda79 camera=1:e505b85d6d1eda79 shadow=1:e505b85d6d1eda79 indirect=1:e505b85d6d1eda79 +provenance material /World/Looks/Floor: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/GltfClearcoat: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Looks/GltfRuby: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/OpenPbrBumpedCoat: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/OpenPbrCoated: MaterialOrigin { slots: [6], displaced: false } +provenance material /World/Looks/StandardGlass: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/StandardGold: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/OpenPbrBumpedCoat +provenance geometry 2..3: /World/GltfRuby +provenance geometry 3..4: /World/StandardGlass +provenance geometry 4..5: /World/GltfClearcoat +provenance geometry 5..6: /World/StandardGold +provenance geometry 6..7: /World/OpenPbrCoated +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2, 3, 4, 5, 6] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-2.digest b/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-2.digest new file mode 100644 index 000000000..a4843916f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-2.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 1.8, 9.0), lower_left_corner: Vec3A(-4.5000005, -1.7032137, -0.7794504), horizontal: Vec3A(9.000001, -0.0, 0.0), vertical: Vec3A(0.0, 5.611298, -0.39238015), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.997564, -0.06975646), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 12, width: 640, height: 400, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 400 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 40.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_surfaces.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_surfaces.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_env.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 7 geometries, PrimitiveBreakdown { triangles: 2, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:741514c546e5584d camera=1:741514c546e5584d shadow=1:741514c546e5584d indirect=1:741514c546e5584d +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:259535af9ea7b96d camera=1:259535af9ea7b96d shadow=1:259535af9ea7b96d indirect=1:259535af9ea7b96d +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: true, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f1400f70f7cd4059 camera=1:f1400f70f7cd4059 shadow=1:f1400f70f7cd4059 indirect=1:f1400f70f7cd4059 +geom 4: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d6b61f1dc9e3f1b5 camera=1:d6b61f1dc9e3f1b5 shadow=1:d6b61f1dc9e3f1b5 indirect=1:d6b61f1dc9e3f1b5 +geom 5: material #5 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2dab617e9e864c39 camera=1:2dab617e9e864c39 shadow=1:2dab617e9e864c39 indirect=1:2dab617e9e864c39 +geom 6: material #6 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e505b85d6d1eda79 camera=1:e505b85d6d1eda79 shadow=1:e505b85d6d1eda79 indirect=1:e505b85d6d1eda79 +provenance material /World/Looks/Floor: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/GltfClearcoat: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Looks/GltfRuby: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/OpenPbrBumpedCoat: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/OpenPbrCoated: MaterialOrigin { slots: [6], displaced: false } +provenance material /World/Looks/StandardGlass: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/StandardGold: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/OpenPbrBumpedCoat +provenance geometry 2..3: /World/GltfRuby +provenance geometry 3..4: /World/StandardGlass +provenance geometry 4..5: /World/GltfClearcoat +provenance geometry 5..6: /World/StandardGold +provenance geometry 6..7: /World/OpenPbrCoated +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2, 3, 4, 5, 6] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-ca1ad78e541d4d41-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-ca1ad78e541d4d41-1.digest new file mode 100644 index 000000000..e9518a5ed --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-ca1ad78e541d4d41-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 1.8, 9.0), lower_left_corner: Vec3A(-4.5000005, -1.7032137, -0.7794504), horizontal: Vec3A(9.000001, -0.0, 0.0), vertical: Vec3A(0.0, 5.611298, -0.39238015), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.997564, -0.06975646), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 12, width: 640, height: 400, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 400 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 40.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_surfaces.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_surfaces.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 7 geometries, PrimitiveBreakdown { triangles: 2, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 6, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:741514c546e5584d camera=1:741514c546e5584d shadow=1:741514c546e5584d indirect=1:741514c546e5584d +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:259535af9ea7b96d camera=1:259535af9ea7b96d shadow=1:259535af9ea7b96d indirect=1:259535af9ea7b96d +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: true, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f1400f70f7cd4059 camera=1:f1400f70f7cd4059 shadow=1:f1400f70f7cd4059 indirect=1:f1400f70f7cd4059 +geom 4: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d6b61f1dc9e3f1b5 camera=1:d6b61f1dc9e3f1b5 shadow=1:d6b61f1dc9e3f1b5 indirect=1:d6b61f1dc9e3f1b5 +geom 5: material #5 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2dab617e9e864c39 camera=1:2dab617e9e864c39 shadow=1:2dab617e9e864c39 indirect=1:2dab617e9e864c39 +geom 6: material #6 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e505b85d6d1eda79 camera=1:e505b85d6d1eda79 shadow=1:e505b85d6d1eda79 indirect=1:e505b85d6d1eda79 +provenance material /World/Looks/Floor: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/GltfClearcoat: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Looks/GltfRuby: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/OpenPbrBumpedCoat: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/OpenPbrCoated: MaterialOrigin { slots: [6], displaced: false } +provenance material /World/Looks/StandardGlass: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/StandardGold: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/OpenPbrBumpedCoat +provenance geometry 2..3: /World/GltfRuby +provenance geometry 3..4: /World/StandardGlass +provenance geometry 4..5: /World/GltfClearcoat +provenance geometry 5..6: /World/StandardGold +provenance geometry 6..7: /World/OpenPbrCoated +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2, 3, 4, 5, 6] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-1.digest new file mode 100644 index 000000000..ee4c673f4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-1.digest @@ -0,0 +1,50 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.46, -0.5, 0.36), lower_left_corner: Vec3A(-0.17507109, -0.24858424, -0.04130861), horizontal: Vec3A(0.4534639, 0.40702486, 0.0), vertical: Vec3A(-0.07729147, 0.08610994, 0.32263348), u: Vec3A(0.74418515, 0.66797346, 0.0), v: Vec3A(-0.22550038, 0.25122857, 0.9412937), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 12, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 42.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 0.7109 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_teapot.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_teapot.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/Geometry/teapot.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/teapot.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 15, prims: [], message: "Asset loader does not decode UV textures: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/Looks/../Texture/TeapotMetal_L1Base/Teapot_TeapotMetal_Normal_concrete.png ignored — the input falls back to its constant value." } +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 259870, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 259870, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1068fc4a796550f2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1068fc4a796550f2 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:30d55baf131c75e7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:30d55baf131c75e7 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d4a5c9127205c3c5 camera=2:d4a5c9127205c3c5 shadow=2:d4a5c9127205c3c5 indirect=2:d4a5c9127205c3c5 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=39620:e6201f1def4ba88d camera=39620:e6201f1def4ba88d shadow=39620:e6201f1def4ba88d indirect=39620:e6201f1def4ba88d +geom 4: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=44096:e684c755747a3941 camera=44096:e684c755747a3941 shadow=44096:e684c755747a3941 indirect=44096:e684c755747a3941 +geom 5: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=176148:88e3658c815ba93d camera=176148:88e3658c815ba93d shadow=176148:88e3658c815ba93d indirect=176148:88e3658c815ba93d +provenance material /World/Looks/GroundMaterial: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Teapot/Looks/TeapotCeramic: MaterialOrigin { slots: [4, 5], displaced: false } +provenance material /World/Teapot/Looks/TeapotMetal: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/Teapot/Looks/TeapotCeramic", "/World/Teapot/Looks/TeapotCeramic") +provenance material read: ("/Teapot/Looks/TeapotMetal", "/World/Teapot/Looks/TeapotMetal") +provenance light /World/Key: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 2, geoms: 2..2 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Ground +provenance geometry 3..4: /World/Teapot/Teapot_Handle/Teapot_Handle +provenance geometry 4..5: /World/Teapot/Teapot_Lid/Teapot_Lid +provenance geometry 5..6: /World/Teapot/Teapot_Body/Teapot_Body +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12600948678966428397, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1756143909479177731, n_points: 19812, n_indices: 79240, n_uvs: Some(20810), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12119563787018499533, n_points: 22050, n_indices: 88192, n_uvs: Some(22250), smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14759424648495852877, n_points: 88070, n_indices: 352296, n_uvs: Some(91044), smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-2.digest b/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-2.digest new file mode 100644 index 000000000..ee4c673f4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-2.digest @@ -0,0 +1,50 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.46, -0.5, 0.36), lower_left_corner: Vec3A(-0.17507109, -0.24858424, -0.04130861), horizontal: Vec3A(0.4534639, 0.40702486, 0.0), vertical: Vec3A(-0.07729147, 0.08610994, 0.32263348), u: Vec3A(0.74418515, 0.66797346, 0.0), v: Vec3A(-0.22550038, 0.25122857, 0.9412937), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 12, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 42.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 0.7109 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_teapot.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_teapot.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/Geometry/teapot.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/teapot.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 15, prims: [], message: "Asset loader does not decode UV textures: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/Looks/../Texture/TeapotMetal_L1Base/Teapot_TeapotMetal_Normal_concrete.png ignored — the input falls back to its constant value." } +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 259870, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 259870, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1068fc4a796550f2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1068fc4a796550f2 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:30d55baf131c75e7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:30d55baf131c75e7 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d4a5c9127205c3c5 camera=2:d4a5c9127205c3c5 shadow=2:d4a5c9127205c3c5 indirect=2:d4a5c9127205c3c5 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=39620:e6201f1def4ba88d camera=39620:e6201f1def4ba88d shadow=39620:e6201f1def4ba88d indirect=39620:e6201f1def4ba88d +geom 4: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=44096:e684c755747a3941 camera=44096:e684c755747a3941 shadow=44096:e684c755747a3941 indirect=44096:e684c755747a3941 +geom 5: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=176148:88e3658c815ba93d camera=176148:88e3658c815ba93d shadow=176148:88e3658c815ba93d indirect=176148:88e3658c815ba93d +provenance material /World/Looks/GroundMaterial: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Teapot/Looks/TeapotCeramic: MaterialOrigin { slots: [4, 5], displaced: false } +provenance material /World/Teapot/Looks/TeapotMetal: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/Teapot/Looks/TeapotCeramic", "/World/Teapot/Looks/TeapotCeramic") +provenance material read: ("/Teapot/Looks/TeapotMetal", "/World/Teapot/Looks/TeapotMetal") +provenance light /World/Key: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 2, geoms: 2..2 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Ground +provenance geometry 3..4: /World/Teapot/Teapot_Handle/Teapot_Handle +provenance geometry 4..5: /World/Teapot/Teapot_Lid/Teapot_Lid +provenance geometry 5..6: /World/Teapot/Teapot_Body/Teapot_Body +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12600948678966428397, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1756143909479177731, n_points: 19812, n_indices: 79240, n_uvs: Some(20810), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12119563787018499533, n_points: 22050, n_indices: 88192, n_uvs: Some(22250), smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14759424648495852877, n_points: 88070, n_indices: 352296, n_uvs: Some(91044), smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-6ea1bea03dbe6c0d-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-6ea1bea03dbe6c0d-1.digest new file mode 100644 index 000000000..228fdd5f9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-6ea1bea03dbe6c0d-1.digest @@ -0,0 +1,49 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.46, -0.5, 0.36), lower_left_corner: Vec3A(-0.17507109, -0.24858424, -0.04130861), horizontal: Vec3A(0.4534639, 0.40702486, 0.0), vertical: Vec3A(-0.07729147, 0.08610994, 0.32263348), u: Vec3A(0.74418515, 0.66797346, 0.0), v: Vec3A(-0.22550038, 0.25122857, 0.9412937), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 12, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 42.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 0.7109 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_teapot.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_teapot.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/Geometry/teapot.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/teapot.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 259870, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 259870, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1068fc4a796550f2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1068fc4a796550f2 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:30d55baf131c75e7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:30d55baf131c75e7 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d4a5c9127205c3c5 camera=2:d4a5c9127205c3c5 shadow=2:d4a5c9127205c3c5 indirect=2:d4a5c9127205c3c5 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=39620:e6201f1def4ba88d camera=39620:e6201f1def4ba88d shadow=39620:e6201f1def4ba88d indirect=39620:e6201f1def4ba88d +geom 4: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=44096:e684c755747a3941 camera=44096:e684c755747a3941 shadow=44096:e684c755747a3941 indirect=44096:e684c755747a3941 +geom 5: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=176148:88e3658c815ba93d camera=176148:88e3658c815ba93d shadow=176148:88e3658c815ba93d indirect=176148:88e3658c815ba93d +provenance material /World/Looks/GroundMaterial: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Teapot/Looks/TeapotCeramic: MaterialOrigin { slots: [4, 5], displaced: false } +provenance material /World/Teapot/Looks/TeapotMetal: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/Teapot/Looks/TeapotCeramic", "/World/Teapot/Looks/TeapotCeramic") +provenance material read: ("/Teapot/Looks/TeapotMetal", "/World/Teapot/Looks/TeapotMetal") +provenance light /World/Key: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 2, geoms: 2..2 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Ground +provenance geometry 3..4: /World/Teapot/Teapot_Handle/Teapot_Handle +provenance geometry 4..5: /World/Teapot/Teapot_Lid/Teapot_Lid +provenance geometry 5..6: /World/Teapot/Teapot_Body/Teapot_Body +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12600948678966428397, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1756143909479177731, n_points: 19812, n_indices: 79240, n_uvs: Some(20810), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12119563787018499533, n_points: 22050, n_indices: 88192, n_uvs: Some(22250), smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14759424648495852877, n_points: 88070, n_indices: 352296, n_uvs: Some(91044), smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-0d615ee9e93f873e-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-0d615ee9e93f873e-1.digest new file mode 100644 index 000000000..e7850c273 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-0d615ee9e93f873e-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 1.6, 8.0), lower_left_corner: Vec3A(-5.142858, -2.0026271, -1.6764317), horizontal: Vec3A(10.285716, -0.0, 0.0), vertical: Vec3A(0.0, 5.114685, -0.53757507), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 16, width: 640, height: 320, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 320 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_volume.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_volume.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_env.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 14, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b2517a075775a01d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b2517a075775a01d +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a2be39f211ab66a2 camera=1:a2be39f211ab66a2 shadow=1:a2be39f211ab66a2 indirect=1:a2be39f211ab66a2 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: true, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b3ac5caa5601a5fa camera=1:b3ac5caa5601a5fa shadow=1:b3ac5caa5601a5fa indirect=1:b3ac5caa5601a5fa +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d612f3480a4d23b4 camera=1:d612f3480a4d23b4 shadow=1:d612f3480a4d23b4 indirect=1:d612f3480a4d23b4 +geom 5: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: true, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:774cf751cac64135 camera=12:774cf751cac64135 shadow=12:774cf751cac64135 indirect=12:774cf751cac64135 +provenance material /World/Looks/Copper: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Fog: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Looks/Grey: MaterialOrigin { slots: [1, 4], displaced: false } +provenance material /World/Looks/MurkyGlass: MaterialOrigin { slots: [3], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Copper +provenance geometry 3..4: /World/MurkyGlass +provenance geometry 4..5: /World/BallInFog +provenance geometry 5..6: /World/FogBox +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9884436589796233226, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2, 3, 4] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-dbd96c41f0cfcd9f-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-dbd96c41f0cfcd9f-1.digest new file mode 100644 index 000000000..fb74c9aa3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-dbd96c41f0cfcd9f-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 1.6, 8.0), lower_left_corner: Vec3A(-5.142858, -2.0026271, -1.6764317), horizontal: Vec3A(10.285716, -0.0, 0.0), vertical: Vec3A(0.0, 5.114685, -0.53757507), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 16, width: 640, height: 320, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 320 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_volume.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_volume.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 14, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b2517a075775a01d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b2517a075775a01d +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a2be39f211ab66a2 camera=1:a2be39f211ab66a2 shadow=1:a2be39f211ab66a2 indirect=1:a2be39f211ab66a2 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: true, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b3ac5caa5601a5fa camera=1:b3ac5caa5601a5fa shadow=1:b3ac5caa5601a5fa indirect=1:b3ac5caa5601a5fa +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d612f3480a4d23b4 camera=1:d612f3480a4d23b4 shadow=1:d612f3480a4d23b4 indirect=1:d612f3480a4d23b4 +geom 5: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: true, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:774cf751cac64135 camera=12:774cf751cac64135 shadow=12:774cf751cac64135 indirect=12:774cf751cac64135 +provenance material /World/Looks/Copper: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Fog: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Looks/Grey: MaterialOrigin { slots: [1, 4], displaced: false } +provenance material /World/Looks/MurkyGlass: MaterialOrigin { slots: [3], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Copper +provenance geometry 3..4: /World/MurkyGlass +provenance geometry 4..5: /World/BallInFog +provenance geometry 5..6: /World/FogBox +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9884436589796233226, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2, 3, 4] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-1.digest new file mode 100644 index 000000000..e7850c273 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 1.6, 8.0), lower_left_corner: Vec3A(-5.142858, -2.0026271, -1.6764317), horizontal: Vec3A(10.285716, -0.0, 0.0), vertical: Vec3A(0.0, 5.114685, -0.53757507), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 16, width: 640, height: 320, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 320 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_volume.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_volume.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_env.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 14, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b2517a075775a01d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b2517a075775a01d +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a2be39f211ab66a2 camera=1:a2be39f211ab66a2 shadow=1:a2be39f211ab66a2 indirect=1:a2be39f211ab66a2 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: true, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b3ac5caa5601a5fa camera=1:b3ac5caa5601a5fa shadow=1:b3ac5caa5601a5fa indirect=1:b3ac5caa5601a5fa +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d612f3480a4d23b4 camera=1:d612f3480a4d23b4 shadow=1:d612f3480a4d23b4 indirect=1:d612f3480a4d23b4 +geom 5: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: true, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:774cf751cac64135 camera=12:774cf751cac64135 shadow=12:774cf751cac64135 indirect=12:774cf751cac64135 +provenance material /World/Looks/Copper: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Fog: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Looks/Grey: MaterialOrigin { slots: [1, 4], displaced: false } +provenance material /World/Looks/MurkyGlass: MaterialOrigin { slots: [3], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Copper +provenance geometry 3..4: /World/MurkyGlass +provenance geometry 4..5: /World/BallInFog +provenance geometry 5..6: /World/FogBox +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9884436589796233226, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2, 3, 4] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-2.digest b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-2.digest new file mode 100644 index 000000000..e7850c273 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-2.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 1.6, 8.0), lower_left_corner: Vec3A(-5.142858, -2.0026271, -1.6764317), horizontal: Vec3A(10.285716, -0.0, 0.0), vertical: Vec3A(0.0, 5.114685, -0.53757507), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 16, width: 640, height: 320, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 320 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_volume.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_volume.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_env.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 14, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b2517a075775a01d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b2517a075775a01d +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a2be39f211ab66a2 camera=1:a2be39f211ab66a2 shadow=1:a2be39f211ab66a2 indirect=1:a2be39f211ab66a2 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: true, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b3ac5caa5601a5fa camera=1:b3ac5caa5601a5fa shadow=1:b3ac5caa5601a5fa indirect=1:b3ac5caa5601a5fa +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d612f3480a4d23b4 camera=1:d612f3480a4d23b4 shadow=1:d612f3480a4d23b4 indirect=1:d612f3480a4d23b4 +geom 5: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: true, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:774cf751cac64135 camera=12:774cf751cac64135 shadow=12:774cf751cac64135 indirect=12:774cf751cac64135 +provenance material /World/Looks/Copper: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/Fog: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Looks/Grey: MaterialOrigin { slots: [1, 4], displaced: false } +provenance material /World/Looks/MurkyGlass: MaterialOrigin { slots: [3], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Copper +provenance geometry 3..4: /World/MurkyGlass +provenance geometry 4..5: /World/BallInFog +provenance geometry 5..6: /World/FogBox +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9884436589796233226, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2, 3, 4] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/matrix_usda-9dd65c424c31f5e5-1.digest b/crates/crust-core/tests/data/import_baselines/matrix_usda-9dd65c424c31f5e5-1.digest new file mode 100644 index 000000000..d7c2dee5e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/matrix_usda-9dd65c424c31f5e5-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/matrix.usda"], invisible_overrides: Some(0) } +layer: $DIR/matrix.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e28621ea8ba02692 camera=1:e28621ea8ba02692 shadow=1:e28621ea8ba02692 indirect=1:e28621ea8ba02692 +provenance geometry 0..1: /World/A/S +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/matte_dome_usda-942a3b1e6f8ce42b-1.digest b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-942a3b1e6f8ce42b-1.digest new file mode 100644 index 000000000..34e2f07fc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-942a3b1e6f8ce42b-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/matte_dome.usda"], invisible_overrides: Some(0) } +layer: $DIR/matte_dome.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2f65027762d8ffb5 camera=2:2f65027762d8ffb5 shadow=2:2f65027762d8ffb5 indirect=2:2f65027762d8ffb5 +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11147341635340358220, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/matte_dome_usda-e3baadd4a9e3ffb7-1.digest b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-e3baadd4a9e3ffb7-1.digest new file mode 100644 index 000000000..e8ba5daef --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-e3baadd4a9e3ffb7-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/pass", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/matte_dome.usda"], invisible_overrides: Some(0) } +layer: $DIR/matte_dome.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2f65027762d8ffb5 camera=2:2f65027762d8ffb5 shadow=2:2f65027762d8ffb5 indirect=2:2f65027762d8ffb5 +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11147341635340358220, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pass"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/max_depth_negative_usda-eec4c585057974f1-1.digest b/crates/crust-core/tests/data/import_baselines/max_depth_negative_usda-eec4c585057974f1-1.digest new file mode 100644 index 000000000..ba9ebd8e3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/max_depth_negative_usda-eec4c585057974f1-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/max_depth_negative.usda"], invisible_overrides: Some(0) } +layer: $DIR/max_depth_negative.usda +warning: Warning { code: SettingsInvalidValue, kind: Refused, count: 1, prims: ["/Render/settings"], message: "crust:maxDepth = -2 would shade no vertex (1 is direct lighting only) — using 32" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/max_depth_one_usda-0b2d301b9905817a-1.digest b/crates/crust-core/tests/data/import_baselines/max_depth_one_usda-0b2d301b9905817a-1.digest new file mode 100644 index 000000000..c573010f7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/max_depth_one_usda-0b2d301b9905817a-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 1, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/max_depth_one.usda"], invisible_overrides: Some(0) } +layer: $DIR/max_depth_one.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/max_depth_zero_usda-931745fbe0c2c985-1.digest b/crates/crust-core/tests/data/import_baselines/max_depth_zero_usda-931745fbe0c2c985-1.digest new file mode 100644 index 000000000..4645db9d6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/max_depth_zero_usda-931745fbe0c2c985-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/max_depth_zero.usda"], invisible_overrides: Some(0) } +layer: $DIR/max_depth_zero.usda +warning: Warning { code: SettingsInvalidValue, kind: Refused, count: 1, prims: ["/Render/settings"], message: "crust:maxDepth = 0 would shade no vertex (1 is direct lighting only) — using 32" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/membership_usda-e44fc1429c4b92d1-1.digest b/crates/crust-core/tests/data/import_baselines/membership_usda-e44fc1429c4b92d1-1.digest new file mode 100644 index 000000000..1ba245c6f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/membership_usda-e44fc1429c4b92d1-1.digest @@ -0,0 +1,47 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/membership.usda"], invisible_overrides: Some(0) } +layer: $DIR/membership.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 5 +light 0: area name Some("/World/Nearest") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Explicit") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Nested") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/Rooted") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 4: area name Some("/World/Plain") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 0, spheres: 10, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 10, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b4dfc0dd30bb66e5 camera=1:b4dfc0dd30bb66e5 shadow=1:b4dfc0dd30bb66e5 indirect=1:b4dfc0dd30bb66e5 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:35cdd9a0d6e50805 camera=1:35cdd9a0d6e50805 shadow=1:35cdd9a0d6e50805 indirect=1:35cdd9a0d6e50805 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5502ac7a1bf17ab5 camera=1:5502ac7a1bf17ab5 shadow=1:5502ac7a1bf17ab5 indirect=1:5502ac7a1bf17ab5 +geom 4: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7fd943913c47476d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:7fd943913c47476d +geom 5: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a72820a4943950e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a72820a4943950e5 +geom 6: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fc35f349575b42ad camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fc35f349575b42ad +geom 7: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:066197ed2710c38d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:066197ed2710c38d +geom 8: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:33019b9c0d9d36c1 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:33019b9c0d9d36c1 +geom 9: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 2 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +provenance light /World/Explicit: LightOrigin { index: 1, geoms: 5..6 } +provenance light /World/Nearest: LightOrigin { index: 0, geoms: 4..5 } +provenance light /World/Nested: LightOrigin { index: 2, geoms: 6..7 } +provenance light /World/Plain: LightOrigin { index: 4, geoms: 8..9 } +provenance light /World/Rooted: LightOrigin { index: 3, geoms: 7..8 } +provenance geometry 0..1: /World/Set/Chair +provenance geometry 1..2: /World/Hero +provenance geometry 2..3: /World/Group/Body +provenance geometry 3..4: /World/Other +provenance geometry 4..5: /World/Nearest +provenance geometry 5..6: /World/Explicit +provenance geometry 6..7: /World/Nested +provenance geometry 7..8: /World/Rooted +provenance geometry 8..9: /World/Plain +provenance geometry 9..10: /World/Cycle +provenance spheres: [0, 1, 2, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/mesh_blurred_usda-13d48869156e4433-1.digest b/crates/crust-core/tests/data/import_baselines/mesh_blurred_usda-13d48869156e4433-1.digest new file mode 100644 index 000000000..c2d5a4e22 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mesh_blurred_usda-13d48869156e4433-1.digest @@ -0,0 +1,21 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: true, layer_stack: ["$DIR/mesh_blurred.usda"], invisible_overrides: Some(0) } +layer: $DIR/mesh_blurred.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.0, 0.0, 0.0))] pieces all=2:8f5d9187c4202473 camera=2:8f5d9187c4202473 shadow=2:8f5d9187c4202473 indirect=2:8f5d9187c4202473 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Card +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/mesh_both_usda-90fff2587206dcbe-1.digest b/crates/crust-core/tests/data/import_baselines/mesh_both_usda-90fff2587206dcbe-1.digest new file mode 100644 index 000000000..2f9c64586 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mesh_both_usda-90fff2587206dcbe-1.digest @@ -0,0 +1,21 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: true, layer_stack: ["$DIR/mesh_both.usda"], invisible_overrides: Some(0) } +layer: $DIR/mesh_both.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.0, 1.0, 0.0))] pieces all=2:8f5d9187c4202473 camera=2:8f5d9187c4202473 shadow=2:8f5d9187c4202473 indirect=2:8f5d9187c4202473 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Card +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/mesh_sharp_usda-98679e56cacbfa24-1.digest b/crates/crust-core/tests/data/import_baselines/mesh_sharp_usda-98679e56cacbfa24-1.digest new file mode 100644 index 000000000..edabdfe8a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mesh_sharp_usda-98679e56cacbfa24-1.digest @@ -0,0 +1,21 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/mesh_sharp.usda"], invisible_overrides: Some(0) } +layer: $DIR/mesh_sharp.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.0, 0.0, 0.0))] pieces all=2:8f5d9187c4202473 camera=2:8f5d9187c4202473 shadow=2:8f5d9187c4202473 indirect=2:8f5d9187c4202473 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Card +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/mesh_track_usda-2da67447ace68ea3-1.digest b/crates/crust-core/tests/data/import_baselines/mesh_track_usda-2da67447ace68ea3-1.digest new file mode 100644 index 000000000..d0c754c2b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mesh_track_usda-2da67447ace68ea3-1.digest @@ -0,0 +1,21 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: true, layer_stack: ["$DIR/mesh_track.usda"], invisible_overrides: Some(0) } +layer: $DIR/mesh_track.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.0, 0.0, 0.0))] pieces all=2:8f5d9187c4202473 camera=2:8f5d9187c4202473 shadow=2:8f5d9187c4202473 indirect=2:8f5d9187c4202473 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Card +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/metal_0_1_power_1_usda-d5e924c1e43088a2-1.digest b/crates/crust-core/tests/data/import_baselines/metal_0_1_power_1_usda-d5e924c1e43088a2-1.digest new file mode 100644 index 000000000..feb44539e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/metal_0_1_power_1_usda-d5e924c1e43088a2-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/metal_0_1_power_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/metal_0_1_power_1.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/metal_1_0_power_1_usda-0a224c171445c02a-1.digest b/crates/crust-core/tests/data/import_baselines/metal_1_0_power_1_usda-0a224c171445c02a-1.digest new file mode 100644 index 000000000..1d081c1f2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/metal_1_0_power_1_usda-0a224c171445c02a-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/metal_1_0_power_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/metal_1_0_power_1.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 0.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 0.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/metal_1_1_power_1_usda-3e1ca1268dde29a1-1.digest b/crates/crust-core/tests/data/import_baselines/metal_1_1_power_1_usda-3e1ca1268dde29a1-1.digest new file mode 100644 index 000000000..da1577c3a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/metal_1_1_power_1_usda-3e1ca1268dde29a1-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/metal_1_1_power_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/metal_1_1_power_1.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/mirror_usda-e5687a44290234b9-1.digest b/crates/crust-core/tests/data/import_baselines/mirror_usda-e5687a44290234b9-1.digest new file mode 100644 index 000000000..14e4b7029 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mirror_usda-e5687a44290234b9-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/mirror.usda"], invisible_overrides: Some(0) } +layer: $DIR/mirror.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58ffffb6ae475ee5 camera=2:58ffffb6ae475ee5 shadow=2:58ffffb6ae475ee5 indirect=2:58ffffb6ae475ee5 +provenance geometry 0..1: /World/M/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/mismatch_same_usda-36f547d4088a73c8-1.digest b/crates/crust-core/tests/data/import_baselines/mismatch_same_usda-36f547d4088a73c8-1.digest new file mode 100644 index 000000000..4d2d0d82e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mismatch_same_usda-36f547d4088a73c8-1.digest @@ -0,0 +1,17 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Shot/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: true, layer_stack: ["$DIR/mismatch_same.usda"], invisible_overrides: Some(0) } +layer: $DIR/mismatch_same.usda +layer: $DIR/mismatch_shot.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Shot/Cam"), cameras: ["/World/Shot/Cam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4602678819172646912], interval: Some([4617315517961601024, 4617878467915022336]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/mismatch_usda-4938acb7109c81b3-1.digest b/crates/crust-core/tests/data/import_baselines/mismatch_usda-4938acb7109c81b3-1.digest new file mode 100644 index 000000000..44c294e6d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mismatch_usda-4938acb7109c81b3-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/rest2d", name: "rest2d", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 2, role: Float }), components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/mismatch.usda"], invisible_overrides: Some(0) } +layer: $DIR/mismatch.usda +warning: Warning { code: PrimvarMismatch, kind: Skipped, count: 1, prims: ["/World/mesh"], message: "/Render/rest2d asks for primvar \"rest\" as 2 component(s), but /World/mesh authors it as point3f[] (3 component(s)); that prim reads the clear value" } +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32f1a52c797bfee5 camera=2:32f1a52c797bfee5 shadow=2:32f1a52c797bfee5 indirect=2:32f1a52c797bfee5 +provenance light /World/dome: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/mesh +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16756132900457544540, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 2)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/mismatch_usda-e42c92f5d05f1fcf-1.digest b/crates/crust-core/tests/data/import_baselines/mismatch_usda-e42c92f5d05f1fcf-1.digest new file mode 100644 index 000000000..2bbf51df8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mismatch_usda-e42c92f5d05f1fcf-1.digest @@ -0,0 +1,18 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Shot/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: true, layer_stack: ["$DIR/mismatch.usda"], invisible_overrides: Some(0) } +layer: $DIR/mismatch.usda +layer: $DIR/mismatch_shot.usda +warning: Warning { code: CameraShutterMismatch, kind: Approximated, count: 1, prims: ["/World/Shot/Cam"], message: "The render goes through /World/Shot/Cam, but motion was measured over the shutter of /World/Cam, the camera found before the traversal (0 .. 1): name the camera with --camera or RenderSettings.camera to measure over its own" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Shot/Cam"), cameras: ["/World/Shot/Cam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/missing_usda-048983dc2b7e8f66-1.digest b/crates/crust-core/tests/data/import_baselines/missing_usda-048983dc2b7e8f66-1.digest new file mode 100644 index 000000000..48749fd2a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/missing_usda-048983dc2b7e8f66-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/cams/Hidden/witness") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/missing.usda"], invisible_overrides: Some(0) } +layer: $DIR/missing.usda +warning: Warning { code: CameraNotACamera, kind: Refused, count: 1, prims: ["/cams/nope"], message: "RenderSettings.camera targets /cams/nope, which is not a camera on this stage — rendering through /cams/Hidden/witness instead" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cams/Hidden/witness"), cameras: ["/cams/Hidden/witness", "/cams/shot", "/cams/layout"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cams/Hidden/witness"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/mixed_hair_ref_usda-1bf6615be167a70b-1.digest b/crates/crust-core/tests/data/import_baselines/mixed_hair_ref_usda-1bf6615be167a70b-1.digest new file mode 100644 index 000000000..45dd50ce1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mixed_hair_ref_usda-1bf6615be167a70b-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/mixed_hair_ref.usda"], invisible_overrides: Some(0) } +layer: $DIR/mixed_hair_ref.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/Back") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5964020bd0c96e6d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5964020bd0c96e6d +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=1:f23ffa0170dacb65 camera=1:f23ffa0170dacb65 shadow=1:f23ffa0170dacb65 indirect=1:f23ffa0170dacb65 +provenance material /World/Looks/mtlx_hair_clear: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Back: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Back +provenance geometry 1..2: /World/Strand +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/mixed_hair_usda-e643846eb6c6d950-1.digest b/crates/crust-core/tests/data/import_baselines/mixed_hair_usda-e643846eb6c6d950-1.digest new file mode 100644 index 000000000..813945d75 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mixed_hair_usda-e643846eb6c6d950-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/mixed_hair.usda"], invisible_overrides: Some(0) } +layer: $DIR/mixed_hair.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/Back") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5964020bd0c96e6d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5964020bd0c96e6d +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=1:f23ffa0170dacb65 camera=1:f23ffa0170dacb65 shadow=1:f23ffa0170dacb65 indirect=1:f23ffa0170dacb65 +provenance material /World/Looks/mtlx_hair_translucent_mix: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Back: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Back +provenance geometry 1..2: /World/Strand +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/motionblur_usda-2ad099074d244fc2-1.digest b/crates/crust-core/tests/data/import_baselines/motionblur_usda-2ad099074d244fc2-1.digest new file mode 100644 index 000000000..4c50b9e62 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionblur_usda-2ad099074d244fc2-1.digest @@ -0,0 +1,36 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/motionblur.usda"], invisible_overrides: Some(0) } +layer: $DIR/motionblur.usda +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 18, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c358c11454e39a05 camera=0:cbf29ce484222325 shadow=2:c358c11454e39a05 indirect=2:c358c11454e39a05 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.0, 0.8000001, 0.0))] pieces all=12:7342f406692bb5b5 camera=12:7342f406692bb5b5 shadow=12:7342f406692bb5b5 indirect=12:7342f406692bb5b5 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.0, 0.0, 0.0))] pieces all=1:04359f2ccebe8d35 camera=1:04359f2ccebe8d35 shadow=1:04359f2ccebe8d35 indirect=1:04359f2ccebe8d35 +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/ShadowCard +provenance geometry 2..3: /World/Floor +provenance geometry 3..4: /World/Riser +provenance geometry 4..5: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12040084758835538402, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-1.digest b/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-1.digest new file mode 100644 index 000000000..1f71ea80a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-1.digest @@ -0,0 +1,37 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/motionblur.usda"], invisible_overrides: Some(0) } +layer: $DIR/motionblur.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 18, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c358c11454e39a05 camera=0:cbf29ce484222325 shadow=2:c358c11454e39a05 indirect=2:c358c11454e39a05 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.0, 0.8000001, 0.0))] pieces all=12:7342f406692bb5b5 camera=12:7342f406692bb5b5 shadow=12:7342f406692bb5b5 indirect=12:7342f406692bb5b5 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.0, 0.0, 0.0))] pieces all=1:04359f2ccebe8d35 camera=1:04359f2ccebe8d35 shadow=1:04359f2ccebe8d35 indirect=1:04359f2ccebe8d35 +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/ShadowCard +provenance geometry 2..3: /World/Floor +provenance geometry 3..4: /World/Riser +provenance geometry 4..5: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12040084758835538402, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-2.digest b/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-2.digest new file mode 100644 index 000000000..1f71ea80a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-2.digest @@ -0,0 +1,37 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/motionblur.usda"], invisible_overrides: Some(0) } +layer: $DIR/motionblur.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 18, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c358c11454e39a05 camera=0:cbf29ce484222325 shadow=2:c358c11454e39a05 indirect=2:c358c11454e39a05 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.0, 0.8000001, 0.0))] pieces all=12:7342f406692bb5b5 camera=12:7342f406692bb5b5 shadow=12:7342f406692bb5b5 indirect=12:7342f406692bb5b5 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.0, 0.0, 0.0))] pieces all=1:04359f2ccebe8d35 camera=1:04359f2ccebe8d35 shadow=1:04359f2ccebe8d35 indirect=1:04359f2ccebe8d35 +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/ShadowCard +provenance geometry 2..3: /World/Floor +provenance geometry 3..4: /World/Riser +provenance geometry 4..5: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12040084758835538402, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/motionblur_usda-ff0d49c1a505d497-1.digest b/crates/crust-core/tests/data/import_baselines/motionblur_usda-ff0d49c1a505d497-1.digest new file mode 100644 index 000000000..1f71ea80a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionblur_usda-ff0d49c1a505d497-1.digest @@ -0,0 +1,37 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/motionblur.usda"], invisible_overrides: Some(0) } +layer: $DIR/motionblur.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 18, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c358c11454e39a05 camera=0:cbf29ce484222325 shadow=2:c358c11454e39a05 indirect=2:c358c11454e39a05 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.0, 0.8000001, 0.0))] pieces all=12:7342f406692bb5b5 camera=12:7342f406692bb5b5 shadow=12:7342f406692bb5b5 indirect=12:7342f406692bb5b5 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.0, 0.0, 0.0))] pieces all=1:04359f2ccebe8d35 camera=1:04359f2ccebe8d35 shadow=1:04359f2ccebe8d35 indirect=1:04359f2ccebe8d35 +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/ShadowCard +provenance geometry 2..3: /World/Floor +provenance geometry 3..4: /World/Riser +provenance geometry 4..5: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12040084758835538402, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_aliases_usda-8852d8dcf38ecf0d-1.digest b/crates/crust-core/tests/data/import_baselines/motionvector_aliases_usda-8852d8dcf38ecf0d-1.digest new file mode 100644 index 000000000..3a07621d6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_aliases_usda-8852d8dcf38ecf0d-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/ok", name: "ok", channel_prefix: None, source: MotionVector, components: 2, precision: Half, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/motionvector_aliases.usda"], invisible_overrides: Some(0) } +layer: $DIR/motionvector_aliases.usda +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 3, prims: ["/Render/velocity", "/Render/Vector", "/Render/motionFore"], message: "/Render/velocity: unknown raw source \"velocity\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_blurred_usda-6d69c20d22e19877-1.digest b/crates/crust-core/tests/data/import_baselines/motionvector_blurred_usda-6d69c20d22e19877-1.digest new file mode 100644 index 000000000..4b9622301 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_blurred_usda-6d69c20d22e19877-1.digest @@ -0,0 +1,34 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 8.0), lower_left_corner: Vec3A(-5.6632595, -2.1855836, -2.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 128, height: 72, region: PixelRect { x0: 0, y0: 0, x1: 128, y1: 72 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/comp", name: "renders/motionvector.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/forward", name: "forward", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/motionvector_blurred.usda"], invisible_overrides: Some(0) } +layer: $DIR/motionvector_blurred.usda +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 6, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ab69abb2d09cba04 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ab69abb2d09cba04 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.8, 0.0, 0.0))] pieces all=2:b249cbbc5228e152 camera=2:b249cbbc5228e152 shadow=2:b249cbbc5228e152 indirect=2:b249cbbc5228e152 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.5, 0.29999995, 0.0))] pieces all=2:a31411e73ec5bed6 camera=2:a31411e73ec5bed6 shadow=2:a31411e73ec5bed6 indirect=2:a31411e73ec5bed6 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.0, 1.0, 0.0))] pieces all=1:f8d040a1b801ab29 camera=1:f8d040a1b801ab29 shadow=1:f8d040a1b801ab29 indirect=1:f8d040a1b801ab29 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.2, 0.0, 0.0))] pieces all=1:bc27a6d18babc1fe camera=1:bc27a6d18babc1fe shadow=1:bc27a6d18babc1fe indirect=1:bc27a6d18babc1fe +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Card +provenance geometry 3..4: /World/Up +provenance geometry 4..5: /World/Right +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2876157804411373923, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_types_usda-d2a10e1c91de57de-1.digest b/crates/crust-core/tests/data/import_baselines/motionvector_types_usda-d2a10e1c91de57de-1.digest new file mode 100644 index 000000000..a27a33bef --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_types_usda-d2a10e1c91de57de-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/f2", name: "f2", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/h2", name: "h2", channel_prefix: None, source: MotionVector, components: 2, precision: Half, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/st2", name: "st2", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/motionvector_types.usda"], invisible_overrides: Some(0) } +layer: $DIR/motionvector_types.usda +warning: Warning { code: AovTypeMismatch, kind: Skipped, count: 5, prims: ["/Render/f1", "/Render/c3", "/Render/i2", "/Render/u2", "/Render/v2"], message: "/Render/f1: motionvector cannot be written as \"float\"; no channel written" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-0097c4dc99684b31-1.digest b/crates/crust-core/tests/data/import_baselines/motionvector_usda-0097c4dc99684b31-1.digest new file mode 100644 index 000000000..7a7c8b4d7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-0097c4dc99684b31-1.digest @@ -0,0 +1,34 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 8.0), lower_left_corner: Vec3A(-5.6632595, -2.1855836, -2.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 128, height: 72, region: PixelRect { x0: 0, y0: 0, x1: 128, y1: 72 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/comp", name: "renders/motionvector.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/forward", name: "forward", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/motionvector.usda"], invisible_overrides: Some(0) } +layer: $DIR/motionvector.usda +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 6, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ab69abb2d09cba04 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ab69abb2d09cba04 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.8, 0.0, 0.0))] pieces all=2:b249cbbc5228e152 camera=2:b249cbbc5228e152 shadow=2:b249cbbc5228e152 indirect=2:b249cbbc5228e152 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.5, 0.29999995, 0.0))] pieces all=2:a31411e73ec5bed6 camera=2:a31411e73ec5bed6 shadow=2:a31411e73ec5bed6 indirect=2:a31411e73ec5bed6 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.0, 1.0, 0.0))] pieces all=1:f8d040a1b801ab29 camera=1:f8d040a1b801ab29 shadow=1:f8d040a1b801ab29 indirect=1:f8d040a1b801ab29 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.2, 0.0, 0.0))] pieces all=1:bc27a6d18babc1fe camera=1:bc27a6d18babc1fe shadow=1:bc27a6d18babc1fe indirect=1:bc27a6d18babc1fe +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Card +provenance geometry 3..4: /World/Up +provenance geometry 4..5: /World/Right +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2876157804411373923, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-2921a3a583a7af01-1.digest b/crates/crust-core/tests/data/import_baselines/motionvector_usda-2921a3a583a7af01-1.digest new file mode 100644 index 000000000..955af2dfb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-2921a3a583a7af01-1.digest @@ -0,0 +1,34 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 8.0), lower_left_corner: Vec3A(-5.6632595, -2.1855836, -2.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 128, height: 72, region: PixelRect { x0: 0, y0: 0, x1: 128, y1: 72 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/comp", name: "renders/motionvector.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/forward", name: "forward", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/motionvector.usda"], invisible_overrides: Some(0) } +layer: $DIR/motionvector.usda +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 6, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ab69abb2d09cba04 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ab69abb2d09cba04 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.8, 0.0, 0.0))] pieces all=2:b249cbbc5228e152 camera=2:b249cbbc5228e152 shadow=2:b249cbbc5228e152 indirect=2:b249cbbc5228e152 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.5, 0.29999995, 0.0))] pieces all=2:a31411e73ec5bed6 camera=2:a31411e73ec5bed6 shadow=2:a31411e73ec5bed6 indirect=2:a31411e73ec5bed6 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.0, 1.0, 0.0))] pieces all=1:f8d040a1b801ab29 camera=1:f8d040a1b801ab29 shadow=1:f8d040a1b801ab29 indirect=1:f8d040a1b801ab29 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.2, 0.0, 0.0))] pieces all=1:bc27a6d18babc1fe camera=1:bc27a6d18babc1fe shadow=1:bc27a6d18babc1fe indirect=1:bc27a6d18babc1fe +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Card +provenance geometry 3..4: /World/Up +provenance geometry 4..5: /World/Right +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2876157804411373923, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-1.digest b/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-1.digest new file mode 100644 index 000000000..955af2dfb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-1.digest @@ -0,0 +1,34 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 8.0), lower_left_corner: Vec3A(-5.6632595, -2.1855836, -2.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 128, height: 72, region: PixelRect { x0: 0, y0: 0, x1: 128, y1: 72 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/comp", name: "renders/motionvector.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/forward", name: "forward", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/motionvector.usda"], invisible_overrides: Some(0) } +layer: $DIR/motionvector.usda +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 6, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ab69abb2d09cba04 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ab69abb2d09cba04 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.8, 0.0, 0.0))] pieces all=2:b249cbbc5228e152 camera=2:b249cbbc5228e152 shadow=2:b249cbbc5228e152 indirect=2:b249cbbc5228e152 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.5, 0.29999995, 0.0))] pieces all=2:a31411e73ec5bed6 camera=2:a31411e73ec5bed6 shadow=2:a31411e73ec5bed6 indirect=2:a31411e73ec5bed6 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.0, 1.0, 0.0))] pieces all=1:f8d040a1b801ab29 camera=1:f8d040a1b801ab29 shadow=1:f8d040a1b801ab29 indirect=1:f8d040a1b801ab29 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.2, 0.0, 0.0))] pieces all=1:bc27a6d18babc1fe camera=1:bc27a6d18babc1fe shadow=1:bc27a6d18babc1fe indirect=1:bc27a6d18babc1fe +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Card +provenance geometry 3..4: /World/Up +provenance geometry 4..5: /World/Right +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2876157804411373923, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-2.digest b/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-2.digest new file mode 100644 index 000000000..955af2dfb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-2.digest @@ -0,0 +1,34 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 8.0), lower_left_corner: Vec3A(-5.6632595, -2.1855836, -2.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 128, height: 72, region: PixelRect { x0: 0, y0: 0, x1: 128, y1: 72 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/comp", name: "renders/motionvector.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/forward", name: "forward", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/motionvector.usda"], invisible_overrides: Some(0) } +layer: $DIR/motionvector.usda +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 6, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ab69abb2d09cba04 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ab69abb2d09cba04 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.8, 0.0, 0.0))] pieces all=2:b249cbbc5228e152 camera=2:b249cbbc5228e152 shadow=2:b249cbbc5228e152 indirect=2:b249cbbc5228e152 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.5, 0.29999995, 0.0))] pieces all=2:a31411e73ec5bed6 camera=2:a31411e73ec5bed6 shadow=2:a31411e73ec5bed6 indirect=2:a31411e73ec5bed6 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.0, 1.0, 0.0))] pieces all=1:f8d040a1b801ab29 camera=1:f8d040a1b801ab29 shadow=1:f8d040a1b801ab29 indirect=1:f8d040a1b801ab29 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.2, 0.0, 0.0))] pieces all=1:bc27a6d18babc1fe camera=1:bc27a6d18babc1fe shadow=1:bc27a6d18babc1fe indirect=1:bc27a6d18babc1fe +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Card +provenance geometry 3..4: /World/Up +provenance geometry 4..5: /World/Right +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2876157804411373923, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-43ed7e424bbaa4f7-1.digest b/crates/crust-core/tests/data/import_baselines/motionvector_usda-43ed7e424bbaa4f7-1.digest new file mode 100644 index 000000000..955af2dfb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-43ed7e424bbaa4f7-1.digest @@ -0,0 +1,34 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 8.0), lower_left_corner: Vec3A(-5.6632595, -2.1855836, -2.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 128, height: 72, region: PixelRect { x0: 0, y0: 0, x1: 128, y1: 72 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/comp", name: "renders/motionvector.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/forward", name: "forward", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/motionvector.usda"], invisible_overrides: Some(0) } +layer: $DIR/motionvector.usda +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 6, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ab69abb2d09cba04 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ab69abb2d09cba04 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.8, 0.0, 0.0))] pieces all=2:b249cbbc5228e152 camera=2:b249cbbc5228e152 shadow=2:b249cbbc5228e152 indirect=2:b249cbbc5228e152 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.5, 0.29999995, 0.0))] pieces all=2:a31411e73ec5bed6 camera=2:a31411e73ec5bed6 shadow=2:a31411e73ec5bed6 indirect=2:a31411e73ec5bed6 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.0, 1.0, 0.0))] pieces all=1:f8d040a1b801ab29 camera=1:f8d040a1b801ab29 shadow=1:f8d040a1b801ab29 indirect=1:f8d040a1b801ab29 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.2, 0.0, 0.0))] pieces all=1:bc27a6d18babc1fe camera=1:bc27a6d18babc1fe shadow=1:bc27a6d18babc1fe indirect=1:bc27a6d18babc1fe +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Card +provenance geometry 3..4: /World/Up +provenance geometry 4..5: /World/Right +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2876157804411373923, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-6dec65e3aa55dc9d-1.digest b/crates/crust-core/tests/data/import_baselines/motionvector_usda-6dec65e3aa55dc9d-1.digest new file mode 100644 index 000000000..7a7c8b4d7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-6dec65e3aa55dc9d-1.digest @@ -0,0 +1,34 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 8.0), lower_left_corner: Vec3A(-5.6632595, -2.1855836, -2.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 128, height: 72, region: PixelRect { x0: 0, y0: 0, x1: 128, y1: 72 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/comp", name: "renders/motionvector.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/forward", name: "forward", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/motionvector.usda"], invisible_overrides: Some(0) } +layer: $DIR/motionvector.usda +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 6, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ab69abb2d09cba04 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ab69abb2d09cba04 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.8, 0.0, 0.0))] pieces all=2:b249cbbc5228e152 camera=2:b249cbbc5228e152 shadow=2:b249cbbc5228e152 indirect=2:b249cbbc5228e152 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.5, 0.29999995, 0.0))] pieces all=2:a31411e73ec5bed6 camera=2:a31411e73ec5bed6 shadow=2:a31411e73ec5bed6 indirect=2:a31411e73ec5bed6 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.0, 1.0, 0.0))] pieces all=1:f8d040a1b801ab29 camera=1:f8d040a1b801ab29 shadow=1:f8d040a1b801ab29 indirect=1:f8d040a1b801ab29 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.2, 0.0, 0.0))] pieces all=1:bc27a6d18babc1fe camera=1:bc27a6d18babc1fe shadow=1:bc27a6d18babc1fe indirect=1:bc27a6d18babc1fe +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Card +provenance geometry 3..4: /World/Up +provenance geometry 4..5: /World/Right +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2876157804411373923, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-c5f34f1e623349ba-1.digest b/crates/crust-core/tests/data/import_baselines/motionvector_usda-c5f34f1e623349ba-1.digest new file mode 100644 index 000000000..7a7c8b4d7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-c5f34f1e623349ba-1.digest @@ -0,0 +1,34 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.0, 8.0), lower_left_corner: Vec3A(-5.6632595, -2.1855836, -2.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 128, height: 72, region: PixelRect { x0: 0, y0: 0, x1: 128, y1: 72 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/comp", name: "renders/motionvector.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/forward", name: "forward", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/motionvector.usda"], invisible_overrides: Some(0) } +layer: $DIR/motionvector.usda +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 6, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ab69abb2d09cba04 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:ab69abb2d09cba04 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.8, 0.0, 0.0))] pieces all=2:b249cbbc5228e152 camera=2:b249cbbc5228e152 shadow=2:b249cbbc5228e152 indirect=2:b249cbbc5228e152 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.5, 0.29999995, 0.0))] pieces all=2:a31411e73ec5bed6 camera=2:a31411e73ec5bed6 shadow=2:a31411e73ec5bed6 indirect=2:a31411e73ec5bed6 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.0, 1.0, 0.0))] pieces all=1:f8d040a1b801ab29 camera=1:f8d040a1b801ab29 shadow=1:f8d040a1b801ab29 indirect=1:f8d040a1b801ab29 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.2, 0.0, 0.0))] pieces all=1:bc27a6d18babc1fe camera=1:bc27a6d18babc1fe shadow=1:bc27a6d18babc1fe indirect=1:bc27a6d18babc1fe +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Card +provenance geometry 3..4: /World/Up +provenance geometry 4..5: /World/Right +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2876157804411373923, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/multiply_usda-8736676f00161943-1.digest b/crates/crust-core/tests/data/import_baselines/multiply_usda-8736676f00161943-1.digest new file mode 100644 index 000000000..e6cd15253 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/multiply_usda-8736676f00161943-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/multiply.usda"], invisible_overrides: Some(0) } +layer: $DIR/multiply.usda +warning: Warning { code: MeshDisplacedAtCage, kind: Approximated, count: 1, prims: ["/World/Quads"], message: "Mesh at /World/Quads is displaced at its cage resolution, so only cage vertices move — raise --subdiv-level or set --subdiv-edge-length to dice it finer (further occurrences are counted in the import's warnings)" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:707d53a33882a13a camera=4:707d53a33882a13a shadow=4:707d53a33882a13a indirect=4:707d53a33882a13a +provenance material /World/Soil: MaterialOrigin { slots: [0], displaced: true } +provenance geometry 0..1: /World/Quads +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18140786555293703923, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/named_chart_usda-67761c5ec52139aa-1.digest b/crates/crust-core/tests/data/import_baselines/named_chart_usda-67761c5ec52139aa-1.digest new file mode 100644 index 000000000..2eea8c1f2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/named_chart_usda-67761c5ec52139aa-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/named_chart.usda"], invisible_overrides: Some(0) } +layer: $DIR/named_chart.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=32:ac771f7e6a6314dd camera=32:ac771f7e6a6314dd shadow=32:ac771f7e6a6314dd indirect=32:ac771f7e6a6314dd +provenance material /World/Height: MaterialOrigin { slots: [0], displaced: true } +provenance geometry 0..1: /World/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5577808108587403347, n_points: 25, n_indices: 64, n_uvs: Some(25), smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/named_usda-455967a7b376e998-1.digest b/crates/crust-core/tests/data/import_baselines/named_usda-455967a7b376e998-1.digest new file mode 100644 index 000000000..aa77d3852 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/named_usda-455967a7b376e998-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/bg", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/named.usda"], invisible_overrides: Some(0) } +layer: $DIR/named.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..1: /World/Prop +provenance geometry 1..2: /World/Char +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/bg"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/named_usda-caf35125dfbdc7e1-1.digest b/crates/crust-core/tests/data/import_baselines/named_usda-caf35125dfbdc7e1-1.digest new file mode 100644 index 000000000..6240d6e43 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/named_usda-caf35125dfbdc7e1-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/char", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/named.usda"], invisible_overrides: Some(0) } +layer: $DIR/named.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..1: /World/Prop +provenance geometry 1..2: /World/Char +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/named_usda-d1e9bde789e7233a-1.digest b/crates/crust-core/tests/data/import_baselines/named_usda-d1e9bde789e7233a-1.digest new file mode 100644 index 000000000..c4cf0dbd6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/named_usda-d1e9bde789e7233a-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/named.usda"], invisible_overrides: Some(0) } +layer: $DIR/named.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..1: /World/Prop +provenance geometry 1..2: /World/Char +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nan_shaping_usda-9e699df2d0518cc0-1.digest b/crates/crust-core/tests/data/import_baselines/nan_shaping_usda-9e699df2d0518cc0-1.digest new file mode 100644 index 000000000..7571a09b2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nan_shaping_usda-9e699df2d0518cc0-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/nan_shaping.usda"], invisible_overrides: Some(0) } +layer: $DIR/nan_shaping.usda +warning: Warning { code: LightNonFiniteInput, kind: Refused, count: 3, prims: ["/World/Spot"], message: "/World/Spot: inputs:shaping:focus = NaN is not finite — using its fallback" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/Spot") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:535681dd4ddb0065 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:535681dd4ddb0065 +provenance light /World/Spot: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Spot +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/native_usda-48df729899939992-1.digest b/crates/crust-core/tests/data/import_baselines/native_usda-48df729899939992-1.digest new file mode 100644 index 000000000..166a4fdfd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/native_usda-48df729899939992-1.digest @@ -0,0 +1,231 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/native.usda"], invisible_overrides: Some(0) } +layer: $DIR/native.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 140 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 140, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 142 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=140:90b286e3dc68bccc camera=140:90b286e3dc68bccc shadow=140:90b286e3dc68bccc indirect=140:90b286e3dc68bccc +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 7: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 9: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 11: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 13: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 15: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 16: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 17: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 18: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 19: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 20: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 21: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 22: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 23: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 24: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 25: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 26: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 27: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 28: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 29: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 30: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 31: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 32: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 33: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 34: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 35: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 36: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 37: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 38: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 39: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 40: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 41: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 42: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 43: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 44: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 45: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 46: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 47: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 48: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 49: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 50: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 51: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 52: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 53: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 54: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 55: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 56: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 57: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 58: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 59: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 60: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 61: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 62: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 63: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 64: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 65: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 66: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 67: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 68: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 69: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 70: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=140:ae8271427e67699c camera=140:ae8271427e67699c shadow=140:ae8271427e67699c indirect=140:ae8271427e67699c +geom 71: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 72: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 73: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 74: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 75: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 76: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 77: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 78: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 79: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 80: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 81: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 82: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 83: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 84: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 85: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 86: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 87: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 88: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 89: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 90: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 91: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 92: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 93: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 94: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 95: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 96: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 97: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 98: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 99: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 100: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 101: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 102: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 103: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 104: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 105: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 106: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 107: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 108: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 109: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 110: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 111: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 112: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 113: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 114: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 115: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 116: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 117: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 118: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 119: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 120: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 121: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 122: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 123: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 124: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 125: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 126: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 127: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 128: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 129: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 130: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 131: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 132: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 133: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 134: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 135: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 136: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 137: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 138: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 139: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +provenance material /W/Looks/Even: MaterialOrigin { slots: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 137, 139], displaced: false } +provenance material /W/Looks/Odd: MaterialOrigin { slots: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138], displaced: false } +provenance geometry 0..70: /W/A +provenance geometry 70..140: /W/B +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9983431792377398331, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 445393997096090275, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12530787508316231193, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2003607608452276953, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14655719404458108924, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8197086280809854330, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15226241633731644800, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1220030663393014154, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9671416021768249711, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 713395937854610793, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9015895206046420096, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 11: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6053246308793941277, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 12: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3354812878111187853, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 13: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2143590123543198581, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 14: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12825708062627280916, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 15: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17390326888399512289, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 16: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5167343440688746005, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 17: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6431256199563153267, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 18: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17938759324587019490, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 19: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9338845809469782352, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 20: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5016274748741901678, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 21: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18148940518120066603, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 22: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4830200885891814983, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 23: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15766972410381609041, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 24: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9472872301105672276, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 25: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11414915196367845650, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 26: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9269437264134878215, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 27: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10241772988455119680, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 28: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6287388440238275734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 29: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16540043469967507742, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 30: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12273703647221078853, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 31: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14885684870811093431, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 32: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11612700176135259559, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 33: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18124134558096145620, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 34: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1547305282937345631, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 35: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14319513361325090922, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 36: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12743050219495799660, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 37: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14564807414974621182, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 38: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15128490494491982350, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 39: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11141992223073874788, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 40: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2187686032361564554, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 41: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9703725567598092252, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 42: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6913685974256867465, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 43: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3100222640867777022, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 44: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5554913372606825388, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 45: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16649324141060687540, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 46: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2737295392186472633, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 47: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 303054490942377425, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 48: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9767880336714203685, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 49: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6412687190128267277, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 50: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8058819299735866700, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 51: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11805635118953593289, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 52: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10587302289040357906, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 53: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 915626683743930737, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 54: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2011260152324884985, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 55: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15004083201484757820, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 56: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4492824581372515845, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 57: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1556962713607594861, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 58: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13700768547374211392, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 59: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1736609624654126323, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 60: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7314348300970154562, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 61: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16137632259568160912, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 62: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5302950127304504092, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 63: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11033842897036242693, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 64: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1432794855324975849, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 65: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6417092498626891774, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 66: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15417142670901525198, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 67: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1660923941246006929, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 68: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7728745279061195760, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 69: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12950018545620570054, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/native_usda-aa00109a0de726bd-1.digest b/crates/crust-core/tests/data/import_baselines/native_usda-aa00109a0de726bd-1.digest new file mode 100644 index 000000000..6fb6ee4f1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/native_usda-aa00109a0de726bd-1.digest @@ -0,0 +1,24 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: true, layer_stack: ["$DIR/native.usda"], invisible_overrides: Some(0) } +layer: $DIR/native.usda +lights: 0 +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.0, 0.0, 0.0))] pieces all=2:575b925bdceda723 camera=2:575b925bdceda723 shadow=2:575b925bdceda723 indirect=2:575b925bdceda723 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.0, 0.0, 0.0))] pieces all=2:79a69671a5590e17 camera=2:79a69671a5590e17 shadow=2:79a69671a5590e17 indirect=2:79a69671a5590e17 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1b725e59c198c8b9 camera=2:1b725e59c198c8b9 shadow=2:1b725e59c198c8b9 indirect=2:1b725e59c198c8b9 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5d00031a75085a06 camera=2:5d00031a75085a06 shadow=2:5d00031a75085a06 indirect=2:5d00031a75085a06 +provenance material /World/Glow: MaterialOrigin { slots: [0, 1, 2, 3], displaced: false } +provenance geometry 0..2: /World/Moving +provenance geometry 2..4: /World/Still +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/near_far_usda-378c724af4dad1fb-1.digest b/crates/crust-core/tests/data/import_baselines/near_far_usda-378c724af4dad1fb-1.digest new file mode 100644 index 000000000..c60044860 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/near_far_usda-378c724af4dad1fb-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/near_far.usda"], invisible_overrides: Some(0) } +layer: $DIR/near_far.usda +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 768, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 780, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95d317f3c4388e2d camera=12:95d317f3c4388e2d shadow=12:95d317f3c4388e2d indirect=12:95d317f3c4388e2d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:a2f9da3d587fb50d camera=12:a2f9da3d587fb50d shadow=12:a2f9da3d587fb50d indirect=12:a2f9da3d587fb50d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:bb9aeaae01563c51 camera=768:bb9aeaae01563c51 shadow=768:bb9aeaae01563c51 indirect=768:bb9aeaae01563c51 +provenance geometry 0..1: /W/FarB +provenance geometry 1..2: /W/FarA +provenance geometry 2..3: /W/Near +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18253940121988772376, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13487480004083563611, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nearest_usda-01bca6fa7666b1f3-1.digest b/crates/crust-core/tests/data/import_baselines/nearest_usda-01bca6fa7666b1f3-1.digest new file mode 100644 index 000000000..bdee695b5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nearest_usda-01bca6fa7666b1f3-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/explicit", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/nearest.usda"], invisible_overrides: Some(0) } +layer: $DIR/nearest.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..1: /World/Props/Crate +provenance geometry 1..2: /World/Props/Hero/Body +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/explicit"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nearest_usda-6471e7e6d484d155-1.digest b/crates/crust-core/tests/data/import_baselines/nearest_usda-6471e7e6d484d155-1.digest new file mode 100644 index 000000000..dd7c174ec --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nearest_usda-6471e7e6d484d155-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/nearest", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/nearest.usda"], invisible_overrides: Some(0) } +layer: $DIR/nearest.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..1: /World/Props/Crate +provenance geometry 1..2: /World/Props/Hero/Body +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/nearest"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/negative_min_spp_usda-f445ea0383fc1875-1.digest b/crates/crust-core/tests/data/import_baselines/negative_min_spp_usda-f445ea0383fc1875-1.digest new file mode 100644 index 000000000..dc816ae0f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/negative_min_spp_usda-f445ea0383fc1875-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/negative_min_spp.usda"], invisible_overrides: Some(0) } +layer: $DIR/negative_min_spp.usda +warning: Warning { code: SettingsInvalidValue, kind: Refused, count: 1, prims: ["/Render/settings"], message: "crust:minSamplesPerPixel = -1 is negative — using 32" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nested_direct_usda-e25d7da2b966c023-1.digest b/crates/crust-core/tests/data/import_baselines/nested_direct_usda-e25d7da2b966c023-1.digest new file mode 100644 index 000000000..c5d7cb60e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_direct_usda-e25d7da2b966c023-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/nested_direct.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested_direct.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 2.0 motion [] pieces all=192:be113a5c086bbe99 camera=192:be113a5c086bbe99 shadow=192:be113a5c086bbe99 indirect=192:be113a5c086bbe99 +provenance geometry 0..1: /W/Box +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nested_hidden_usda-0ea71f61bc0a58d6-1.digest b/crates/crust-core/tests/data/import_baselines/nested_hidden_usda-0ea71f61bc0a58d6-1.digest new file mode 100644 index 000000000..5074889e8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_hidden_usda-0ea71f61bc0a58d6-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/nested_hidden.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested_hidden.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b6410f10d092cf9f camera=1:b6410f10d092cf9f shadow=1:b6410f10d092cf9f indirect=1:b6410f10d092cf9f +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:10c777cd0dfa5779 camera=1:10c777cd0dfa5779 shadow=1:10c777cd0dfa5779 indirect=1:10c777cd0dfa5779 +provenance geometry 0..1: /W/Set/B +provenance geometry 1..2: /W/Set/A +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancer_proto_root_xform_usda-95a505e1fa209779-1.digest b/crates/crust-core/tests/data/import_baselines/nested_instancer_proto_root_xform_usda-95a505e1fa209779-1.digest new file mode 100644 index 000000000..20cdfe1da --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancer_proto_root_xform_usda-95a505e1fa209779-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/nested_instancer_proto_root_xform.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested_instancer_proto_root_xform.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9ca9d8f49d4981ca camera=2:9ca9d8f49d4981ca shadow=2:9ca9d8f49d4981ca indirect=2:9ca9d8f49d4981ca +provenance geometry 0..1: /World/Outer +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-39f09e1523375345-1.digest b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-39f09e1523375345-1.digest new file mode 100644 index 000000000..2352ac8ad --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-39f09e1523375345-1.digest @@ -0,0 +1,55 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.4, 15.0), lower_left_corner: Vec3A(-4.530607, -0.34816408, 5.3851185), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.058942, -0.62115985), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9925462, -0.121869326), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/nested_instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested_instancing.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 21 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 9 } top level, PrimitiveBreakdown { triangles: 28, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 15 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:986409906e99ce0b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:986409906e99ce0b +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c39b723835719483 camera=1:c39b723835719483 shadow=1:c39b723835719483 indirect=1:c39b723835719483 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:8507dcd6df7db891 camera=12:8507dcd6df7db891 shadow=12:8507dcd6df7db891 indirect=12:8507dcd6df7db891 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:34db86a4181bc99b camera=1:34db86a4181bc99b shadow=1:34db86a4181bc99b indirect=1:34db86a4181bc99b +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:2e59a4f39b6703b9 camera=12:2e59a4f39b6703b9 shadow=12:2e59a4f39b6703b9 indirect=12:2e59a4f39b6703b9 +geom 6: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=16:5eb5e682e31960a1 camera=16:5eb5e682e31960a1 shadow=16:5eb5e682e31960a1 indirect=16:5eb5e682e31960a1 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 8: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 9: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=16:93601f672d232a8a camera=16:93601f672d232a8a shadow=16:93601f672d232a8a indirect=16:93601f672d232a8a +geom 10: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 11: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 12: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=16:b4f39ab97ac3b7ac camera=16:b4f39ab97ac3b7ac shadow=16:b4f39ab97ac3b7ac indirect=16:b4f39ab97ac3b7ac +geom 13: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 14: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 15: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=16:9a1c2df9f06cc828 camera=16:9a1c2df9f06cc828 shadow=16:9a1c2df9f06cc828 indirect=16:9a1c2df9f06cc828 +geom 16: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 17: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 18: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=16:f8f87e14f3286bf5 camera=16:f8f87e14f3286bf5 shadow=16:f8f87e14f3286bf5 indirect=16:f8f87e14f3286bf5 +geom 19: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 20: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +provenance material /World/Looks/Bark: MaterialOrigin { slots: [3, 5], displaced: false } +provenance material /World/Looks/Blossom: MaterialOrigin { slots: [2, 4, 7, 10, 13, 16, 19], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Leafy: MaterialOrigin { slots: [6, 8, 9, 11, 12, 14, 15, 17, 18, 20], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 21..21 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..4: /World/PlanterB +provenance geometry 4..6: /World/PlanterA +provenance geometry 6..21: /World/Grove +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12249693463529756870, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12038934229465983880, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-1.digest b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-1.digest new file mode 100644 index 000000000..2352ac8ad --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-1.digest @@ -0,0 +1,55 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.4, 15.0), lower_left_corner: Vec3A(-4.530607, -0.34816408, 5.3851185), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.058942, -0.62115985), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9925462, -0.121869326), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/nested_instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested_instancing.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 21 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 9 } top level, PrimitiveBreakdown { triangles: 28, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 15 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:986409906e99ce0b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:986409906e99ce0b +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c39b723835719483 camera=1:c39b723835719483 shadow=1:c39b723835719483 indirect=1:c39b723835719483 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:8507dcd6df7db891 camera=12:8507dcd6df7db891 shadow=12:8507dcd6df7db891 indirect=12:8507dcd6df7db891 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:34db86a4181bc99b camera=1:34db86a4181bc99b shadow=1:34db86a4181bc99b indirect=1:34db86a4181bc99b +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:2e59a4f39b6703b9 camera=12:2e59a4f39b6703b9 shadow=12:2e59a4f39b6703b9 indirect=12:2e59a4f39b6703b9 +geom 6: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=16:5eb5e682e31960a1 camera=16:5eb5e682e31960a1 shadow=16:5eb5e682e31960a1 indirect=16:5eb5e682e31960a1 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 8: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 9: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=16:93601f672d232a8a camera=16:93601f672d232a8a shadow=16:93601f672d232a8a indirect=16:93601f672d232a8a +geom 10: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 11: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 12: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=16:b4f39ab97ac3b7ac camera=16:b4f39ab97ac3b7ac shadow=16:b4f39ab97ac3b7ac indirect=16:b4f39ab97ac3b7ac +geom 13: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 14: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 15: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=16:9a1c2df9f06cc828 camera=16:9a1c2df9f06cc828 shadow=16:9a1c2df9f06cc828 indirect=16:9a1c2df9f06cc828 +geom 16: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 17: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 18: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=16:f8f87e14f3286bf5 camera=16:f8f87e14f3286bf5 shadow=16:f8f87e14f3286bf5 indirect=16:f8f87e14f3286bf5 +geom 19: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 20: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +provenance material /World/Looks/Bark: MaterialOrigin { slots: [3, 5], displaced: false } +provenance material /World/Looks/Blossom: MaterialOrigin { slots: [2, 4, 7, 10, 13, 16, 19], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Leafy: MaterialOrigin { slots: [6, 8, 9, 11, 12, 14, 15, 17, 18, 20], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 21..21 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..4: /World/PlanterB +provenance geometry 4..6: /World/PlanterA +provenance geometry 6..21: /World/Grove +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12249693463529756870, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12038934229465983880, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-2.digest b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-2.digest new file mode 100644 index 000000000..2352ac8ad --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-2.digest @@ -0,0 +1,55 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.4, 15.0), lower_left_corner: Vec3A(-4.530607, -0.34816408, 5.3851185), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.058942, -0.62115985), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9925462, -0.121869326), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/nested_instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested_instancing.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 21 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 9 } top level, PrimitiveBreakdown { triangles: 28, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 15 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:986409906e99ce0b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:986409906e99ce0b +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c39b723835719483 camera=1:c39b723835719483 shadow=1:c39b723835719483 indirect=1:c39b723835719483 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:8507dcd6df7db891 camera=12:8507dcd6df7db891 shadow=12:8507dcd6df7db891 indirect=12:8507dcd6df7db891 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:34db86a4181bc99b camera=1:34db86a4181bc99b shadow=1:34db86a4181bc99b indirect=1:34db86a4181bc99b +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:2e59a4f39b6703b9 camera=12:2e59a4f39b6703b9 shadow=12:2e59a4f39b6703b9 indirect=12:2e59a4f39b6703b9 +geom 6: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=16:5eb5e682e31960a1 camera=16:5eb5e682e31960a1 shadow=16:5eb5e682e31960a1 indirect=16:5eb5e682e31960a1 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 8: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 9: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=16:93601f672d232a8a camera=16:93601f672d232a8a shadow=16:93601f672d232a8a indirect=16:93601f672d232a8a +geom 10: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 11: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 12: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=16:b4f39ab97ac3b7ac camera=16:b4f39ab97ac3b7ac shadow=16:b4f39ab97ac3b7ac indirect=16:b4f39ab97ac3b7ac +geom 13: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 14: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 15: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=16:9a1c2df9f06cc828 camera=16:9a1c2df9f06cc828 shadow=16:9a1c2df9f06cc828 indirect=16:9a1c2df9f06cc828 +geom 16: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 17: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 18: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=16:f8f87e14f3286bf5 camera=16:f8f87e14f3286bf5 shadow=16:f8f87e14f3286bf5 indirect=16:f8f87e14f3286bf5 +geom 19: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 20: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +provenance material /World/Looks/Bark: MaterialOrigin { slots: [3, 5], displaced: false } +provenance material /World/Looks/Blossom: MaterialOrigin { slots: [2, 4, 7, 10, 13, 16, 19], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Leafy: MaterialOrigin { slots: [6, 8, 9, 11, 12, 14, 15, 17, 18, 20], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 21..21 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..4: /World/PlanterB +provenance geometry 4..6: /World/PlanterA +provenance geometry 6..21: /World/Grove +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12249693463529756870, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12038934229465983880, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-915b43a7369963b2-1.digest b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-915b43a7369963b2-1.digest new file mode 100644 index 000000000..2352ac8ad --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-915b43a7369963b2-1.digest @@ -0,0 +1,55 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.4, 15.0), lower_left_corner: Vec3A(-4.530607, -0.34816408, 5.3851185), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.058942, -0.62115985), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9925462, -0.121869326), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/nested_instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested_instancing.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 21 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 9 } top level, PrimitiveBreakdown { triangles: 28, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 15 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:986409906e99ce0b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:986409906e99ce0b +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c39b723835719483 camera=1:c39b723835719483 shadow=1:c39b723835719483 indirect=1:c39b723835719483 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:8507dcd6df7db891 camera=12:8507dcd6df7db891 shadow=12:8507dcd6df7db891 indirect=12:8507dcd6df7db891 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:34db86a4181bc99b camera=1:34db86a4181bc99b shadow=1:34db86a4181bc99b indirect=1:34db86a4181bc99b +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:2e59a4f39b6703b9 camera=12:2e59a4f39b6703b9 shadow=12:2e59a4f39b6703b9 indirect=12:2e59a4f39b6703b9 +geom 6: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=16:5eb5e682e31960a1 camera=16:5eb5e682e31960a1 shadow=16:5eb5e682e31960a1 indirect=16:5eb5e682e31960a1 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 8: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 9: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=16:93601f672d232a8a camera=16:93601f672d232a8a shadow=16:93601f672d232a8a indirect=16:93601f672d232a8a +geom 10: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 11: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 12: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=16:b4f39ab97ac3b7ac camera=16:b4f39ab97ac3b7ac shadow=16:b4f39ab97ac3b7ac indirect=16:b4f39ab97ac3b7ac +geom 13: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 14: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 15: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=16:9a1c2df9f06cc828 camera=16:9a1c2df9f06cc828 shadow=16:9a1c2df9f06cc828 indirect=16:9a1c2df9f06cc828 +geom 16: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 17: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 18: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=16:f8f87e14f3286bf5 camera=16:f8f87e14f3286bf5 shadow=16:f8f87e14f3286bf5 indirect=16:f8f87e14f3286bf5 +geom 19: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 20: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +provenance material /World/Looks/Bark: MaterialOrigin { slots: [3, 5], displaced: false } +provenance material /World/Looks/Blossom: MaterialOrigin { slots: [2, 4, 7, 10, 13, 16, 19], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Leafy: MaterialOrigin { slots: [6, 8, 9, 11, 12, 14, 15, 17, 18, 20], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 21..21 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..4: /World/PlanterB +provenance geometry 4..6: /World/PlanterA +provenance geometry 6..21: /World/Grove +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12249693463529756870, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12038934229465983880, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-df6640aca1d2b235-1.digest b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-df6640aca1d2b235-1.digest new file mode 100644 index 000000000..2352ac8ad --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-df6640aca1d2b235-1.digest @@ -0,0 +1,55 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.4, 15.0), lower_left_corner: Vec3A(-4.530607, -0.34816408, 5.3851185), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.058942, -0.62115985), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9925462, -0.121869326), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/nested_instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested_instancing.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 21 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 9 } top level, PrimitiveBreakdown { triangles: 28, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 15 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:986409906e99ce0b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:986409906e99ce0b +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c39b723835719483 camera=1:c39b723835719483 shadow=1:c39b723835719483 indirect=1:c39b723835719483 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:8507dcd6df7db891 camera=12:8507dcd6df7db891 shadow=12:8507dcd6df7db891 indirect=12:8507dcd6df7db891 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:34db86a4181bc99b camera=1:34db86a4181bc99b shadow=1:34db86a4181bc99b indirect=1:34db86a4181bc99b +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:2e59a4f39b6703b9 camera=12:2e59a4f39b6703b9 shadow=12:2e59a4f39b6703b9 indirect=12:2e59a4f39b6703b9 +geom 6: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=16:5eb5e682e31960a1 camera=16:5eb5e682e31960a1 shadow=16:5eb5e682e31960a1 indirect=16:5eb5e682e31960a1 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 8: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 9: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=16:93601f672d232a8a camera=16:93601f672d232a8a shadow=16:93601f672d232a8a indirect=16:93601f672d232a8a +geom 10: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 11: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 12: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=16:b4f39ab97ac3b7ac camera=16:b4f39ab97ac3b7ac shadow=16:b4f39ab97ac3b7ac indirect=16:b4f39ab97ac3b7ac +geom 13: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 14: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 15: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=16:9a1c2df9f06cc828 camera=16:9a1c2df9f06cc828 shadow=16:9a1c2df9f06cc828 indirect=16:9a1c2df9f06cc828 +geom 16: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 17: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 18: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=16:f8f87e14f3286bf5 camera=16:f8f87e14f3286bf5 shadow=16:f8f87e14f3286bf5 indirect=16:f8f87e14f3286bf5 +geom 19: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 20: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +provenance material /World/Looks/Bark: MaterialOrigin { slots: [3, 5], displaced: false } +provenance material /World/Looks/Blossom: MaterialOrigin { slots: [2, 4, 7, 10, 13, 16, 19], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Leafy: MaterialOrigin { slots: [6, 8, 9, 11, 12, 14, 15, 17, 18, 20], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 21..21 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..4: /World/PlanterB +provenance geometry 4..6: /World/PlanterA +provenance geometry 6..21: /World/Grove +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12249693463529756870, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12038934229465983880, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-e37604ffa926df8a-1.digest b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-e37604ffa926df8a-1.digest new file mode 100644 index 000000000..2352ac8ad --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-e37604ffa926df8a-1.digest @@ -0,0 +1,55 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.4, 15.0), lower_left_corner: Vec3A(-4.530607, -0.34816408, 5.3851185), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.058942, -0.62115985), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9925462, -0.121869326), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/nested_instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested_instancing.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 21 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 9 } top level, PrimitiveBreakdown { triangles: 28, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 15 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:986409906e99ce0b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:986409906e99ce0b +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c39b723835719483 camera=1:c39b723835719483 shadow=1:c39b723835719483 indirect=1:c39b723835719483 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:8507dcd6df7db891 camera=12:8507dcd6df7db891 shadow=12:8507dcd6df7db891 indirect=12:8507dcd6df7db891 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:34db86a4181bc99b camera=1:34db86a4181bc99b shadow=1:34db86a4181bc99b indirect=1:34db86a4181bc99b +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:2e59a4f39b6703b9 camera=12:2e59a4f39b6703b9 shadow=12:2e59a4f39b6703b9 indirect=12:2e59a4f39b6703b9 +geom 6: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=16:5eb5e682e31960a1 camera=16:5eb5e682e31960a1 shadow=16:5eb5e682e31960a1 indirect=16:5eb5e682e31960a1 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 8: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 9: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=16:93601f672d232a8a camera=16:93601f672d232a8a shadow=16:93601f672d232a8a indirect=16:93601f672d232a8a +geom 10: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 11: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 12: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=16:b4f39ab97ac3b7ac camera=16:b4f39ab97ac3b7ac shadow=16:b4f39ab97ac3b7ac indirect=16:b4f39ab97ac3b7ac +geom 13: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 14: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 15: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=16:9a1c2df9f06cc828 camera=16:9a1c2df9f06cc828 shadow=16:9a1c2df9f06cc828 indirect=16:9a1c2df9f06cc828 +geom 16: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 17: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 18: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=16:f8f87e14f3286bf5 camera=16:f8f87e14f3286bf5 shadow=16:f8f87e14f3286bf5 indirect=16:f8f87e14f3286bf5 +geom 19: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 20: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +provenance material /World/Looks/Bark: MaterialOrigin { slots: [3, 5], displaced: false } +provenance material /World/Looks/Blossom: MaterialOrigin { slots: [2, 4, 7, 10, 13, 16, 19], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Leafy: MaterialOrigin { slots: [6, 8, 9, 11, 12, 14, 15, 17, 18, 20], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 21..21 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..4: /World/PlanterB +provenance geometry 4..6: /World/PlanterA +provenance geometry 6..21: /World/Grove +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12249693463529756870, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12038934229465983880, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fda6a6f1c2f5b28e-1.digest b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fda6a6f1c2f5b28e-1.digest new file mode 100644 index 000000000..3309fb7c1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fda6a6f1c2f5b28e-1.digest @@ -0,0 +1,54 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.4, 15.0), lower_left_corner: Vec3A(-4.530607, -0.34816408, 5.3851185), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.058942, -0.62115985), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9925462, -0.121869326), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/nested_instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested_instancing.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 21 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 9 } top level, PrimitiveBreakdown { triangles: 28, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 15 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:986409906e99ce0b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:986409906e99ce0b +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c39b723835719483 camera=1:c39b723835719483 shadow=1:c39b723835719483 indirect=1:c39b723835719483 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:8507dcd6df7db891 camera=12:8507dcd6df7db891 shadow=12:8507dcd6df7db891 indirect=12:8507dcd6df7db891 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:34db86a4181bc99b camera=1:34db86a4181bc99b shadow=1:34db86a4181bc99b indirect=1:34db86a4181bc99b +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:2e59a4f39b6703b9 camera=12:2e59a4f39b6703b9 shadow=12:2e59a4f39b6703b9 indirect=12:2e59a4f39b6703b9 +geom 6: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=16:5eb5e682e31960a1 camera=16:5eb5e682e31960a1 shadow=16:5eb5e682e31960a1 indirect=16:5eb5e682e31960a1 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 8: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 9: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=16:93601f672d232a8a camera=16:93601f672d232a8a shadow=16:93601f672d232a8a indirect=16:93601f672d232a8a +geom 10: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 11: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 12: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=16:b4f39ab97ac3b7ac camera=16:b4f39ab97ac3b7ac shadow=16:b4f39ab97ac3b7ac indirect=16:b4f39ab97ac3b7ac +geom 13: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 14: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 15: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=16:9a1c2df9f06cc828 camera=16:9a1c2df9f06cc828 shadow=16:9a1c2df9f06cc828 indirect=16:9a1c2df9f06cc828 +geom 16: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 17: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 18: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=16:f8f87e14f3286bf5 camera=16:f8f87e14f3286bf5 shadow=16:f8f87e14f3286bf5 indirect=16:f8f87e14f3286bf5 +geom 19: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 20: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +provenance material /World/Looks/Bark: MaterialOrigin { slots: [3, 5], displaced: false } +provenance material /World/Looks/Blossom: MaterialOrigin { slots: [2, 4, 7, 10, 13, 16, 19], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Leafy: MaterialOrigin { slots: [6, 8, 9, 11, 12, 14, 15, 17, 18, 20], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 21..21 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..4: /World/PlanterB +provenance geometry 4..6: /World/PlanterA +provenance geometry 6..21: /World/Grove +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12249693463529756870, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12038934229465983880, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fff87a8b52b8e069-1.digest b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fff87a8b52b8e069-1.digest new file mode 100644 index 000000000..2352ac8ad --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fff87a8b52b8e069-1.digest @@ -0,0 +1,55 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.4, 15.0), lower_left_corner: Vec3A(-4.530607, -0.34816408, 5.3851185), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.058942, -0.62115985), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9925462, -0.121869326), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/nested_instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested_instancing.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 21 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 9 } top level, PrimitiveBreakdown { triangles: 28, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 15 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:986409906e99ce0b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:986409906e99ce0b +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c39b723835719483 camera=1:c39b723835719483 shadow=1:c39b723835719483 indirect=1:c39b723835719483 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:8507dcd6df7db891 camera=12:8507dcd6df7db891 shadow=12:8507dcd6df7db891 indirect=12:8507dcd6df7db891 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:34db86a4181bc99b camera=1:34db86a4181bc99b shadow=1:34db86a4181bc99b indirect=1:34db86a4181bc99b +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:2e59a4f39b6703b9 camera=12:2e59a4f39b6703b9 shadow=12:2e59a4f39b6703b9 indirect=12:2e59a4f39b6703b9 +geom 6: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=16:5eb5e682e31960a1 camera=16:5eb5e682e31960a1 shadow=16:5eb5e682e31960a1 indirect=16:5eb5e682e31960a1 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 8: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 9: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=16:93601f672d232a8a camera=16:93601f672d232a8a shadow=16:93601f672d232a8a indirect=16:93601f672d232a8a +geom 10: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 11: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 12: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=16:b4f39ab97ac3b7ac camera=16:b4f39ab97ac3b7ac shadow=16:b4f39ab97ac3b7ac indirect=16:b4f39ab97ac3b7ac +geom 13: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 14: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 15: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=16:9a1c2df9f06cc828 camera=16:9a1c2df9f06cc828 shadow=16:9a1c2df9f06cc828 indirect=16:9a1c2df9f06cc828 +geom 16: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 17: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 18: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=16:f8f87e14f3286bf5 camera=16:f8f87e14f3286bf5 shadow=16:f8f87e14f3286bf5 indirect=16:f8f87e14f3286bf5 +geom 19: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 20: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +provenance material /World/Looks/Bark: MaterialOrigin { slots: [3, 5], displaced: false } +provenance material /World/Looks/Blossom: MaterialOrigin { slots: [2, 4, 7, 10, 13, 16, 19], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Leafy: MaterialOrigin { slots: [6, 8, 9, 11, 12, 14, 15, 17, 18, 20], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 21..21 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..4: /World/PlanterB +provenance geometry 4..6: /World/PlanterA +provenance geometry 6..21: /World/Grove +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12249693463529756870, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12038934229465983880, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-c0a020bf777d3f88-1.digest b/crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-c0a020bf777d3f88-1.digest new file mode 100644 index 000000000..87927e8ff --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-c0a020bf777d3f88-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/char", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/nested_not_composed.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested_not_composed.usda +warning: Warning { code: RenderPassNestedNotComposed, kind: Skipped, count: 1, prims: ["/Render/Passes/char"], message: "/Render/Passes/char: collection:matte includes /Sets.collection:hero, which a chunk of the streamed import does not compose — that nested collection contributes nothing there" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 0, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..1: /World/Prop +provenance geometry 1..2: /Chars/Sidekick +provenance geometry 2..3: /Chars/Hero +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nested_one_usda-bc56793ff0720fdc-1.digest b/crates/crust-core/tests/data/import_baselines/nested_one_usda-bc56793ff0720fdc-1.digest new file mode 100644 index 000000000..a966346a2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_one_usda-bc56793ff0720fdc-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/nested_one.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested_one.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b4dfc0dd30bb66e5 camera=1:b4dfc0dd30bb66e5 shadow=1:b4dfc0dd30bb66e5 indirect=1:b4dfc0dd30bb66e5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:10c777cd0dfa5779 camera=1:10c777cd0dfa5779 shadow=1:10c777cd0dfa5779 indirect=1:10c777cd0dfa5779 +provenance geometry 0..2: /W/Set/A +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nested_scatter_usda-4724aa4d383273d2-1.digest b/crates/crust-core/tests/data/import_baselines/nested_scatter_usda-4724aa4d383273d2-1.digest new file mode 100644 index 000000000..c9f354ba3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_scatter_usda-4724aa4d383273d2-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/nested_scatter.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested_scatter.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:be113a5c086bbe99 camera=192:be113a5c086bbe99 shadow=192:be113a5c086bbe99 indirect=192:be113a5c086bbe99 +provenance geometry 0..1: /W/Outer +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nested_translate_usda-31c01e41ce7e4eb3-1.digest b/crates/crust-core/tests/data/import_baselines/nested_translate_usda-31c01e41ce7e4eb3-1.digest new file mode 100644 index 000000000..cd0bd0aee --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_translate_usda-31c01e41ce7e4eb3-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/nested_translate.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested_translate.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6b9eeb1b56e0b798 camera=1:6b9eeb1b56e0b798 shadow=1:6b9eeb1b56e0b798 indirect=1:6b9eeb1b56e0b798 +provenance geometry 0..1: /World/A/B/S +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nested_two_usda-0fad6a8ff7f8520a-1.digest b/crates/crust-core/tests/data/import_baselines/nested_two_usda-0fad6a8ff7f8520a-1.digest new file mode 100644 index 000000000..729a19dfd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_two_usda-0fad6a8ff7f8520a-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/nested_two.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested_two.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:429d4abb801c22d5 camera=1:429d4abb801c22d5 shadow=1:429d4abb801c22d5 indirect=1:429d4abb801c22d5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:41af89000f14f1d5 camera=1:41af89000f14f1d5 shadow=1:41af89000f14f1d5 indirect=1:41af89000f14f1d5 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b6410f10d092cf9f camera=1:b6410f10d092cf9f shadow=1:b6410f10d092cf9f indirect=1:b6410f10d092cf9f +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:39345aa200c2bfe5 camera=1:39345aa200c2bfe5 shadow=1:39345aa200c2bfe5 indirect=1:39345aa200c2bfe5 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b4dfc0dd30bb66e5 camera=1:b4dfc0dd30bb66e5 shadow=1:b4dfc0dd30bb66e5 indirect=1:b4dfc0dd30bb66e5 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:10c777cd0dfa5779 camera=1:10c777cd0dfa5779 shadow=1:10c777cd0dfa5779 indirect=1:10c777cd0dfa5779 +provenance geometry 0..3: /W/Set/B +provenance geometry 3..6: /W/Set/A +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nested_usda-dbe832b66063cf24-1.digest b/crates/crust-core/tests/data/import_baselines/nested_usda-dbe832b66063cf24-1.digest new file mode 100644 index 000000000..cc2bf88cf --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_usda-dbe832b66063cf24-1.digest @@ -0,0 +1,230 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/nested.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 140 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 140, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 75 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=420:fc91a638067120e4 camera=420:fc91a638067120e4 shadow=420:fc91a638067120e4 indirect=420:fc91a638067120e4 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 7: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 9: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 11: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 13: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 15: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 16: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 17: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 18: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 19: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 20: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 21: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 22: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 23: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 24: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 25: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 26: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 27: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 28: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 29: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 30: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 31: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 32: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 33: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 34: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 35: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 36: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 37: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 38: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 39: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 40: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 41: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 42: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 43: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 44: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 45: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 46: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 47: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 48: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 49: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 50: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 51: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 52: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 53: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 54: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 55: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 56: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 57: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 58: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 59: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 60: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 61: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 62: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 63: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 64: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 65: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 66: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 67: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 68: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 69: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 70: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=420:c442619f627011ed camera=420:c442619f627011ed shadow=420:c442619f627011ed indirect=420:c442619f627011ed +geom 71: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 72: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 73: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 74: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 75: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 76: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 77: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 78: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 79: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 80: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 81: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 82: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 83: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 84: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 85: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 86: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 87: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 88: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 89: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 90: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 91: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 92: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 93: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 94: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 95: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 96: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 97: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 98: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 99: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 100: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 101: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 102: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 103: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 104: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 105: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 106: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 107: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 108: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 109: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 110: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 111: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 112: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 113: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 114: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 115: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 116: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 117: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 118: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 119: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 120: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 121: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 122: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 123: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 124: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 125: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 126: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 127: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 128: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 129: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 130: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 131: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 132: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 133: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 134: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 135: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 136: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 137: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 138: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 139: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +provenance material /W/Looks/Even: MaterialOrigin { slots: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 137, 139], displaced: false } +provenance material /W/Looks/Odd: MaterialOrigin { slots: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138], displaced: false } +provenance geometry 0..140: /W/Groves +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9983431792377398331, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 445393997096090275, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12530787508316231193, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2003607608452276953, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14655719404458108924, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8197086280809854330, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15226241633731644800, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1220030663393014154, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9671416021768249711, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 713395937854610793, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9015895206046420096, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 11: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6053246308793941277, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 12: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3354812878111187853, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 13: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2143590123543198581, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 14: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12825708062627280916, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 15: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17390326888399512289, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 16: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5167343440688746005, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 17: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6431256199563153267, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 18: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17938759324587019490, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 19: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9338845809469782352, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 20: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5016274748741901678, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 21: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18148940518120066603, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 22: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4830200885891814983, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 23: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15766972410381609041, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 24: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9472872301105672276, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 25: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11414915196367845650, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 26: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9269437264134878215, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 27: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10241772988455119680, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 28: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6287388440238275734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 29: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16540043469967507742, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 30: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12273703647221078853, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 31: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14885684870811093431, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 32: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11612700176135259559, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 33: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18124134558096145620, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 34: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1547305282937345631, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 35: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14319513361325090922, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 36: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12743050219495799660, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 37: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14564807414974621182, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 38: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15128490494491982350, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 39: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11141992223073874788, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 40: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2187686032361564554, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 41: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9703725567598092252, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 42: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6913685974256867465, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 43: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3100222640867777022, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 44: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5554913372606825388, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 45: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16649324141060687540, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 46: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2737295392186472633, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 47: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 303054490942377425, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 48: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9767880336714203685, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 49: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6412687190128267277, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 50: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8058819299735866700, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 51: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11805635118953593289, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 52: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10587302289040357906, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 53: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 915626683743930737, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 54: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2011260152324884985, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 55: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15004083201484757820, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 56: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4492824581372515845, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 57: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1556962713607594861, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 58: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13700768547374211392, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 59: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1736609624654126323, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 60: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7314348300970154562, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 61: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16137632259568160912, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 62: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5302950127304504092, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 63: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11033842897036242693, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 64: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1432794855324975849, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 65: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6417092498626891774, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 66: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15417142670901525198, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 67: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1660923941246006929, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 68: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7728745279061195760, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 69: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12950018545620570054, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/neural_usda-57a514ca820ab02c-1.digest b/crates/crust-core/tests/data/import_baselines/neural_usda-57a514ca820ab02c-1.digest new file mode 100644 index 000000000..8421c9bbd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/neural_usda-57a514ca820ab02c-1.digest @@ -0,0 +1,28 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 8.0), lower_left_corner: Vec3A(-2.0955, 2.4283752, -2.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Neural, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/neural.usda"], invisible_overrides: Some(0) } +layer: $DIR/neural.usda +lights: 2 +light 0: area name Some("/World/B") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/A") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:dc2ad38d3c5952b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:dc2ad38d3c5952b5 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:31c97faa22d20ec1 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:31c97faa22d20ec1 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:aa8e840dbc8bc005 camera=2:aa8e840dbc8bc005 shadow=2:aa8e840dbc8bc005 indirect=2:aa8e840dbc8bc005 +provenance light /World/A: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/B: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/B +provenance geometry 1..2: /World/A +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5231292419457759674, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/ngon_usda-573da62ad402526c-1.digest b/crates/crust-core/tests/data/import_baselines/ngon_usda-573da62ad402526c-1.digest new file mode 100644 index 000000000..5c9083f15 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ngon_usda-573da62ad402526c-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/ngon.usda"], invisible_overrides: Some(0) } +layer: $DIR/ngon.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=6:3965ea6f0f41df68 camera=6:3965ea6f0f41df68 shadow=6:3965ea6f0f41df68 indirect=6:3965ea6f0f41df68 +provenance geometry 0..1: /World/Mixed +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 612367198234246471, n_points: 12, n_indices: 12, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nine_uniform_lights_usda-181564afd75bc784-1.digest b/crates/crust-core/tests/data/import_baselines/nine_uniform_lights_usda-181564afd75bc784-1.digest new file mode 100644 index 000000000..83fce37af --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nine_uniform_lights_usda-181564afd75bc784-1.digest @@ -0,0 +1,52 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Uniform, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/nine_uniform_lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/nine_uniform_lights.usda +lights: 9 +light 0: area name Some("/World/l8") lpe None pmf 0.11111111 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/l7") lpe None pmf 0.11111111 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/l6") lpe None pmf 0.11111111 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/l5") lpe None pmf 0.11111111 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 4: area name Some("/World/l4") lpe None pmf 0.11111111 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 5: area name Some("/World/l3") lpe None pmf 0.11111111 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 6: area name Some("/World/l2") lpe None pmf 0.11111111 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 7: area name Some("/World/l1") lpe None pmf 0.11111111 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 8: area name Some("/World/l0") lpe None pmf 0.11111111 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 9 geometries, PrimitiveBreakdown { triangles: 0, spheres: 9, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 9, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d511455fb7e615fa camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d511455fb7e615fa +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c9fe977327bdf2f5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c9fe977327bdf2f5 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:58bf00e87d7312f5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:58bf00e87d7312f5 +geom 3: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2c088793c7ce8f75 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2c088793c7ce8f75 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:77ac25de318f0e45 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:77ac25de318f0e45 +geom 5: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6cae77c711424b95 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:6cae77c711424b95 +geom 6: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8c10829006e198c8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:8c10829006e198c8 +geom 7: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ce1a4d77c8695945 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ce1a4d77c8695945 +geom 8: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e462dd7fec620d85 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e462dd7fec620d85 +provenance light /World/l0: LightOrigin { index: 8, geoms: 8..9 } +provenance light /World/l1: LightOrigin { index: 7, geoms: 7..8 } +provenance light /World/l2: LightOrigin { index: 6, geoms: 6..7 } +provenance light /World/l3: LightOrigin { index: 5, geoms: 5..6 } +provenance light /World/l4: LightOrigin { index: 4, geoms: 4..5 } +provenance light /World/l5: LightOrigin { index: 3, geoms: 3..4 } +provenance light /World/l6: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/l7: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/l8: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/l8 +provenance geometry 1..2: /World/l7 +provenance geometry 2..3: /World/l6 +provenance geometry 3..4: /World/l5 +provenance geometry 4..5: /World/l4 +provenance geometry 5..6: /World/l3 +provenance geometry 6..7: /World/l2 +provenance geometry 7..8: /World/l1 +provenance geometry 8..9: /World/l0 +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-08eaf78e1847bdbe-1.digest b/crates/crust-core/tests/data/import_baselines/no_camera_usda-08eaf78e1847bdbe-1.digest new file mode 100644 index 000000000..bb1037636 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-08eaf78e1847bdbe-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/no_camera.usda"], invisible_overrides: Some(0) } +layer: $DIR/no_camera.usda +warning: Warning { code: SubdivAdaptiveNeedsCamera, kind: Approximated, count: 1, prims: [], message: "Adaptive subdivision (2 px) needs the render camera before the stage is read — name it with --camera or RenderSettings.camera, or a dicing camera with crust:dicingCamera. Using the uniform level 0" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:8a43bbedf6dc6f25 camera=12:8a43bbedf6dc6f25 shadow=12:8a43bbedf6dc6f25 indirect=12:8a43bbedf6dc6f25 +provenance geometry 0..1: /W/Near +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-2a7bfc7853b270c5-1.digest b/crates/crust-core/tests/data/import_baselines/no_camera_usda-2a7bfc7853b270c5-1.digest new file mode 100644 index 000000000..ed108e464 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-2a7bfc7853b270c5-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/no_camera.usda"], invisible_overrides: Some(0) } +layer: $DIR/no_camera.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-5507d24332d7f188-1.digest b/crates/crust-core/tests/data/import_baselines/no_camera_usda-5507d24332d7f188-1.digest new file mode 100644 index 000000000..9ba5800ff --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-5507d24332d7f188-1.digest @@ -0,0 +1,19 @@ +time: Some(10.25) +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 10, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/no_camera.usda"], invisible_overrides: Some(0) } +layer: $DIR/no_camera.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /S +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.25), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-758b683c20791ceb-1.digest b/crates/crust-core/tests/data/import_baselines/no_camera_usda-758b683c20791ceb-1.digest new file mode 100644 index 000000000..f19321f66 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-758b683c20791ceb-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/no_camera.usda"], invisible_overrides: Some(0) } +layer: $DIR/no_camera.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /S +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-ac160dc389201eeb-1.digest b/crates/crust-core/tests/data/import_baselines/no_camera_usda-ac160dc389201eeb-1.digest new file mode 100644 index 000000000..99261fe32 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-ac160dc389201eeb-1.digest @@ -0,0 +1,19 @@ +time: Some(-1.5) +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: -2, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/no_camera.usda"], invisible_overrides: Some(0) } +layer: $DIR/no_camera.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /S +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(-1.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-af24412e492e9147-1.digest b/crates/crust-core/tests/data/import_baselines/no_camera_usda-af24412e492e9147-1.digest new file mode 100644 index 000000000..ed108e464 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-af24412e492e9147-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/no_camera.usda"], invisible_overrides: Some(0) } +layer: $DIR/no_camera.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-f2e322198f5a52d6-1.digest b/crates/crust-core/tests/data/import_baselines/no_camera_usda-f2e322198f5a52d6-1.digest new file mode 100644 index 000000000..57ec395b0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-f2e322198f5a52d6-1.digest @@ -0,0 +1,19 @@ +time: Some(10.5) +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 10, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/no_camera.usda"], invisible_overrides: Some(0) } +layer: $DIR/no_camera.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /S +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/no_frame_usda-06c9736b1ee41555-1.digest b/crates/crust-core/tests/data/import_baselines/no_frame_usda-06c9736b1ee41555-1.digest new file mode 100644 index 000000000..c476568a8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_frame_usda-06c9736b1ee41555-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/no_frame.usda"], invisible_overrides: Some(0) } +layer: $DIR/no_frame.usda +warning: Warning { code: TimeMotionNeedsFrame, kind: Skipped, count: 1, prims: ["/World/B"], message: "/World/cam opens its shutter (0 .. 0.5), but no frame was given: 2 drawn prims' time-sampled transforms are not evaluated over it and render sharp (the first at /World/B). Render a frame with -f" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c4f12a34a7ba856d camera=2:c4f12a34a7ba856d shadow=2:c4f12a34a7ba856d indirect=2:c4f12a34a7ba856d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c4f12a34a7ba856d camera=2:c4f12a34a7ba856d shadow=2:c4f12a34a7ba856d indirect=2:c4f12a34a7ba856d +provenance material /World/Glow: MaterialOrigin { slots: [0, 1], displaced: false } +provenance geometry 0..1: /World/B +provenance geometry 1..2: /World/A +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4602678819172646912], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/no_kernel_usda-250e185a51aff6c5-1.digest b/crates/crust-core/tests/data/import_baselines/no_kernel_usda-250e185a51aff6c5-1.digest new file mode 100644 index 000000000..4c376c767 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_kernel_usda-250e185a51aff6c5-1.digest @@ -0,0 +1,28 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/soft_out", name: "soft_out", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 0, output: 0, components: 1, radiance: false }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: [], display_filters: ["/Render/soft"], display: "beauty" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/no_kernel.usda"], invisible_overrides: Some(0) } +layer: $DIR/no_kernel.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "Asset loader does not decode light textures: $DIR/box.exr ignored — the light emits its uniform colour." } +warning: Warning { code: PrecompMissingKernel, kind: Skipped, count: 1, prims: ["/Render/soft"], message: "/Render/soft: kernel $DIR/box.exr could not be read; the filter passes its input through" } +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/no_products_usda-b2f39aa3f795faa2-1.digest b/crates/crust-core/tests/data/import_baselines/no_products_usda-b2f39aa3f795faa2-1.digest new file mode 100644 index 000000000..b2b11f271 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_products_usda-b2f39aa3f795faa2-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/no_products.usda"], invisible_overrides: Some(0) } +layer: $DIR/no_products.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/no_var_authored_usda-7c630c4e6b264297-1.digest b/crates/crust-core/tests/data/import_baselines/no_var_authored_usda-7c630c4e6b264297-1.digest new file mode 100644 index 000000000..e7bc829bc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_var_authored_usda-7c630c4e6b264297-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/no_var_authored.usda"], invisible_overrides: Some(0) } +layer: $DIR/no_var_authored.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=1:a8881b13d8325a63 camera=1:a8881b13d8325a63 shadow=1:a8881b13d8325a63 indirect=1:a8881b13d8325a63 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32f1a52c797bfee5 camera=2:32f1a52c797bfee5 shadow=2:32f1a52c797bfee5 indirect=2:32f1a52c797bfee5 +provenance light /World/dome: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/hair +provenance geometry 1..2: /World/mesh +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/no_var_bare_usda-0f6834e5d7411efd-1.digest b/crates/crust-core/tests/data/import_baselines/no_var_bare_usda-0f6834e5d7411efd-1.digest new file mode 100644 index 000000000..63a82e2fb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_var_bare_usda-0f6834e5d7411efd-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/no_var_bare.usda"], invisible_overrides: Some(0) } +layer: $DIR/no_var_bare.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=1:a8881b13d8325a63 camera=1:a8881b13d8325a63 shadow=1:a8881b13d8325a63 indirect=1:a8881b13d8325a63 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32f1a52c797bfee5 camera=2:32f1a52c797bfee5 shadow=2:32f1a52c797bfee5 indirect=2:32f1a52c797bfee5 +provenance light /World/dome: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/hair +provenance geometry 1..2: /World/mesh +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/non_finite_usda-b38223b4cd532638-1.digest b/crates/crust-core/tests/data/import_baselines/non_finite_usda-b38223b4cd532638-1.digest new file mode 100644 index 000000000..0c88cb9b9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/non_finite_usda-b38223b4cd532638-1.digest @@ -0,0 +1,28 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/non_finite.usda"], invisible_overrides: Some(0) } +layer: $DIR/non_finite.usda +warning: Warning { code: LightNonFiniteInput, kind: Refused, count: 2, prims: ["/World/Sun", "/World/Key"], message: "/World/Sun: inputs:diffuse = NaN is not finite — using its fallback 1" } +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 0.5 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 0.5 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/none_usda-3500dce365c976fb-1.digest b/crates/crust-core/tests/data/import_baselines/none_usda-3500dce365c976fb-1.digest new file mode 100644 index 000000000..f8d02644e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/none_usda-3500dce365c976fb-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/none.usda"], invisible_overrides: Some(0) } +layer: $DIR/none.usda +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/none_usda-8ca1039ef6a1af13-1.digest b/crates/crust-core/tests/data/import_baselines/none_usda-8ca1039ef6a1af13-1.digest new file mode 100644 index 000000000..497dfe8a5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/none_usda-8ca1039ef6a1af13-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/none.usda"], invisible_overrides: Some(0) } +layer: $DIR/none.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Visible") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance light /World/Visible: LightOrigin { index: 1, geoms: 0..1 } +provenance geometry 0..1: /World/Visible +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/none_usda-b2626a5c29f30d06-1.digest b/crates/crust-core/tests/data/import_baselines/none_usda-b2626a5c29f30d06-1.digest new file mode 100644 index 000000000..37cbe3510 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/none_usda-b2626a5c29f30d06-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/none.usda"], invisible_overrides: Some(0) } +layer: $DIR/none.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/norm_off_cylinder_usda-cad3a8a0bec58113-1.digest b/crates/crust-core/tests/data/import_baselines/norm_off_cylinder_usda-cad3a8a0bec58113-1.digest new file mode 100644 index 000000000..2c4ba987c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/norm_off_cylinder_usda-cad3a8a0bec58113-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/norm_off_cylinder.usda"], invisible_overrides: Some(0) } +layer: $DIR/norm_off_cylinder.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/L") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 1, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 1, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3db6d4a460330f95 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3db6d4a460330f95 +provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/L +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/norm_off_disk_usda-d4ac49b171982a5d-1.digest b/crates/crust-core/tests/data/import_baselines/norm_off_disk_usda-d4ac49b171982a5d-1.digest new file mode 100644 index 000000000..3f8c64aa0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/norm_off_disk_usda-d4ac49b171982a5d-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/norm_off_disk.usda"], invisible_overrides: Some(0) } +layer: $DIR/norm_off_disk.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/L") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 1, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 1, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:81f922b1ea201c01 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:81f922b1ea201c01 +provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/L +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/norm_off_rect_usda-7ca0616652c56bb1-1.digest b/crates/crust-core/tests/data/import_baselines/norm_off_rect_usda-7ca0616652c56bb1-1.digest new file mode 100644 index 000000000..294c009d5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/norm_off_rect_usda-7ca0616652c56bb1-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/norm_off_rect.usda"], invisible_overrides: Some(0) } +layer: $DIR/norm_off_rect.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/L") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:342c2dd553aadcf5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:342c2dd553aadcf5 +provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/L +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/norm_off_sphere_usda-0abd6bba11da485f-1.digest b/crates/crust-core/tests/data/import_baselines/norm_off_sphere_usda-0abd6bba11da485f-1.digest new file mode 100644 index 000000000..7f7c7b1e9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/norm_off_sphere_usda-0abd6bba11da485f-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/norm_off_sphere.usda"], invisible_overrides: Some(0) } +layer: $DIR/norm_off_sphere.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/L") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fb1e7d48790aec95 +provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/L +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/norm_on_cylinder_usda-f3dd54fd2e0d1929-1.digest b/crates/crust-core/tests/data/import_baselines/norm_on_cylinder_usda-f3dd54fd2e0d1929-1.digest new file mode 100644 index 000000000..3dbc99207 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/norm_on_cylinder_usda-f3dd54fd2e0d1929-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/norm_on_cylinder.usda"], invisible_overrides: Some(0) } +layer: $DIR/norm_on_cylinder.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/L") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 1, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 1, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3db6d4a460330f95 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3db6d4a460330f95 +provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/L +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/norm_on_disk_usda-80da988892a29bff-1.digest b/crates/crust-core/tests/data/import_baselines/norm_on_disk_usda-80da988892a29bff-1.digest new file mode 100644 index 000000000..c77a7022e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/norm_on_disk_usda-80da988892a29bff-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/norm_on_disk.usda"], invisible_overrides: Some(0) } +layer: $DIR/norm_on_disk.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/L") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 1, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 1, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:81f922b1ea201c01 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:81f922b1ea201c01 +provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/L +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/norm_on_rect_usda-0fb0cae5dd5fa17f-1.digest b/crates/crust-core/tests/data/import_baselines/norm_on_rect_usda-0fb0cae5dd5fa17f-1.digest new file mode 100644 index 000000000..b23844d06 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/norm_on_rect_usda-0fb0cae5dd5fa17f-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/norm_on_rect.usda"], invisible_overrides: Some(0) } +layer: $DIR/norm_on_rect.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/L") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:342c2dd553aadcf5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:342c2dd553aadcf5 +provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/L +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/norm_on_sphere_usda-a4e34a4e4682e3b5-1.digest b/crates/crust-core/tests/data/import_baselines/norm_on_sphere_usda-a4e34a4e4682e3b5-1.digest new file mode 100644 index 000000000..a31a1493e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/norm_on_sphere_usda-a4e34a4e4682e3b5-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/norm_on_sphere.usda"], invisible_overrides: Some(0) } +layer: $DIR/norm_on_sphere.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/L") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:fb1e7d48790aec95 +provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/L +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/normals_usda-eb98f1adc17331b3-1.digest b/crates/crust-core/tests/data/import_baselines/normals_usda-eb98f1adc17331b3-1.digest new file mode 100644 index 000000000..c6dfa2063 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/normals_usda-eb98f1adc17331b3-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/normals.usda"], invisible_overrides: Some(0) } +layer: $DIR/normals.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 14, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:967434bbd75361e5 camera=12:967434bbd75361e5 shadow=12:967434bbd75361e5 indirect=12:967434bbd75361e5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:df2430fa56f27b69 camera=2:df2430fa56f27b69 shadow=2:df2430fa56f27b69 indirect=2:df2430fa56f27b69 +provenance geometry 0..1: /World/box/geo +provenance geometry 1..2: /World/slope +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nothing_usda-05a76e84b550abac-1.digest b/crates/crust-core/tests/data/import_baselines/nothing_usda-05a76e84b550abac-1.digest new file mode 100644 index 000000000..cb2bc95e0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nothing_usda-05a76e84b550abac-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-5.6632595, -1.9855835, -4.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 4, width: 32, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 18 }, min_samples_per_pixel: 8, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/beauty", name: "renders/aovs_beauty.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/sampleCount", name: "sampleCount", channel_prefix: None, source: SampleCount, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [("artist", "crust samples")] }, AovProduct { prim_path: "/Render/Products/data", name: "renders/aovs_data.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/Z", name: "Z", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/distance", name: "distance", channel_prefix: None, source: Distance, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Peye", name: "Peye", channel_prefix: None, source: Peye, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/N", name: "N", channel_prefix: None, source: Normal, components: 3, precision: Half, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Neye", name: "Neye", channel_prefix: None, source: Neye, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/st", name: "st", channel_prefix: None, source: St, components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/alpha", name: "alpha", channel_prefix: None, source: Alpha, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/nothing.usda", "$ROOT/samples/aovs.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/aovs.usda +layer: $DIR/nothing.usda +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 1, prims: ["/Render/Products/Vars/diffuse_direct"], message: "/Render/Products/Vars/diffuse_direct: unknown raw source \"diffuse_direct\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:cadf82024fa5b745 camera=2:cadf82024fa5b745 shadow=2:cadf82024fa5b745 indirect=2:cadf82024fa5b745 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nurbs_clean_usda-362cea70cf67e6cc-1.digest b/crates/crust-core/tests/data/import_baselines/nurbs_clean_usda-362cea70cf67e6cc-1.digest new file mode 100644 index 000000000..f223c70b8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nurbs_clean_usda-362cea70cf67e6cc-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/nurbs_clean.usda"], invisible_overrides: Some(0) } +layer: $DIR/nurbs_clean.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 2, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=2:fc096693f908fa55 camera=2:fc096693f908fa55 shadow=2:fc096693f908fa55 indirect=2:fc096693f908fa55 +provenance geometry 0..1: /World/whisker +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nurbs_empty_usda-af6c06cf5e078823-1.digest b/crates/crust-core/tests/data/import_baselines/nurbs_empty_usda-af6c06cf5e078823-1.digest new file mode 100644 index 000000000..40e803120 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nurbs_empty_usda-af6c06cf5e078823-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/nurbs_empty.usda"], invisible_overrides: Some(0) } +layer: $DIR/nurbs_empty.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nurbs_full_usda-ee811943aa635f36-1.digest b/crates/crust-core/tests/data/import_baselines/nurbs_full_usda-ee811943aa635f36-1.digest new file mode 100644 index 000000000..490cb68a4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nurbs_full_usda-ee811943aa635f36-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/nurbs_full.usda"], invisible_overrides: Some(0) } +layer: $DIR/nurbs_full.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 1, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=1:54eca4df97173997 camera=1:54eca4df97173997 shadow=1:54eca4df97173997 indirect=1:54eca4df97173997 +provenance geometry 0..1: /W/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nurbs_half_usda-26730abe8461e1ee-1.digest b/crates/crust-core/tests/data/import_baselines/nurbs_half_usda-26730abe8461e1ee-1.digest new file mode 100644 index 000000000..88ca22374 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nurbs_half_usda-26730abe8461e1ee-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/nurbs_half.usda"], invisible_overrides: Some(0) } +layer: $DIR/nurbs_half.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 1, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=1:7ed1a101867109a6 camera=1:7ed1a101867109a6 shadow=1:7ed1a101867109a6 indirect=1:7ed1a101867109a6 +provenance geometry 0..1: /W/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nurbs_malformed_usda-edaffca17525a0db-1.digest b/crates/crust-core/tests/data/import_baselines/nurbs_malformed_usda-edaffca17525a0db-1.digest new file mode 100644 index 000000000..d4c5d5b91 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nurbs_malformed_usda-edaffca17525a0db-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/nurbs_malformed.usda"], invisible_overrides: Some(0) } +layer: $DIR/nurbs_malformed.usda +warning: Warning { code: CurvesInvalidKnots, kind: Skipped, count: 1, prims: ["/World/negative_count"], message: "NurbsCurves at /World/negative_count: 2 curves need one non-negative order each and count + order knots each (2 orders, 8 knots authored, 8 expected) — skipped" } +warning: Warning { code: CurvesRationalApproximated, kind: Approximated, count: 1, prims: ["/World/zero_weights"], message: "NurbsCurves at /World/zero_weights: pointWeights must be positive and finite — ignored, the curves are read as non-rational" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 2, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=1:a0d9e6d7e8386dc5 camera=1:a0d9e6d7e8386dc5 shadow=1:a0d9e6d7e8386dc5 indirect=1:a0d9e6d7e8386dc5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=1:a0d9e6d7e8386dc5 camera=1:a0d9e6d7e8386dc5 shadow=1:a0d9e6d7e8386dc5 indirect=1:a0d9e6d7e8386dc5 +provenance geometry 0..1: /World/zero_weights +provenance geometry 1..2: /World/basis_no_widths +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/nurbs_refused_usda-2cd12f986b06b3a5-1.digest b/crates/crust-core/tests/data/import_baselines/nurbs_refused_usda-2cd12f986b06b3a5-1.digest new file mode 100644 index 000000000..d173c7ab0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nurbs_refused_usda-2cd12f986b06b3a5-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/nurbs_refused.usda"], invisible_overrides: Some(0) } +layer: $DIR/nurbs_refused.usda +warning: Warning { code: CurvesUnsupportedOrder, kind: Skipped, count: 1, prims: ["/World/quintic"], message: "NurbsCurves at /World/quintic: order 5 is not supported (2 | 3 | 4) — those curves skipped" } +warning: Warning { code: CurvesInvalidKnots, kind: Skipped, count: 1, prims: ["/World/short_knots"], message: "NurbsCurves at /World/short_knots: 1 curves need one non-negative order each and count + order knots each (1 orders, 6 knots authored, 8 expected) — skipped" } +warning: Warning { code: CurvesRationalApproximated, kind: Approximated, count: 1, prims: ["/World/rational"], message: "NurbsCurves at /World/rational: unequal pointWeights — the rational curves are approximated by polynomial spans" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 1, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=1:fe32cba2116e1795 camera=1:fe32cba2116e1795 shadow=1:fe32cba2116e1795 indirect=1:fe32cba2116e1795 +provenance geometry 0..1: /World/rational +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/on_camera_usda-0e1653405c0b04b8-1.digest b/crates/crust-core/tests/data/import_baselines/on_camera_usda-0e1653405c0b04b8-1.digest new file mode 100644 index 000000000..2654dd5b0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/on_camera_usda-0e1653405c0b04b8-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.4023113, -1.5620966, -1.0554943), horizontal: Vec3A(8.804623, -0.0, 0.0), vertical: Vec3A(0.0, 4.9407306, -0.6943745), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 8, width: 240, height: 136, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 136 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 13.97], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/on_camera.usda", "$ROOT/samples/dome_backdrop.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/dome_backdrop.usda +layer: $DIR/on_camera.usda +lights: 1 +light 0: dome name Some("/World/Hdri") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Hdri: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Mirror +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/once_direct_usda-87536582b2725522-1.digest b/crates/crust-core/tests/data/import_baselines/once_direct_usda-87536582b2725522-1.digest new file mode 100644 index 000000000..4d05b0bdc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/once_direct_usda-87536582b2725522-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/once_direct.usda"], invisible_overrides: Some(0) } +layer: $DIR/once_direct.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 768, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 768, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:bb9aeaae01563c51 camera=768:bb9aeaae01563c51 shadow=768:bb9aeaae01563c51 indirect=768:bb9aeaae01563c51 +provenance geometry 0..1: /W/Box +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13487480004083563611, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/once_instanced_usda-cfe757ff670cf1a4-1.digest b/crates/crust-core/tests/data/import_baselines/once_instanced_usda-cfe757ff670cf1a4-1.digest new file mode 100644 index 000000000..0f0c3ec84 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/once_instanced_usda-cfe757ff670cf1a4-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/once_instanced.usda"], invisible_overrides: Some(0) } +layer: $DIR/once_instanced.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 768, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:bb9aeaae01563c51 camera=768:bb9aeaae01563c51 shadow=768:bb9aeaae01563c51 indirect=768:bb9aeaae01563c51 +provenance geometry 0..1: /W/Placed +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13487480004083563611, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/opacity_usda-18ffcc13eb92677a-1.digest b/crates/crust-core/tests/data/import_baselines/opacity_usda-18ffcc13eb92677a-1.digest new file mode 100644 index 000000000..118140c95 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/opacity_usda-18ffcc13eb92677a-1.digest @@ -0,0 +1,47 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/opacity.usda"], invisible_overrides: Some(0) } +layer: $DIR/opacity.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "UsdPreviewSurface (textured)", cutout: true, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:ebba237fe098b958 camera=2:ebba237fe098b958 shadow=2:ebba237fe098b958 indirect=2:ebba237fe098b958 +geom 1: material #1 Signature { kind: "UsdPreviewSurface (textured)", cutout: true, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:39daafe3e8cfed58 camera=2:39daafe3e8cfed58 shadow=2:39daafe3e8cfed58 indirect=2:39daafe3e8cfed58 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9d35beb8f32f58b8 camera=2:9d35beb8f32f58b8 shadow=2:9d35beb8f32f58b8 indirect=2:9d35beb8f32f58b8 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: true, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02ff87c392969355 camera=2:02ff87c392969355 shadow=2:02ff87c392969355 indirect=2:02ff87c392969355 +geom 4: material #4 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:584690846f530915 camera=2:584690846f530915 shadow=2:584690846f530915 indirect=2:584690846f530915 +geom 5: material #5 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b7c5cd1ab1812038 camera=2:b7c5cd1ab1812038 shadow=2:b7c5cd1ab1812038 indirect=2:b7c5cd1ab1812038 +provenance material /W/Looks/Cutout: MaterialOrigin { slots: [3], displaced: false } +provenance material /W/Looks/Glass: MaterialOrigin { slots: [5], displaced: false } +provenance material /W/Looks/MaskedIn: MaterialOrigin { slots: [0], displaced: false } +provenance material /W/Looks/MaskedOut: MaterialOrigin { slots: [1], displaced: false } +provenance material /W/Looks/Opaque: MaterialOrigin { slots: [2], displaced: false } +provenance material /W/Looks/Textured: MaterialOrigin { slots: [4], displaced: false } +provenance geometry 0..1: /W/Geo/F +provenance geometry 1..2: /W/Geo/E +provenance geometry 2..3: /W/Geo/D +provenance geometry 3..4: /W/Geo/C +provenance geometry 4..5: /W/Geo/B +provenance geometry 5..6: /W/Geo/A +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4299106042884866949, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6101488999021108127, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3070782736434146653, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3224020731942780983, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17114642930453504041, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10030907131019489195, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 5 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-0f7c1eaf15ef6726-1.digest b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-0f7c1eaf15ef6726-1.digest new file mode 100644 index 000000000..77d99adc4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-0f7c1eaf15ef6726-1.digest @@ -0,0 +1,49 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 22.0), lower_left_corner: Vec3A(-16.200468, -8.067126, 0.9153805), horizontal: Vec3A(32.400936, -0.0, 0.0), vertical: Vec3A(0.0, 18.150679, -1.6500617), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.99589324, -0.09053575), lens_radius: 0.025, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4096, max_depth: 32, width: 1280, height: 720, region: PixelRect { x0: 0, y0: 0, x1: 1280, y1: 720 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [73.63848, 41.42165], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 100.0, focus_distance: 22.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/openpbr_showcase.usda"], invisible_overrides: Some(0) } +layer: $DIR/openpbr_showcase.usda +lights: 3 +light 0: area name Some("/World/Light2") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Light1") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 0, spheres: 10, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 10, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e298ba4cf1964243 camera=1:e298ba4cf1964243 shadow=1:e298ba4cf1964243 indirect=1:e298ba4cf1964243 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:761998a3d7ecc51a camera=1:761998a3d7ecc51a shadow=1:761998a3d7ecc51a indirect=1:761998a3d7ecc51a +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: true, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba47ef25e6123ada camera=1:ba47ef25e6123ada shadow=1:ba47ef25e6123ada indirect=1:ba47ef25e6123ada +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:85c643d66a540f15 camera=1:85c643d66a540f15 shadow=1:85c643d66a540f15 indirect=1:85c643d66a540f15 +geom 4: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a6bbcccef1f300c8 camera=1:a6bbcccef1f300c8 shadow=1:a6bbcccef1f300c8 indirect=1:a6bbcccef1f300c8 +geom 5: material #5 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 6: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2bc95f96a08720f8 camera=1:2bc95f96a08720f8 shadow=1:2bc95f96a08720f8 indirect=1:2bc95f96a08720f8 +geom 7: material #7 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e7167c14b4ae6595 camera=1:e7167c14b4ae6595 shadow=1:e7167c14b4ae6595 indirect=1:e7167c14b4ae6595 +geom 8: material #8 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:60a1f9c471bdf29a camera=1:60a1f9c471bdf29a shadow=1:60a1f9c471bdf29a indirect=1:60a1f9c471bdf29a +geom 9: material #9 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d216fc66bdebf473 camera=1:d216fc66bdebf473 shadow=1:d216fc66bdebf473 indirect=1:d216fc66bdebf473 +provenance material /World/Materials/chrome_metal: MaterialOrigin { slots: [8], displaced: false } +provenance material /World/Materials/green_glass_dispersion: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/red_car_paint: MaterialOrigin { slots: [6], displaced: false } +provenance material /World/Materials/red_plastic: MaterialOrigin { slots: [7], displaced: false } +provenance material /World/Materials/soap_bubble: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/velvet_cloth: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Materials/waxy_subsurface: MaterialOrigin { slots: [3], displaced: false } +provenance light /World/Light1: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Light2: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 2, geoms: 10..10 } +provenance geometry 0..1: /World/Light2 +provenance geometry 1..2: /World/Light1 +provenance geometry 2..3: /World/Scene/sphere_soap_bubble +provenance geometry 3..4: /World/Scene/sphere_subsurface +provenance geometry 4..5: /World/Scene/sphere_glass +provenance geometry 5..6: /World/Scene/sphere_velvet +provenance geometry 6..7: /World/Scene/sphere_red_car_paint +provenance geometry 7..8: /World/Scene/sphere_red_plastic +provenance geometry 8..9: /World/Scene/sphere_chrome +provenance geometry 9..10: /World/Scene/ground +provenance spheres: [2, 3, 4, 5, 6, 7, 8, 9] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-1.digest b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-1.digest new file mode 100644 index 000000000..0fe558ee6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-1.digest @@ -0,0 +1,50 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 22.0), lower_left_corner: Vec3A(-16.200468, -8.067126, 0.9153805), horizontal: Vec3A(32.400936, -0.0, 0.0), vertical: Vec3A(0.0, 18.150679, -1.6500617), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.99589324, -0.09053575), lens_radius: 0.025, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4096, max_depth: 32, width: 1280, height: 720, region: PixelRect { x0: 0, y0: 0, x1: 1280, y1: 720 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [73.63848, 41.42165], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 100.0, focus_distance: 22.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/openpbr_showcase.usda"], invisible_overrides: Some(0) } +layer: $DIR/openpbr_showcase.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 3 +light 0: area name Some("/World/Light2") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Light1") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 0, spheres: 10, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 10, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e298ba4cf1964243 camera=1:e298ba4cf1964243 shadow=1:e298ba4cf1964243 indirect=1:e298ba4cf1964243 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:761998a3d7ecc51a camera=1:761998a3d7ecc51a shadow=1:761998a3d7ecc51a indirect=1:761998a3d7ecc51a +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: true, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba47ef25e6123ada camera=1:ba47ef25e6123ada shadow=1:ba47ef25e6123ada indirect=1:ba47ef25e6123ada +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:85c643d66a540f15 camera=1:85c643d66a540f15 shadow=1:85c643d66a540f15 indirect=1:85c643d66a540f15 +geom 4: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a6bbcccef1f300c8 camera=1:a6bbcccef1f300c8 shadow=1:a6bbcccef1f300c8 indirect=1:a6bbcccef1f300c8 +geom 5: material #5 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 6: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2bc95f96a08720f8 camera=1:2bc95f96a08720f8 shadow=1:2bc95f96a08720f8 indirect=1:2bc95f96a08720f8 +geom 7: material #7 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e7167c14b4ae6595 camera=1:e7167c14b4ae6595 shadow=1:e7167c14b4ae6595 indirect=1:e7167c14b4ae6595 +geom 8: material #8 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:60a1f9c471bdf29a camera=1:60a1f9c471bdf29a shadow=1:60a1f9c471bdf29a indirect=1:60a1f9c471bdf29a +geom 9: material #9 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d216fc66bdebf473 camera=1:d216fc66bdebf473 shadow=1:d216fc66bdebf473 indirect=1:d216fc66bdebf473 +provenance material /World/Materials/chrome_metal: MaterialOrigin { slots: [8], displaced: false } +provenance material /World/Materials/green_glass_dispersion: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/red_car_paint: MaterialOrigin { slots: [6], displaced: false } +provenance material /World/Materials/red_plastic: MaterialOrigin { slots: [7], displaced: false } +provenance material /World/Materials/soap_bubble: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/velvet_cloth: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Materials/waxy_subsurface: MaterialOrigin { slots: [3], displaced: false } +provenance light /World/Light1: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Light2: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 2, geoms: 10..10 } +provenance geometry 0..1: /World/Light2 +provenance geometry 1..2: /World/Light1 +provenance geometry 2..3: /World/Scene/sphere_soap_bubble +provenance geometry 3..4: /World/Scene/sphere_subsurface +provenance geometry 4..5: /World/Scene/sphere_glass +provenance geometry 5..6: /World/Scene/sphere_velvet +provenance geometry 6..7: /World/Scene/sphere_red_car_paint +provenance geometry 7..8: /World/Scene/sphere_red_plastic +provenance geometry 8..9: /World/Scene/sphere_chrome +provenance geometry 9..10: /World/Scene/ground +provenance spheres: [2, 3, 4, 5, 6, 7, 8, 9] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-2.digest b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-2.digest new file mode 100644 index 000000000..0fe558ee6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-2.digest @@ -0,0 +1,50 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 22.0), lower_left_corner: Vec3A(-16.200468, -8.067126, 0.9153805), horizontal: Vec3A(32.400936, -0.0, 0.0), vertical: Vec3A(0.0, 18.150679, -1.6500617), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.99589324, -0.09053575), lens_radius: 0.025, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4096, max_depth: 32, width: 1280, height: 720, region: PixelRect { x0: 0, y0: 0, x1: 1280, y1: 720 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [73.63848, 41.42165], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 100.0, focus_distance: 22.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/openpbr_showcase.usda"], invisible_overrides: Some(0) } +layer: $DIR/openpbr_showcase.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 3 +light 0: area name Some("/World/Light2") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Light1") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 0, spheres: 10, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 10, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e298ba4cf1964243 camera=1:e298ba4cf1964243 shadow=1:e298ba4cf1964243 indirect=1:e298ba4cf1964243 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:761998a3d7ecc51a camera=1:761998a3d7ecc51a shadow=1:761998a3d7ecc51a indirect=1:761998a3d7ecc51a +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: true, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba47ef25e6123ada camera=1:ba47ef25e6123ada shadow=1:ba47ef25e6123ada indirect=1:ba47ef25e6123ada +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:85c643d66a540f15 camera=1:85c643d66a540f15 shadow=1:85c643d66a540f15 indirect=1:85c643d66a540f15 +geom 4: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a6bbcccef1f300c8 camera=1:a6bbcccef1f300c8 shadow=1:a6bbcccef1f300c8 indirect=1:a6bbcccef1f300c8 +geom 5: material #5 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 6: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2bc95f96a08720f8 camera=1:2bc95f96a08720f8 shadow=1:2bc95f96a08720f8 indirect=1:2bc95f96a08720f8 +geom 7: material #7 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e7167c14b4ae6595 camera=1:e7167c14b4ae6595 shadow=1:e7167c14b4ae6595 indirect=1:e7167c14b4ae6595 +geom 8: material #8 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:60a1f9c471bdf29a camera=1:60a1f9c471bdf29a shadow=1:60a1f9c471bdf29a indirect=1:60a1f9c471bdf29a +geom 9: material #9 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d216fc66bdebf473 camera=1:d216fc66bdebf473 shadow=1:d216fc66bdebf473 indirect=1:d216fc66bdebf473 +provenance material /World/Materials/chrome_metal: MaterialOrigin { slots: [8], displaced: false } +provenance material /World/Materials/green_glass_dispersion: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/red_car_paint: MaterialOrigin { slots: [6], displaced: false } +provenance material /World/Materials/red_plastic: MaterialOrigin { slots: [7], displaced: false } +provenance material /World/Materials/soap_bubble: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/velvet_cloth: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Materials/waxy_subsurface: MaterialOrigin { slots: [3], displaced: false } +provenance light /World/Light1: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Light2: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 2, geoms: 10..10 } +provenance geometry 0..1: /World/Light2 +provenance geometry 1..2: /World/Light1 +provenance geometry 2..3: /World/Scene/sphere_soap_bubble +provenance geometry 3..4: /World/Scene/sphere_subsurface +provenance geometry 4..5: /World/Scene/sphere_glass +provenance geometry 5..6: /World/Scene/sphere_velvet +provenance geometry 6..7: /World/Scene/sphere_red_car_paint +provenance geometry 7..8: /World/Scene/sphere_red_plastic +provenance geometry 8..9: /World/Scene/sphere_chrome +provenance geometry 9..10: /World/Scene/ground +provenance spheres: [2, 3, 4, 5, 6, 7, 8, 9] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-501b45e8f6131d21-1.digest b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-501b45e8f6131d21-1.digest new file mode 100644 index 000000000..0fe558ee6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-501b45e8f6131d21-1.digest @@ -0,0 +1,50 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.0, 22.0), lower_left_corner: Vec3A(-16.200468, -8.067126, 0.9153805), horizontal: Vec3A(32.400936, -0.0, 0.0), vertical: Vec3A(0.0, 18.150679, -1.6500617), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.99589324, -0.09053575), lens_radius: 0.025, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4096, max_depth: 32, width: 1280, height: 720, region: PixelRect { x0: 0, y0: 0, x1: 1280, y1: 720 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [73.63848, 41.42165], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 100.0, focus_distance: 22.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/openpbr_showcase.usda"], invisible_overrides: Some(0) } +layer: $DIR/openpbr_showcase.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 3 +light 0: area name Some("/World/Light2") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Light1") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 0, spheres: 10, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 10, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e298ba4cf1964243 camera=1:e298ba4cf1964243 shadow=1:e298ba4cf1964243 indirect=1:e298ba4cf1964243 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:761998a3d7ecc51a camera=1:761998a3d7ecc51a shadow=1:761998a3d7ecc51a indirect=1:761998a3d7ecc51a +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: true, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba47ef25e6123ada camera=1:ba47ef25e6123ada shadow=1:ba47ef25e6123ada indirect=1:ba47ef25e6123ada +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:85c643d66a540f15 camera=1:85c643d66a540f15 shadow=1:85c643d66a540f15 indirect=1:85c643d66a540f15 +geom 4: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a6bbcccef1f300c8 camera=1:a6bbcccef1f300c8 shadow=1:a6bbcccef1f300c8 indirect=1:a6bbcccef1f300c8 +geom 5: material #5 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 6: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2bc95f96a08720f8 camera=1:2bc95f96a08720f8 shadow=1:2bc95f96a08720f8 indirect=1:2bc95f96a08720f8 +geom 7: material #7 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e7167c14b4ae6595 camera=1:e7167c14b4ae6595 shadow=1:e7167c14b4ae6595 indirect=1:e7167c14b4ae6595 +geom 8: material #8 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:60a1f9c471bdf29a camera=1:60a1f9c471bdf29a shadow=1:60a1f9c471bdf29a indirect=1:60a1f9c471bdf29a +geom 9: material #9 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d216fc66bdebf473 camera=1:d216fc66bdebf473 shadow=1:d216fc66bdebf473 indirect=1:d216fc66bdebf473 +provenance material /World/Materials/chrome_metal: MaterialOrigin { slots: [8], displaced: false } +provenance material /World/Materials/green_glass_dispersion: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/red_car_paint: MaterialOrigin { slots: [6], displaced: false } +provenance material /World/Materials/red_plastic: MaterialOrigin { slots: [7], displaced: false } +provenance material /World/Materials/soap_bubble: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/velvet_cloth: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Materials/waxy_subsurface: MaterialOrigin { slots: [3], displaced: false } +provenance light /World/Light1: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Light2: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 2, geoms: 10..10 } +provenance geometry 0..1: /World/Light2 +provenance geometry 1..2: /World/Light1 +provenance geometry 2..3: /World/Scene/sphere_soap_bubble +provenance geometry 3..4: /World/Scene/sphere_subsurface +provenance geometry 4..5: /World/Scene/sphere_glass +provenance geometry 5..6: /World/Scene/sphere_velvet +provenance geometry 6..7: /World/Scene/sphere_red_car_paint +provenance geometry 7..8: /World/Scene/sphere_red_plastic +provenance geometry 8..9: /World/Scene/sphere_chrome +provenance geometry 9..10: /World/Scene/ground +provenance spheres: [2, 3, 4, 5, 6, 7, 8, 9] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/openpbr_usda-876563da4aa0a57a-1.digest b/crates/crust-core/tests/data/import_baselines/openpbr_usda-876563da4aa0a57a-1.digest new file mode 100644 index 000000000..d4739a027 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/openpbr_usda-876563da4aa0a57a-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/openpbr.usda"], invisible_overrides: Some(0) } +layer: $DIR/openpbr.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/other_lookdev_usda-31ecdc884f3fb603-1.digest b/crates/crust-core/tests/data/import_baselines/other_lookdev_usda-31ecdc884f3fb603-1.digest new file mode 100644 index 000000000..9aad77d5d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/other_lookdev_usda-31ecdc884f3fb603-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/other_lookdev.usda", "$DIR/other.usda"], invisible_overrides: Some(0) } +layer: $DIR/other.usda +layer: $DIR/other_lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/other_op_usda-7a2444b60f22a636-1.digest b/crates/crust-core/tests/data/import_baselines/other_op_usda-7a2444b60f22a636-1.digest new file mode 100644 index 000000000..a2e5d7def --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/other_op_usda-7a2444b60f22a636-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/other_op.usda"], invisible_overrides: Some(0) } +layer: $DIR/other_op.usda +warning: Warning { code: DisplacementUnevaluated, kind: Skipped, count: 1, prims: ["/World/Soil"], message: "Material /World/Soil: PxrDisplace.dispScalar is driven by /World/Soil/Blend (Some(\"PxrBlend\")), which crust does not evaluate — the surface is not displaced" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:1c1a4717f2bf9d55 camera=4:1c1a4717f2bf9d55 shadow=4:1c1a4717f2bf9d55 indirect=4:1c1a4717f2bf9d55 +provenance material /World/Soil: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quads +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18140786555293703923, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/overflow_usda-c7dbcb2b55d9a450-1.digest b/crates/crust-core/tests/data/import_baselines/overflow_usda-c7dbcb2b55d9a450-1.digest new file mode 100644 index 000000000..e60d6e505 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/overflow_usda-c7dbcb2b55d9a450-1.digest @@ -0,0 +1,202 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/overflow.usda"], invisible_overrides: Some(0) } +layer: $DIR/overflow.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +warning: Warning { code: LightLinkShadowLinkUnencodable, kind: Approximated, count: 2, prims: ["/World/L28", "/World/L29"], message: "/World/L28: collection:shadowLink cannot be encoded (2 occluder classes share crust's overflow bit and it includes only some) — shadowed by every occluder" } +lights: 31 +light 0: area name Some("/World/L0") lpe None pmf 0.032258064 shadow RayMask(4294967282) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/L1") lpe None pmf 0.032258064 shadow RayMask(4294967274) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/L2") lpe None pmf 0.032258064 shadow RayMask(4294967258) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/L3") lpe None pmf 0.032258064 shadow RayMask(4294967226) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 4: area name Some("/World/L4") lpe None pmf 0.032258064 shadow RayMask(4294967162) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 5: area name Some("/World/L5") lpe None pmf 0.032258064 shadow RayMask(4294967034) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 6: area name Some("/World/L6") lpe None pmf 0.032258064 shadow RayMask(4294966778) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 7: area name Some("/World/L7") lpe None pmf 0.032258064 shadow RayMask(4294966266) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 8: area name Some("/World/L8") lpe None pmf 0.032258064 shadow RayMask(4294965242) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 9: area name Some("/World/L9") lpe None pmf 0.032258064 shadow RayMask(4294963194) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 10: area name Some("/World/L10") lpe None pmf 0.032258064 shadow RayMask(4294959098) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 11: area name Some("/World/L11") lpe None pmf 0.032258064 shadow RayMask(4294950906) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 12: area name Some("/World/L12") lpe None pmf 0.032258064 shadow RayMask(4294934522) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 13: area name Some("/World/L13") lpe None pmf 0.032258064 shadow RayMask(4294901754) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 14: area name Some("/World/L14") lpe None pmf 0.032258064 shadow RayMask(4294836218) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 15: area name Some("/World/L15") lpe None pmf 0.032258064 shadow RayMask(4294705146) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 16: area name Some("/World/L16") lpe None pmf 0.032258064 shadow RayMask(4294443002) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 17: area name Some("/World/L17") lpe None pmf 0.032258064 shadow RayMask(4293918714) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 18: area name Some("/World/L18") lpe None pmf 0.032258064 shadow RayMask(4292870138) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 19: area name Some("/World/L19") lpe None pmf 0.032258064 shadow RayMask(4290772986) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 20: area name Some("/World/L20") lpe None pmf 0.032258064 shadow RayMask(4286578682) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 21: area name Some("/World/L21") lpe None pmf 0.032258064 shadow RayMask(4278190074) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 22: area name Some("/World/L22") lpe None pmf 0.032258064 shadow RayMask(4261412858) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 23: area name Some("/World/L23") lpe None pmf 0.032258064 shadow RayMask(4227858426) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 24: area name Some("/World/L24") lpe None pmf 0.032258064 shadow RayMask(4160749562) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 25: area name Some("/World/L25") lpe None pmf 0.032258064 shadow RayMask(4026531834) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 26: area name Some("/World/L26") lpe None pmf 0.032258064 shadow RayMask(3758096378) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 27: area name Some("/World/L27") lpe None pmf 0.032258064 shadow RayMask(3221225466) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 28: area name Some("/World/L28") lpe None pmf 0.032258064 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 29: area name Some("/World/L29") lpe None pmf 0.032258064 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 30: area name Some("/World/Free") lpe None pmf 0.032258064 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 61 geometries, PrimitiveBreakdown { triangles: 0, spheres: 61, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 61, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5dc853d99dbdd1f5 camera=1:5dc853d99dbdd1f5 shadow=0:cbf29ce484222325 indirect=1:5dc853d99dbdd1f5 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7fd943913c47476d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:7fd943913c47476d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:41af89000f14f1d5 camera=1:41af89000f14f1d5 shadow=0:cbf29ce484222325 indirect=1:41af89000f14f1d5 +geom 3: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2b322162aa7d3a4d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2b322162aa7d3a4d +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b766321c6a421f75 camera=1:b766321c6a421f75 shadow=0:cbf29ce484222325 indirect=1:b766321c6a421f75 +geom 5: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:48b006547ee755ed camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:48b006547ee755ed +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f79b9cd5e85cd295 camera=1:f79b9cd5e85cd295 shadow=0:cbf29ce484222325 indirect=1:f79b9cd5e85cd295 +geom 7: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:455b61b40e8f7b05 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:455b61b40e8f7b05 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a806aee015561275 camera=1:a806aee015561275 shadow=0:cbf29ce484222325 indirect=1:a806aee015561275 +geom 9: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a43c7a0b7ccf9165 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:a43c7a0b7ccf9165 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:86dbb4fc101d5155 camera=1:86dbb4fc101d5155 shadow=0:cbf29ce484222325 indirect=1:86dbb4fc101d5155 +geom 11: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c802485783b94e45 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c802485783b94e45 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:cb2f886d9f85dc6d camera=1:cb2f886d9f85dc6d shadow=0:cbf29ce484222325 indirect=1:cb2f886d9f85dc6d +geom 13: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d1c0aaf82ed5a9cd camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d1c0aaf82ed5a9cd +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:21da3990f66c9d4d camera=1:21da3990f66c9d4d shadow=0:cbf29ce484222325 indirect=1:21da3990f66c9d4d +geom 15: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d9c98d2b6ea6ae1d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d9c98d2b6ea6ae1d +geom 16: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8bcd169568266ced camera=1:8bcd169568266ced shadow=0:cbf29ce484222325 indirect=1:8bcd169568266ced +geom 17: material #9 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:4cd1629cbacc6bad camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:4cd1629cbacc6bad +geom 18: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2e637e728cf6f80d camera=1:2e637e728cf6f80d shadow=0:cbf29ce484222325 indirect=1:2e637e728cf6f80d +geom 19: material #10 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:732d4ebfd0292d5d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:732d4ebfd0292d5d +geom 20: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f014b5da84e09bed camera=1:f014b5da84e09bed shadow=0:cbf29ce484222325 indirect=1:f014b5da84e09bed +geom 21: material #11 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:066197ed2710c38d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:066197ed2710c38d +geom 22: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:4e4d6bcce34c50b1 camera=1:4e4d6bcce34c50b1 shadow=0:cbf29ce484222325 indirect=1:4e4d6bcce34c50b1 +geom 23: material #12 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0e003cea519b18a9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0e003cea519b18a9 +geom 24: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:679dc81198e23bb9 camera=1:679dc81198e23bb9 shadow=0:cbf29ce484222325 indirect=1:679dc81198e23bb9 +geom 25: material #13 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6bf177db96f63741 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:6bf177db96f63741 +geom 26: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:99f90281b6d667e1 camera=1:99f90281b6d667e1 shadow=0:cbf29ce484222325 indirect=1:99f90281b6d667e1 +geom 27: material #14 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:4ca17e2d9b105bd9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:4ca17e2d9b105bd9 +geom 28: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2f0ca5390a665599 camera=1:2f0ca5390a665599 shadow=0:cbf29ce484222325 indirect=1:2f0ca5390a665599 +geom 29: material #15 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0b6402fef2a02f21 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:0b6402fef2a02f21 +geom 30: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9c74f34ec4e2eb31 camera=1:9c74f34ec4e2eb31 shadow=0:cbf29ce484222325 indirect=1:9c74f34ec4e2eb31 +geom 31: material #16 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:4a71e473076398a9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:4a71e473076398a9 +geom 32: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8343ab8304674fb9 camera=1:8343ab8304674fb9 shadow=0:cbf29ce484222325 indirect=1:8343ab8304674fb9 +geom 33: material #17 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b05362e02a44d841 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b05362e02a44d841 +geom 34: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:428723332f2d7a41 camera=1:428723332f2d7a41 shadow=0:cbf29ce484222325 indirect=1:428723332f2d7a41 +geom 35: material #18 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5dbd8ce486269e39 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5dbd8ce486269e39 +geom 36: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:62f4520e66d7d399 camera=1:62f4520e66d7d399 shadow=0:cbf29ce484222325 indirect=1:62f4520e66d7d399 +geom 37: material #19 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5b6860d83f116fa1 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5b6860d83f116fa1 +geom 38: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1598df00f7985771 camera=1:1598df00f7985771 shadow=0:cbf29ce484222325 indirect=1:1598df00f7985771 +geom 39: material #20 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:894f3cfd91c21d69 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:894f3cfd91c21d69 +geom 40: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca403f60f5cb04b9 camera=1:ca403f60f5cb04b9 shadow=0:cbf29ce484222325 indirect=1:ca403f60f5cb04b9 +geom 41: material #21 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:138d2318ab847041 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:138d2318ab847041 +geom 42: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5f4e89a345b78f21 camera=1:5f4e89a345b78f21 shadow=0:cbf29ce484222325 indirect=1:5f4e89a345b78f21 +geom 43: material #22 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:4ec44778cf6bb919 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:4ec44778cf6bb919 +geom 44: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:86d34934dbe3a60b camera=1:86d34934dbe3a60b shadow=0:cbf29ce484222325 indirect=1:86d34934dbe3a60b +geom 45: material #23 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:45684b0e504b8f1b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:45684b0e504b8f1b +geom 46: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:35afdeee2393e007 camera=1:35afdeee2393e007 shadow=0:cbf29ce484222325 indirect=1:35afdeee2393e007 +geom 47: material #24 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9bdebf6cdfa62577 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:9bdebf6cdfa62577 +geom 48: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:8b430b492dbd44e3 camera=1:8b430b492dbd44e3 shadow=0:cbf29ce484222325 indirect=1:8b430b492dbd44e3 +geom 49: material #25 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:da0e6b17a7debf53 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:da0e6b17a7debf53 +geom 50: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b0445e12964a7327 camera=1:b0445e12964a7327 shadow=0:cbf29ce484222325 indirect=1:b0445e12964a7327 +geom 51: material #26 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5fb44fd5323d5c17 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:5fb44fd5323d5c17 +geom 52: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:302f2b4fb64029eb camera=1:302f2b4fb64029eb shadow=0:cbf29ce484222325 indirect=1:302f2b4fb64029eb +geom 53: material #27 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:aff0206150028ceb camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:aff0206150028ceb +geom 54: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ba0035dd2ddf0937 camera=1:ba0035dd2ddf0937 shadow=0:cbf29ce484222325 indirect=1:ba0035dd2ddf0937 +geom 55: material #28 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b98593fe1d73f937 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:b98593fe1d73f937 +geom 56: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bdce78bd12b1ce73 camera=1:bdce78bd12b1ce73 shadow=0:cbf29ce484222325 indirect=1:bdce78bd12b1ce73 +geom 57: material #29 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c1d433cb89807cd3 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:c1d433cb89807cd3 +geom 58: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:263d9d8e4c138057 camera=1:263d9d8e4c138057 shadow=0:cbf29ce484222325 indirect=1:263d9d8e4c138057 +geom 59: material #30 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f565a0a4d23dc1b7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:f565a0a4d23dc1b7 +geom 60: material #31 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:4e54bfce8bcfbcfa camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:4e54bfce8bcfbcfa +provenance light /World/Free: LightOrigin { index: 30, geoms: 60..61 } +provenance light /World/L0: LightOrigin { index: 0, geoms: 1..2 } +provenance light /World/L1: LightOrigin { index: 1, geoms: 3..4 } +provenance light /World/L10: LightOrigin { index: 10, geoms: 21..22 } +provenance light /World/L11: LightOrigin { index: 11, geoms: 23..24 } +provenance light /World/L12: LightOrigin { index: 12, geoms: 25..26 } +provenance light /World/L13: LightOrigin { index: 13, geoms: 27..28 } +provenance light /World/L14: LightOrigin { index: 14, geoms: 29..30 } +provenance light /World/L15: LightOrigin { index: 15, geoms: 31..32 } +provenance light /World/L16: LightOrigin { index: 16, geoms: 33..34 } +provenance light /World/L17: LightOrigin { index: 17, geoms: 35..36 } +provenance light /World/L18: LightOrigin { index: 18, geoms: 37..38 } +provenance light /World/L19: LightOrigin { index: 19, geoms: 39..40 } +provenance light /World/L2: LightOrigin { index: 2, geoms: 5..6 } +provenance light /World/L20: LightOrigin { index: 20, geoms: 41..42 } +provenance light /World/L21: LightOrigin { index: 21, geoms: 43..44 } +provenance light /World/L22: LightOrigin { index: 22, geoms: 45..46 } +provenance light /World/L23: LightOrigin { index: 23, geoms: 47..48 } +provenance light /World/L24: LightOrigin { index: 24, geoms: 49..50 } +provenance light /World/L25: LightOrigin { index: 25, geoms: 51..52 } +provenance light /World/L26: LightOrigin { index: 26, geoms: 53..54 } +provenance light /World/L27: LightOrigin { index: 27, geoms: 55..56 } +provenance light /World/L28: LightOrigin { index: 28, geoms: 57..58 } +provenance light /World/L29: LightOrigin { index: 29, geoms: 59..60 } +provenance light /World/L3: LightOrigin { index: 3, geoms: 7..8 } +provenance light /World/L4: LightOrigin { index: 4, geoms: 9..10 } +provenance light /World/L5: LightOrigin { index: 5, geoms: 11..12 } +provenance light /World/L6: LightOrigin { index: 6, geoms: 13..14 } +provenance light /World/L7: LightOrigin { index: 7, geoms: 15..16 } +provenance light /World/L8: LightOrigin { index: 8, geoms: 17..18 } +provenance light /World/L9: LightOrigin { index: 9, geoms: 19..20 } +provenance geometry 0..1: /World/O0 +provenance geometry 1..2: /World/L0 +provenance geometry 2..3: /World/O1 +provenance geometry 3..4: /World/L1 +provenance geometry 4..5: /World/O2 +provenance geometry 5..6: /World/L2 +provenance geometry 6..7: /World/O3 +provenance geometry 7..8: /World/L3 +provenance geometry 8..9: /World/O4 +provenance geometry 9..10: /World/L4 +provenance geometry 10..11: /World/O5 +provenance geometry 11..12: /World/L5 +provenance geometry 12..13: /World/O6 +provenance geometry 13..14: /World/L6 +provenance geometry 14..15: /World/O7 +provenance geometry 15..16: /World/L7 +provenance geometry 16..17: /World/O8 +provenance geometry 17..18: /World/L8 +provenance geometry 18..19: /World/O9 +provenance geometry 19..20: /World/L9 +provenance geometry 20..21: /World/O10 +provenance geometry 21..22: /World/L10 +provenance geometry 22..23: /World/O11 +provenance geometry 23..24: /World/L11 +provenance geometry 24..25: /World/O12 +provenance geometry 25..26: /World/L12 +provenance geometry 26..27: /World/O13 +provenance geometry 27..28: /World/L13 +provenance geometry 28..29: /World/O14 +provenance geometry 29..30: /World/L14 +provenance geometry 30..31: /World/O15 +provenance geometry 31..32: /World/L15 +provenance geometry 32..33: /World/O16 +provenance geometry 33..34: /World/L16 +provenance geometry 34..35: /World/O17 +provenance geometry 35..36: /World/L17 +provenance geometry 36..37: /World/O18 +provenance geometry 37..38: /World/L18 +provenance geometry 38..39: /World/O19 +provenance geometry 39..40: /World/L19 +provenance geometry 40..41: /World/O20 +provenance geometry 41..42: /World/L20 +provenance geometry 42..43: /World/O21 +provenance geometry 43..44: /World/L21 +provenance geometry 44..45: /World/O22 +provenance geometry 45..46: /World/L22 +provenance geometry 46..47: /World/O23 +provenance geometry 47..48: /World/L23 +provenance geometry 48..49: /World/O24 +provenance geometry 49..50: /World/L24 +provenance geometry 50..51: /World/O25 +provenance geometry 51..52: /World/L25 +provenance geometry 52..53: /World/O26 +provenance geometry 53..54: /World/L26 +provenance geometry 54..55: /World/O27 +provenance geometry 55..56: /World/L27 +provenance geometry 56..57: /World/O28 +provenance geometry 57..58: /World/L28 +provenance geometry 58..59: /World/O29 +provenance geometry 59..60: /World/L29 +provenance geometry 60..61: /World/Free +provenance spheres: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/override_usda-b67a66c0201ba59a-1.digest b/crates/crust-core/tests/data/import_baselines/override_usda-b67a66c0201ba59a-1.digest new file mode 100644 index 000000000..96468d971 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/override_usda-b67a66c0201ba59a-1.digest @@ -0,0 +1,36 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-639.99176, -358.0082, -355.9867), horizontal: Vec3A(1279.9984, 0.0, 0.0), vertical: Vec3A(0.0, 719.9991, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 31.750044, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.02, focus_distance: 360.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/override.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(1) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/override.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 22, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 782, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/overrides_usda-e08388bc2f33304d-1.digest b/crates/crust-core/tests/data/import_baselines/overrides_usda-e08388bc2f33304d-1.digest new file mode 100644 index 000000000..fc46cc533 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/overrides_usda-e08388bc2f33304d-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 5.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -5.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 32, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/a", name: "a.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/overrides.usda"], invisible_overrides: Some(0) } +layer: $DIR/overrides.usda +warning: Warning { code: ProductCameraMismatch, kind: Skipped, count: 2, prims: ["/Render/b", "/Render/c"], message: "/Render/b: renders through /World/cam at 64x36, but the render is /World/cam at 32x18 (the first product's); crust renders one camera and resolution per stage, so no file is written for it" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/partial_link_usda-0b6b5eacc86557dc-1.digest b/crates/crust-core/tests/data/import_baselines/partial_link_usda-0b6b5eacc86557dc-1.digest new file mode 100644 index 000000000..d949ed036 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/partial_link_usda-0b6b5eacc86557dc-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/partial_link.usda"], invisible_overrides: Some(0) } +layer: $DIR/partial_link.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance light /World/Sky: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/B +provenance geometry 1..2: /World/A +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/pass_payload_usda-08d0e4051511c08a-1.digest b/crates/crust-core/tests/data/import_baselines/pass_payload_usda-08d0e4051511c08a-1.digest new file mode 100644 index 000000000..9b6b7c939 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pass_payload_usda-08d0e4051511c08a-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/fromPayload", holdouts: 3, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/pass_payload.usda"], invisible_overrides: Some(0) } +layer: $DIR/matte_payload.usda +layer: $DIR/pass_payload.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 0, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d51ecb642f0c8e15 camera=1:d51ecb642f0c8e15 shadow=1:d51ecb642f0c8e15 indirect=1:d51ecb642f0c8e15 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance geometry 0..1: /World/Prop2 +provenance geometry 1..2: /World/Prop1 +provenance geometry 2..3: /World/Prop0 +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/fromPayload"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-0b80861de0309489-1.digest b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-0b80861de0309489-1.digest new file mode 100644 index 000000000..ca438db60 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-0b80861de0309489-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/props", name: "props.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/charDome", holdouts: 3, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/passes_dome_twice.usda"], invisible_overrides: Some(0) } +layer: $DIR/passes_dome_twice.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/charDome"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-bdae79d96585e6fd-1.digest b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-bdae79d96585e6fd-1.digest new file mode 100644 index 000000000..cd3e1f429 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-bdae79d96585e6fd-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/props", name: "props.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/dome", holdouts: 4, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/passes_dome_twice.usda"], invisible_overrides: Some(0) } +layer: $DIR/passes_dome_twice.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/dome"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-c05e0c1783414e94-1.digest b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-c05e0c1783414e94-1.digest new file mode 100644 index 000000000..cfb293ba1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-c05e0c1783414e94-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/props", name: "props.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/props", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/passes_dome_twice.usda"], invisible_overrides: Some(0) } +layer: $DIR/passes_dome_twice.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/props"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-e9d62fba57fc58f7-1.digest b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-e9d62fba57fc58f7-1.digest new file mode 100644 index 000000000..f0ab600d0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-e9d62fba57fc58f7-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/props", name: "props.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/passes_dome_twice.usda"], invisible_overrides: Some(0) } +layer: $DIR/passes_dome_twice.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-1.digest b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-1.digest new file mode 100644 index 000000000..f0998465e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/props", name: "props.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/propsBack", holdouts: 0, camera_hidden: 1 }) +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/passes_hidden_in_back.usda"], invisible_overrides: Some(0) } +layer: $DIR/passes_hidden_in_back.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=0:cbf29ce484222325 shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/propsBack"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-2.digest b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-2.digest new file mode 100644 index 000000000..f0998465e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-2.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/props", name: "props.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/propsBack", holdouts: 0, camera_hidden: 1 }) +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/passes_hidden_in_back.usda"], invisible_overrides: Some(0) } +layer: $DIR/passes_hidden_in_back.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=0:cbf29ce484222325 shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/propsBack"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-1.digest b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-1.digest new file mode 100644 index 000000000..29e0f2e1c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/props", name: "props.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/passes_hidden_in_back.usda"], invisible_overrides: Some(0) } +layer: $DIR/passes_hidden_in_back.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-2.digest b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-2.digest new file mode 100644 index 000000000..29e0f2e1c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-2.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/props", name: "props.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/passes_hidden_in_back.usda"], invisible_overrides: Some(0) } +layer: $DIR/passes_hidden_in_back.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-1.digest b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-1.digest new file mode 100644 index 000000000..6f62f7938 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/charSettings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/char", name: "char.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/char", holdouts: 3, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/passes_hidden_in_back.usda"], invisible_overrides: Some(0) } +layer: $DIR/passes_hidden_in_back.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-2.digest b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-2.digest new file mode 100644 index 000000000..6f62f7938 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-2.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/charSettings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/char", name: "char.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/char", holdouts: 3, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/passes_hidden_in_back.usda"], invisible_overrides: Some(0) } +layer: $DIR/passes_hidden_in_back.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/passes_usda-562a5b3a04949a47-1.digest b/crates/crust-core/tests/data/import_baselines/passes_usda-562a5b3a04949a47-1.digest new file mode 100644 index 000000000..f13f0eda2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_usda-562a5b3a04949a47-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/look_out", name: "look_out", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/look"], display_filters: [], display: "beauty" }) } +pass: Some(PassSummary { path: "/Render/a", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/passes.usda"], invisible_overrides: Some(0) } +layer: $DIR/passes.usda +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/a"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/passes_usda-aaa6ef1b16e7d6b6-1.digest b/crates/crust-core/tests/data/import_baselines/passes_usda-aaa6ef1b16e7d6b6-1.digest new file mode 100644 index 000000000..e7db9292e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_usda-aaa6ef1b16e7d6b6-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/other") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: [], display_filters: ["/Render/soft"], display: "beauty" }) } +pass: Some(PassSummary { path: "/Render/b", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/passes.usda"], invisible_overrides: Some(0) } +layer: $DIR/passes.usda +warning: Warning { code: PrecompUnknownFilter, kind: Skipped, count: 1, prims: ["/Render/look_out"], message: "/Render/look_out: crust:filter targets /Render/look, which is in neither crust:sampleFilters nor crust:displayFilters; no channel written" } +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/b"), keep_geometry: false }, render_settings: Some("/Render/other"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/payload_camera_usda-ff33ccc1b50862a6-1.digest b/crates/crust-core/tests/data/import_baselines/payload_camera_usda-ff33ccc1b50862a6-1.digest new file mode 100644 index 000000000..67fbd7cbb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/payload_camera_usda-ff33ccc1b50862a6-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 5.0), lower_left_corner: Vec3A(-2.29362, -1.5290802, -5.0), horizontal: Vec3A(4.58724, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/payload_camera.usda"], invisible_overrides: Some(0) } +layer: $DIR/payload_camera.usda +layer: $DIR/payload_camera_payload.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/payload_links_usda-f941f0e5247354e6-1.digest b/crates/crust-core/tests/data/import_baselines/payload_links_usda-f941f0e5247354e6-1.digest new file mode 100644 index 000000000..1be7882ae --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/payload_links_usda-f941f0e5247354e6-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 6.0, 0.0), lower_left_corner: Vec3A(-5.142858, -4.0, 5.142858), horizontal: Vec3A(10.285716, -0.0, 0.0), vertical: Vec3A(0.0, 2.2838878e-15, -10.285716), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 2.220446e-16, -1.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 1, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [36.0, 36.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/payload_links.usda"], invisible_overrides: Some(0) } +layer: $DIR/payload_links.usda +layer: $DIR/payload_links_layer.usda +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Hero +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/photometric_usda-644b1d1ebbe4cb72-1.digest b/crates/crust-core/tests/data/import_baselines/photometric_usda-644b1d1ebbe4cb72-1.digest new file mode 100644 index 000000000..2351e1961 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/photometric_usda-644b1d1ebbe4cb72-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.5 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/photometric.usda"], invisible_overrides: Some(0) } +layer: $DIR/photometric.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/pinhole_unauthored_usda-ecde60dead7180c2-1.digest b/crates/crust-core/tests/data/import_baselines/pinhole_unauthored_usda-ecde60dead7180c2-1.digest new file mode 100644 index 000000000..b34928a2f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pinhole_unauthored_usda-ecde60dead7180c2-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/pinhole_unauthored.usda"], invisible_overrides: Some(0) } +layer: $DIR/pinhole_unauthored.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/pinhole_zero_usda-9f676d1852dc7168-1.digest b/crates/crust-core/tests/data/import_baselines/pinhole_zero_usda-9f676d1852dc7168-1.digest new file mode 100644 index 000000000..c056990f9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pinhole_zero_usda-9f676d1852dc7168-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/pinhole_zero.usda"], invisible_overrides: Some(0) } +layer: $DIR/pinhole_zero.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/pivot_stack_usda-eabcdb11552ea0a9-1.digest b/crates/crust-core/tests/data/import_baselines/pivot_stack_usda-eabcdb11552ea0a9-1.digest new file mode 100644 index 000000000..4245b481b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pivot_stack_usda-eabcdb11552ea0a9-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/pivot_stack.usda"], invisible_overrides: Some(0) } +layer: $DIR/pivot_stack.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 1, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 2.0 motion [] pieces all=1:211f1bd4edf051b5 camera=1:211f1bd4edf051b5 shadow=1:211f1bd4edf051b5 indirect=1:211f1bd4edf051b5 +provenance geometry 0..1: /M +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8649346730649907223, n_points: 3, n_indices: 3, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/pixel_filter_usda-c618794e70f5ffe3-1.digest b/crates/crust-core/tests/data/import_baselines/pixel_filter_usda-c618794e70f5ffe3-1.digest new file mode 100644 index 000000000..663ad141d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pixel_filter_usda-c618794e70f5ffe3-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 64, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 64 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Mitchell { radius: 1.25 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/pixel_filter.usda"], invisible_overrides: Some(0) } +layer: $DIR/pixel_filter.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance geometry 0..1: /W/s +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/place_once_usda-66a0c16b42b4539e-1.digest b/crates/crust-core/tests/data/import_baselines/place_once_usda-66a0c16b42b4539e-1.digest new file mode 100644 index 000000000..2decc32ec --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/place_once_usda-66a0c16b42b4539e-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/place_once.usda"], invisible_overrides: Some(0) } +layer: $DIR/place_once.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32f1a52c797bfee5 camera=2:32f1a52c797bfee5 shadow=2:32f1a52c797bfee5 indirect=2:32f1a52c797bfee5 +provenance geometry 0..1: /World/A +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/place_twice_usda-c4ce4deb59d3727f-1.digest b/crates/crust-core/tests/data/import_baselines/place_twice_usda-c4ce4deb59d3727f-1.digest new file mode 100644 index 000000000..5fd51caf0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/place_twice_usda-c4ce4deb59d3727f-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/place_twice.usda"], invisible_overrides: Some(0) } +layer: $DIR/place_twice.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:65007873fa9d3575 camera=2:65007873fa9d3575 shadow=2:65007873fa9d3575 indirect=2:65007873fa9d3575 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fea6097467ee7e75 camera=2:fea6097467ee7e75 shadow=2:fea6097467ee7e75 indirect=2:fea6097467ee7e75 +provenance geometry 0..1: /World/B +provenance geometry 1..2: /World/A +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-000d21c7a8ef61e5-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-000d21c7a8ef61e5-1.digest new file mode 100644 index 000000000..36a15a1ec --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-000d21c7a8ef61e5-1.digest @@ -0,0 +1,582 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/stone_a.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 515 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 506 } top level, PrimitiveBreakdown { triangles: 190, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 506 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9198966 motion [] pieces all=12:8f86cf4d3de0a4be camera=12:8f86cf4d3de0a4be shadow=12:8f86cf4d3de0a4be indirect=12:8f86cf4d3de0a4be +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0305899 motion [] pieces all=12:e66bb53a75208231 camera=12:e66bb53a75208231 shadow=12:e66bb53a75208231 indirect=12:e66bb53a75208231 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80761653 motion [] pieces all=12:cafe08f8ed490f8b camera=12:cafe08f8ed490f8b shadow=12:cafe08f8ed490f8b indirect=12:cafe08f8ed490f8b +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1970719 motion [] pieces all=12:c342eb1ab5252c81 camera=12:c342eb1ab5252c81 shadow=12:c342eb1ab5252c81 indirect=12:c342eb1ab5252c81 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.963177 motion [] pieces all=12:42d7c5618530e165 camera=12:42d7c5618530e165 shadow=12:42d7c5618530e165 indirect=12:42d7c5618530e165 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0862687 motion [] pieces all=12:c72bf19ac3a432ba camera=12:c72bf19ac3a432ba shadow=12:c72bf19ac3a432ba indirect=12:c72bf19ac3a432ba +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.86197156 motion [] pieces all=12:ef9c13525501136f camera=12:ef9c13525501136f shadow=12:ef9c13525501136f indirect=12:ef9c13525501136f +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1224174 motion [] pieces all=12:9383d6e069c61393 camera=12:9383d6e069c61393 shadow=12:9383d6e069c61393 indirect=12:9383d6e069c61393 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93918896 motion [] pieces all=12:0c34fb3dc833bbda camera=12:0c34fb3dc833bbda shadow=12:0c34fb3dc833bbda indirect=12:0c34fb3dc833bbda +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0004358 motion [] pieces all=12:9b3f847c0cb0cd92 camera=12:9b3f847c0cb0cd92 shadow=12:9b3f847c0cb0cd92 indirect=12:9b3f847c0cb0cd92 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8467555 motion [] pieces all=12:3546692626167615 camera=12:3546692626167615 shadow=12:3546692626167615 indirect=12:3546692626167615 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1551725 motion [] pieces all=12:7b3cf94423c5a334 camera=12:7b3cf94423c5a334 shadow=12:7b3cf94423c5a334 indirect=12:7b3cf94423c5a334 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1497699 motion [] pieces all=12:22c0716ae2394a24 camera=12:22c0716ae2394a24 shadow=12:22c0716ae2394a24 indirect=12:22c0716ae2394a24 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8964347 motion [] pieces all=12:acb6db608bf7d336 camera=12:acb6db608bf7d336 shadow=12:acb6db608bf7d336 indirect=12:acb6db608bf7d336 +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99409664 motion [] pieces all=12:80184ce5a0f6ff90 camera=12:80184ce5a0f6ff90 shadow=12:80184ce5a0f6ff90 indirect=12:80184ce5a0f6ff90 +geom 15: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0602818 motion [] pieces all=12:9077d05e272e462e camera=12:9077d05e272e462e shadow=12:9077d05e272e462e indirect=12:9077d05e272e462e +geom 16: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8165746 motion [] pieces all=12:c7798492ed81ead2 camera=12:c7798492ed81ead2 shadow=12:c7798492ed81ead2 indirect=12:c7798492ed81ead2 +geom 17: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.185862 motion [] pieces all=12:76ef11ab58b881cf camera=12:76ef11ab58b881cf shadow=12:76ef11ab58b881cf indirect=12:76ef11ab58b881cf +geom 18: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90825385 motion [] pieces all=12:b11c8059a4f78828 camera=12:b11c8059a4f78828 shadow=12:b11c8059a4f78828 indirect=12:b11c8059a4f78828 +geom 19: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0466157 motion [] pieces all=12:4c78b606d82fde81 camera=12:4c78b606d82fde81 shadow=12:4c78b606d82fde81 indirect=12:4c78b606d82fde81 +geom 20: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8676628 motion [] pieces all=12:e4d56e9d67a32804 camera=12:e4d56e9d67a32804 shadow=12:e4d56e9d67a32804 indirect=12:e4d56e9d67a32804 +geom 21: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1077697 motion [] pieces all=12:5edb35b517dae0e7 camera=12:5edb35b517dae0e7 shadow=12:5edb35b517dae0e7 indirect=12:5edb35b517dae0e7 +geom 22: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9589491 motion [] pieces all=12:97d6c586e6e2dc49 camera=12:97d6c586e6e2dc49 shadow=12:97d6c586e6e2dc49 indirect=12:97d6c586e6e2dc49 +geom 23: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0986547 motion [] pieces all=12:7f540302e5545003 camera=12:7f540302e5545003 shadow=12:7f540302e5545003 indirect=12:7f540302e5545003 +geom 24: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0194517 motion [] pieces all=12:16ec68731c43f142 camera=12:16ec68731c43f142 shadow=12:16ec68731c43f142 indirect=12:16ec68731c43f142 +geom 25: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9282847 motion [] pieces all=12:14f614e8ebe0dcf8 camera=12:14f614e8ebe0dcf8 shadow=12:14f614e8ebe0dcf8 indirect=12:14f614e8ebe0dcf8 +geom 26: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83393276 motion [] pieces all=12:a7af304c99144724 camera=12:a7af304c99144724 shadow=12:a7af304c99144724 indirect=12:a7af304c99144724 +geom 27: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1724943 motion [] pieces all=12:fbe48c9886ef4dfd camera=12:fbe48c9886ef4dfd shadow=12:fbe48c9886ef4dfd indirect=12:fbe48c9886ef4dfd +geom 28: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1332576 motion [] pieces all=12:33e287034dcdf96e camera=12:33e287034dcdf96e shadow=12:33e287034dcdf96e indirect=12:33e287034dcdf96e +geom 29: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88563997 motion [] pieces all=12:cd385fe41f937705 camera=12:cd385fe41f937705 shadow=12:cd385fe41f937705 indirect=12:cd385fe41f937705 +geom 30: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0721581 motion [] pieces all=12:6dbbb099a165d649 camera=12:6dbbb099a165d649 shadow=12:6dbbb099a165d649 indirect=12:6dbbb099a165d649 +geom 31: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9777899 motion [] pieces all=12:fc13243eae506891 camera=12:fc13243eae506891 shadow=12:fc13243eae506891 indirect=12:fc13243eae506891 +geom 32: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0129611 motion [] pieces all=12:491466e0fc3a4669 camera=12:491466e0fc3a4669 shadow=12:491466e0fc3a4669 indirect=12:491466e0fc3a4669 +geom 33: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9323666 motion [] pieces all=12:d941508ae063fc80 camera=12:d941508ae063fc80 shadow=12:d941508ae063fc80 indirect=12:d941508ae063fc80 +geom 34: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1642841 motion [] pieces all=12:f8b0c715f45040ce camera=12:f8b0c715f45040ce shadow=12:f8b0c715f45040ce indirect=12:f8b0c715f45040ce +geom 35: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8258158 motion [] pieces all=12:d8a2810400964e69 camera=12:d8a2810400964e69 shadow=12:d8a2810400964e69 indirect=12:d8a2810400964e69 +geom 36: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9815157 motion [] pieces all=12:7e7abb0d54e97e3a camera=12:7e7abb0d54e97e3a shadow=12:7e7abb0d54e97e3a indirect=12:7e7abb0d54e97e3a +geom 37: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0684702 motion [] pieces all=12:5fba33859532d38c camera=12:5fba33859532d38c shadow=12:5fba33859532d38c indirect=12:5fba33859532d38c +geom 38: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8804485 motion [] pieces all=12:5de3ec134d858a13 camera=12:5de3ec134d858a13 shadow=12:5de3ec134d858a13 indirect=12:5de3ec134d858a13 +geom 39: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1292882 motion [] pieces all=12:1d6e4d2d51024d6f camera=12:1d6e4d2d51024d6f shadow=12:1d6e4d2d51024d6f indirect=12:1d6e4d2d51024d6f +geom 40: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0904281 motion [] pieces all=12:2c7d445b7cbbeb5a camera=12:2c7d445b7cbbeb5a shadow=12:2c7d445b7cbbeb5a indirect=12:2c7d445b7cbbeb5a +geom 41: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95109177 motion [] pieces all=12:f4e55998fda1349a camera=12:f4e55998fda1349a shadow=12:f4e55998fda1349a indirect=12:f4e55998fda1349a +geom 42: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8707162 motion [] pieces all=12:dc27b2c1768e0377 camera=12:dc27b2c1768e0377 shadow=12:dc27b2c1768e0377 indirect=12:dc27b2c1768e0377 +geom 43: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1031078 motion [] pieces all=12:35c80535cbf1f2fd camera=12:35c80535cbf1f2fd shadow=12:35c80535cbf1f2fd indirect=12:35c80535cbf1f2fd +geom 44: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0388685 motion [] pieces all=12:886378b76ed5aca8 camera=12:886378b76ed5aca8 shadow=12:886378b76ed5aca8 indirect=12:886378b76ed5aca8 +geom 45: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.901714 motion [] pieces all=12:751cf54edd7dfdc5 camera=12:751cf54edd7dfdc5 shadow=12:751cf54edd7dfdc5 indirect=12:751cf54edd7dfdc5 +geom 46: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8202469 motion [] pieces all=12:960506265eecdbff camera=12:960506265eecdbff shadow=12:960506265eecdbff indirect=12:960506265eecdbff +geom 47: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1797804 motion [] pieces all=12:b2eb8798a10d3740 camera=12:b2eb8798a10d3740 shadow=12:b2eb8798a10d3740 indirect=12:b2eb8798a10d3740 +geom 48: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0557002 motion [] pieces all=12:ffdd72877d5a8ed8 camera=12:ffdd72877d5a8ed8 shadow=12:ffdd72877d5a8ed8 indirect=12:ffdd72877d5a8ed8 +geom 49: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99147755 motion [] pieces all=12:2ee3aa5a2800f1f9 camera=12:2ee3aa5a2800f1f9 shadow=12:2ee3aa5a2800f1f9 indirect=12:2ee3aa5a2800f1f9 +geom 50: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.889924 motion [] pieces all=12:967e26b3c8259c3b camera=12:967e26b3c8259c3b shadow=12:967e26b3c8259c3b indirect=12:967e26b3c8259c3b +geom 51: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1376337 motion [] pieces all=12:1ec7654e4990b3a5 camera=12:1ec7654e4990b3a5 shadow=12:1ec7654e4990b3a5 indirect=12:1ec7654e4990b3a5 +geom 52: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1620266 motion [] pieces all=12:5a857240f17c6c96 camera=12:5a857240f17c6c96 shadow=12:5a857240f17c6c96 indirect=12:5a857240f17c6c96 +geom 53: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8375265 motion [] pieces all=12:3e3a69032ccae095 camera=12:3e3a69032ccae095 shadow=12:3e3a69032ccae095 indirect=12:3e3a69032ccae095 +geom 54: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0117956 motion [] pieces all=12:bcc5376d7659c27b camera=12:bcc5376d7659c27b shadow=12:bcc5376d7659c27b indirect=12:bcc5376d7659c27b +geom 55: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9484714 motion [] pieces all=12:30b23a9815d4ca0c camera=12:30b23a9815d4ca0c shadow=12:30b23a9815d4ca0c indirect=12:30b23a9815d4ca0c +geom 56: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1933364 motion [] pieces all=12:baf6dec6a20fd898 camera=12:baf6dec6a20fd898 shadow=12:baf6dec6a20fd898 indirect=12:baf6dec6a20fd898 +geom 57: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80067986 motion [] pieces all=12:a256e5a31d141fbb camera=12:a256e5a31d141fbb shadow=12:a256e5a31d141fbb indirect=12:a256e5a31d141fbb +geom 58: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91378754 motion [] pieces all=12:7b3638ec8ec226f3 camera=12:7b3638ec8ec226f3 shadow=12:7b3638ec8ec226f3 indirect=12:7b3638ec8ec226f3 +geom 59: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0327148 motion [] pieces all=12:8329464f2a0e552a camera=12:8329464f2a0e552a shadow=12:8329464f2a0e552a indirect=12:8329464f2a0e552a +geom 60: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0755835 motion [] pieces all=12:d5a356f1a0c2d77b camera=12:d5a356f1a0c2d77b shadow=12:d5a356f1a0c2d77b indirect=12:d5a356f1a0c2d77b +geom 61: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9723327 motion [] pieces all=12:d514b87e03ffee7b camera=12:d514b87e03ffee7b shadow=12:d514b87e03ffee7b indirect=12:d514b87e03ffee7b +geom 62: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1167125 motion [] pieces all=12:0f2b003d7a547d30 camera=12:0f2b003d7a547d30 shadow=12:0f2b003d7a547d30 indirect=12:0f2b003d7a547d30 +geom 63: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8544235 motion [] pieces all=12:3267177e35799915 camera=12:3267177e35799915 shadow=12:3267177e35799915 indirect=12:3267177e35799915 +geom 64: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0798023 motion [] pieces all=12:6f8fe55a972f6cfb camera=12:6f8fe55a972f6cfb shadow=12:6f8fe55a972f6cfb indirect=12:6f8fe55a972f6cfb +geom 65: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9712375 motion [] pieces all=12:f40fba814caa8834 camera=12:f40fba814caa8834 shadow=12:f40fba814caa8834 indirect=12:f40fba814caa8834 +geom 66: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1139917 motion [] pieces all=12:561b850d4d03d266 camera=12:561b850d4d03d266 shadow=12:561b850d4d03d266 indirect=12:561b850d4d03d266 +geom 67: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85122913 motion [] pieces all=12:9087c09bce33af50 camera=12:9087c09bce33af50 shadow=12:9087c09bce33af50 indirect=12:9087c09bce33af50 +geom 68: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1885562 motion [] pieces all=12:4fccf5f8b70e3596 camera=12:4fccf5f8b70e3596 shadow=12:4fccf5f8b70e3596 indirect=12:4fccf5f8b70e3596 +geom 69: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80447584 motion [] pieces all=12:3dde2ce14ea1b0bc camera=12:3dde2ce14ea1b0bc shadow=12:3dde2ce14ea1b0bc indirect=12:3dde2ce14ea1b0bc +geom 70: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9174675 motion [] pieces all=12:44fd55888c88adb7 camera=12:44fd55888c88adb7 shadow=12:44fd55888c88adb7 indirect=12:44fd55888c88adb7 +geom 71: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0344483 motion [] pieces all=12:4842477acc590222 camera=12:4842477acc590222 shadow=12:4842477acc590222 indirect=12:4842477acc590222 +geom 72: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98861605 motion [] pieces all=12:762fd153f249af87 camera=12:762fd153f249af87 shadow=12:762fd153f249af87 indirect=12:762fd153f249af87 +geom 73: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.051196 motion [] pieces all=12:eccd17b2d02980d1 camera=12:eccd17b2d02980d1 shadow=12:eccd17b2d02980d1 indirect=12:eccd17b2d02980d1 +geom 74: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1431856 motion [] pieces all=12:cf5f77eee5e0dcdb camera=12:cf5f77eee5e0dcdb shadow=12:cf5f77eee5e0dcdb indirect=12:cf5f77eee5e0dcdb +geom 75: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8935088 motion [] pieces all=12:43a790a8d4e8b610 camera=12:43a790a8d4e8b610 shadow=12:43a790a8d4e8b610 indirect=12:43a790a8d4e8b610 +geom 76: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0067637 motion [] pieces all=12:1d40a4dd67adf488 camera=12:1d40a4dd67adf488 shadow=12:1d40a4dd67adf488 indirect=12:1d40a4dd67adf488 +geom 77: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9466897 motion [] pieces all=12:7a683d3007a1ed5e camera=12:7a683d3007a1ed5e shadow=12:7a683d3007a1ed5e indirect=12:7a683d3007a1ed5e +geom 78: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8417045 motion [] pieces all=12:88909f96d5ee288a camera=12:88909f96d5ee288a shadow=12:88909f96d5ee288a indirect=12:88909f96d5ee288a +geom 79: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1568236 motion [] pieces all=12:115c326f01b92bfe camera=12:115c326f01b92bfe shadow=12:115c326f01b92bfe indirect=12:115c326f01b92bfe +geom 80: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1771487 motion [] pieces all=12:39bd3f3c3adce371 camera=12:39bd3f3c3adce371 shadow=12:39bd3f3c3adce371 indirect=12:39bd3f3c3adce371 +geom 81: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8248694 motion [] pieces all=12:290ce0c482dc7657 camera=12:290ce0c482dc7657 shadow=12:290ce0c482dc7657 indirect=12:290ce0c482dc7657 +geom 82: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0426874 motion [] pieces all=12:af9fa19c59df0bd6 camera=12:af9fa19c59df0bd6 shadow=12:af9fa19c59df0bd6 indirect=12:af9fa19c59df0bd6 +geom 83: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9049352 motion [] pieces all=12:a99ecfd3f7c65ca0 camera=12:a99ecfd3f7c65ca0 shadow=12:a99ecfd3f7c65ca0 indirect=12:a99ecfd3f7c65ca0 +geom 84: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95452625 motion [] pieces all=12:f5245c00b3544032 camera=12:f5245c00b3544032 shadow=12:f5245c00b3544032 indirect=12:f5245c00b3544032 +geom 85: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0915264 motion [] pieces all=12:47eed1ca926f8b10 camera=12:47eed1ca926f8b10 shadow=12:47eed1ca926f8b10 indirect=12:47eed1ca926f8b10 +geom 86: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1045474 motion [] pieces all=12:0688c4f72d38b384 camera=12:0688c4f72d38b384 shadow=12:0688c4f72d38b384 indirect=12:0688c4f72d38b384 +geom 87: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8725518 motion [] pieces all=12:c2e7bc33d7a8c5b2 camera=12:c2e7bc33d7a8c5b2 shadow=12:c2e7bc33d7a8c5b2 indirect=12:c2e7bc33d7a8c5b2 +geom 88: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0181686 motion [] pieces all=12:f4afa9450cd6e224 camera=12:f4afa9450cd6e224 shadow=12:f4afa9450cd6e224 indirect=12:f4afa9450cd6e224 +geom 89: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9343883 motion [] pieces all=12:494592bd94b5a9df camera=12:494592bd94b5a9df shadow=12:494592bd94b5a9df indirect=12:494592bd94b5a9df +geom 90: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83113366 motion [] pieces all=12:d25193c91b0a6495 camera=12:d25193c91b0a6495 shadow=12:d25193c91b0a6495 indirect=12:d25193c91b0a6495 +geom 91: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1682378 motion [] pieces all=12:e609713fd5e033b1 camera=12:e609713fd5e033b1 shadow=12:e609713fd5e033b1 indirect=12:e609713fd5e033b1 +geom 92: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9857126 motion [] pieces all=12:24e9d2ac0b6d05de camera=12:24e9d2ac0b6d05de shadow=12:24e9d2ac0b6d05de indirect=12:24e9d2ac0b6d05de +geom 93: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.064941 motion [] pieces all=12:9c77d3fdd548cde9 camera=12:9c77d3fdd548cde9 shadow=12:9c77d3fdd548cde9 indirect=12:9c77d3fdd548cde9 +geom 94: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1276315 motion [] pieces all=12:6a61385d5bf407f2 camera=12:6a61385d5bf407f2 shadow=12:6a61385d5bf407f2 indirect=12:6a61385d5bf407f2 +geom 95: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8756145 motion [] pieces all=12:457b1b57aa64f197 camera=12:457b1b57aa64f197 shadow=12:457b1b57aa64f197 indirect=12:457b1b57aa64f197 +geom 96: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8499425 motion [] pieces all=12:240ee7e5411cb290 camera=12:240ee7e5411cb290 shadow=12:240ee7e5411cb290 indirect=12:240ee7e5411cb290 +geom 97: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1509483 motion [] pieces all=12:46995ea9d2503b27 camera=12:46995ea9d2503b27 shadow=12:46995ea9d2503b27 indirect=12:46995ea9d2503b27 +geom 98: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94094956 motion [] pieces all=12:179a8f1495361014 camera=12:179a8f1495361014 shadow=12:179a8f1495361014 indirect=12:179a8f1495361014 +geom 99: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0043019 motion [] pieces all=12:44d8059bb5ebeafd camera=12:44d8059bb5ebeafd shadow=12:44d8059bb5ebeafd indirect=12:44d8059bb5ebeafd +geom 100: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99898595 motion [] pieces all=12:39afd130699e7cb0 camera=12:39afd130699e7cb0 shadow=12:39afd130699e7cb0 indirect=12:39afd130699e7cb0 +geom 101: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0590571 motion [] pieces all=12:851d5fe50f73febb camera=12:851d5fe50f73febb shadow=12:851d5fe50f73febb indirect=12:851d5fe50f73febb +geom 102: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1460913 motion [] pieces all=12:b2bbe54d40ea2858 camera=12:b2bbe54d40ea2858 shadow=12:b2bbe54d40ea2858 indirect=12:b2bbe54d40ea2858 +geom 103: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89929354 motion [] pieces all=12:9f234f91478565dc camera=12:9f234f91478565dc shadow=12:9f234f91478565dc indirect=12:9f234f91478565dc +geom 104: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85810405 motion [] pieces all=12:f5ddaa8b8ec2d5ba camera=12:f5ddaa8b8ec2d5ba shadow=12:f5ddaa8b8ec2d5ba indirect=12:f5ddaa8b8ec2d5ba +geom 105: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1191708 motion [] pieces all=12:fd81245dade038dd camera=12:fd81245dade038dd shadow=12:fd81245dade038dd indirect=12:fd81245dade038dd +geom 106: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9670763 motion [] pieces all=12:5f19edb4d365becb camera=12:5f19edb4d365becb shadow=12:5f19edb4d365becb indirect=12:5f19edb4d365becb +geom 107: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0835859 motion [] pieces all=12:a7ef0a5c0822aea9 camera=12:a7ef0a5c0822aea9 shadow=12:a7ef0a5c0822aea9 indirect=12:a7ef0a5c0822aea9 +geom 108: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0251201 motion [] pieces all=12:02e3b167ee551aca camera=12:02e3b167ee551aca shadow=12:02e3b167ee551aca indirect=12:02e3b167ee551aca +geom 109: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92380166 motion [] pieces all=12:49c99c416191e8fc camera=12:49c99c416191e8fc shadow=12:49c99c416191e8fc indirect=12:49c99c416191e8fc +geom 110: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80997515 motion [] pieces all=12:7806740db5f7a3b4 camera=12:7806740db5f7a3b4 shadow=12:7806740db5f7a3b4 indirect=12:7806740db5f7a3b4 +geom 111: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.196669 motion [] pieces all=12:33f9eda18b718998 camera=12:33f9eda18b718998 shadow=12:33f9eda18b718998 indirect=12:33f9eda18b718998 +geom 112: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0473372 motion [] pieces all=12:13ee4568c7b295b0 camera=12:13ee4568c7b295b0 shadow=12:13ee4568c7b295b0 indirect=12:13ee4568c7b295b0 +geom 113: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9111734 motion [] pieces all=12:77b49a7464b6c21d camera=12:77b49a7464b6c21d shadow=12:77b49a7464b6c21d indirect=12:77b49a7464b6c21d +geom 114: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81260014 motion [] pieces all=12:46b90f2f6c5b01aa camera=12:46b90f2f6c5b01aa shadow=12:46b90f2f6c5b01aa indirect=12:46b90f2f6c5b01aa +geom 115: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1814731 motion [] pieces all=12:c63d0e917a0d989f camera=12:c63d0e917a0d989f shadow=12:c63d0e917a0d989f indirect=12:c63d0e917a0d989f +geom 116: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.86434513 motion [] pieces all=12:a3cc00053a7ef3a8 camera=12:a3cc00053a7ef3a8 shadow=12:a3cc00053a7ef3a8 indirect=12:a3cc00053a7ef3a8 +geom 117: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1114343 motion [] pieces all=12:f25eb690e86a3faf camera=12:f25eb690e86a3faf shadow=12:f25eb690e86a3faf indirect=12:f25eb690e86a3faf +geom 118: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9615702 motion [] pieces all=12:20da365171867c09 camera=12:20da365171867c09 shadow=12:20da365171867c09 indirect=12:20da365171867c09 +geom 119: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0959495 motion [] pieces all=12:1b3eb4dbcd685c8e camera=12:1b3eb4dbcd685c8e shadow=12:1b3eb4dbcd685c8e indirect=12:1b3eb4dbcd685c8e +geom 120: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8354707 motion [] pieces all=12:2771b114b3cb81f2 camera=12:2771b114b3cb81f2 shadow=12:2771b114b3cb81f2 indirect=12:2771b114b3cb81f2 +geom 121: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1718415 motion [] pieces all=12:549b697395f67d5f camera=12:549b697395f67d5f shadow=12:549b697395f67d5f indirect=12:549b697395f67d5f +geom 122: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0247468 motion [] pieces all=12:67782d0321db6e7c camera=12:67782d0321db6e7c shadow=12:67782d0321db6e7c indirect=12:67782d0321db6e7c +geom 123: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92719936 motion [] pieces all=12:eff1f703285588bb camera=12:eff1f703285588bb shadow=12:eff1f703285588bb indirect=12:eff1f703285588bb +geom 124: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8833256 motion [] pieces all=12:63a01dbcca8c40f1 camera=12:63a01dbcca8c40f1 shadow=12:63a01dbcca8c40f1 indirect=12:63a01dbcca8c40f1 +geom 125: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1371192 motion [] pieces all=12:20cbc0b9606168ad camera=12:20cbc0b9606168ad shadow=12:20cbc0b9606168ad indirect=12:20cbc0b9606168ad +geom 126: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0695919 motion [] pieces all=12:8b86fdfeb224bbde camera=12:8b86fdfeb224bbde shadow=12:8b86fdfeb224bbde indirect=12:8b86fdfeb224bbde +geom 127: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9810916 motion [] pieces all=12:3eb84805d52408b2 camera=12:3eb84805d52408b2 shadow=12:3eb84805d52408b2 indirect=12:3eb84805d52408b2 +geom 128: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89378047 motion [] pieces all=12:0e25638f44f2c28f camera=12:0e25638f44f2c28f shadow=12:0e25638f44f2c28f indirect=12:0e25638f44f2c28f +geom 129: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1481593 motion [] pieces all=12:edc967ed7fcb5bf2 camera=12:edc967ed7fcb5bf2 shadow=12:edc967ed7fcb5bf2 indirect=12:edc967ed7fcb5bf2 +geom 130: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99644405 motion [] pieces all=12:0328f89349c80237 camera=12:0328f89349c80237 shadow=12:0328f89349c80237 indirect=12:0328f89349c80237 +geom 131: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0609381 motion [] pieces all=12:faa929e226849927 camera=12:faa929e226849927 shadow=12:faa929e226849927 indirect=12:faa929e226849927 +geom 132: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8451959 motion [] pieces all=12:8d3793620c188989 camera=12:8d3793620c188989 shadow=12:8d3793620c188989 indirect=12:8d3793620c188989 +geom 133: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1544647 motion [] pieces all=12:711a86dde1d9e9f5 camera=12:711a86dde1d9e9f5 shadow=12:711a86dde1d9e9f5 indirect=12:711a86dde1d9e9f5 +geom 134: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93837684 motion [] pieces all=12:41703b3e850f923f camera=12:41703b3e850f923f shadow=12:41703b3e850f923f indirect=12:41703b3e850f923f +geom 135: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0019761 motion [] pieces all=12:43326dfbf5ed847b camera=12:43326dfbf5ed847b shadow=12:43326dfbf5ed847b indirect=12:43326dfbf5ed847b +geom 136: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0852681 motion [] pieces all=12:9cd66f3a212611a5 camera=12:9cd66f3a212611a5 shadow=12:9cd66f3a212611a5 indirect=12:9cd66f3a212611a5 +geom 137: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9644266 motion [] pieces all=12:bbc8da567d79b5a4 camera=12:bbc8da567d79b5a4 shadow=12:bbc8da567d79b5a4 indirect=12:bbc8da567d79b5a4 +geom 138: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85994047 motion [] pieces all=12:a2f2d962a60b6159 camera=12:a2f2d962a60b6159 shadow=12:a2f2d962a60b6159 indirect=12:a2f2d962a60b6159 +geom 139: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1246288 motion [] pieces all=12:994b4349fed39f01 camera=12:994b4349fed39f01 shadow=12:994b4349fed39f01 indirect=12:994b4349fed39f01 +geom 140: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1996474 motion [] pieces all=12:1d2acd7fea759ad5 camera=12:1d2acd7fea759ad5 shadow=12:1d2acd7fea759ad5 indirect=12:1d2acd7fea759ad5 +geom 141: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80840766 motion [] pieces all=12:9cf7a9afbcc4c4eb camera=12:9cf7a9afbcc4c4eb shadow=12:9cf7a9afbcc4c4eb indirect=12:9cf7a9afbcc4c4eb +geom 142: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0290962 motion [] pieces all=12:0efc6eea9e359221 camera=12:0efc6eea9e359221 shadow=12:0efc6eea9e359221 indirect=12:0efc6eea9e359221 +geom 143: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92069584 motion [] pieces all=12:78475427d360b5c1 camera=12:78475427d360b5c1 shadow=12:78475427d360b5c1 indirect=12:78475427d360b5c1 +geom 144: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8324499 motion [] pieces all=12:14aef30e6187ee0a camera=12:14aef30e6187ee0a shadow=12:14aef30e6187ee0a indirect=12:14aef30e6187ee0a +geom 145: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1735862 motion [] pieces all=12:ee21943afb6f553a camera=12:ee21943afb6f553a shadow=12:ee21943afb6f553a indirect=12:ee21943afb6f553a +geom 146: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0211544 motion [] pieces all=12:349cc8052c0114c0 camera=12:349cc8052c0114c0 shadow=12:349cc8052c0114c0 indirect=12:349cc8052c0114c0 +geom 147: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9301207 motion [] pieces all=12:255047cec943c8ea camera=12:255047cec943c8ea shadow=12:255047cec943c8ea indirect=12:255047cec943c8ea +geom 148: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8862441 motion [] pieces all=12:216ff56f5952ffb9 camera=12:216ff56f5952ffb9 shadow=12:216ff56f5952ffb9 indirect=12:216ff56f5952ffb9 +geom 149: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.132182 motion [] pieces all=12:977965ada455e4f1 camera=12:977965ada455e4f1 shadow=12:977965ada455e4f1 indirect=12:977965ada455e4f1 +geom 150: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0742184 motion [] pieces all=12:770f0c83da095904 camera=12:770f0c83da095904 shadow=12:770f0c83da095904 indirect=12:770f0c83da095904 +geom 151: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97561026 motion [] pieces all=12:c5fabfbf16b885c5 camera=12:c5fabfbf16b885c5 shadow=12:c5fabfbf16b885c5 indirect=12:c5fabfbf16b885c5 +geom 152: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9072775 motion [] pieces all=12:8a4dd57e0a2ebf5a camera=12:8a4dd57e0a2ebf5a shadow=12:8a4dd57e0a2ebf5a indirect=12:8a4dd57e0a2ebf5a +geom 153: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0440699 motion [] pieces all=12:fae5024a9d175702 camera=12:fae5024a9d175702 shadow=12:fae5024a9d175702 indirect=12:fae5024a9d175702 +geom 154: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1860485 motion [] pieces all=12:c0662045e1066fd4 camera=12:c0662045e1066fd4 shadow=12:c0662045e1066fd4 indirect=12:c0662045e1066fd4 +geom 155: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8176735 motion [] pieces all=12:964c32758295df10 camera=12:964c32758295df10 shadow=12:964c32758295df10 indirect=12:964c32758295df10 +geom 156: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1087489 motion [] pieces all=12:36f2818add7f21f3 camera=12:36f2818add7f21f3 shadow=12:36f2818add7f21f3 indirect=12:36f2818add7f21f3 +geom 157: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.86653197 motion [] pieces all=12:cdcff1bea7fd276f camera=12:cdcff1bea7fd276f shadow=12:cdcff1bea7fd276f indirect=12:cdcff1bea7fd276f +geom 158: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0970074 motion [] pieces all=12:fcf63aa7fde4ba86 camera=12:fcf63aa7fde4ba86 shadow=12:fcf63aa7fde4ba86 indirect=12:fcf63aa7fde4ba86 +geom 159: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95737 motion [] pieces all=12:c2b5677cce7af786 camera=12:c2b5677cce7af786 shadow=12:c2b5677cce7af786 indirect=12:c2b5677cce7af786 +geom 160: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9006957 motion [] pieces all=12:a4d08541f65f13d0 camera=12:a4d08541f65f13d0 shadow=12:a4d08541f65f13d0 indirect=12:a4d08541f65f13d0 +geom 161: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0394226 motion [] pieces all=12:aec0b7091efa616e camera=12:aec0b7091efa616e shadow=12:aec0b7091efa616e indirect=12:aec0b7091efa616e +geom 162: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8203825 motion [] pieces all=12:6ee376a13e855160 camera=12:6ee376a13e855160 shadow=12:6ee376a13e855160 indirect=12:6ee376a13e855160 +geom 163: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1781385 motion [] pieces all=12:f7de28adc35d4412 camera=12:f7de28adc35d4412 shadow=12:f7de28adc35d4412 indirect=12:f7de28adc35d4412 +geom 164: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9523008 motion [] pieces all=12:cf43ed179dc3924a camera=12:cf43ed179dc3924a shadow=12:cf43ed179dc3924a indirect=12:cf43ed179dc3924a +geom 165: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0878727 motion [] pieces all=12:29a010f95988b1ff camera=12:29a010f95988b1ff shadow=12:29a010f95988b1ff indirect=12:29a010f95988b1ff +geom 166: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.870276 motion [] pieces all=12:7d4d135c4e5575bc camera=12:7d4d135c4e5575bc shadow=12:7d4d135c4e5575bc indirect=12:7d4d135c4e5575bc +geom 167: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1014793 motion [] pieces all=12:b8aeb1e4f672a5ff camera=12:b8aeb1e4f672a5ff shadow=12:b8aeb1e4f672a5ff indirect=12:b8aeb1e4f672a5ff +geom 168: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0663404 motion [] pieces all=12:3fc1e7e5eda56504 camera=12:3fc1e7e5eda56504 shadow=12:3fc1e7e5eda56504 indirect=12:3fc1e7e5eda56504 +geom 169: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9835009 motion [] pieces all=12:b54d22d3f354e111 camera=12:b54d22d3f354e111 shadow=12:b54d22d3f354e111 indirect=12:b54d22d3f354e111 +geom 170: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8794718 motion [] pieces all=12:408b284cc8506940 camera=12:408b284cc8506940 shadow=12:408b284cc8506940 indirect=12:408b284cc8506940 +geom 171: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1306928 motion [] pieces all=12:de5dfb646742a1db camera=12:de5dfb646742a1db shadow=12:de5dfb646742a1db indirect=12:de5dfb646742a1db +geom 172: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9336199 motion [] pieces all=12:5224fff33dc68baa camera=12:5224fff33dc68baa shadow=12:5224fff33dc68baa indirect=12:5224fff33dc68baa +geom 173: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0149 motion [] pieces all=12:0714a1e0c1ddbe53 camera=12:0714a1e0c1ddbe53 shadow=12:0714a1e0c1ddbe53 indirect=12:0714a1e0c1ddbe53 +geom 174: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1634011 motion [] pieces all=12:f7c2b3abcef602ba camera=12:f7c2b3abcef602ba shadow=12:f7c2b3abcef602ba indirect=12:f7c2b3abcef602ba +geom 175: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8278751 motion [] pieces all=12:ba74d4a6ddc13413 camera=12:ba74d4a6ddc13413 shadow=12:ba74d4a6ddc13413 indirect=12:ba74d4a6ddc13413 +geom 176: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9143611 motion [] pieces all=12:3a2bdd7c0fb5f8ce camera=12:3a2bdd7c0fb5f8ce shadow=12:3a2bdd7c0fb5f8ce indirect=12:3a2bdd7c0fb5f8ce +geom 177: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0329576 motion [] pieces all=12:11ca701bf16fe232 camera=12:11ca701bf16fe232 shadow=12:11ca701bf16fe232 indirect=12:11ca701bf16fe232 +geom 178: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8021616 motion [] pieces all=12:65dc48dd0f9b6325 camera=12:65dc48dd0f9b6325 shadow=12:65dc48dd0f9b6325 indirect=12:65dc48dd0f9b6325 +geom 179: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1908746 motion [] pieces all=12:a76505a088379c90 camera=12:a76505a088379c90 shadow=12:a76505a088379c90 indirect=12:a76505a088379c90 +geom 180: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8557867 motion [] pieces all=12:0b5931f61e2fde7b camera=12:0b5931f61e2fde7b shadow=12:0b5931f61e2fde7b indirect=12:0b5931f61e2fde7b +geom 181: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1185493 motion [] pieces all=12:66c42813f507eeab camera=12:66c42813f507eeab shadow=12:66c42813f507eeab indirect=12:66c42813f507eeab +geom 182: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0776385 motion [] pieces all=12:be1587344eda2fd6 camera=12:be1587344eda2fd6 shadow=12:be1587344eda2fd6 indirect=12:be1587344eda2fd6 +geom 183: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9741755 motion [] pieces all=12:448895cb3061af12 camera=12:448895cb3061af12 shadow=12:448895cb3061af12 indirect=12:448895cb3061af12 +geom 184: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99330175 motion [] pieces all=12:39b4ee326d610473 camera=12:39b4ee326d610473 shadow=12:39b4ee326d610473 indirect=12:39b4ee326d610473 +geom 185: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0531924 motion [] pieces all=12:3c158e4e7535abbc camera=12:3c158e4e7535abbc shadow=12:3c158e4e7535abbc indirect=12:3c158e4e7535abbc +geom 186: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88838124 motion [] pieces all=12:d9b2ca0588546949 camera=12:d9b2ca0588546949 shadow=12:d9b2ca0588546949 indirect=12:d9b2ca0588546949 +geom 187: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1391544 motion [] pieces all=12:ed34bede1177e284 camera=12:ed34bede1177e284 shadow=12:ed34bede1177e284 indirect=12:ed34bede1177e284 +geom 188: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1601088 motion [] pieces all=12:9cc2f1d7ab8d7d44 camera=12:9cc2f1d7ab8d7d44 shadow=12:9cc2f1d7ab8d7d44 indirect=12:9cc2f1d7ab8d7d44 +geom 189: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8400457 motion [] pieces all=12:5e864a5674913774 camera=12:5e864a5674913774 shadow=12:5e864a5674913774 indirect=12:5e864a5674913774 +geom 190: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94724274 motion [] pieces all=12:962d5b14f56713cc camera=12:962d5b14f56713cc shadow=12:962d5b14f56713cc indirect=12:962d5b14f56713cc +geom 191: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0101744 motion [] pieces all=12:65f43cff20a54d3e camera=12:65f43cff20a54d3e shadow=12:65f43cff20a54d3e indirect=12:65f43cff20a54d3e +geom 192: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9785322 motion [] pieces all=12:f68b9cc33a7d5338 camera=12:f68b9cc33a7d5338 shadow=12:f68b9cc33a7d5338 indirect=12:f68b9cc33a7d5338 +geom 193: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.071331 motion [] pieces all=12:eab5a7efb85d5e4a camera=12:eab5a7efb85d5e4a shadow=12:eab5a7efb85d5e4a indirect=12:eab5a7efb85d5e4a +geom 194: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1346846 motion [] pieces all=12:0da43c8009876e7c camera=12:0da43c8009876e7c shadow=12:0da43c8009876e7c indirect=12:0da43c8009876e7c +geom 195: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.881264 motion [] pieces all=12:367e7648236970f0 camera=12:367e7648236970f0 shadow=12:367e7648236970f0 indirect=12:367e7648236970f0 +geom 196: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9258513 motion [] pieces all=12:653bbd1417548840 camera=12:653bbd1417548840 shadow=12:653bbd1417548840 indirect=12:653bbd1417548840 +geom 197: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0232607 motion [] pieces all=12:a1e5481b53abbea3 camera=12:a1e5481b53abbea3 shadow=12:a1e5481b53abbea3 indirect=12:a1e5481b53abbea3 +geom 198: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1690427 motion [] pieces all=12:f1c8dee848ecdaa4 camera=12:f1c8dee848ecdaa4 shadow=12:f1c8dee848ecdaa4 indirect=12:f1c8dee848ecdaa4 +geom 199: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83644116 motion [] pieces all=12:d34f9568f35b8d65 camera=12:d34f9568f35b8d65 shadow=12:d34f9568f35b8d65 indirect=12:d34f9568f35b8d65 +geom 200: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0487949 motion [] pieces all=12:a85c3a6a8169fe53 camera=12:a85c3a6a8169fe53 shadow=12:a85c3a6a8169fe53 indirect=12:a85c3a6a8169fe53 +geom 201: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9108869 motion [] pieces all=12:2e6ec2c4aff7ce16 camera=12:2e6ec2c4aff7ce16 shadow=12:2e6ec2c4aff7ce16 indirect=12:2e6ec2c4aff7ce16 +geom 202: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1842942 motion [] pieces all=12:9831981e2548b336 camera=12:9831981e2548b336 shadow=12:9831981e2548b336 indirect=12:9831981e2548b336 +geom 203: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8154444 motion [] pieces all=12:2cd5888551e5130f camera=12:2cd5888551e5130f shadow=12:2cd5888551e5130f indirect=12:2cd5888551e5130f +geom 204: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9596241 motion [] pieces all=12:371ac302b036e0a3 camera=12:371ac302b036e0a3 shadow=12:371ac302b036e0a3 indirect=12:371ac302b036e0a3 +geom 205: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0944769 motion [] pieces all=12:a1e579be7bb587a6 camera=12:a1e579be7bb587a6 shadow=12:a1e579be7bb587a6 indirect=12:a1e579be7bb587a6 +geom 206: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8640111 motion [] pieces all=12:8cf77265a8ab0d6f camera=12:8cf77265a8ab0d6f shadow=12:8cf77265a8ab0d6f indirect=12:8cf77265a8ab0d6f +geom 207: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1104012 motion [] pieces all=12:58e1e64a98666438 camera=12:58e1e64a98666438 shadow=12:58e1e64a98666438 indirect=12:58e1e64a98666438 +geom 208: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0280448 motion [] pieces all=12:2a0d228155d99032 camera=12:2a0d228155d99032 shadow=12:2a0d228155d99032 indirect=12:2a0d228155d99032 +geom 209: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9222475 motion [] pieces all=12:b4f0b641e643bed2 camera=12:b4f0b641e643bed2 shadow=12:b4f0b641e643bed2 indirect=12:b4f0b641e643bed2 +geom 210: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81186414 motion [] pieces all=12:a9878ed81373a6aa camera=12:a9878ed81373a6aa shadow=12:a9878ed81373a6aa indirect=12:a9878ed81373a6aa +geom 211: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1950524 motion [] pieces all=12:d6c19f21ac2efe7f camera=12:d6c19f21ac2efe7f shadow=12:d6c19f21ac2efe7f indirect=12:d6c19f21ac2efe7f +geom 212: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9686117 motion [] pieces all=12:d0de2f053819698d camera=12:d0de2f053819698d shadow=12:d0de2f053819698d indirect=12:d0de2f053819698d +geom 213: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0823318 motion [] pieces all=12:f807af028fb0d843 camera=12:f807af028fb0d843 shadow=12:f807af028fb0d843 indirect=12:f807af028fb0d843 +geom 214: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1214556 motion [] pieces all=12:8fb69b3b22f5e5b7 camera=12:8fb69b3b22f5e5b7 shadow=12:8fb69b3b22f5e5b7 indirect=12:8fb69b3b22f5e5b7 +geom 215: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8576933 motion [] pieces all=12:9902fabfe4a31e6f camera=12:9902fabfe4a31e6f shadow=12:9902fabfe4a31e6f indirect=12:9902fabfe4a31e6f +geom 216: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1524206 motion [] pieces all=12:ec824708a5b52e94 camera=12:ec824708a5b52e94 shadow=12:ec824708a5b52e94 indirect=12:ec824708a5b52e94 +geom 217: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8480765 motion [] pieces all=12:54fb9c61f3afdf2d camera=12:54fb9c61f3afdf2d shadow=12:54fb9c61f3afdf2d indirect=12:54fb9c61f3afdf2d +geom 218: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9426124 motion [] pieces all=12:dc76d1a704fcd63a camera=12:dc76d1a704fcd63a shadow=12:dc76d1a704fcd63a indirect=12:dc76d1a704fcd63a +geom 219: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.005768 motion [] pieces all=12:f676c0196c74e2e4 camera=12:f676c0196c74e2e4 shadow=12:f676c0196c74e2e4 indirect=12:f676c0196c74e2e4 +geom 220: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0575837 motion [] pieces all=12:24d3f120f3e4d77a camera=12:24d3f120f3e4d77a shadow=12:24d3f120f3e4d77a indirect=12:24d3f120f3e4d77a +geom 221: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9969108 motion [] pieces all=12:e761c1efe402c472 camera=12:e761c1efe402c472 shadow=12:e761c1efe402c472 indirect=12:e761c1efe402c472 +geom 222: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1440821 motion [] pieces all=12:cf73015e4f75c6b0 camera=12:cf73015e4f75c6b0 shadow=12:cf73015e4f75c6b0 indirect=12:cf73015e4f75c6b0 +geom 223: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8969591 motion [] pieces all=12:d0956b3fca49292a camera=12:d0956b3fca49292a shadow=12:d0956b3fca49292a indirect=12:d0956b3fca49292a +geom 224: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0371333 motion [] pieces all=12:d8193163489bb44b camera=12:d8193163489bb44b shadow=12:d8193163489bb44b indirect=12:d8193163489bb44b +geom 225: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9161684 motion [] pieces all=12:477cf4558da91635 camera=12:477cf4558da91635 shadow=12:477cf4558da91635 indirect=12:477cf4558da91635 +geom 226: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1905285 motion [] pieces all=12:a410b51f47a5ffb6 camera=12:a410b51f47a5ffb6 shadow=12:a410b51f47a5ffb6 indirect=12:a410b51f47a5ffb6 +geom 227: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80562985 motion [] pieces all=12:c45d199c982978f4 camera=12:c45d199c982978f4 shadow=12:c45d199c982978f4 indirect=12:c45d199c982978f4 +geom 228: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0785401 motion [] pieces all=12:55548a55e18adb38 camera=12:55548a55e18adb38 shadow=12:55548a55e18adb38 indirect=12:55548a55e18adb38 +geom 229: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9693134 motion [] pieces all=12:218000652a85aad8 camera=12:218000652a85aad8 shadow=12:218000652a85aad8 indirect=12:218000652a85aad8 +geom 230: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1149917 motion [] pieces all=12:5c8721a6ccf52af9 camera=12:5c8721a6ccf52af9 shadow=12:5c8721a6ccf52af9 indirect=12:5c8721a6ccf52af9 +geom 231: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8525659 motion [] pieces all=12:5b4e1f5ec23952dd camera=12:5b4e1f5ec23952dd shadow=12:5b4e1f5ec23952dd indirect=12:5b4e1f5ec23952dd +geom 232: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1412258 motion [] pieces all=12:2a4304d591b25fc9 camera=12:2a4304d591b25fc9 shadow=12:2a4304d591b25fc9 indirect=12:2a4304d591b25fc9 +geom 233: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89183074 motion [] pieces all=12:52cdc20762bb5ebb camera=12:52cdc20762bb5ebb shadow=12:52cdc20762bb5ebb indirect=12:52cdc20762bb5ebb +geom 234: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99022824 motion [] pieces all=12:3d37ca5710e536ba camera=12:3d37ca5710e536ba shadow=12:3d37ca5710e536ba indirect=12:3d37ca5710e536ba +geom 235: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0531183 motion [] pieces all=12:e0d91d54fe3ddd42 camera=12:e0d91d54fe3ddd42 shadow=12:e0d91d54fe3ddd42 indirect=12:e0d91d54fe3ddd42 +geom 236: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1585552 motion [] pieces all=12:4a181c7dff378ae5 camera=12:4a181c7dff378ae5 shadow=12:4a181c7dff378ae5 indirect=12:4a181c7dff378ae5 +geom 237: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8428183 motion [] pieces all=12:b7fa070d5b1acaa3 camera=12:b7fa070d5b1acaa3 shadow=12:b7fa070d5b1acaa3 indirect=12:b7fa070d5b1acaa3 +geom 238: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94464326 motion [] pieces all=12:182e332994e443d3 camera=12:182e332994e443d3 shadow=12:182e332994e443d3 indirect=12:182e332994e443d3 +geom 239: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0091645 motion [] pieces all=12:497495488a8f9926 camera=12:497495488a8f9926 shadow=12:497495488a8f9926 indirect=12:497495488a8f9926 +geom 240: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.016648 motion [] pieces all=12:4bfe924b2992d41e camera=12:4bfe924b2992d41e shadow=12:4bfe924b2992d41e indirect=12:4bfe924b2992d41e +geom 241: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9367166 motion [] pieces all=12:cfd883bd32fe687e camera=12:cfd883bd32fe687e shadow=12:cfd883bd32fe687e indirect=12:cfd883bd32fe687e +geom 242: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.165766 motion [] pieces all=12:f080efe60f98f622 camera=12:f080efe60f98f622 shadow=12:f080efe60f98f622 indirect=12:f080efe60f98f622 +geom 243: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8287125 motion [] pieces all=12:c1e89fb5a0e9b74d camera=12:c1e89fb5a0e9b74d shadow=12:c1e89fb5a0e9b74d indirect=12:c1e89fb5a0e9b74d +geom 244: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0626551 motion [] pieces all=12:00de2f136a6548eb camera=12:00de2f136a6548eb shadow=12:00de2f136a6548eb indirect=12:00de2f136a6548eb +geom 245: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98738736 motion [] pieces all=12:32c7be68c9881ec9 camera=12:32c7be68c9881ec9 shadow=12:32c7be68c9881ec9 indirect=12:32c7be68c9881ec9 +geom 246: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1254724 motion [] pieces all=12:cf7615fec99cc55a camera=12:cf7615fec99cc55a shadow=12:cf7615fec99cc55a indirect=12:cf7615fec99cc55a +geom 247: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8768998 motion [] pieces all=12:0f5b07ce8c46fea6 camera=12:0f5b07ce8c46fea6 shadow=12:0f5b07ce8c46fea6 indirect=12:0f5b07ce8c46fea6 +geom 248: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1756799 motion [] pieces all=12:2663e8227fb24a79 camera=12:2663e8227fb24a79 shadow=12:2663e8227fb24a79 indirect=12:2663e8227fb24a79 +geom 249: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8233719 motion [] pieces all=12:3b6f7097bfff15c1 camera=12:3b6f7097bfff15c1 shadow=12:3b6f7097bfff15c1 indirect=12:3b6f7097bfff15c1 +geom 250: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0409974 motion [] pieces all=12:b6b10b6d55ba8c97 camera=12:b6b10b6d55ba8c97 shadow=12:b6b10b6d55ba8c97 indirect=12:b6b10b6d55ba8c97 +geom 251: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9038803 motion [] pieces all=12:b355d8f5b5238438 camera=12:b355d8f5b5238438 shadow=12:b355d8f5b5238438 indirect=12:b355d8f5b5238438 +geom 252: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0932336 motion [] pieces all=12:6ec8b9fb7b3d7a72 camera=12:6ec8b9fb7b3d7a72 shadow=12:6ec8b9fb7b3d7a72 indirect=12:6ec8b9fb7b3d7a72 +geom 253: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9554085 motion [] pieces all=12:d0792a3a2618b4a2 camera=12:d0792a3a2618b4a2 shadow=12:d0792a3a2618b4a2 indirect=12:d0792a3a2618b4a2 +geom 254: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87406343 motion [] pieces all=12:819ad0656b20e2bf camera=12:819ad0656b20e2bf shadow=12:819ad0656b20e2bf indirect=12:819ad0656b20e2bf +geom 255: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1052995 motion [] pieces all=12:fff64aa232c9f86c camera=12:fff64aa232c9f86c shadow=12:fff64aa232c9f86c indirect=12:fff64aa232c9f86c +geom 256: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9768473 motion [] pieces all=12:11fd407d6aab4445 camera=12:11fd407d6aab4445 shadow=12:11fd407d6aab4445 indirect=12:11fd407d6aab4445 +geom 257: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0729508 motion [] pieces all=12:a72cb8ec9ae50c56 camera=12:a72cb8ec9ae50c56 shadow=12:a72cb8ec9ae50c56 indirect=12:a72cb8ec9ae50c56 +geom 258: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1338656 motion [] pieces all=12:97aee9f21062e128 camera=12:97aee9f21062e128 shadow=12:97aee9f21062e128 indirect=12:97aee9f21062e128 +geom 259: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8844776 motion [] pieces all=12:6a1002885c8d7a12 camera=12:6a1002885c8d7a12 shadow=12:6a1002885c8d7a12 indirect=12:6a1002885c8d7a12 +geom 260: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83347267 motion [] pieces all=12:cee182e759730390 camera=12:cee182e759730390 shadow=12:cee182e759730390 indirect=12:cee182e759730390 +geom 261: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.173328 motion [] pieces all=12:4013087b40e6ad61 camera=12:4013087b40e6ad61 shadow=12:4013087b40e6ad61 indirect=12:4013087b40e6ad61 +geom 262: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92967904 motion [] pieces all=12:548c6ed2728c5a9f camera=12:548c6ed2728c5a9f shadow=12:548c6ed2728c5a9f indirect=12:548c6ed2728c5a9f +geom 263: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0202583 motion [] pieces all=12:43d11bf53a3b606f camera=12:43d11bf53a3b606f shadow=12:43d11bf53a3b606f indirect=12:43d11bf53a3b606f +geom 264: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1067905 motion [] pieces all=12:0e6e0232710c9ceb camera=12:0e6e0232710c9ceb shadow=12:0e6e0232710c9ceb indirect=12:0e6e0232710c9ceb +geom 265: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.86866605 motion [] pieces all=12:238aced2eba03486 camera=12:238aced2eba03486 shadow=12:238aced2eba03486 indirect=12:238aced2eba03486 +geom 266: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95813566 motion [] pieces all=12:93a01a8feb0ba82d camera=12:93a01a8feb0ba82d shadow=12:93a01a8feb0ba82d indirect=12:93a01a8feb0ba82d +geom 267: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0999786 motion [] pieces all=12:fdef8a38e3eea225 camera=12:fdef8a38e3eea225 shadow=12:fdef8a38e3eea225 indirect=12:fdef8a38e3eea225 +geom 268: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1849983 motion [] pieces all=12:40c96ea349626ea6 camera=12:40c96ea349626ea6 shadow=12:40c96ea349626ea6 indirect=12:40c96ea349626ea6 +geom 269: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8158234 motion [] pieces all=12:e7ea70beffae6450 camera=12:e7ea70beffae6450 shadow=12:e7ea70beffae6450 indirect=12:e7ea70beffae6450 +geom 270: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90898705 motion [] pieces all=12:e783e85c7725ed85 camera=12:e783e85c7725ed85 shadow=12:e783e85c7725ed85 indirect=12:e783e85c7725ed85 +geom 271: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0457114 motion [] pieces all=12:63f784b3d50f1052 camera=12:63f784b3d50f1052 shadow=12:63f784b3d50f1052 indirect=12:63f784b3d50f1052 +geom 272: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1491069 motion [] pieces all=12:944b697c71611990 camera=12:944b697c71611990 shadow=12:944b697c71611990 indirect=12:944b697c71611990 +geom 273: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8953586 motion [] pieces all=12:fa070a10ac3464b3 camera=12:fa070a10ac3464b3 shadow=12:fa070a10ac3464b3 indirect=12:fa070a10ac3464b3 +geom 274: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9947008 motion [] pieces all=12:8c64ed340c926d68 camera=12:8c64ed340c926d68 shadow=12:8c64ed340c926d68 indirect=12:8c64ed340c926d68 +geom 275: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0596404 motion [] pieces all=12:3f4c2e6570c01807 camera=12:3f4c2e6570c01807 shadow=12:3f4c2e6570c01807 indirect=12:3f4c2e6570c01807 +geom 276: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9401493 motion [] pieces all=12:488975cd2b8db7e7 camera=12:488975cd2b8db7e7 shadow=12:488975cd2b8db7e7 indirect=12:488975cd2b8db7e7 +geom 277: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0007957 motion [] pieces all=12:e7e388955a5bb04e camera=12:e7e388955a5bb04e shadow=12:e7e388955a5bb04e indirect=12:e7e388955a5bb04e +geom 278: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84572726 motion [] pieces all=12:8222aff79bdae433 camera=12:8222aff79bdae433 shadow=12:8222aff79bdae433 indirect=12:8222aff79bdae433 +geom 279: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1560192 motion [] pieces all=12:909a1c152f5a7fb4 camera=12:909a1c152f5a7fb4 shadow=12:909a1c152f5a7fb4 indirect=12:909a1c152f5a7fb4 +geom 280: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9637207 motion [] pieces all=12:07a3248bd4440601 camera=12:07a3248bd4440601 shadow=12:07a3248bd4440601 indirect=12:07a3248bd4440601 +geom 281: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.087206 motion [] pieces all=12:f7e9b7d82af723d0 camera=12:f7e9b7d82af723d0 shadow=12:f7e9b7d82af723d0 indirect=12:f7e9b7d82af723d0 +geom 282: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1232283 motion [] pieces all=12:37257db134b12300 camera=12:37257db134b12300 shadow=12:37257db134b12300 indirect=12:37257db134b12300 +geom 283: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8609516 motion [] pieces all=12:ff73408d4f6fd4d7 camera=12:ff73408d4f6fd4d7 shadow=12:ff73408d4f6fd4d7 indirect=12:ff73408d4f6fd4d7 +geom 284: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9192827 motion [] pieces all=12:514e716757a5adc0 camera=12:514e716757a5adc0 shadow=12:514e716757a5adc0 indirect=12:514e716757a5adc0 +geom 285: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0298046 motion [] pieces all=12:abb11888f7f912e8 camera=12:abb11888f7f912e8 shadow=12:abb11888f7f912e8 indirect=12:abb11888f7f912e8 +geom 286: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1977669 motion [] pieces all=12:017e24c64f0f05b2 camera=12:017e24c64f0f05b2 shadow=12:017e24c64f0f05b2 indirect=12:017e24c64f0f05b2 +geom 287: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80649936 motion [] pieces all=12:ae5ecdbf15c7950a camera=12:ae5ecdbf15c7950a shadow=12:ae5ecdbf15c7950a indirect=12:ae5ecdbf15c7950a +geom 288: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1386106 motion [] pieces all=12:6d1d96762e0b23da camera=12:6d1d96762e0b23da shadow=12:6d1d96762e0b23da indirect=12:6d1d96762e0b23da +geom 289: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88983685 motion [] pieces all=12:d5944dc9e35306e1 camera=12:d5944dc9e35306e1 shadow=12:d5944dc9e35306e1 indirect=12:d5944dc9e35306e1 +geom 290: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.991385 motion [] pieces all=12:c51dabe9315b59c1 camera=12:c51dabe9315b59c1 shadow=12:c51dabe9315b59c1 indirect=12:c51dabe9315b59c1 +geom 291: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0554097 motion [] pieces all=12:505dc6b5b5e4d03d camera=12:505dc6b5b5e4d03d shadow=12:505dc6b5b5e4d03d indirect=12:505dc6b5b5e4d03d +geom 292: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.011579 motion [] pieces all=12:9a99085db0f74aaf camera=12:9a99085db0f74aaf shadow=12:9a99085db0f74aaf indirect=12:9a99085db0f74aaf +geom 293: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9493576 motion [] pieces all=12:816daeae3d1a9ec5 camera=12:816daeae3d1a9ec5 shadow=12:816daeae3d1a9ec5 indirect=12:816daeae3d1a9ec5 +geom 294: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.161219 motion [] pieces all=12:6dc7d3c172c504b5 camera=12:6dc7d3c172c504b5 shadow=12:6dc7d3c172c504b5 indirect=12:6dc7d3c172c504b5 +geom 295: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8384609 motion [] pieces all=12:8f7f2b180cfd06af camera=12:8f7f2b180cfd06af shadow=12:8f7f2b180cfd06af indirect=12:8f7f2b180cfd06af +geom 296: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.19291 motion [] pieces all=12:7a924d2c281ba283 camera=12:7a924d2c281ba283 shadow=12:7a924d2c281ba283 indirect=12:7a924d2c281ba283 +geom 297: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80139834 motion [] pieces all=12:062debcce5b9470a camera=12:062debcce5b9470a shadow=12:062debcce5b9470a indirect=12:062debcce5b9470a +geom 298: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91284966 motion [] pieces all=12:ea80bb011b37a984 camera=12:ea80bb011b37a984 shadow=12:ea80bb011b37a984 indirect=12:ea80bb011b37a984 +geom 299: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.031602 motion [] pieces all=12:ff0b0b15d0c181ce camera=12:ff0b0b15d0c181ce shadow=12:ff0b0b15d0c181ce indirect=12:ff0b0b15d0c181ce +geom 300: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.076497 motion [] pieces all=12:f6ec5506b81bea9b camera=12:f6ec5506b81bea9b shadow=12:f6ec5506b81bea9b indirect=12:f6ec5506b81bea9b +geom 301: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97320867 motion [] pieces all=12:fced13594b0bcdfb camera=12:fced13594b0bcdfb shadow=12:fced13594b0bcdfb indirect=12:fced13594b0bcdfb +geom 302: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1159608 motion [] pieces all=12:1e819660719474d8 camera=12:1e819660719474d8 shadow=12:1e819660719474d8 indirect=12:1e819660719474d8 +geom 303: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8531368 motion [] pieces all=12:126e37df7ff77eb4 camera=12:126e37df7ff77eb4 shadow=12:126e37df7ff77eb4 indirect=12:126e37df7ff77eb4 +geom 304: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98263747 motion [] pieces all=12:4c79de7fe0c13ea0 camera=12:4c79de7fe0c13ea0 shadow=12:4c79de7fe0c13ea0 indirect=12:4c79de7fe0c13ea0 +geom 305: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0678959 motion [] pieces all=12:46d0a7e15d6071ff camera=12:46d0a7e15d6071ff shadow=12:46d0a7e15d6071ff indirect=12:46d0a7e15d6071ff +geom 306: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8811399 motion [] pieces all=12:33c2c46a6dbe77c1 camera=12:33c2c46a6dbe77c1 shadow=12:33c2c46a6dbe77c1 indirect=12:33c2c46a6dbe77c1 +geom 307: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1288906 motion [] pieces all=12:43b32bee7a52b30e camera=12:43b32bee7a52b30e shadow=12:43b32bee7a52b30e indirect=12:43b32bee7a52b30e +geom 308: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0132886 motion [] pieces all=12:e57199f7c51b7eea camera=12:e57199f7c51b7eea shadow=12:e57199f7c51b7eea indirect=12:e57199f7c51b7eea +geom 309: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9316937 motion [] pieces all=12:005e1a5ad92f9a2b camera=12:005e1a5ad92f9a2b shadow=12:005e1a5ad92f9a2b indirect=12:005e1a5ad92f9a2b +geom 310: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1648556 motion [] pieces all=12:eebf0d8dfe1feee2 camera=12:eebf0d8dfe1feee2 shadow=12:eebf0d8dfe1feee2 indirect=12:eebf0d8dfe1feee2 +geom 311: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82504475 motion [] pieces all=12:6575214d3b9ea1ea camera=12:6575214d3b9ea1ea shadow=12:6575214d3b9ea1ea indirect=12:6575214d3b9ea1ea +geom 312: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0375521 motion [] pieces all=12:6c66a970174a7752 camera=12:6c66a970174a7752 shadow=12:6c66a970174a7752 indirect=12:6c66a970174a7752 +geom 313: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90262544 motion [] pieces all=12:261c2367beadc415 camera=12:261c2367beadc415 shadow=12:261c2367beadc415 indirect=12:261c2367beadc415 +geom 314: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8189789 motion [] pieces all=12:33bfec7bae86f3a5 camera=12:33bfec7bae86f3a5 shadow=12:33bfec7bae86f3a5 indirect=12:33bfec7bae86f3a5 +geom 315: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1807628 motion [] pieces all=12:5ea527b5a1b483dd camera=12:5ea527b5a1b483dd shadow=12:5ea527b5a1b483dd indirect=12:5ea527b5a1b483dd +geom 316: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0895107 motion [] pieces all=12:34f66a983d950003 camera=12:34f66a983d950003 shadow=12:34f66a983d950003 indirect=12:34f66a983d950003 +geom 317: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9502792 motion [] pieces all=12:406e457dcfebe0fb camera=12:406e457dcfebe0fb shadow=12:406e457dcfebe0fb indirect=12:406e457dcfebe0fb +geom 318: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8717746 motion [] pieces all=12:882e6bf9d50b435e camera=12:882e6bf9d50b435e shadow=12:882e6bf9d50b435e indirect=12:882e6bf9d50b435e +geom 319: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1022806 motion [] pieces all=12:af292a085466ce4a camera=12:af292a085466ce4a shadow=12:af292a085466ce4a indirect=12:af292a085466ce4a +geom 320: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1125914 motion [] pieces all=12:4bc553e1e8db5e20 camera=12:4bc553e1e8db5e20 shadow=12:4bc553e1e8db5e20 indirect=12:4bc553e1e8db5e20 +geom 321: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8507036 motion [] pieces all=12:cb5343dbea2c9ba6 camera=12:cb5343dbea2c9ba6 shadow=12:cb5343dbea2c9ba6 indirect=12:cb5343dbea2c9ba6 +geom 322: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0811025 motion [] pieces all=12:81339deb7d3373c2 camera=12:81339deb7d3373c2 shadow=12:81339deb7d3373c2 indirect=12:81339deb7d3373c2 +geom 323: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97089374 motion [] pieces all=12:0285ec2f5168c02f camera=12:0285ec2f5168c02f shadow=12:0285ec2f5168c02f indirect=12:0285ec2f5168c02f +geom 324: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80321383 motion [] pieces all=12:4f385f4002cbef34 camera=12:4f385f4002cbef34 shadow=12:4f385f4002cbef34 indirect=12:4f385f4002cbef34 +geom 325: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1880153 motion [] pieces all=12:1d9b67f5f6634b3f camera=12:1d9b67f5f6634b3f shadow=12:1d9b67f5f6634b3f indirect=12:1d9b67f5f6634b3f +geom 326: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9187322 motion [] pieces all=12:149a6ca273e0fd79 camera=12:149a6ca273e0fd79 shadow=12:149a6ca273e0fd79 indirect=12:149a6ca273e0fd79 +geom 327: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0357703 motion [] pieces all=12:eb62f4494b2be49b camera=12:eb62f4494b2be49b shadow=12:eb62f4494b2be49b indirect=12:eb62f4494b2be49b +geom 328: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8926734 motion [] pieces all=12:78843baf0013ffaa camera=12:78843baf0013ffaa shadow=12:78843baf0013ffaa indirect=12:78843baf0013ffaa +geom 329: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1423489 motion [] pieces all=12:2d144148dd9ba911 camera=12:2d144148dd9ba911 shadow=12:2d144148dd9ba911 indirect=12:2d144148dd9ba911 +geom 330: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9875227 motion [] pieces all=12:930d081d29556bd6 camera=12:930d081d29556bd6 shadow=12:930d081d29556bd6 indirect=12:930d081d29556bd6 +geom 331: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0504947 motion [] pieces all=12:1257f6e7c3b08a31 camera=12:1257f6e7c3b08a31 shadow=12:1257f6e7c3b08a31 indirect=12:1257f6e7c3b08a31 +geom 332: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0072688 motion [] pieces all=12:d5694522eff59d20 camera=12:d5694522eff59d20 shadow=12:d5694522eff59d20 indirect=12:d5694522eff59d20 +geom 333: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9455354 motion [] pieces all=12:611e21d6917ae7e6 camera=12:611e21d6917ae7e6 shadow=12:611e21d6917ae7e6 indirect=12:611e21d6917ae7e6 +geom 334: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8409919 motion [] pieces all=12:a48a2d8ae8bdfac6 camera=12:a48a2d8ae8bdfac6 shadow=12:a48a2d8ae8bdfac6 indirect=12:a48a2d8ae8bdfac6 +geom 335: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1570698 motion [] pieces all=12:5d964214cf585b93 camera=12:5d964214cf585b93 shadow=12:5d964214cf585b93 indirect=12:5d964214cf585b93 +geom 336: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8299381 motion [] pieces all=12:a9176c71ff6fb225 camera=12:a9176c71ff6fb225 shadow=12:a9176c71ff6fb225 indirect=12:a9176c71ff6fb225 +geom 337: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1672927 motion [] pieces all=12:40356f96e9441616 camera=12:40356f96e9441616 shadow=12:40356f96e9441616 indirect=12:40356f96e9441616 +geom 338: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9352113 motion [] pieces all=12:acbadaf1d2f5ba0d camera=12:acbadaf1d2f5ba0d shadow=12:acbadaf1d2f5ba0d indirect=12:acbadaf1d2f5ba0d +geom 339: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0174538 motion [] pieces all=12:3556aa08c7c7a4cb camera=12:3556aa08c7c7a4cb shadow=12:3556aa08c7c7a4cb indirect=12:3556aa08c7c7a4cb +geom 340: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0640922 motion [] pieces all=12:b216c43839554d22 camera=12:b216c43839554d22 shadow=12:b216c43839554d22 indirect=12:b216c43839554d22 +geom 341: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98485225 motion [] pieces all=12:a7a0b37be67099fa camera=12:a7a0b37be67099fa shadow=12:a7a0b37be67099fa indirect=12:a7a0b37be67099fa +geom 342: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8760297 motion [] pieces all=12:d93a0b99b5544913 camera=12:d93a0b99b5544913 shadow=12:d93a0b99b5544913 indirect=12:d93a0b99b5544913 +geom 343: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1267965 motion [] pieces all=12:4b2bdd8f74989ed0 camera=12:4b2bdd8f74989ed0 shadow=12:4b2bdd8f74989ed0 indirect=12:4b2bdd8f74989ed0 +geom 344: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9535157 motion [] pieces all=12:e483eb99e4899c43 camera=12:e483eb99e4899c43 shadow=12:e483eb99e4899c43 indirect=12:e483eb99e4899c43 +geom 345: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0909876 motion [] pieces all=12:33b2730e64cbcbf5 camera=12:33b2730e64cbcbf5 shadow=12:33b2730e64cbcbf5 indirect=12:33b2730e64cbcbf5 +geom 346: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.873239 motion [] pieces all=12:0d52bd81fe2cd696 camera=12:0d52bd81fe2cd696 shadow=12:0d52bd81fe2cd696 indirect=12:0d52bd81fe2cd696 +geom 347: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1036613 motion [] pieces all=12:7a47f32f288f5cbe camera=12:7a47f32f288f5cbe shadow=12:7a47f32f288f5cbe indirect=12:7a47f32f288f5cbe +geom 348: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.823912 motion [] pieces all=12:609ac4562b806a10 camera=12:609ac4562b806a10 shadow=12:609ac4562b806a10 indirect=12:609ac4562b806a10 +geom 349: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1773586 motion [] pieces all=12:8481eeed367ea601 camera=12:8481eeed367ea601 shadow=12:8481eeed367ea601 indirect=12:8481eeed367ea601 +geom 350: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0432719 motion [] pieces all=12:fef8a9c498c1091a camera=12:fef8a9c498c1091a shadow=12:fef8a9c498c1091a indirect=12:fef8a9c498c1091a +geom 351: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9059112 motion [] pieces all=12:258ac525c3d14e49 camera=12:258ac525c3d14e49 shadow=12:258ac525c3d14e49 indirect=12:258ac525c3d14e49 +geom 352: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8105323 motion [] pieces all=12:d72d3430c4224927 camera=12:d72d3430c4224927 shadow=12:d72d3430c4224927 indirect=12:d72d3430c4224927 +geom 353: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1959983 motion [] pieces all=12:a4b68acb4f4a98cf camera=12:a4b68acb4f4a98cf shadow=12:a4b68acb4f4a98cf indirect=12:a4b68acb4f4a98cf +geom 354: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.924839 motion [] pieces all=12:cce102d01e4037c4 camera=12:cce102d01e4037c4 shadow=12:cce102d01e4037c4 indirect=12:cce102d01e4037c4 +geom 355: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.026029 motion [] pieces all=12:a31900d98450f4a2 camera=12:a31900d98450f4a2 shadow=12:a31900d98450f4a2 indirect=12:a31900d98450f4a2 +geom 356: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85874945 motion [] pieces all=12:6947b56775598e2c camera=12:6947b56775598e2c shadow=12:6947b56775598e2c indirect=12:6947b56775598e2c +geom 357: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1200635 motion [] pieces all=12:b1184ceaa666ca81 camera=12:b1184ceaa666ca81 shadow=12:b1184ceaa666ca81 indirect=12:b1184ceaa666ca81 +geom 358: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96589327 motion [] pieces all=12:21486a0ccc379a21 camera=12:21486a0ccc379a21 shadow=12:21486a0ccc379a21 indirect=12:21486a0ccc379a21 +geom 359: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0838121 motion [] pieces all=12:8ba9ff414ecdc6d5 camera=12:8ba9ff414ecdc6d5 shadow=12:8ba9ff414ecdc6d5 indirect=12:8ba9ff414ecdc6d5 +geom 360: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0584942 motion [] pieces all=12:005bcfb5f838ccb5 camera=12:005bcfb5f838ccb5 shadow=12:005bcfb5f838ccb5 indirect=12:005bcfb5f838ccb5 +geom 361: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9998037 motion [] pieces all=12:f350c74d843a70f1 camera=12:f350c74d843a70f1 shadow=12:f350c74d843a70f1 indirect=12:f350c74d843a70f1 +geom 362: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89845294 motion [] pieces all=12:57221d2e110540bf camera=12:57221d2e110540bf shadow=12:57221d2e110540bf indirect=12:57221d2e110540bf +geom 363: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1464553 motion [] pieces all=12:5fffae7196a90fdc camera=12:5fffae7196a90fdc shadow=12:5fffae7196a90fdc indirect=12:5fffae7196a90fdc +geom 364: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0036417 motion [] pieces all=12:d14878e07b7d99a6 camera=12:d14878e07b7d99a6 shadow=12:d14878e07b7d99a6 indirect=12:d14878e07b7d99a6 +geom 365: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9418138 motion [] pieces all=12:def1468defc6d9cd camera=12:def1468defc6d9cd shadow=12:def1468defc6d9cd indirect=12:def1468defc6d9cd +geom 366: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8484609 motion [] pieces all=12:12a273be369c651f camera=12:12a273be369c651f shadow=12:12a273be369c651f indirect=12:12a273be369c651f +geom 367: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1505002 motion [] pieces all=12:777a26513d2ddea7 camera=12:777a26513d2ddea7 shadow=12:777a26513d2ddea7 indirect=12:777a26513d2ddea7 +geom 368: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1124372 motion [] pieces all=12:7157de5db2f2966b camera=12:7157de5db2f2966b shadow=12:7157de5db2f2966b indirect=12:7157de5db2f2966b +geom 369: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.86513543 motion [] pieces all=12:6e9934c150dd6c1b camera=12:6e9934c150dd6c1b shadow=12:6e9934c150dd6c1b indirect=12:6e9934c150dd6c1b +geom 370: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96190256 motion [] pieces all=12:2dadbf133c9582bd camera=12:2dadbf133c9582bd shadow=12:2dadbf133c9582bd indirect=12:2dadbf133c9582bd +geom 371: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0965079 motion [] pieces all=12:1eeed34d94b22845 camera=12:1eeed34d94b22845 shadow=12:1eeed34d94b22845 indirect=12:1eeed34d94b22845 +geom 372: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0477712 motion [] pieces all=12:0ac05b9c0a1b134d camera=12:0ac05b9c0a1b134d shadow=12:0ac05b9c0a1b134d indirect=12:0ac05b9c0a1b134d +geom 373: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9117553 motion [] pieces all=12:96ed23f1b1eb9ecd camera=12:96ed23f1b1eb9ecd shadow=12:96ed23f1b1eb9ecd indirect=12:96ed23f1b1eb9ecd +geom 374: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1822846 motion [] pieces all=12:a91baba5e9c0dee9 camera=12:a91baba5e9c0dee9 shadow=12:a91baba5e9c0dee9 indirect=12:a91baba5e9c0dee9 +geom 375: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81359315 motion [] pieces all=12:a82e069c3f0c85e3 camera=12:a82e069c3f0c85e3 shadow=12:a82e069c3f0c85e3 indirect=12:a82e069c3f0c85e3 +geom 376: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8348295 motion [] pieces all=12:d162e00ec8e3c215 camera=12:d162e00ec8e3c215 shadow=12:d162e00ec8e3c215 indirect=12:d162e00ec8e3c215 +geom 377: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1710575 motion [] pieces all=12:a1133fe12560df78 camera=12:a1133fe12560df78 shadow=12:a1133fe12560df78 indirect=12:a1133fe12560df78 +geom 378: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.023812 motion [] pieces all=12:1f1e654fc23dbe55 camera=12:1f1e654fc23dbe55 shadow=12:1f1e654fc23dbe55 indirect=12:1f1e654fc23dbe55 +geom 379: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9276315 motion [] pieces all=12:5424d4a8814c6375 camera=12:5424d4a8814c6375 shadow=12:5424d4a8814c6375 indirect=12:5424d4a8814c6375 +geom 380: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98007417 motion [] pieces all=12:9522bde07f6ee731 camera=12:9522bde07f6ee731 shadow=12:9522bde07f6ee731 indirect=12:9522bde07f6ee731 +geom 381: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0695097 motion [] pieces all=12:180f3d3749531a56 camera=12:180f3d3749531a56 shadow=12:180f3d3749531a56 indirect=12:180f3d3749531a56 +geom 382: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8843071 motion [] pieces all=12:6f5cd1f53e3ff728 camera=12:6f5cd1f53e3ff728 shadow=12:6f5cd1f53e3ff728 indirect=12:6f5cd1f53e3ff728 +geom 383: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1362706 motion [] pieces all=12:2f9702b10330c304 camera=12:2f9702b10330c304 shadow=12:2f9702b10330c304 indirect=12:2f9702b10330c304 +geom 384: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0101188 motion [] pieces all=12:01b1e2d0d10843b9 camera=12:01b1e2d0d10843b9 shadow=12:01b1e2d0d10843b9 indirect=12:01b1e2d0d10843b9 +geom 385: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9480209 motion [] pieces all=12:a3718136f8ac9b33 camera=12:a3718136f8ac9b33 shadow=12:a3718136f8ac9b33 indirect=12:a3718136f8ac9b33 +geom 386: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8395415 motion [] pieces all=12:e61b673596194138 camera=12:e61b673596194138 shadow=12:e61b673596194138 indirect=12:e61b673596194138 +geom 387: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1603119 motion [] pieces all=12:15579d5ba71f40e4 camera=12:15579d5ba71f40e4 shadow=12:15579d5ba71f40e4 indirect=12:15579d5ba71f40e4 +geom 388: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.992698 motion [] pieces all=12:6246034de965bd8b camera=12:6246034de965bd8b shadow=12:6246034de965bd8b indirect=12:6246034de965bd8b +geom 389: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0540782 motion [] pieces all=12:cc39ce91f2cadad2 camera=12:cc39ce91f2cadad2 shadow=12:cc39ce91f2cadad2 indirect=12:cc39ce91f2cadad2 +geom 390: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1401312 motion [] pieces all=12:e33f879dfe0bf49e camera=12:e33f879dfe0bf49e shadow=12:e33f879dfe0bf49e indirect=12:e33f879dfe0bf49e +geom 391: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8881962 motion [] pieces all=12:4e3dd2f45e265f30 camera=12:4e3dd2f45e265f30 shadow=12:4e3dd2f45e265f30 indirect=12:4e3dd2f45e265f30 +geom 392: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8030794 motion [] pieces all=12:cf560123b8483fa3 camera=12:cf560123b8483fa3 shadow=12:cf560123b8483fa3 indirect=12:cf560123b8483fa3 +geom 393: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1916865 motion [] pieces all=12:93307bb30e25f408 camera=12:93307bb30e25f408 shadow=12:93307bb30e25f408 indirect=12:93307bb30e25f408 +geom 394: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9150232 motion [] pieces all=12:6fba751150ec4727 camera=12:6fba751150ec4727 shadow=12:6fba751150ec4727 indirect=12:6fba751150ec4727 +geom 395: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0336049 motion [] pieces all=12:4e5b5fb694ef1bf3 camera=12:4e5b5fb694ef1bf3 shadow=12:4e5b5fb694ef1bf3 indirect=12:4e5b5fb694ef1bf3 +geom 396: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97491765 motion [] pieces all=12:276b8d85aca1a3e9 camera=12:276b8d85aca1a3e9 shadow=12:276b8d85aca1a3e9 indirect=12:276b8d85aca1a3e9 +geom 397: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0771285 motion [] pieces all=12:a4c3bbfbcb9c67a2 camera=12:a4c3bbfbcb9c67a2 shadow=12:a4c3bbfbcb9c67a2 indirect=12:a4c3bbfbcb9c67a2 +geom 398: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1179042 motion [] pieces all=12:ccb5bcea08ceb25a camera=12:ccb5bcea08ceb25a shadow=12:ccb5bcea08ceb25a indirect=12:ccb5bcea08ceb25a +geom 399: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8553025 motion [] pieces all=12:bac2e733548264d8 camera=12:bac2e733548264d8 shadow=12:bac2e733548264d8 indirect=12:bac2e733548264d8 +geom 400: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82128096 motion [] pieces all=12:d0d4e2a58ed4d9ec camera=12:d0d4e2a58ed4d9ec shadow=12:d0d4e2a58ed4d9ec indirect=12:d0d4e2a58ed4d9ec +geom 401: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1792935 motion [] pieces all=12:0de17972ba65c254 camera=12:0de17972ba65c254 shadow=12:0de17972ba65c254 indirect=12:0de17972ba65c254 +geom 402: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0401901 motion [] pieces all=12:cb0504e52836d3fe camera=12:cb0504e52836d3fe shadow=12:cb0504e52836d3fe indirect=12:cb0504e52836d3fe +geom 403: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90141225 motion [] pieces all=12:60d437e84d0a53f0 camera=12:60d437e84d0a53f0 shadow=12:60d437e84d0a53f0 indirect=12:60d437e84d0a53f0 +geom 404: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1005943 motion [] pieces all=12:1ecffa1ba99925c0 camera=12:1ecffa1ba99925c0 shadow=12:1ecffa1ba99925c0 indirect=12:1ecffa1ba99925c0 +geom 405: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.86883533 motion [] pieces all=12:ad799c2d305de2f9 camera=12:ad799c2d305de2f9 shadow=12:ad799c2d305de2f9 indirect=12:ad799c2d305de2f9 +geom 406: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.952475 motion [] pieces all=12:7dd378b8e4a2aa36 camera=12:7dd378b8e4a2aa36 shadow=12:7dd378b8e4a2aa36 indirect=12:7dd378b8e4a2aa36 +geom 407: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0887097 motion [] pieces all=12:c374efc1d0e8e23c camera=12:c374efc1d0e8e23c shadow=12:c374efc1d0e8e23c indirect=12:c374efc1d0e8e23c +geom 408: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87827426 motion [] pieces all=12:ebf6baf3acbb7768 camera=12:ebf6baf3acbb7768 shadow=12:ebf6baf3acbb7768 indirect=12:ebf6baf3acbb7768 +geom 409: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1302669 motion [] pieces all=12:304f505a4a86cc55 camera=12:304f505a4a86cc55 shadow=12:304f505a4a86cc55 indirect=12:304f505a4a86cc55 +geom 410: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9838797 motion [] pieces all=12:b21a4d02fbf044fe camera=12:b21a4d02fbf044fe shadow=12:b21a4d02fbf044fe indirect=12:b21a4d02fbf044fe +geom 411: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.066421 motion [] pieces all=12:fd0d9cae806682eb camera=12:fd0d9cae806682eb shadow=12:fd0d9cae806682eb indirect=12:fd0d9cae806682eb +geom 412: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82724553 motion [] pieces all=12:f3a26851e3a14430 camera=12:f3a26851e3a14430 shadow=12:f3a26851e3a14430 indirect=12:f3a26851e3a14430 +geom 413: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1630746 motion [] pieces all=12:c76ca4f07283ba56 camera=12:c76ca4f07283ba56 shadow=12:c76ca4f07283ba56 indirect=12:c76ca4f07283ba56 +geom 414: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9334531 motion [] pieces all=12:a4095d0f91d1dbce camera=12:a4095d0f91d1dbce shadow=12:a4095d0f91d1dbce indirect=12:a4095d0f91d1dbce +geom 415: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0141398 motion [] pieces all=12:d0d1389ea8f40b8a camera=12:d0d1389ea8f40b8a shadow=12:d0d1389ea8f40b8a indirect=12:d0d1389ea8f40b8a +geom 416: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89513576 motion [] pieces all=12:3dafbaac68751923 camera=12:3dafbaac68751923 shadow=12:3dafbaac68751923 indirect=12:3dafbaac68751923 +geom 417: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1475859 motion [] pieces all=12:9f710bfbf3df25ef camera=12:9f710bfbf3df25ef shadow=12:9f710bfbf3df25ef indirect=12:9f710bfbf3df25ef +geom 418: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0621774 motion [] pieces all=12:1d2e334e94d93089 camera=12:1d2e334e94d93089 shadow=12:1d2e334e94d93089 indirect=12:1d2e334e94d93089 +geom 419: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9958263 motion [] pieces all=12:bb4d6096054796d8 camera=12:bb4d6096054796d8 shadow=12:bb4d6096054796d8 indirect=12:bb4d6096054796d8 +geom 420: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93813705 motion [] pieces all=12:66386a626e17b76d camera=12:66386a626e17b76d shadow=12:66386a626e17b76d indirect=12:66386a626e17b76d +geom 421: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0026661 motion [] pieces all=12:43d0a792fbfee3eb camera=12:43d0a792fbfee3eb shadow=12:43d0a792fbfee3eb indirect=12:43d0a792fbfee3eb +geom 422: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8441921 motion [] pieces all=12:dd63e9666863137e camera=12:dd63e9666863137e shadow=12:dd63e9666863137e indirect=12:dd63e9666863137e +geom 423: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1533538 motion [] pieces all=12:5cb904f4e9bb8f67 camera=12:5cb904f4e9bb8f67 shadow=12:5cb904f4e9bb8f67 indirect=12:5cb904f4e9bb8f67 +geom 424: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9651056 motion [] pieces all=12:4851fc6bb207fc6a camera=12:4851fc6bb207fc6a shadow=12:4851fc6bb207fc6a indirect=12:4851fc6bb207fc6a +geom 425: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0846107 motion [] pieces all=12:d93301565d39769a camera=12:d93301565d39769a shadow=12:d93301565d39769a indirect=12:d93301565d39769a +geom 426: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1234391 motion [] pieces all=12:b7f8977aa22450b1 camera=12:b7f8977aa22450b1 shadow=12:b7f8977aa22450b1 indirect=12:b7f8977aa22450b1 +geom 427: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8603886 motion [] pieces all=12:09a08e37ffa8932d camera=12:09a08e37ffa8932d shadow=12:09a08e37ffa8932d indirect=12:09a08e37ffa8932d +geom 428: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9211374 motion [] pieces all=12:42b2aa796526643c camera=12:42b2aa796526643c shadow=12:42b2aa796526643c indirect=12:42b2aa796526643c +geom 429: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0282738 motion [] pieces all=12:eda0f4d4540ad71d camera=12:eda0f4d4540ad71d shadow=12:eda0f4d4540ad71d indirect=12:eda0f4d4540ad71d +geom 430: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.19869 motion [] pieces all=12:b390e73c2e13571d camera=12:b390e73c2e13571d shadow=12:b390e73c2e13571d indirect=12:b390e73c2e13571d +geom 431: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8092543 motion [] pieces all=12:1a3f8088b34e4aaa camera=12:1a3f8088b34e4aaa shadow=12:1a3f8088b34e4aaa indirect=12:1a3f8088b34e4aaa +geom 432: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93068063 motion [] pieces all=12:bea1c6a83b8fb2fc camera=12:bea1c6a83b8fb2fc shadow=12:bea1c6a83b8fb2fc indirect=12:bea1c6a83b8fb2fc +geom 433: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0208405 motion [] pieces all=12:7a06b77e2f10d46f camera=12:7a06b77e2f10d46f shadow=12:7a06b77e2f10d46f indirect=12:7a06b77e2f10d46f +geom 434: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1745689 motion [] pieces all=12:97676d0cff45e177 camera=12:97676d0cff45e177 shadow=12:97676d0cff45e177 indirect=12:97676d0cff45e177 +geom 435: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83135146 motion [] pieces all=12:705d411ef26746f7 camera=12:705d411ef26746f7 shadow=12:705d411ef26746f7 indirect=12:705d411ef26746f7 +geom 436: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1314473 motion [] pieces all=12:5ad7f1d5c915512a camera=12:5ad7f1d5c915512a shadow=12:5ad7f1d5c915512a indirect=12:5ad7f1d5c915512a +geom 437: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8867999 motion [] pieces all=12:8476adde76913396 camera=12:8476adde76913396 shadow=12:8476adde76913396 indirect=12:8476adde76913396 +geom 438: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0747112 motion [] pieces all=12:e7f5a973bccec9bc camera=12:e7f5a973bccec9bc shadow=12:e7f5a973bccec9bc indirect=12:e7f5a973bccec9bc +geom 439: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97620165 motion [] pieces all=12:11415e4f4b31504d camera=12:11415e4f4b31504d shadow=12:11415e4f4b31504d indirect=12:11415e4f4b31504d +geom 440: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81814355 motion [] pieces all=12:c369f1b75eea6930 camera=12:c369f1b75eea6930 shadow=12:c369f1b75eea6930 indirect=12:c369f1b75eea6930 +geom 441: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1871269 motion [] pieces all=12:04bae91190b6a617 camera=12:04bae91190b6a617 shadow=12:04bae91190b6a617 indirect=12:04bae91190b6a617 +geom 442: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9068257 motion [] pieces all=12:40cebd682433bc7a camera=12:40cebd682433bc7a shadow=12:40cebd682433bc7a indirect=12:40cebd682433bc7a +geom 443: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0449783 motion [] pieces all=12:74939d9d0c9a68ac camera=12:74939d9d0c9a68ac shadow=12:74939d9d0c9a68ac indirect=12:74939d9d0c9a68ac +geom 444: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8661409 motion [] pieces all=12:1a5cbca5cfe676bc camera=12:1a5cbca5cfe676bc shadow=12:1a5cbca5cfe676bc indirect=12:1a5cbca5cfe676bc +geom 445: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1079133 motion [] pieces all=12:9a5a9971e6dbdbdd camera=12:9a5a9971e6dbdbdd shadow=12:9a5a9971e6dbdbdd indirect=12:9a5a9971e6dbdbdd +geom 446: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9565916 motion [] pieces all=12:ac7765639dbb6ac7 camera=12:ac7765639dbb6ac7 shadow=12:ac7765639dbb6ac7 indirect=12:ac7765639dbb6ac7 +geom 447: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0983777 motion [] pieces all=12:98a63c9336ee2b94 camera=12:98a63c9336ee2b94 shadow=12:98a63c9336ee2b94 indirect=12:98a63c9336ee2b94 +geom 448: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.969946 motion [] pieces all=12:85507e4ddce2dbc6 camera=12:85507e4ddce2dbc6 shadow=12:85507e4ddce2dbc6 indirect=12:85507e4ddce2dbc6 +geom 449: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0791402 motion [] pieces all=12:497dd3f3d36bf4b3 camera=12:497dd3f3d36bf4b3 shadow=12:497dd3f3d36bf4b3 indirect=12:497dd3f3d36bf4b3 +geom 450: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1147938 motion [] pieces all=12:286593b41115d023 camera=12:286593b41115d023 shadow=12:286593b41115d023 indirect=12:286593b41115d023 +geom 451: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8517827 motion [] pieces all=12:e223b6f2d797d785 camera=12:e223b6f2d797d785 shadow=12:e223b6f2d797d785 indirect=12:e223b6f2d797d785 +geom 452: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0364246 motion [] pieces all=12:197e95eb8561cce5 camera=12:197e95eb8561cce5 shadow=12:197e95eb8561cce5 indirect=12:197e95eb8561cce5 +geom 453: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9164818 motion [] pieces all=12:4f29b6e7f178eec1 camera=12:4f29b6e7f178eec1 shadow=12:4f29b6e7f178eec1 indirect=12:4f29b6e7f178eec1 +geom 454: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.805457 motion [] pieces all=12:62d46e328c2118be camera=12:62d46e328c2118be shadow=12:62d46e328c2118be indirect=12:62d46e328c2118be +geom 455: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1892269 motion [] pieces all=12:97e3d204c89712f3 camera=12:97e3d204c89712f3 shadow=12:97e3d204c89712f3 indirect=12:97e3d204c89712f3 +geom 456: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0083134 motion [] pieces all=12:3ede262e8b02235b camera=12:3ede262e8b02235b shadow=12:3ede262e8b02235b indirect=12:3ede262e8b02235b +geom 457: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9442222 motion [] pieces all=12:0cf0a9bb1d2d0410 camera=12:0cf0a9bb1d2d0410 shadow=12:0cf0a9bb1d2d0410 indirect=12:0cf0a9bb1d2d0410 +geom 458: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1586176 motion [] pieces all=12:7e4881ca0c7c6011 camera=12:7e4881ca0c7c6011 shadow=12:7e4881ca0c7c6011 indirect=12:7e4881ca0c7c6011 +geom 459: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84321785 motion [] pieces all=12:1ab78d45283d65e6 camera=12:1ab78d45283d65e6 shadow=12:1ab78d45283d65e6 indirect=12:1ab78d45283d65e6 +geom 460: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0523099 motion [] pieces all=12:c37c57bae72e8dfa camera=12:c37c57bae72e8dfa shadow=12:c37c57bae72e8dfa indirect=12:c37c57bae72e8dfa +geom 461: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9891003 motion [] pieces all=12:4afddb31fd04036c camera=12:4afddb31fd04036c shadow=12:4afddb31fd04036c indirect=12:4afddb31fd04036c +geom 462: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1417663 motion [] pieces all=12:a48681853dc094a5 camera=12:a48681853dc094a5 shadow=12:a48681853dc094a5 indirect=12:a48681853dc094a5 +geom 463: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8911673 motion [] pieces all=12:ec8c0fc9f54933e5 camera=12:ec8c0fc9f54933e5 shadow=12:ec8c0fc9f54933e5 indirect=12:ec8c0fc9f54933e5 +geom 464: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0637368 motion [] pieces all=12:603b51218f4125d8 camera=12:603b51218f4125d8 shadow=12:603b51218f4125d8 indirect=12:603b51218f4125d8 +geom 465: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98671156 motion [] pieces all=12:2d07a5db98b98d2f camera=12:2d07a5db98b98d2f shadow=12:2d07a5db98b98d2f indirect=12:2d07a5db98b98d2f +geom 466: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1258419 motion [] pieces all=12:782692002ac14fb0 camera=12:782692002ac14fb0 shadow=12:782692002ac14fb0 indirect=12:782692002ac14fb0 +geom 467: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87781215 motion [] pieces all=12:c5121f3612bd75dc camera=12:c5121f3612bd75dc shadow=12:c5121f3612bd75dc indirect=12:c5121f3612bd75dc +geom 468: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82933056 motion [] pieces all=12:b8b2a37b27ad55e1 camera=12:b8b2a37b27ad55e1 shadow=12:b8b2a37b27ad55e1 indirect=12:b8b2a37b27ad55e1 +geom 469: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1671188 motion [] pieces all=12:e9ddfcb68e4e2c32 camera=12:e9ddfcb68e4e2c32 shadow=12:e9ddfcb68e4e2c32 indirect=12:e9ddfcb68e4e2c32 +geom 470: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0159265 motion [] pieces all=12:5952669ebcc3109f camera=12:5952669ebcc3109f shadow=12:5952669ebcc3109f indirect=12:5952669ebcc3109f +geom 471: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9372265 motion [] pieces all=12:23e05c31053d2728 camera=12:23e05c31053d2728 shadow=12:23e05c31053d2728 indirect=12:23e05c31053d2728 +geom 472: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1055912 motion [] pieces all=12:0c7e41d856d8269f camera=12:0c7e41d856d8269f shadow=12:0c7e41d856d8269f indirect=12:0c7e41d856d8269f +geom 473: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8747676 motion [] pieces all=12:4dafbe2309e854ed camera=12:4dafbe2309e854ed shadow=12:4dafbe2309e854ed indirect=12:4dafbe2309e854ed +geom 474: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0922952 motion [] pieces all=12:7d6fa39dd87dc7c4 camera=12:7d6fa39dd87dc7c4 shadow=12:7d6fa39dd87dc7c4 indirect=12:7d6fa39dd87dc7c4 +geom 475: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.955663 motion [] pieces all=12:52cba7f8dddc2f02 camera=12:52cba7f8dddc2f02 shadow=12:52cba7f8dddc2f02 indirect=12:52cba7f8dddc2f02 +geom 476: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1761495 motion [] pieces all=12:26a32d0a83946192 camera=12:26a32d0a83946192 shadow=12:26a32d0a83946192 indirect=12:26a32d0a83946192 +geom 477: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8223541 motion [] pieces all=12:fd6339298e386d30 camera=12:fd6339298e386d30 shadow=12:fd6339298e386d30 indirect=12:fd6339298e386d30 +geom 478: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0418688 motion [] pieces all=12:9b5252cbcc47384a camera=12:9b5252cbcc47384a shadow=12:9b5252cbcc47384a indirect=12:9b5252cbcc47384a +geom 479: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9039106 motion [] pieces all=12:756db00b963c4514 camera=12:756db00b963c4514 shadow=12:756db00b963c4514 indirect=12:756db00b963c4514 +geom 480: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.151993 motion [] pieces all=12:8ae04cebeee0d55b camera=12:8ae04cebeee0d55b shadow=12:8ae04cebeee0d55b indirect=12:8ae04cebeee0d55b +geom 481: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8470864 motion [] pieces all=12:36fcfb562fc3fc33 camera=12:36fcfb562fc3fc33 shadow=12:36fcfb562fc3fc33 indirect=12:36fcfb562fc3fc33 +geom 482: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94315344 motion [] pieces all=12:b50f22a9164da124 camera=12:b50f22a9164da124 shadow=12:b50f22a9164da124 indirect=12:b50f22a9164da124 +geom 483: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0047348 motion [] pieces all=12:166a5e7e8479c8a8 camera=12:166a5e7e8479c8a8 shadow=12:166a5e7e8479c8a8 indirect=12:166a5e7e8479c8a8 +geom 484: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89837015 motion [] pieces all=12:5fb0ec785972805a camera=12:5fb0ec785972805a shadow=12:5fb0ec785972805a indirect=12:5fb0ec785972805a +geom 485: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1450866 motion [] pieces all=12:71f9193833382069 camera=12:71f9193833382069 shadow=12:71f9193833382069 indirect=12:71f9193833382069 +geom 486: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0569787 motion [] pieces all=12:ecd163b06c9da77e camera=12:ecd163b06c9da77e shadow=12:ecd163b06c9da77e indirect=12:ecd163b06c9da77e +geom 487: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9980022 motion [] pieces all=12:1a453d6acdd078c6 camera=12:1a453d6acdd078c6 shadow=12:1a453d6acdd078c6 indirect=12:1a453d6acdd078c6 +geom 488: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8564381 motion [] pieces all=12:79a65f134dd0bfb6 camera=12:79a65f134dd0bfb6 shadow=12:79a65f134dd0bfb6 indirect=12:79a65f134dd0bfb6 +geom 489: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1208076 motion [] pieces all=12:aefdaf5b2a91c5d0 camera=12:aefdaf5b2a91c5d0 shadow=12:aefdaf5b2a91c5d0 indirect=12:aefdaf5b2a91c5d0 +geom 490: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9674158 motion [] pieces all=12:24f3994cd8a85671 camera=12:24f3994cd8a85671 shadow=12:24f3994cd8a85671 indirect=12:24f3994cd8a85671 +geom 491: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0813522 motion [] pieces all=12:10d768a99853baee camera=12:10d768a99853baee shadow=12:10d768a99853baee indirect=12:10d768a99853baee +geom 492: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81100047 motion [] pieces all=12:d069173a3f83a20e camera=12:d069173a3f83a20e shadow=12:d069173a3f83a20e indirect=12:d069173a3f83a20e +geom 493: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1944095 motion [] pieces all=12:cde2322d39edf9b3 camera=12:cde2322d39edf9b3 shadow=12:cde2322d39edf9b3 indirect=12:cde2322d39edf9b3 +geom 494: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9230819 motion [] pieces all=12:640e67fa8d432964 camera=12:640e67fa8d432964 shadow=12:640e67fa8d432964 indirect=12:640e67fa8d432964 +geom 495: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0268614 motion [] pieces all=12:f72dd4065d4fed5e camera=12:f72dd4065d4fed5e shadow=12:f72dd4065d4fed5e indirect=12:f72dd4065d4fed5e +geom 496: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1700572 motion [] pieces all=12:0ae6a4b3df895154 camera=12:0ae6a4b3df895154 shadow=12:0ae6a4b3df895154 indirect=12:0ae6a4b3df895154 +geom 497: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8371957 motion [] pieces all=12:381779461269a22a camera=12:381779461269a22a shadow=12:381779461269a22a indirect=12:381779461269a22a +geom 498: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0221655 motion [] pieces all=12:1859584487e48a80 camera=12:1859584487e48a80 shadow=12:1859584487e48a80 indirect=12:1859584487e48a80 +geom 499: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9253083 motion [] pieces all=12:7e05671613d27647 camera=12:7e05671613d27647 shadow=12:7e05671613d27647 indirect=12:7e05671613d27647 +geom 500: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 501: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 502: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 503: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 504: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 505: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 506: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 507: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 508: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 509: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 510: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 511: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 512: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 513: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 514: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /World/abs/Prototypes/stone_a +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 514..514 } +provenance geometry 0..500: /World/abs +provenance geometry 500..501: /World/pebble/geo +provenance geometry 501..502: /World/away/geo +provenance geometry 502..503: /World/box/geo +provenance geometry 503..504: /World/sunk/geo +provenance geometry 504..505: /World/rock/geo +provenance geometry 505..506: /World/vase/geo +provenance geometry 506..507: /World/steps/geo +provenance geometry 507..508: /World/field/geo +provenance geometry 508..509: /World/slope/geo +provenance geometry 509..510: /World/terrain/geo +provenance geometry 510..511: /World/shelf/geo +provenance geometry 511..512: /World/floor/geo +provenance geometry 512..513: /World/inst +provenance geometry 513..514: /World/crate/geo +provenance geometry 514..515: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 500, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 501, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 502, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 503, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 504, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 505, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 506, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 507, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 508, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 509, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 510, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 511, slot: 9, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 513, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 514, slot: 10, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4345222167175548266, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-0ba3af4ffa595294-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-0ba3af4ffa595294-1.digest new file mode 100644 index 000000000..3b0152e4e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-0ba3af4ffa595294-1.digest @@ -0,0 +1,585 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/stone_a.usda +layer: $DIR/stone_b.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 515 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 506 } top level, PrimitiveBreakdown { triangles: 202, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 506 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85878265 motion [] pieces all=12:4a7ce981a77a45dc camera=12:4a7ce981a77a45dc shadow=12:4a7ce981a77a45dc indirect=12:4a7ce981a77a45dc +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0621822 motion [] pieces all=12:7f460c3f4205f9d8 camera=12:7f460c3f4205f9d8 shadow=12:7f460c3f4205f9d8 indirect=12:7f460c3f4205f9d8 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1032221 motion [] pieces all=12:1678416377c7163e camera=12:1678416377c7163e shadow=12:1678416377c7163e indirect=12:1678416377c7163e +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91270643 motion [] pieces all=12:d0cb6b37926ed352 camera=12:d0cb6b37926ed352 shadow=12:d0cb6b37926ed352 indirect=12:d0cb6b37926ed352 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1810359 motion [] pieces all=12:c8a118140377ae27 camera=12:c8a118140377ae27 shadow=12:c8a118140377ae27 indirect=12:c8a118140377ae27 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95435476 motion [] pieces all=12:4de24d48d37305d2 camera=12:4de24d48d37305d2 shadow=12:4de24d48d37305d2 indirect=12:4de24d48d37305d2 +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0139806 motion [] pieces all=12:814a579d8c7da8cd camera=12:814a579d8c7da8cd shadow=12:814a579d8c7da8cd indirect=12:814a579d8c7da8cd +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8400603 motion [] pieces all=12:9ca5ad64753ef3c0 camera=12:9ca5ad64753ef3c0 shadow=12:9ca5ad64753ef3c0 indirect=12:9ca5ad64753ef3c0 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0940638 motion [] pieces all=12:34342a8c32990810 camera=12:34342a8c32990810 shadow=12:34342a8c32990810 indirect=12:34342a8c32990810 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89853656 motion [] pieces all=12:785bfe70ff318b94 camera=12:785bfe70ff318b94 shadow=12:785bfe70ff318b94 indirect=12:785bfe70ff318b94 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1342819 motion [] pieces all=12:a07f0d3a29048931 camera=12:a07f0d3a29048931 shadow=12:a07f0d3a29048931 indirect=12:a07f0d3a29048931 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93690443 motion [] pieces all=12:766be6e075579cb7 camera=12:766be6e075579cb7 shadow=12:766be6e075579cb7 indirect=12:766be6e075579cb7 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0303864 motion [] pieces all=12:6b69c4fd088e2232 camera=12:6b69c4fd088e2232 shadow=12:6b69c4fd088e2232 indirect=12:6b69c4fd088e2232 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82241315 motion [] pieces all=12:451ec0a7e7abca8e camera=12:451ec0a7e7abca8e shadow=12:451ec0a7e7abca8e indirect=12:451ec0a7e7abca8e +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1749351 motion [] pieces all=12:1de0b571a37add95 camera=12:1de0b571a37add95 shadow=12:1de0b571a37add95 indirect=12:1de0b571a37add95 +geom 15: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9928434 motion [] pieces all=12:34144b6de162d3f1 camera=12:34144b6de162d3f1 shadow=12:34144b6de162d3f1 indirect=12:34144b6de162d3f1 +geom 16: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1149167 motion [] pieces all=12:75cc396be4f74c43 camera=12:75cc396be4f74c43 shadow=12:75cc396be4f74c43 indirect=12:75cc396be4f74c43 +geom 17: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9051679 motion [] pieces all=12:11ac031b5a9fcb45 camera=12:11ac031b5a9fcb45 shadow=12:11ac031b5a9fcb45 indirect=12:11ac031b5a9fcb45 +geom 18: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8709032 motion [] pieces all=12:2eb8bdcddde357ea camera=12:2eb8bdcddde357ea shadow=12:2eb8bdcddde357ea indirect=12:2eb8bdcddde357ea +geom 19: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0726447 motion [] pieces all=12:5ca8b1c5a6c9256a camera=12:5ca8b1c5a6c9256a shadow=12:5ca8b1c5a6c9256a indirect=12:5ca8b1c5a6c9256a +geom 20: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1990019 motion [] pieces all=12:6e614a0fc4193a3f camera=12:6e614a0fc4193a3f shadow=12:6e614a0fc4193a3f indirect=12:6e614a0fc4193a3f +geom 21: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9691331 motion [] pieces all=12:7f1925a8fdf3055c camera=12:7f1925a8fdf3055c shadow=12:7f1925a8fdf3055c indirect=12:7f1925a8fdf3055c +geom 22: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8318402 motion [] pieces all=12:938f605de903b72b camera=12:938f605de903b72b shadow=12:938f605de903b72b indirect=12:938f605de903b72b +geom 23: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0102566 motion [] pieces all=12:8b01eecfbf9be861 camera=12:8b01eecfbf9be861 shadow=12:8b01eecfbf9be861 indirect=12:8b01eecfbf9be861 +geom 24: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9398477 motion [] pieces all=12:229863a3897bc078 camera=12:229863a3897bc078 shadow=12:229863a3897bc078 indirect=12:229863a3897bc078 +geom 25: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1443847 motion [] pieces all=12:0facdd537ccb1ff3 camera=12:0facdd537ccb1ff3 shadow=12:0facdd537ccb1ff3 indirect=12:0facdd537ccb1ff3 +geom 26: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0771313 motion [] pieces all=12:7cdc2285c5be2896 camera=12:7cdc2285c5be2896 shadow=12:7cdc2285c5be2896 indirect=12:7cdc2285c5be2896 +geom 27: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8794707 motion [] pieces all=12:b732854065b8be4e camera=12:b732854065b8be4e shadow=12:b732854065b8be4e indirect=12:b732854065b8be4e +geom 28: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0408598 motion [] pieces all=12:bd15480edc8344fb camera=12:bd15480edc8344fb shadow=12:bd15480edc8344fb indirect=12:bd15480edc8344fb +geom 29: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80347484 motion [] pieces all=12:3c6b9aeb2bc81281 camera=12:3c6b9aeb2bc81281 shadow=12:3c6b9aeb2bc81281 indirect=12:3c6b9aeb2bc81281 +geom 30: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1603166 motion [] pieces all=12:eafc6e18391e1865 camera=12:eafc6e18391e1865 shadow=12:eafc6e18391e1865 indirect=12:eafc6e18391e1865 +geom 31: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97711354 motion [] pieces all=12:4e48165b1a134dbd camera=12:4e48165b1a134dbd shadow=12:4e48165b1a134dbd indirect=12:4e48165b1a134dbd +geom 32: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0898775 motion [] pieces all=12:0271a4c9d61474a9 camera=12:0271a4c9d61474a9 shadow=12:0271a4c9d61474a9 indirect=12:0271a4c9d61474a9 +geom 33: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.889788 motion [] pieces all=12:76c82251c6654ce2 camera=12:76c82251c6654ce2 shadow=12:76c82251c6654ce2 indirect=12:76c82251c6654ce2 +geom 34: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1311787 motion [] pieces all=12:6994e9f854cf551a camera=12:6994e9f854cf551a shadow=12:6994e9f854cf551a indirect=12:6994e9f854cf551a +geom 35: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92769957 motion [] pieces all=12:add4fd67decd334e camera=12:add4fd67decd334e shadow=12:add4fd67decd334e indirect=12:add4fd67decd334e +geom 36: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99779445 motion [] pieces all=12:dea1bf20beaca038 camera=12:dea1bf20beaca038 shadow=12:dea1bf20beaca038 indirect=12:dea1bf20beaca038 +geom 37: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1644945 motion [] pieces all=12:78275f6568c9b154 camera=12:78275f6568c9b154 shadow=12:78275f6568c9b154 indirect=12:78275f6568c9b154 +geom 38: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0367502 motion [] pieces all=12:f8bfcc83a9e04b61 camera=12:f8bfcc83a9e04b61 shadow=12:f8bfcc83a9e04b61 indirect=12:f8bfcc83a9e04b61 +geom 39: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8137814 motion [] pieces all=12:17dcf06d16c013c2 camera=12:17dcf06d16c013c2 shadow=12:17dcf06d16c013c2 indirect=12:17dcf06d16c013c2 +geom 40: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9602007 motion [] pieces all=12:44038257b67dcaed camera=12:44038257b67dcaed shadow=12:44038257b67dcaed indirect=12:44038257b67dcaed +geom 41: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1858724 motion [] pieces all=12:8ea8668632df08c8 camera=12:8ea8668632df08c8 shadow=12:8ea8668632df08c8 indirect=12:8ea8668632df08c8 +geom 42: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.019928 motion [] pieces all=12:2bd0aa6cd6c1fb99 camera=12:2bd0aa6cd6c1fb99 shadow=12:2bd0aa6cd6c1fb99 indirect=12:2bd0aa6cd6c1fb99 +geom 43: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84462976 motion [] pieces all=12:2b617ffce3e5d992 camera=12:2b617ffce3e5d992 shadow=12:2b617ffce3e5d992 indirect=12:2b617ffce3e5d992 +geom 44: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8552069 motion [] pieces all=12:7b6b1c6c0b0aaaea camera=12:7b6b1c6c0b0aaaea shadow=12:7b6b1c6c0b0aaaea indirect=12:7b6b1c6c0b0aaaea +geom 45: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0555911 motion [] pieces all=12:d2373d90411234aa camera=12:d2373d90411234aa shadow=12:d2373d90411234aa indirect=12:d2373d90411234aa +geom 46: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9198521 motion [] pieces all=12:e5bb129648fa7d1c camera=12:e5bb129648fa7d1c shadow=12:e5bb129648fa7d1c indirect=12:e5bb129648fa7d1c +geom 47: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1088389 motion [] pieces all=12:e619752696c689e7 camera=12:e619752696c689e7 shadow=12:e619752696c689e7 indirect=12:e619752696c689e7 +geom 48: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8677544 motion [] pieces all=12:83aa02b1796ba343 camera=12:83aa02b1796ba343 shadow=12:83aa02b1796ba343 indirect=12:83aa02b1796ba343 +geom 49: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0663643 motion [] pieces all=12:9ae3293fb9f3ca5a camera=12:9ae3293fb9f3ca5a shadow=12:9ae3293fb9f3ca5a indirect=12:9ae3293fb9f3ca5a +geom 50: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1223677 motion [] pieces all=12:d9d35de722c3c6ec camera=12:d9d35de722c3c6ec shadow=12:d9d35de722c3c6ec indirect=12:d9d35de722c3c6ec +geom 51: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90960747 motion [] pieces all=12:d02b83a3c060fad1 camera=12:d02b83a3c060fad1 shadow=12:d02b83a3c060fad1 indirect=12:d02b83a3c060fad1 +geom 52: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9671436 motion [] pieces all=12:920e4e48fe7bab98 camera=12:920e4e48fe7bab98 shadow=12:920e4e48fe7bab98 indirect=12:920e4e48fe7bab98 +geom 53: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1899202 motion [] pieces all=12:8c9e812715079f38 camera=12:8c9e812715079f38 shadow=12:8c9e812715079f38 indirect=12:8c9e812715079f38 +geom 54: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82996446 motion [] pieces all=12:6ef5448dcc0e160d camera=12:6ef5448dcc0e160d shadow=12:6ef5448dcc0e160d indirect=12:6ef5448dcc0e160d +geom 55: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.002055 motion [] pieces all=12:3fe8cbfdaf1c6417 camera=12:3fe8cbfdaf1c6417 shadow=12:3fe8cbfdaf1c6417 indirect=12:3fe8cbfdaf1c6417 +geom 56: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0857158 motion [] pieces all=12:e67302e2ed4b28f9 camera=12:e67302e2ed4b28f9 shadow=12:e67302e2ed4b28f9 indirect=12:e67302e2ed4b28f9 +geom 57: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88740104 motion [] pieces all=12:f20f660a4916e4e4 camera=12:f20f660a4916e4e4 shadow=12:f20f660a4916e4e4 indirect=12:f20f660a4916e4e4 +geom 58: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1416987 motion [] pieces all=12:99e8c65e562d6012 camera=12:99e8c65e562d6012 shadow=12:99e8c65e562d6012 indirect=12:99e8c65e562d6012 +geom 59: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9445792 motion [] pieces all=12:ad40b22766d03cd2 camera=12:ad40b22766d03cd2 shadow=12:ad40b22766d03cd2 indirect=12:ad40b22766d03cd2 +geom 60: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8111404 motion [] pieces all=12:85cba3060b732cd8 camera=12:85cba3060b732cd8 shadow=12:85cba3060b732cd8 indirect=12:85cba3060b732cd8 +geom 61: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0472555 motion [] pieces all=12:8f3ca5d795e601ef camera=12:8f3ca5d795e601ef shadow=12:8f3ca5d795e601ef indirect=12:8f3ca5d795e601ef +geom 62: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9834107 motion [] pieces all=12:5f5329c4ef00eff2 camera=12:5f5329c4ef00eff2 shadow=12:5f5329c4ef00eff2 indirect=12:5f5329c4ef00eff2 +geom 63: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.15213 motion [] pieces all=12:3209b77aa3a80b46 camera=12:3209b77aa3a80b46 shadow=12:3209b77aa3a80b46 indirect=12:3209b77aa3a80b46 +geom 64: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8719985 motion [] pieces all=12:17f57c54b778828c camera=12:17f57c54b778828c shadow=12:17f57c54b778828c indirect=12:17f57c54b778828c +geom 65: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0701995 motion [] pieces all=12:48a256dda8ecd361 camera=12:48a256dda8ecd361 shadow=12:48a256dda8ecd361 indirect=12:48a256dda8ecd361 +geom 66: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1159035 motion [] pieces all=12:72fd020ea58b153e camera=12:72fd020ea58b153e shadow=12:72fd020ea58b153e indirect=12:72fd020ea58b153e +geom 67: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9000529 motion [] pieces all=12:47b2c1acbf8892e6 camera=12:47b2c1acbf8892e6 shadow=12:47b2c1acbf8892e6 indirect=12:47b2c1acbf8892e6 +geom 68: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1961097 motion [] pieces all=12:aa6ed850c63cc77f camera=12:aa6ed850c63cc77f shadow=12:aa6ed850c63cc77f indirect=12:aa6ed850c63cc77f +geom 69: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97268385 motion [] pieces all=12:bb1e10c5780055b4 camera=12:bb1e10c5780055b4 shadow=12:bb1e10c5780055b4 indirect=12:bb1e10c5780055b4 +geom 70: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.007599 motion [] pieces all=12:7bc15cac2f8ed050 camera=12:7bc15cac2f8ed050 shadow=12:7bc15cac2f8ed050 indirect=12:7bc15cac2f8ed050 +geom 71: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83622175 motion [] pieces all=12:f145e1823753966c camera=12:f145e1823753966c shadow=12:f145e1823753966c indirect=12:f145e1823753966c +geom 72: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97999376 motion [] pieces all=12:20a5f16b18da1d2a camera=12:20a5f16b18da1d2a shadow=12:20a5f16b18da1d2a indirect=12:20a5f16b18da1d2a +geom 73: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.157052 motion [] pieces all=12:6c0b93fdbad65f51 camera=12:6c0b93fdbad65f51 shadow=12:6c0b93fdbad65f51 indirect=12:6c0b93fdbad65f51 +geom 74: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8027509 motion [] pieces all=12:6e04f0a388c19169 camera=12:6e04f0a388c19169 shadow=12:6e04f0a388c19169 indirect=12:6e04f0a388c19169 +geom 75: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0398135 motion [] pieces all=12:335d0f43c788f268 camera=12:335d0f43c788f268 shadow=12:335d0f43c788f268 indirect=12:335d0f43c788f268 +geom 76: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0810779 motion [] pieces all=12:6619b2b0af227fe6 camera=12:6619b2b0af227fe6 shadow=12:6619b2b0af227fe6 indirect=12:6619b2b0af227fe6 +geom 77: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8756795 motion [] pieces all=12:273d169c3fb5ce59 camera=12:273d169c3fb5ce59 shadow=12:273d169c3fb5ce59 indirect=12:273d169c3fb5ce59 +geom 78: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9414442 motion [] pieces all=12:07b8be091dbd60d6 camera=12:07b8be091dbd60d6 shadow=12:07b8be091dbd60d6 indirect=12:07b8be091dbd60d6 +geom 79: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1482779 motion [] pieces all=12:8b309a8b9290fe5c camera=12:8b309a8b9290fe5c shadow=12:8b309a8b9290fe5c indirect=12:8b309a8b9290fe5c +geom 80: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1694127 motion [] pieces all=12:10a7fcb8a85293bf camera=12:10a7fcb8a85293bf shadow=12:10a7fcb8a85293bf indirect=12:10a7fcb8a85293bf +geom 81: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9905864 motion [] pieces all=12:83aa063b1bcad66f camera=12:83aa063b1bcad66f shadow=12:83aa063b1bcad66f indirect=12:83aa063b1bcad66f +geom 82: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82180035 motion [] pieces all=12:6853effa08f0be98 camera=12:6853effa08f0be98 shadow=12:6853effa08f0be98 indirect=12:6853effa08f0be98 +geom 83: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0262914 motion [] pieces all=12:d03bc8fc77b265fb camera=12:d03bc8fc77b265fb shadow=12:d03bc8fc77b265fb indirect=12:d03bc8fc77b265fb +geom 84: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89420116 motion [] pieces all=12:bffb0e91df369eb3 camera=12:bffb0e91df369eb3 shadow=12:bffb0e91df369eb3 indirect=12:bffb0e91df369eb3 +geom 85: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0970112 motion [] pieces all=12:532357dc8ee63993 camera=12:532357dc8ee63993 shadow=12:532357dc8ee63993 indirect=12:532357dc8ee63993 +geom 86: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9321313 motion [] pieces all=12:5bfff795c5c2d6ec camera=12:5bfff795c5c2d6ec shadow=12:5bfff795c5c2d6ec indirect=12:5bfff795c5c2d6ec +geom 87: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.135688 motion [] pieces all=12:01b27ee45f00a876 camera=12:01b27ee45f00a876 shadow=12:01b27ee45f00a876 indirect=12:01b27ee45f00a876 +geom 88: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.175917 motion [] pieces all=12:72079b650dfcf00a camera=12:72079b650dfcf00a shadow=12:72079b650dfcf00a indirect=12:72079b650dfcf00a +geom 89: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95032704 motion [] pieces all=12:4f6fa978607199cd camera=12:4f6fa978607199cd shadow=12:4f6fa978607199cd indirect=12:4f6fa978607199cd +geom 90: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8417298 motion [] pieces all=12:fd288fa332aad02b camera=12:fd288fa332aad02b shadow=12:fd288fa332aad02b indirect=12:fd288fa332aad02b +geom 91: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0175012 motion [] pieces all=12:32c4b05995724f5e camera=12:32c4b05995724f5e shadow=12:32c4b05995724f5e indirect=12:32c4b05995724f5e +geom 92: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.918721 motion [] pieces all=12:763434be26bfda41 camera=12:763434be26bfda41 shadow=12:763434be26bfda41 indirect=12:763434be26bfda41 +geom 93: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1000438 motion [] pieces all=12:25dde8bfef0eea1d camera=12:25dde8bfef0eea1d shadow=12:25dde8bfef0eea1d indirect=12:25dde8bfef0eea1d +geom 94: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0591766 motion [] pieces all=12:98652a7293840291 camera=12:98652a7293840291 shadow=12:98652a7293840291 indirect=12:98652a7293840291 +geom 95: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8621936 motion [] pieces all=12:ec8a770e41a3e80a camera=12:ec8a770e41a3e80a shadow=12:ec8a770e41a3e80a indirect=12:ec8a770e41a3e80a +geom 96: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94883096 motion [] pieces all=12:bb936f54ee6c3801 camera=12:bb936f54ee6c3801 shadow=12:bb936f54ee6c3801 indirect=12:bb936f54ee6c3801 +geom 97: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1404362 motion [] pieces all=12:de86014d1714e81a camera=12:de86014d1714e81a shadow=12:de86014d1714e81a indirect=12:de86014d1714e81a +geom 98: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88423145 motion [] pieces all=12:e0b588097e385a23 camera=12:e0b588097e385a23 shadow=12:e0b588097e385a23 indirect=12:e0b588097e385a23 +geom 99: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0829165 motion [] pieces all=12:28707fdf3f1974df camera=12:28707fdf3f1974df shadow=12:28707fdf3f1974df indirect=12:28707fdf3f1974df +geom 100: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9865734 motion [] pieces all=12:f2c9c9b49837d37c camera=12:f2c9c9b49837d37c shadow=12:f2c9c9b49837d37c indirect=12:f2c9c9b49837d37c +geom 101: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1531285 motion [] pieces all=12:46cbfb43498b43ef camera=12:46cbfb43498b43ef shadow=12:46cbfb43498b43ef indirect=12:46cbfb43498b43ef +geom 102: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80742896 motion [] pieces all=12:af01706981ab9e99 camera=12:af01706981ab9e99 shadow=12:af01706981ab9e99 indirect=12:af01706981ab9e99 +geom 103: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0459248 motion [] pieces all=12:4084ca5564151117 camera=12:4084ca5564151117 shadow=12:4084ca5564151117 indirect=12:4084ca5564151117 +geom 104: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96455026 motion [] pieces all=12:5b1c22f0903d14c2 camera=12:5b1c22f0903d14c2 shadow=12:5b1c22f0903d14c2 indirect=12:5b1c22f0903d14c2 +geom 105: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1906883 motion [] pieces all=12:9b8e23b90d7bc661 camera=12:9b8e23b90d7bc661 shadow=12:9b8e23b90d7bc661 indirect=12:9b8e23b90d7bc661 +geom 106: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82737714 motion [] pieces all=12:b01c89fe06e2248e camera=12:b01c89fe06e2248e shadow=12:b01c89fe06e2248e indirect=12:b01c89fe06e2248e +geom 107: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.004447 motion [] pieces all=12:db644fe8aac70f07 camera=12:db644fe8aac70f07 shadow=12:db644fe8aac70f07 indirect=12:db644fe8aac70f07 +geom 108: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1191746 motion [] pieces all=12:c26ebabd712d9b23 camera=12:c26ebabd712d9b23 shadow=12:c26ebabd712d9b23 indirect=12:c26ebabd712d9b23 +geom 109: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.908148 motion [] pieces all=12:27980e7f7830ccd2 camera=12:27980e7f7830ccd2 shadow=12:27980e7f7830ccd2 indirect=12:27980e7f7830ccd2 +geom 110: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0637071 motion [] pieces all=12:97fcccf3b9163292 camera=12:97fcccf3b9163292 shadow=12:97fcccf3b9163292 indirect=12:97fcccf3b9163292 +geom 111: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8640643 motion [] pieces all=12:3bc0d6686f7ce4f6 camera=12:3bc0d6686f7ce4f6 shadow=12:3bc0d6686f7ce4f6 indirect=12:3bc0d6686f7ce4f6 +geom 112: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1681553 motion [] pieces all=12:6effaf94c0658204 camera=12:6effaf94c0658204 shadow=12:6effaf94c0658204 indirect=12:6effaf94c0658204 +geom 113: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99509203 motion [] pieces all=12:a45cd07ae3adf7f4 camera=12:a45cd07ae3adf7f4 shadow=12:a45cd07ae3adf7f4 indirect=12:a45cd07ae3adf7f4 +geom 114: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8169518 motion [] pieces all=12:b42f93ab67accdfc camera=12:b42f93ab67accdfc shadow=12:b42f93ab67accdfc indirect=12:b42f93ab67accdfc +geom 115: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0320978 motion [] pieces all=12:c6ebefe6c81a51fe camera=12:c6ebefe6c81a51fe shadow=12:c6ebefe6c81a51fe indirect=12:c6ebefe6c81a51fe +geom 116: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1279283 motion [] pieces all=12:51e5bb657853370b camera=12:51e5bb657853370b shadow=12:51e5bb657853370b indirect=12:51e5bb657853370b +geom 117: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93079096 motion [] pieces all=12:7c3221ea0c79b430 camera=12:7c3221ea0c79b430 shadow=12:7c3221ea0c79b430 indirect=12:7c3221ea0c79b430 +geom 118: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8928701 motion [] pieces all=12:11e165819deb849a camera=12:11e165819deb849a shadow=12:11e165819deb849a indirect=12:11e165819deb849a +geom 119: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0925199 motion [] pieces all=12:ec49994f3f5403fa camera=12:ec49994f3f5403fa shadow=12:ec49994f3f5403fa indirect=12:ec49994f3f5403fa +geom 120: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0524871 motion [] pieces all=12:adcd7590e5ea37f9 camera=12:adcd7590e5ea37f9 shadow=12:adcd7590e5ea37f9 indirect=12:adcd7590e5ea37f9 +geom 121: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.850143 motion [] pieces all=12:fd2d2cff46adc729 camera=12:fd2d2cff46adc729 shadow=12:fd2d2cff46adc729 indirect=12:fd2d2cff46adc729 +geom 122: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9240767 motion [] pieces all=12:b1fc118f860035e2 camera=12:b1fc118f860035e2 shadow=12:b1fc118f860035e2 indirect=12:b1fc118f860035e2 +geom 123: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1098039 motion [] pieces all=12:21e0dbbbb7d98f1f camera=12:21e0dbbbb7d98f1f shadow=12:21e0dbbbb7d98f1f indirect=12:21e0dbbbb7d98f1f +geom 124: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0238377 motion [] pieces all=12:81e6ce74500b7382 camera=12:81e6ce74500b7382 shadow=12:81e6ce74500b7382 indirect=12:81e6ce74500b7382 +geom 125: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8495114 motion [] pieces all=12:ab03f3849c00d57d camera=12:ab03f3849c00d57d shadow=12:ab03f3849c00d57d indirect=12:ab03f3849c00d57d +geom 126: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95666397 motion [] pieces all=12:4f31cc20c2fc502d camera=12:4f31cc20c2fc502d shadow=12:4f31cc20c2fc502d indirect=12:4f31cc20c2fc502d +geom 127: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1837139 motion [] pieces all=12:f2f318a7a6c68ac5 camera=12:f2f318a7a6c68ac5 shadow=12:f2f318a7a6c68ac5 indirect=12:f2f318a7a6c68ac5 +geom 128: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1926862 motion [] pieces all=12:82c9eeedf01c7004 camera=12:82c9eeedf01c7004 shadow=12:82c9eeedf01c7004 indirect=12:82c9eeedf01c7004 +geom 129: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.962592 motion [] pieces all=12:d6e151ac9246ef0f camera=12:d6e151ac9246ef0f shadow=12:d6e151ac9246ef0f indirect=12:d6e151ac9246ef0f +geom 130: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82533383 motion [] pieces all=12:755f28eaf805d90a camera=12:755f28eaf805d90a shadow=12:755f28eaf805d90a indirect=12:755f28eaf805d90a +geom 131: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0061023 motion [] pieces all=12:dfb011469500cec0 camera=12:dfb011469500cec0 shadow=12:dfb011469500cec0 indirect=12:dfb011469500cec0 +geom 132: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.064578 motion [] pieces all=12:f0f6e624dfc11f08 camera=12:f0f6e624dfc11f08 shadow=12:f0f6e624dfc11f08 indirect=12:f0f6e624dfc11f08 +geom 133: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.86366814 motion [] pieces all=12:1e61f625945f2b7e camera=12:1e61f625945f2b7e shadow=12:1e61f625945f2b7e indirect=12:1e61f625945f2b7e +geom 134: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1203573 motion [] pieces all=12:4d98368ed07c3705 camera=12:4d98368ed07c3705 shadow=12:4d98368ed07c3705 indirect=12:4d98368ed07c3705 +geom 135: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90657663 motion [] pieces all=12:10cfaeaa4676a80f camera=12:10cfaeaa4676a80f shadow=12:10cfaeaa4676a80f indirect=12:10cfaeaa4676a80f +geom 136: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1550328 motion [] pieces all=12:9340b36715ba58c3 camera=12:9340b36715ba58c3 shadow=12:9340b36715ba58c3 indirect=12:9340b36715ba58c3 +geom 137: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9854282 motion [] pieces all=12:b0b11a64e716ce86 camera=12:b0b11a64e716ce86 shadow=12:b0b11a64e716ce86 indirect=12:b0b11a64e716ce86 +geom 138: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80875623 motion [] pieces all=12:e728cd3e0f0b59de camera=12:e728cd3e0f0b59de shadow=12:e728cd3e0f0b59de indirect=12:e728cd3e0f0b59de +geom 139: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0449554 motion [] pieces all=12:03cf3a8714b02f3e camera=12:03cf3a8714b02f3e shadow=12:03cf3a8714b02f3e indirect=12:03cf3a8714b02f3e +geom 140: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9470196 motion [] pieces all=12:742a4a5265f2e174 camera=12:742a4a5265f2e174 shadow=12:742a4a5265f2e174 indirect=12:742a4a5265f2e174 +geom 141: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1382898 motion [] pieces all=12:8411a2fb2e9c72e9 camera=12:8411a2fb2e9c72e9 shadow=12:8411a2fb2e9c72e9 indirect=12:8411a2fb2e9c72e9 +geom 142: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.08233 motion [] pieces all=12:ce124d789c85f942 camera=12:ce124d789c85f942 shadow=12:ce124d789c85f942 indirect=12:ce124d789c85f942 +geom 143: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88240635 motion [] pieces all=12:bc84f8939fd1a67b camera=12:bc84f8939fd1a67b shadow=12:bc84f8939fd1a67b indirect=12:bc84f8939fd1a67b +geom 144: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0910163 motion [] pieces all=12:735f10cbe4e9e0e1 camera=12:735f10cbe4e9e0e1 shadow=12:735f10cbe4e9e0e1 indirect=12:735f10cbe4e9e0e1 +geom 145: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.891397 motion [] pieces all=12:9089250bc2fbc498 camera=12:9089250bc2fbc498 shadow=12:9089250bc2fbc498 indirect=12:9089250bc2fbc498 +geom 146: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1255128 motion [] pieces all=12:19c184b970f4b55f camera=12:19c184b970f4b55f shadow=12:19c184b970f4b55f indirect=12:19c184b970f4b55f +geom 147: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9289093 motion [] pieces all=12:45f31945727098eb camera=12:45f31945727098eb shadow=12:45f31945727098eb indirect=12:45f31945727098eb +geom 148: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9954967 motion [] pieces all=12:3afdc403be4193b5 camera=12:3afdc403be4193b5 shadow=12:3afdc403be4193b5 indirect=12:3afdc403be4193b5 +geom 149: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1661328 motion [] pieces all=12:860c97ea1e9411ae camera=12:860c97ea1e9411ae shadow=12:860c97ea1e9411ae indirect=12:860c97ea1e9411ae +geom 150: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0336131 motion [] pieces all=12:65ebbde758d3c842 camera=12:65ebbde758d3c842 shadow=12:65ebbde758d3c842 indirect=12:65ebbde758d3c842 +geom 151: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8186712 motion [] pieces all=12:38aae369ffad3c06 camera=12:38aae369ffad3c06 shadow=12:38aae369ffad3c06 indirect=12:38aae369ffad3c06 +geom 152: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95803475 motion [] pieces all=12:3395390f05de13fd camera=12:3395390f05de13fd shadow=12:3395390f05de13fd indirect=12:3395390f05de13fd +geom 153: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1819226 motion [] pieces all=12:25c84cedce7d0f9a camera=12:25c84cedce7d0f9a shadow=12:25c84cedce7d0f9a indirect=12:25c84cedce7d0f9a +geom 154: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0225748 motion [] pieces all=12:10b490d82579b39f camera=12:10b490d82579b39f shadow=12:10b490d82579b39f indirect=12:10b490d82579b39f +geom 155: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84697896 motion [] pieces all=12:23bd3abf1f35910b camera=12:23bd3abf1f35910b shadow=12:23bd3abf1f35910b indirect=12:23bd3abf1f35910b +geom 156: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85211504 motion [] pieces all=12:352b893e9a6ea860 camera=12:352b893e9a6ea860 shadow=12:352b893e9a6ea860 indirect=12:352b893e9a6ea860 +geom 157: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0502137 motion [] pieces all=12:b34a1ea16c9885a7 camera=12:b34a1ea16c9885a7 shadow=12:b34a1ea16c9885a7 indirect=12:b34a1ea16c9885a7 +geom 158: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9234214 motion [] pieces all=12:f51d68ae5f961f2d camera=12:f51d68ae5f961f2d shadow=12:f51d68ae5f961f2d indirect=12:f51d68ae5f961f2d +geom 159: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1118971 motion [] pieces all=12:b02526eda81b650f camera=12:b02526eda81b650f shadow=12:b02526eda81b650f indirect=12:b02526eda81b650f +geom 160: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97938997 motion [] pieces all=12:4bb9870ca968893d camera=12:4bb9870ca968893d shadow=12:4bb9870ca968893d indirect=12:4bb9870ca968893d +geom 161: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1579045 motion [] pieces all=12:5258a6d91df0a920 camera=12:5258a6d91df0a920 shadow=12:5258a6d91df0a920 indirect=12:5258a6d91df0a920 +geom 162: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8000809 motion [] pieces all=12:2a1e507dd321ea9c camera=12:2a1e507dd321ea9c shadow=12:2a1e507dd321ea9c indirect=12:2a1e507dd321ea9c +geom 163: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0382109 motion [] pieces all=12:1ab7a6c1dc8b709f camera=12:1ab7a6c1dc8b709f shadow=12:1ab7a6c1dc8b709f indirect=12:1ab7a6c1dc8b709f +geom 164: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8771157 motion [] pieces all=12:cc4d7242a0b49d5c camera=12:cc4d7242a0b49d5c shadow=12:cc4d7242a0b49d5c indirect=12:cc4d7242a0b49d5c +geom 165: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0791079 motion [] pieces all=12:392eac8a650b2dcd camera=12:392eac8a650b2dcd shadow=12:392eac8a650b2dcd indirect=12:392eac8a650b2dcd +geom 166: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1487879 motion [] pieces all=12:b6174f4912b978a2 camera=12:b6174f4912b978a2 shadow=12:b6174f4912b978a2 indirect=12:b6174f4912b978a2 +geom 167: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9422264 motion [] pieces all=12:cebecb722d01d4d8 camera=12:cebecb722d01d4d8 shadow=12:cebecb722d01d4d8 indirect=12:cebecb722d01d4d8 +geom 168: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9743466 motion [] pieces all=12:be59180dc534088d camera=12:be59180dc534088d shadow=12:be59180dc534088d indirect=12:be59180dc534088d +geom 169: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1949431 motion [] pieces all=12:1525f8091b074a32 camera=12:1525f8091b074a32 shadow=12:1525f8091b074a32 indirect=12:1525f8091b074a32 +geom 170: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83560526 motion [] pieces all=12:28be36472cb4c987 camera=12:28be36472cb4c987 shadow=12:28be36472cb4c987 indirect=12:28be36472cb4c987 +geom 171: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0081363 motion [] pieces all=12:585166650910cbbb camera=12:585166650910cbbb shadow=12:585166650910cbbb indirect=12:585166650910cbbb +geom 172: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9029232 motion [] pieces all=12:dd267146945bc190 camera=12:dd267146945bc190 shadow=12:dd267146945bc190 indirect=12:dd267146945bc190 +geom 173: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.118102 motion [] pieces all=12:1239d0d8e46ffe85 camera=12:1239d0d8e46ffe85 shadow=12:1239d0d8e46ffe85 indirect=12:1239d0d8e46ffe85 +geom 174: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8746201 motion [] pieces all=12:cdfab92d6aa1494a camera=12:cdfab92d6aa1494a shadow=12:cdfab92d6aa1494a indirect=12:cdfab92d6aa1494a +geom 175: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0708448 motion [] pieces all=12:b2680c7dda859f50 camera=12:b2680c7dda859f50 shadow=12:b2680c7dda859f50 indirect=12:b2680c7dda859f50 +geom 176: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9880087 motion [] pieces all=12:3a2b898fc07b37bd camera=12:3a2b898fc07b37bd shadow=12:3a2b898fc07b37bd indirect=12:3a2b898fc07b37bd +geom 177: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1707879 motion [] pieces all=12:c6a4245aecd3c9a8 camera=12:c6a4245aecd3c9a8 shadow=12:c6a4245aecd3c9a8 indirect=12:c6a4245aecd3c9a8 +geom 178: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0269582 motion [] pieces all=12:c81a3391e9438fb3 camera=12:c81a3391e9438fb3 shadow=12:c81a3391e9438fb3 indirect=12:c81a3391e9438fb3 +geom 179: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8190116 motion [] pieces all=12:076956d87256099d camera=12:076956d87256099d shadow=12:076956d87256099d indirect=12:076956d87256099d +geom 180: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1363039 motion [] pieces all=12:9a1c184fe73d870e camera=12:9a1c184fe73d870e shadow=12:9a1c184fe73d870e indirect=12:9a1c184fe73d870e +geom 181: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9341822 motion [] pieces all=12:f795ffdf33c18e2c camera=12:f795ffdf33c18e2c shadow=12:f795ffdf33c18e2c indirect=12:f795ffdf33c18e2c +geom 182: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89674604 motion [] pieces all=12:136585391a07be77 camera=12:136585391a07be77 shadow=12:136585391a07be77 indirect=12:136585391a07be77 +geom 183: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0987612 motion [] pieces all=12:ccf75507623c1cc4 camera=12:ccf75507623c1cc4 shadow=12:ccf75507623c1cc4 indirect=12:ccf75507623c1cc4 +geom 184: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84349865 motion [] pieces all=12:bae223b2b20e1f6b camera=12:bae223b2b20e1f6b shadow=12:bae223b2b20e1f6b indirect=12:bae223b2b20e1f6b +geom 185: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0164981 motion [] pieces all=12:9d1c58d84ebe4148 camera=12:9d1c58d84ebe4148 shadow=12:9d1c58d84ebe4148 indirect=12:9d1c58d84ebe4148 +geom 186: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1778265 motion [] pieces all=12:4961dc66973b1008 camera=12:4961dc66973b1008 shadow=12:4961dc66973b1008 indirect=12:4961dc66973b1008 +geom 187: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9520481 motion [] pieces all=12:d339795f1f870466 camera=12:d339795f1f870466 shadow=12:d339795f1f870466 indirect=12:d339795f1f870466 +geom 188: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1021974 motion [] pieces all=12:f4e128245bf14919 camera=12:f4e128245bf14919 shadow=12:f4e128245bf14919 indirect=12:f4e128245bf14919 +geom 189: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9167874 motion [] pieces all=12:c0bfca042aab45fb camera=12:c0bfca042aab45fb shadow=12:c0bfca042aab45fb indirect=12:c0bfca042aab45fb +geom 190: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0569606 motion [] pieces all=12:c76d14ea349c799e camera=12:c76d14ea349c799e shadow=12:c76d14ea349c799e indirect=12:c76d14ea349c799e +geom 191: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85977674 motion [] pieces all=12:4fd33a29857426f9 camera=12:4fd33a29857426f9 shadow=12:4fd33a29857426f9 indirect=12:4fd33a29857426f9 +geom 192: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88807774 motion [] pieces all=12:6661e6cd86817300 camera=12:6661e6cd86817300 shadow=12:6661e6cd86817300 indirect=12:6661e6cd86817300 +geom 193: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0886104 motion [] pieces all=12:61d88a580f9a360f camera=12:61d88a580f9a360f shadow=12:61d88a580f9a360f indirect=12:61d88a580f9a360f +geom 194: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92605865 motion [] pieces all=12:5e49c726aa63b62e camera=12:5e49c726aa63b62e shadow=12:5e49c726aa63b62e indirect=12:5e49c726aa63b62e +geom 195: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1285533 motion [] pieces all=12:c6265c01a6173cf6 camera=12:c6265c01a6173cf6 shadow=12:c6265c01a6173cf6 indirect=12:c6265c01a6173cf6 +geom 196: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8154051 motion [] pieces all=12:fe9dcf52fa72d89d camera=12:fe9dcf52fa72d89d shadow=12:fe9dcf52fa72d89d indirect=12:fe9dcf52fa72d89d +geom 197: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0349238 motion [] pieces all=12:c153f42637a0ee0b camera=12:c153f42637a0ee0b shadow=12:c153f42637a0ee0b indirect=12:c153f42637a0ee0b +geom 198: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9985704 motion [] pieces all=12:577ea3f2f1ccab7e camera=12:577ea3f2f1ccab7e shadow=12:577ea3f2f1ccab7e indirect=12:577ea3f2f1ccab7e +geom 199: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1633754 motion [] pieces all=12:588a35bec89e0211 camera=12:588a35bec89e0211 shadow=12:588a35bec89e0211 indirect=12:588a35bec89e0211 +geom 200: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0210811 motion [] pieces all=12:6db89d8e1f888429 camera=12:6db89d8e1f888429 shadow=12:6db89d8e1f888429 indirect=12:6db89d8e1f888429 +geom 201: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8461877 motion [] pieces all=12:56087d563f8bd967 camera=12:56087d563f8bd967 shadow=12:56087d563f8bd967 indirect=12:56087d563f8bd967 +geom 202: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1871427 motion [] pieces all=12:413ff9357cf73b46 camera=12:413ff9357cf73b46 shadow=12:413ff9357cf73b46 indirect=12:413ff9357cf73b46 +geom 203: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9618171 motion [] pieces all=12:a4df3b74d1b7e417 camera=12:a4df3b74d1b7e417 shadow=12:a4df3b74d1b7e417 indirect=12:a4df3b74d1b7e417 +geom 204: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8544117 motion [] pieces all=12:81d134080a391d34 camera=12:81d134080a391d34 shadow=12:81d134080a391d34 indirect=12:81d134080a391d34 +geom 205: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0538776 motion [] pieces all=12:cdd591466c48a045 camera=12:cdd591466c48a045 shadow=12:cdd591466c48a045 indirect=12:cdd591466c48a045 +geom 206: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9216353 motion [] pieces all=12:5197ccb2f90ff927 camera=12:5197ccb2f90ff927 shadow=12:5197ccb2f90ff927 indirect=12:5197ccb2f90ff927 +geom 207: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1075315 motion [] pieces all=12:25132335ecfb1b01 camera=12:25132335ecfb1b01 shadow=12:25132335ecfb1b01 indirect=12:25132335ecfb1b01 +geom 208: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0872079 motion [] pieces all=12:7b840845ca361767 camera=12:7b840845ca361767 shadow=12:7b840845ca361767 indirect=12:7b840845ca361767 +geom 209: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8852057 motion [] pieces all=12:32b516719be20c73 camera=12:32b516719be20c73 shadow=12:32b516719be20c73 indirect=12:32b516719be20c73 +geom 210: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94551605 motion [] pieces all=12:0db933057228feca camera=12:0db933057228feca shadow=12:0db933057228feca indirect=12:0db933057228feca +geom 211: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.142677 motion [] pieces all=12:c06a3e8bf1dd1fd7 camera=12:c06a3e8bf1dd1fd7 shadow=12:c06a3e8bf1dd1fd7 indirect=12:c06a3e8bf1dd1fd7 +geom 212: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8108835 motion [] pieces all=12:59afde67d1fd5262 camera=12:59afde67d1fd5262 shadow=12:59afde67d1fd5262 indirect=12:59afde67d1fd5262 +geom 213: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0486338 motion [] pieces all=12:0b8e1836820cd7c7 camera=12:0b8e1836820cd7c7 shadow=12:0b8e1836820cd7c7 indirect=12:0b8e1836820cd7c7 +geom 214: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1508546 motion [] pieces all=12:482cea3e7f58759f camera=12:482cea3e7f58759f shadow=12:482cea3e7f58759f indirect=12:482cea3e7f58759f +geom 215: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98225904 motion [] pieces all=12:917e1e96a2593868 camera=12:917e1e96a2593868 shadow=12:917e1e96a2593868 indirect=12:917e1e96a2593868 +geom 216: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0013232 motion [] pieces all=12:bb814337882d332a camera=12:bb814337882d332a shadow=12:bb814337882d332a indirect=12:bb814337882d332a +geom 217: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82953584 motion [] pieces all=12:c1818dc060fece37 camera=12:c1818dc060fece37 shadow=12:c1818dc060fece37 indirect=12:c1818dc060fece37 +geom 218: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96780616 motion [] pieces all=12:ceee6719c8c5576f camera=12:ceee6719c8c5576f shadow=12:ceee6719c8c5576f indirect=12:ceee6719c8c5576f +geom 219: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1880189 motion [] pieces all=12:e031398daf58c18b camera=12:e031398daf58c18b shadow=12:e031398daf58c18b indirect=12:e031398daf58c18b +geom 220: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0684357 motion [] pieces all=12:13e625c87f7b9de1 camera=12:13e625c87f7b9de1 shadow=12:13e625c87f7b9de1 indirect=12:13e625c87f7b9de1 +geom 221: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8670508 motion [] pieces all=12:b17ac50a06fb09cf camera=12:b17ac50a06fb09cf shadow=12:b17ac50a06fb09cf indirect=12:b17ac50a06fb09cf +geom 222: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9122747 motion [] pieces all=12:9fe4b5467c3985f2 camera=12:9fe4b5467c3985f2 shadow=12:9fe4b5467c3985f2 indirect=12:9fe4b5467c3985f2 +geom 223: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1235007 motion [] pieces all=12:213e349ffed3ef45 camera=12:213e349ffed3ef45 shadow=12:213e349ffed3ef45 indirect=12:213e349ffed3ef45 +geom 224: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1052475 motion [] pieces all=12:7a5aa6bf63582b7f camera=12:7a5aa6bf63582b7f shadow=12:7a5aa6bf63582b7f indirect=12:7a5aa6bf63582b7f +geom 225: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91493386 motion [] pieces all=12:e823c6375468c302 camera=12:e823c6375468c302 shadow=12:e823c6375468c302 indirect=12:e823c6375468c302 +geom 226: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0600516 motion [] pieces all=12:3f827367b30fd32f camera=12:3f827367b30fd32f shadow=12:3f827367b30fd32f indirect=12:3f827367b30fd32f +geom 227: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8565396 motion [] pieces all=12:edc051a4ba81ff1a camera=12:edc051a4ba81ff1a shadow=12:edc051a4ba81ff1a indirect=12:edc051a4ba81ff1a +geom 228: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1781551 motion [] pieces all=12:d7d6ad0fbc0a651e camera=12:d7d6ad0fbc0a651e shadow=12:d7d6ad0fbc0a651e indirect=12:d7d6ad0fbc0a651e +geom 229: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9561136 motion [] pieces all=12:9a8d9bfae8504444 camera=12:9a8d9bfae8504444 shadow=12:9a8d9bfae8504444 indirect=12:9a8d9bfae8504444 +geom 230: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0152485 motion [] pieces all=12:74ed3484d0897bb7 camera=12:74ed3484d0897bb7 shadow=12:74ed3484d0897bb7 indirect=12:74ed3484d0897bb7 +geom 231: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83785546 motion [] pieces all=12:7820083d539ff0a5 camera=12:7820083d539ff0a5 shadow=12:7820083d539ff0a5 indirect=12:7820083d539ff0a5 +geom 232: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1321036 motion [] pieces all=12:32644f7f4a0dd9a5 camera=12:32644f7f4a0dd9a5 shadow=12:32644f7f4a0dd9a5 indirect=12:32644f7f4a0dd9a5 +geom 233: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9351158 motion [] pieces all=12:f45d4f4bd4f377de camera=12:f45d4f4bd4f377de shadow=12:f45d4f4bd4f377de indirect=12:f45d4f4bd4f377de +geom 234: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0956794 motion [] pieces all=12:991cb8ef7fc0c269 camera=12:991cb8ef7fc0c269 shadow=12:991cb8ef7fc0c269 indirect=12:991cb8ef7fc0c269 +geom 235: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8970985 motion [] pieces all=12:afd9f4ad21867c23 camera=12:afd9f4ad21867c23 shadow=12:afd9f4ad21867c23 indirect=12:afd9f4ad21867c23 +geom 236: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.02853 motion [] pieces all=12:208c8f89501cd8f0 camera=12:208c8f89501cd8f0 shadow=12:208c8f89501cd8f0 indirect=12:208c8f89501cd8f0 +geom 237: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8235092 motion [] pieces all=12:7aefbfb1e15bd016 camera=12:7aefbfb1e15bd016 shadow=12:7aefbfb1e15bd016 indirect=12:7aefbfb1e15bd016 +geom 238: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99193966 motion [] pieces all=12:bb89f42f257bd060 camera=12:bb89f42f257bd060 shadow=12:bb89f42f257bd060 indirect=12:bb89f42f257bd060 +geom 239: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1718959 motion [] pieces all=12:63e5738c01b10540 camera=12:63e5738c01b10540 shadow=12:63e5738c01b10540 indirect=12:63e5738c01b10540 +geom 240: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0755755 motion [] pieces all=12:bb56da62e7c19393 camera=12:bb56da62e7c19393 shadow=12:bb56da62e7c19393 indirect=12:bb56da62e7c19393 +geom 241: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88047564 motion [] pieces all=12:5ddc08c2c6e7d3a9 camera=12:5ddc08c2c6e7d3a9 shadow=12:5ddc08c2c6e7d3a9 indirect=12:5ddc08c2c6e7d3a9 +geom 242: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1464661 motion [] pieces all=12:6458562f18efff03 camera=12:6458562f18efff03 shadow=12:6458562f18efff03 indirect=12:6458562f18efff03 +geom 243: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9384554 motion [] pieces all=12:a384c55c1a660f4e camera=12:a384c55c1a660f4e shadow=12:a384c55c1a660f4e indirect=12:a384c55c1a660f4e +geom 244: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1616961 motion [] pieces all=12:2d1e0c61d29fa70b camera=12:2d1e0c61d29fa70b shadow=12:2d1e0c61d29fa70b indirect=12:2d1e0c61d29fa70b +geom 245: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9759968 motion [] pieces all=12:9425c417737fd5e9 camera=12:9425c417737fd5e9 shadow=12:9425c417737fd5e9 indirect=12:9425c417737fd5e9 +geom 246: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8051955 motion [] pieces all=12:9ac90bef18400244 camera=12:9ac90bef18400244 shadow=12:9ac90bef18400244 indirect=12:9ac90bef18400244 +geom 247: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0432919 motion [] pieces all=12:4044f6b741c006cc camera=12:4044f6b741c006cc shadow=12:4044f6b741c006cc indirect=12:4044f6b741c006cc +geom 248: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97084296 motion [] pieces all=12:a8d8592b1585b96d camera=12:a8d8592b1585b96d shadow=12:a8d8592b1585b96d indirect=12:a8d8592b1585b96d +geom 249: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1974218 motion [] pieces all=12:72ed049b9c7e7804 camera=12:72ed049b9c7e7804 shadow=12:72ed049b9c7e7804 indirect=12:72ed049b9c7e7804 +geom 250: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0113921 motion [] pieces all=12:9b9723ae8e480351 camera=12:9b9723ae8e480351 shadow=12:9b9723ae8e480351 indirect=12:9b9723ae8e480351 +geom 251: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8333197 motion [] pieces all=12:4b75b219d7daf2f0 camera=12:4b75b219d7daf2f0 shadow=12:4b75b219d7daf2f0 indirect=12:4b75b219d7daf2f0 +geom 252: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.074719 motion [] pieces all=12:bc357fd197ae35b5 camera=12:bc357fd197ae35b5 shadow=12:bc357fd197ae35b5 indirect=12:bc357fd197ae35b5 +geom 253: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.86937106 motion [] pieces all=12:c3872ef028ca9f81 camera=12:c3872ef028ca9f81 shadow=12:c3872ef028ca9f81 indirect=12:c3872ef028ca9f81 +geom 254: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1140252 motion [] pieces all=12:edbe8758c821f916 camera=12:edbe8758c821f916 shadow=12:edbe8758c821f916 indirect=12:edbe8758c821f916 +geom 255: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90372217 motion [] pieces all=12:2db682e0fd404f06 camera=12:2db682e0fd404f06 shadow=12:2db682e0fd404f06 indirect=12:2db682e0fd404f06 +geom 256: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1960179 motion [] pieces all=12:7ef94112ea36ed2d camera=12:7ef94112ea36ed2d shadow=12:7ef94112ea36ed2d indirect=12:7ef94112ea36ed2d +geom 257: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9719331 motion [] pieces all=12:41785e5edaa7eda3 camera=12:41785e5edaa7eda3 shadow=12:41785e5edaa7eda3 indirect=12:41785e5edaa7eda3 +geom 258: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8368746 motion [] pieces all=12:c739f1c7e67e7dba camera=12:c739f1c7e67e7dba shadow=12:c739f1c7e67e7dba indirect=12:c739f1c7e67e7dba +geom 259: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.006286 motion [] pieces all=12:3c46a98b12ebfede camera=12:3c46a98b12ebfede shadow=12:3c46a98b12ebfede indirect=12:3c46a98b12ebfede +geom 260: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87269866 motion [] pieces all=12:0d86f0a60ce5c4be camera=12:0d86f0a60ce5c4be shadow=12:0d86f0a60ce5c4be indirect=12:0d86f0a60ce5c4be +geom 261: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.068789 motion [] pieces all=12:2fdd8ccea7f48e0f camera=12:2fdd8ccea7f48e0f shadow=12:2fdd8ccea7f48e0f indirect=12:2fdd8ccea7f48e0f +geom 262: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90097797 motion [] pieces all=12:9efebc5efd8aa90c camera=12:9efebc5efd8aa90c shadow=12:9efebc5efd8aa90c indirect=12:9efebc5efd8aa90c +geom 263: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1171288 motion [] pieces all=12:44da1332fd3c39ec camera=12:44da1332fd3c39ec shadow=12:44da1332fd3c39ec indirect=12:44da1332fd3c39ec +geom 264: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80188435 motion [] pieces all=12:68536eafdd03c0d3 camera=12:68536eafdd03c0d3 shadow=12:68536eafdd03c0d3 indirect=12:68536eafdd03c0d3 +geom 265: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0399622 motion [] pieces all=12:e86598401d8c2418 camera=12:e86598401d8c2418 shadow=12:e86598401d8c2418 indirect=12:e86598401d8c2418 +geom 266: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9805626 motion [] pieces all=12:8a339d45b59364a1 camera=12:8a339d45b59364a1 shadow=12:8a339d45b59364a1 indirect=12:8a339d45b59364a1 +geom 267: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1569374 motion [] pieces all=12:5dec275d58d9c522 camera=12:5dec275d58d9c522 shadow=12:5dec275d58d9c522 indirect=12:5dec275d58d9c522 +geom 268: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0800215 motion [] pieces all=12:d5c13770bb53929a camera=12:d5c13770bb53929a shadow=12:d5c13770bb53929a indirect=12:d5c13770bb53929a +geom 269: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8760262 motion [] pieces all=12:729362ace60503c4 camera=12:729362ace60503c4 shadow=12:729362ace60503c4 indirect=12:729362ace60503c4 +geom 270: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1472989 motion [] pieces all=12:c8ac94e2d2861a4d camera=12:c8ac94e2d2861a4d shadow=12:c8ac94e2d2861a4d indirect=12:c8ac94e2d2861a4d +geom 271: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9407554 motion [] pieces all=12:95485f026cb54470 camera=12:95485f026cb54470 shadow=12:95485f026cb54470 indirect=12:95485f026cb54470 +geom 272: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1009302 motion [] pieces all=12:c83ea8fc891b2486 camera=12:c83ea8fc891b2486 shadow=12:c83ea8fc891b2486 indirect=12:c83ea8fc891b2486 +geom 273: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91735595 motion [] pieces all=12:64595a54ff851514 camera=12:64595a54ff851514 shadow=12:64595a54ff851514 indirect=12:64595a54ff851514 +geom 274: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8615117 motion [] pieces all=12:759264a28232e161 camera=12:759264a28232e161 shadow=12:759264a28232e161 indirect=12:759264a28232e161 +geom 275: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0580432 motion [] pieces all=12:07aef08a8bbcb556 camera=12:07aef08a8bbcb556 shadow=12:07aef08a8bbcb556 indirect=12:07aef08a8bbcb556 +geom 276: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1752679 motion [] pieces all=12:f64038939c025ec9 camera=12:f64038939c025ec9 shadow=12:f64038939c025ec9 indirect=12:f64038939c025ec9 +geom 277: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9511943 motion [] pieces all=12:ceea2ca65b70430f camera=12:ceea2ca65b70430f shadow=12:ceea2ca65b70430f indirect=12:ceea2ca65b70430f +geom 278: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8411156 motion [] pieces all=12:53959d48a26e0a30 camera=12:53959d48a26e0a30 shadow=12:53959d48a26e0a30 indirect=12:53959d48a26e0a30 +geom 279: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0185847 motion [] pieces all=12:bfefa02fe65a1831 camera=12:bfefa02fe65a1831 shadow=12:bfefa02fe65a1831 indirect=12:bfefa02fe65a1831 +geom 280: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8952794 motion [] pieces all=12:4253c830c9b48384 camera=12:4253c830c9b48384 shadow=12:4253c830c9b48384 indirect=12:4253c830c9b48384 +geom 281: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0977838 motion [] pieces all=12:a8a91023573c5fb6 camera=12:a8a91023573c5fb6 shadow=12:a8a91023573c5fb6 indirect=12:a8a91023573c5fb6 +geom 282: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93132013 motion [] pieces all=12:ab20d8004893a1b7 camera=12:ab20d8004893a1b7 shadow=12:ab20d8004893a1b7 indirect=12:ab20d8004893a1b7 +geom 283: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1350319 motion [] pieces all=12:35684780a8aa604c camera=12:35684780a8aa604c shadow=12:35684780a8aa604c indirect=12:35684780a8aa604c +geom 284: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1700913 motion [] pieces all=12:1b2b2f0a76dae5be camera=12:1b2b2f0a76dae5be shadow=12:1b2b2f0a76dae5be indirect=12:1b2b2f0a76dae5be +geom 285: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98973143 motion [] pieces all=12:9363d6e83440a30e camera=12:9363d6e83440a30e shadow=12:9363d6e83440a30e indirect=12:9363d6e83440a30e +geom 286: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8203359 motion [] pieces all=12:11ce1f8b598787b8 camera=12:11ce1f8b598787b8 shadow=12:11ce1f8b598787b8 indirect=12:11ce1f8b598787b8 +geom 287: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0250272 motion [] pieces all=12:fa3c452781ce60ed camera=12:fa3c452781ce60ed shadow=12:fa3c452781ce60ed indirect=12:fa3c452781ce60ed +geom 288: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1674495 motion [] pieces all=12:fd34f39acedb0f6d camera=12:fd34f39acedb0f6d shadow=12:fd34f39acedb0f6d indirect=12:fd34f39acedb0f6d +geom 289: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9944751 motion [] pieces all=12:ab339c1f36e9a37f camera=12:ab339c1f36e9a37f shadow=12:ab339c1f36e9a37f indirect=12:ab339c1f36e9a37f +geom 290: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8160475 motion [] pieces all=12:faba7f48933eb63b camera=12:faba7f48933eb63b shadow=12:faba7f48933eb63b indirect=12:faba7f48933eb63b +geom 291: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0315133 motion [] pieces all=12:00c28819e1e2c5bb camera=12:00c28819e1e2c5bb shadow=12:00c28819e1e2c5bb indirect=12:00c28819e1e2c5bb +geom 292: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1272889 motion [] pieces all=12:011d21c84dac2204 camera=12:011d21c84dac2204 shadow=12:011d21c84dac2204 indirect=12:011d21c84dac2204 +geom 293: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9298853 motion [] pieces all=12:ed2d531f9c6e0f1e camera=12:ed2d531f9c6e0f1e shadow=12:ed2d531f9c6e0f1e indirect=12:ed2d531f9c6e0f1e +geom 294: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89336187 motion [] pieces all=12:303d01582adb6926 camera=12:303d01582adb6926 shadow=12:303d01582adb6926 indirect=12:303d01582adb6926 +geom 295: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0932086 motion [] pieces all=12:d754ca033ea5f334 camera=12:d754ca033ea5f334 shadow=12:d754ca033ea5f334 indirect=12:d754ca033ea5f334 +geom 296: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1831675 motion [] pieces all=12:7b5673acb31cffab camera=12:7b5673acb31cffab shadow=12:7b5673acb31cffab indirect=12:7b5673acb31cffab +geom 297: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9571099 motion [] pieces all=12:c04c9a210d9ac42c camera=12:c04c9a210d9ac42c shadow=12:c04c9a210d9ac42c indirect=12:c04c9a210d9ac42c +geom 298: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8489394 motion [] pieces all=12:b362ab2f14ad8729 camera=12:b362ab2f14ad8729 shadow=12:b362ab2f14ad8729 indirect=12:b362ab2f14ad8729 +geom 299: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0247332 motion [] pieces all=12:d58f01b21912562d camera=12:d58f01b21912562d shadow=12:d58f01b21912562d indirect=12:d58f01b21912562d +geom 300: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0518057 motion [] pieces all=12:773d4f8301a97718 camera=12:773d4f8301a97718 shadow=12:773d4f8301a97718 indirect=12:773d4f8301a97718 +geom 301: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8515276 motion [] pieces all=12:f7f211c80bbe9987 camera=12:f7f211c80bbe9987 shadow=12:f7f211c80bbe9987 indirect=12:f7f211c80bbe9987 +geom 302: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1107516 motion [] pieces all=12:413138d09bdf6da3 camera=12:413138d09bdf6da3 shadow=12:413138d09bdf6da3 indirect=12:413138d09bdf6da3 +geom 303: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9245568 motion [] pieces all=12:35361337983f5c87 camera=12:35361337983f5c87 shadow=12:35361337983f5c87 indirect=12:35361337983f5c87 +geom 304: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8064761 motion [] pieces all=12:d36f8b10fc5540a3 camera=12:d36f8b10fc5540a3 shadow=12:d36f8b10fc5540a3 indirect=12:d36f8b10fc5540a3 +geom 305: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0463852 motion [] pieces all=12:f0b35604f43d8769 camera=12:f0b35604f43d8769 shadow=12:f0b35604f43d8769 indirect=12:f0b35604f43d8769 +geom 306: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9871673 motion [] pieces all=12:1542ac8428b70b7d camera=12:1542ac8428b70b7d shadow=12:1542ac8428b70b7d indirect=12:1542ac8428b70b7d +geom 307: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1544694 motion [] pieces all=12:c02164a11c0f20ff camera=12:c02164a11c0f20ff shadow=12:c02164a11c0f20ff indirect=12:c02164a11c0f20ff +geom 308: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1391888 motion [] pieces all=12:08ef44fdf26154fd camera=12:08ef44fdf26154fd shadow=12:08ef44fdf26154fd indirect=12:08ef44fdf26154fd +geom 309: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94927794 motion [] pieces all=12:b480e163a6d7b43d camera=12:b480e163a6d7b43d shadow=12:b480e163a6d7b43d indirect=12:b480e163a6d7b43d +geom 310: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88299996 motion [] pieces all=12:fd795f69452dfb7d camera=12:fd795f69452dfb7d shadow=12:fd795f69452dfb7d indirect=12:fd795f69452dfb7d +geom 311: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0837138 motion [] pieces all=12:07a65993c415e00b camera=12:07a65993c415e00b shadow=12:07a65993c415e00b indirect=12:07a65993c415e00b +geom 312: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9655494 motion [] pieces all=12:9d30e03131ae69ea camera=12:9d30e03131ae69ea shadow=12:9d30e03131ae69ea indirect=12:9d30e03131ae69ea +geom 313: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1918095 motion [] pieces all=12:9992bceb7a41c4a1 camera=12:9992bceb7a41c4a1 shadow=12:9992bceb7a41c4a1 indirect=12:9992bceb7a41c4a1 +geom 314: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82658696 motion [] pieces all=12:aa84a7700af23eeb camera=12:aa84a7700af23eeb shadow=12:aa84a7700af23eeb indirect=12:aa84a7700af23eeb +geom 315: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.003477 motion [] pieces all=12:358870b07fad707c camera=12:358870b07fad707c shadow=12:358870b07fad707c indirect=12:358870b07fad707c +geom 316: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90877247 motion [] pieces all=12:153c26a3e5d79be6 camera=12:153c26a3e5d79be6 shadow=12:153c26a3e5d79be6 indirect=12:153c26a3e5d79be6 +geom 317: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1198851 motion [] pieces all=12:4739d2865ecbfe92 camera=12:4739d2865ecbfe92 shadow=12:4739d2865ecbfe92 indirect=12:4739d2865ecbfe92 +geom 318: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8655879 motion [] pieces all=12:1428f855a52642da camera=12:1428f855a52642da shadow=12:1428f855a52642da indirect=12:1428f855a52642da +geom 319: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0628493 motion [] pieces all=12:4ece504caa014439 camera=12:4ece504caa014439 shadow=12:4ece504caa014439 indirect=12:4ece504caa014439 +geom 320: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95324653 motion [] pieces all=12:2bbf59106c28eb51 camera=12:2bbf59106c28eb51 shadow=12:2bbf59106c28eb51 indirect=12:2bbf59106c28eb51 +geom 321: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1803721 motion [] pieces all=12:afb2e456749f5911 camera=12:afb2e456749f5911 shadow=12:afb2e456749f5911 indirect=12:afb2e456749f5911 +geom 322: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8395308 motion [] pieces all=12:47bac0965f5e9d9a camera=12:47bac0965f5e9d9a shadow=12:47bac0965f5e9d9a indirect=12:47bac0965f5e9d9a +geom 323: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0130584 motion [] pieces all=12:09dd7f8b2863be44 camera=12:09dd7f8b2863be44 shadow=12:09dd7f8b2863be44 indirect=12:09dd7f8b2863be44 +geom 324: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1041565 motion [] pieces all=12:25b843fbc8abdb98 camera=12:25b843fbc8abdb98 shadow=12:25b843fbc8abdb98 indirect=12:25b843fbc8abdb98 +geom 325: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9134453 motion [] pieces all=12:7d38378fb4460ed1 camera=12:7d38378fb4460ed1 shadow=12:7d38378fb4460ed1 indirect=12:7d38378fb4460ed1 +geom 326: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0614399 motion [] pieces all=12:a848ed9111a5013b camera=12:a848ed9111a5013b shadow=12:a848ed9111a5013b indirect=12:a848ed9111a5013b +geom 327: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85823053 motion [] pieces all=12:6ee721ffdf88ae79 camera=12:6ee721ffdf88ae79 shadow=12:6ee721ffdf88ae79 indirect=12:6ee721ffdf88ae79 +geom 328: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.936712 motion [] pieces all=12:ef4a813e18fea482 camera=12:ef4a813e18fea482 shadow=12:ef4a813e18fea482 indirect=12:ef4a813e18fea482 +geom 329: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1334993 motion [] pieces all=12:c23552c1f8aa86d2 camera=12:c23552c1f8aa86d2 shadow=12:c23552c1f8aa86d2 indirect=12:c23552c1f8aa86d2 +geom 330: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89959896 motion [] pieces all=12:31f0caeb42fceb86 camera=12:31f0caeb42fceb86 shadow=12:31f0caeb42fceb86 indirect=12:31f0caeb42fceb86 +geom 331: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0947691 motion [] pieces all=12:8cdb77e250b483a5 camera=12:8cdb77e250b483a5 shadow=12:8cdb77e250b483a5 indirect=12:8cdb77e250b483a5 +geom 332: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9932519 motion [] pieces all=12:30c656e652cb3fc5 camera=12:30c656e652cb3fc5 shadow=12:30c656e652cb3fc5 indirect=12:30c656e652cb3fc5 +geom 333: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1736686 motion [] pieces all=12:08c52334a63e71bd camera=12:08c52334a63e71bd shadow=12:08c52334a63e71bd indirect=12:08c52334a63e71bd +geom 334: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82319313 motion [] pieces all=12:9f55b0342e7934e7 camera=12:9f55b0342e7934e7 shadow=12:9f55b0342e7934e7 indirect=12:9f55b0342e7934e7 +geom 335: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0311788 motion [] pieces all=12:936d83383dcc36b4 camera=12:936d83383dcc36b4 shadow=12:936d83383dcc36b4 indirect=12:936d83383dcc36b4 +geom 336: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96970755 motion [] pieces all=12:d1a3d36dfb753bf3 camera=12:d1a3d36dfb753bf3 shadow=12:d1a3d36dfb753bf3 indirect=12:d1a3d36dfb753bf3 +geom 337: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1994032 motion [] pieces all=12:6f48c38438da84f1 camera=12:6f48c38438da84f1 shadow=12:6f48c38438da84f1 indirect=12:6f48c38438da84f1 +geom 338: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0095578 motion [] pieces all=12:d6563115596f0832 camera=12:d6563115596f0832 shadow=12:d6563115596f0832 indirect=12:d6563115596f0832 +geom 339: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83265966 motion [] pieces all=12:29c65ea859ccdd32 camera=12:29c65ea859ccdd32 shadow=12:29c65ea859ccdd32 indirect=12:29c65ea859ccdd32 +geom 340: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1146677 motion [] pieces all=12:f6ef5ad0332644eb camera=12:f6ef5ad0332644eb shadow=12:f6ef5ad0332644eb indirect=12:f6ef5ad0332644eb +geom 341: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9060483 motion [] pieces all=12:032ef09f4e12ee09 camera=12:032ef09f4e12ee09 shadow=12:032ef09f4e12ee09 indirect=12:032ef09f4e12ee09 +geom 342: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8715011 motion [] pieces all=12:2434801cd60e7d55 camera=12:2434801cd60e7d55 shadow=12:2434801cd60e7d55 indirect=12:2434801cd60e7d55 +geom 343: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0730761 motion [] pieces all=12:e9c8b018b06c06d5 camera=12:e9c8b018b06c06d5 shadow=12:e9c8b018b06c06d5 indirect=12:e9c8b018b06c06d5 +geom 344: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.144711 motion [] pieces all=12:dafa525be249a82e camera=12:dafa525be249a82e shadow=12:dafa525be249a82e indirect=12:dafa525be249a82e +geom 345: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9396499 motion [] pieces all=12:e3bf42c4df92fdf6 camera=12:e3bf42c4df92fdf6 shadow=12:e3bf42c4df92fdf6 indirect=12:e3bf42c4df92fdf6 +geom 346: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87830245 motion [] pieces all=12:e05e545270a5b4cd camera=12:e05e545270a5b4cd shadow=12:e05e545270a5b4cd indirect=12:e05e545270a5b4cd +geom 347: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0774072 motion [] pieces all=12:7b1273cc00a71821 camera=12:7b1273cc00a71821 shadow=12:7b1273cc00a71821 indirect=12:7b1273cc00a71821 +geom 348: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1595094 motion [] pieces all=12:00b602c13a33afb1 camera=12:00b602c13a33afb1 shadow=12:00b602c13a33afb1 indirect=12:00b602c13a33afb1 +geom 349: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9774113 motion [] pieces all=12:14c2ccdaccabe430 camera=12:14c2ccdaccabe430 shadow=12:14c2ccdaccabe430 indirect=12:14c2ccdaccabe430 +geom 350: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80443263 motion [] pieces all=12:cb7bdd79e8bdd35e camera=12:cb7bdd79e8bdd35e shadow=12:cb7bdd79e8bdd35e indirect=12:cb7bdd79e8bdd35e +geom 351: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0417179 motion [] pieces all=12:65c9a3b77813c7af camera=12:65c9a3b77813c7af shadow=12:65c9a3b77813c7af indirect=12:65c9a3b77813c7af +geom 352: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9441597 motion [] pieces all=12:cdc0fc41ad6d11be camera=12:cdc0fc41ad6d11be shadow=12:cdc0fc41ad6d11be indirect=12:cdc0fc41ad6d11be +geom 353: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1411242 motion [] pieces all=12:d307143a31b155e4 camera=12:d307143a31b155e4 shadow=12:d307143a31b155e4 indirect=12:d307143a31b155e4 +geom 354: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88616794 motion [] pieces all=12:ffef26e3115f7bd9 camera=12:ffef26e3115f7bd9 shadow=12:ffef26e3115f7bd9 indirect=12:ffef26e3115f7bd9 +geom 355: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0846527 motion [] pieces all=12:0b4cdc992e8d3c02 camera=12:0b4cdc992e8d3c02 shadow=12:0b4cdc992e8d3c02 indirect=12:0b4cdc992e8d3c02 +geom 356: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0483505 motion [] pieces all=12:1a387756d87c1dd8 camera=12:1a387756d87c1dd8 shadow=12:1a387756d87c1dd8 indirect=12:1a387756d87c1dd8 +geom 357: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8123259 motion [] pieces all=12:dd6cc842bd958a6f camera=12:dd6cc842bd958a6f shadow=12:dd6cc842bd958a6f indirect=12:dd6cc842bd958a6f +geom 358: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9839657 motion [] pieces all=12:391ae068d0dc3073 camera=12:391ae068d0dc3073 shadow=12:391ae068d0dc3073 indirect=12:391ae068d0dc3073 +geom 359: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1526456 motion [] pieces all=12:ab3848fd3fbcd653 camera=12:ab3848fd3fbcd653 shadow=12:ab3848fd3fbcd653 indirect=12:ab3848fd3fbcd653 +geom 360: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83097094 motion [] pieces all=12:d936d19e6eb82d6f camera=12:d936d19e6eb82d6f shadow=12:d936d19e6eb82d6f indirect=12:d936d19e6eb82d6f +geom 361: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0027986 motion [] pieces all=12:f8e7da458d7c6081 camera=12:f8e7da458d7c6081 shadow=12:f8e7da458d7c6081 indirect=12:f8e7da458d7c6081 +geom 362: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1892936 motion [] pieces all=12:0859b82f849b3ae3 camera=12:0859b82f849b3ae3 shadow=12:0859b82f849b3ae3 indirect=12:0859b82f849b3ae3 +geom 363: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96597666 motion [] pieces all=12:f5a8a4efac21dfae camera=12:f5a8a4efac21dfae shadow=12:f5a8a4efac21dfae indirect=12:f5a8a4efac21dfae +geom 364: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9101751 motion [] pieces all=12:80f46130780a6ac1 camera=12:80f46130780a6ac1 shadow=12:80f46130780a6ac1 indirect=12:80f46130780a6ac1 +geom 365: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1226641 motion [] pieces all=12:beafc7e2b0a8d02c camera=12:beafc7e2b0a8d02c shadow=12:beafc7e2b0a8d02c indirect=12:beafc7e2b0a8d02c +geom 366: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8686439 motion [] pieces all=12:705d4995600cdd9e camera=12:705d4995600cdd9e shadow=12:705d4995600cdd9e indirect=12:705d4995600cdd9e +geom 367: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0671728 motion [] pieces all=12:0d6a8440abe61f87 camera=12:0d6a8440abe61f87 shadow=12:0d6a8440abe61f87 indirect=12:0d6a8440abe61f87 +geom 368: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9975117 motion [] pieces all=12:58ca6c77fdca91c8 camera=12:58ca6c77fdca91c8 shadow=12:58ca6c77fdca91c8 indirect=12:58ca6c77fdca91c8 +geom 369: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1649209 motion [] pieces all=12:9c148e002530a8b1 camera=12:9c148e002530a8b1 shadow=12:9c148e002530a8b1 indirect=12:9c148e002530a8b1 +geom 370: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8132517 motion [] pieces all=12:c9424813ca82b364 camera=12:c9424813ca82b364 shadow=12:c9424813ca82b364 indirect=12:c9424813ca82b364 +geom 371: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0366043 motion [] pieces all=12:8f19a10c9e0156a0 camera=12:8f19a10c9e0156a0 shadow=12:8f19a10c9e0156a0 indirect=12:8f19a10c9e0156a0 +geom 372: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.08927 motion [] pieces all=12:890b266c0ffdf83d camera=12:890b266c0ffdf83d shadow=12:890b266c0ffdf83d indirect=12:890b266c0ffdf83d +geom 373: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8905551 motion [] pieces all=12:4551f0bfcbe0e0cd camera=12:4551f0bfcbe0e0cd shadow=12:4551f0bfcbe0e0cd indirect=12:4551f0bfcbe0e0cd +geom 374: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.926747 motion [] pieces all=12:fa158accaab54e90 camera=12:fa158accaab54e90 shadow=12:fa158accaab54e90 indirect=12:fa158accaab54e90 +geom 375: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1298649 motion [] pieces all=12:a6dae76b89ba4e55 camera=12:a6dae76b89ba4e55 shadow=12:a6dae76b89ba4e55 indirect=12:a6dae76b89ba4e55 +geom 376: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1081444 motion [] pieces all=12:672ec58da613282b camera=12:672ec58da613282b shadow=12:672ec58da613282b indirect=12:672ec58da613282b +geom 377: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9192359 motion [] pieces all=12:666b78070432f4ce camera=12:666b78070432f4ce shadow=12:666b78070432f4ce indirect=12:666b78070432f4ce +geom 378: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8560345 motion [] pieces all=12:3bc417154a557314 camera=12:3bc417154a557314 shadow=12:3bc417154a557314 indirect=12:3bc417154a557314 +geom 379: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0552392 motion [] pieces all=12:2808534dcec513a8 camera=12:2808534dcec513a8 shadow=12:2808534dcec513a8 indirect=12:2808534dcec513a8 +geom 380: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0194297 motion [] pieces all=12:e331af7ed0cca98e camera=12:e331af7ed0cca98e shadow=12:e331af7ed0cca98e indirect=12:e331af7ed0cca98e +geom 381: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8443029 motion [] pieces all=12:79a7a6eb92724741 camera=12:79a7a6eb92724741 shadow=12:79a7a6eb92724741 indirect=12:79a7a6eb92724741 +geom 382: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1850733 motion [] pieces all=12:baf797eb7016c596 camera=12:baf797eb7016c596 shadow=12:baf797eb7016c596 indirect=12:baf797eb7016c596 +geom 383: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9599828 motion [] pieces all=12:81d7733cd92daf20 camera=12:81d7733cd92daf20 shadow=12:81d7733cd92daf20 indirect=12:81d7733cd92daf20 +geom 384: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0148157 motion [] pieces all=12:2fef9fe94b0383fb camera=12:2fef9fe94b0383fb shadow=12:2fef9fe94b0383fb indirect=12:2fef9fe94b0383fb +geom 385: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83852637 motion [] pieces all=12:141cb27a7df0a0ad camera=12:141cb27a7df0a0ad shadow=12:141cb27a7df0a0ad indirect=12:141cb27a7df0a0ad +geom 386: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1796043 motion [] pieces all=12:056390c13a0468f0 camera=12:056390c13a0468f0 shadow=12:056390c13a0468f0 indirect=12:056390c13a0468f0 +geom 387: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.954916 motion [] pieces all=12:6d029812b34edb05 camera=12:6d029812b34edb05 shadow=12:6d029812b34edb05 indirect=12:6d029812b34edb05 +geom 388: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0602692 motion [] pieces all=12:6da6a2c07b039303 camera=12:6da6a2c07b039303 shadow=12:6da6a2c07b039303 indirect=12:6da6a2c07b039303 +geom 389: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8570703 motion [] pieces all=12:afdcbfdfe4ae7f82 camera=12:afdcbfdfe4ae7f82 shadow=12:afdcbfdfe4ae7f82 indirect=12:afdcbfdfe4ae7f82 +geom 390: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1060176 motion [] pieces all=12:1c946733b3e52630 camera=12:1c946733b3e52630 shadow=12:1c946733b3e52630 indirect=12:1c946733b3e52630 +geom 391: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91467035 motion [] pieces all=12:73d8825b5a7e8845 camera=12:73d8825b5a7e8845 shadow=12:73d8825b5a7e8845 indirect=12:73d8825b5a7e8845 +geom 392: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93563294 motion [] pieces all=12:122727326b7b6a9f camera=12:122727326b7b6a9f shadow=12:122727326b7b6a9f indirect=12:122727326b7b6a9f +geom 393: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1315463 motion [] pieces all=12:aabc14dd128d0b48 camera=12:aabc14dd128d0b48 shadow=12:aabc14dd128d0b48 indirect=12:aabc14dd128d0b48 +geom 394: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89784366 motion [] pieces all=12:b5d143b77d3600ae camera=12:b5d143b77d3600ae shadow=12:b5d143b77d3600ae indirect=12:b5d143b77d3600ae +geom 395: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.096456 motion [] pieces all=12:220e6e61a4ddfde8 camera=12:220e6e61a4ddfde8 shadow=12:220e6e61a4ddfde8 indirect=12:220e6e61a4ddfde8 +geom 396: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99132615 motion [] pieces all=12:0877462098af8038 camera=12:0877462098af8038 shadow=12:0877462098af8038 indirect=12:0877462098af8038 +geom 397: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1730263 motion [] pieces all=12:df83d6d94c17e6b8 camera=12:df83d6d94c17e6b8 shadow=12:df83d6d94c17e6b8 indirect=12:df83d6d94c17e6b8 +geom 398: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8244153 motion [] pieces all=12:ad860aeab2e2c935 camera=12:ad860aeab2e2c935 shadow=12:ad860aeab2e2c935 indirect=12:ad860aeab2e2c935 +geom 399: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0293186 motion [] pieces all=12:098d26f26ab4cdc9 camera=12:098d26f26ab4cdc9 shadow=12:098d26f26ab4cdc9 indirect=12:098d26f26ab4cdc9 +geom 400: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93819076 motion [] pieces all=12:bc90496937b9aeb3 camera=12:bc90496937b9aeb3 shadow=12:bc90496937b9aeb3 indirect=12:bc90496937b9aeb3 +geom 401: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.145453 motion [] pieces all=12:0a2fa2950af15a14 camera=12:0a2fa2950af15a14 shadow=12:0a2fa2950af15a14 indirect=12:0a2fa2950af15a14 +geom 402: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0760617 motion [] pieces all=12:5c980803ec14876b camera=12:5c980803ec14876b shadow=12:5c980803ec14876b indirect=12:5c980803ec14876b +geom 403: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88018495 motion [] pieces all=12:227bc7497b439253 camera=12:227bc7497b439253 shadow=12:227bc7497b439253 indirect=12:227bc7497b439253 +geom 404: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8054993 motion [] pieces all=12:d3af00a207ca39e1 camera=12:d3af00a207ca39e1 shadow=12:d3af00a207ca39e1 indirect=12:d3af00a207ca39e1 +geom 405: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0428715 motion [] pieces all=12:b116b391d5ec4a9f camera=12:b116b391d5ec4a9f shadow=12:b116b391d5ec4a9f indirect=12:b116b391d5ec4a9f +geom 406: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97505593 motion [] pieces all=12:507f71e6516ea3f3 camera=12:507f71e6516ea3f3 shadow=12:507f71e6516ea3f3 indirect=12:507f71e6516ea3f3 +geom 407: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1619347 motion [] pieces all=12:66e8ba3aa8bc1735 camera=12:66e8ba3aa8bc1735 shadow=12:66e8ba3aa8bc1735 indirect=12:66e8ba3aa8bc1735 +geom 408: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1126888 motion [] pieces all=12:bc33a24c467e404e camera=12:bc33a24c467e404e shadow=12:bc33a24c467e404e indirect=12:bc33a24c467e404e +geom 409: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9045982 motion [] pieces all=12:b91a2dc653021aad camera=12:b91a2dc653021aad shadow=12:b91a2dc653021aad indirect=12:b91a2dc653021aad +geom 410: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8699642 motion [] pieces all=12:57554cce79f6e878 camera=12:57554cce79f6e878 shadow=12:57554cce79f6e878 indirect=12:57554cce79f6e878 +geom 411: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0737642 motion [] pieces all=12:32afc8c737faa35e camera=12:32afc8c737faa35e shadow=12:32afc8c737faa35e indirect=12:32afc8c737faa35e +geom 412: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1979295 motion [] pieces all=12:aa92a7d192d28661 camera=12:aa92a7d192d28661 shadow=12:aa92a7d192d28661 indirect=12:aa92a7d192d28661 +geom 413: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97159874 motion [] pieces all=12:6d28d5b373962462 camera=12:6d28d5b373962462 shadow=12:6d28d5b373962462 indirect=12:6d28d5b373962462 +geom 414: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83408374 motion [] pieces all=12:65922ac78d162bb7 camera=12:65922ac78d162bb7 shadow=12:65922ac78d162bb7 indirect=12:65922ac78d162bb7 +geom 415: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0117619 motion [] pieces all=12:ce1f02ebf37af17b camera=12:ce1f02ebf37af17b shadow=12:ce1f02ebf37af17b indirect=12:ce1f02ebf37af17b +geom 416: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0003383 motion [] pieces all=12:c8794b4c74afb9a1 camera=12:c8794b4c74afb9a1 shadow=12:c8794b4c74afb9a1 indirect=12:c8794b4c74afb9a1 +geom 417: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8288469 motion [] pieces all=12:abffad9d7edc7bfa camera=12:abffad9d7edc7bfa shadow=12:abffad9d7edc7bfa indirect=12:abffad9d7edc7bfa +geom 418: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1883179 motion [] pieces all=12:08526b521cd4dac8 camera=12:08526b521cd4dac8 shadow=12:08526b521cd4dac8 indirect=12:08526b521cd4dac8 +geom 419: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9687418 motion [] pieces all=12:2975f403fd7949ea camera=12:2975f403fd7949ea shadow=12:2975f403fd7949ea indirect=12:2975f403fd7949ea +geom 420: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0672565 motion [] pieces all=12:4aaaaf2d74efe628 camera=12:4aaaaf2d74efe628 shadow=12:4aaaaf2d74efe628 indirect=12:4aaaaf2d74efe628 +geom 421: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8659016 motion [] pieces all=12:64469fdb4fc3f8e4 camera=12:64469fdb4fc3f8e4 shadow=12:64469fdb4fc3f8e4 indirect=12:64469fdb4fc3f8e4 +geom 422: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1248933 motion [] pieces all=12:72cba155a16d19f2 camera=12:72cba155a16d19f2 shadow=12:72cba155a16d19f2 indirect=12:72cba155a16d19f2 +geom 423: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9111701 motion [] pieces all=12:cf750aa289b112b4 camera=12:cf750aa289b112b4 shadow=12:cf750aa289b112b4 indirect=12:cf750aa289b112b4 +geom 424: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1502215 motion [] pieces all=12:9f4be5474c18839a camera=12:9f4be5474c18839a shadow=12:9f4be5474c18839a indirect=12:9f4be5474c18839a +geom 425: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98130584 motion [] pieces all=12:44cc37892c0aac6c camera=12:44cc37892c0aac6c shadow=12:44cc37892c0aac6c indirect=12:44cc37892c0aac6c +geom 426: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.809897 motion [] pieces all=12:e2163cc9d66f65ad camera=12:e2163cc9d66f65ad shadow=12:e2163cc9d66f65ad indirect=12:e2163cc9d66f65ad +geom 427: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0497544 motion [] pieces all=12:4f9f3cca056877d5 camera=12:4f9f3cca056877d5 shadow=12:4f9f3cca056877d5 indirect=12:4f9f3cca056877d5 +geom 428: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88484913 motion [] pieces all=12:a4e96d78b15e4783 camera=12:a4e96d78b15e4783 shadow=12:a4e96d78b15e4783 indirect=12:a4e96d78b15e4783 +geom 429: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.086017 motion [] pieces all=12:1a79d66b82f03931 camera=12:1a79d66b82f03931 shadow=12:1a79d66b82f03931 indirect=12:1a79d66b82f03931 +geom 430: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94636273 motion [] pieces all=12:e15a364822110916 camera=12:e15a364822110916 shadow=12:e15a364822110916 indirect=12:e15a364822110916 +geom 431: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1435866 motion [] pieces all=12:8eb7d818e16490b4 camera=12:8eb7d818e16490b4 shadow=12:8eb7d818e16490b4 indirect=12:8eb7d818e16490b4 +geom 432: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.162658 motion [] pieces all=12:adec49d7acdaa98c camera=12:adec49d7acdaa98c shadow=12:adec49d7acdaa98c indirect=12:adec49d7acdaa98c +geom 433: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9994693 motion [] pieces all=12:56fe5586c476d86a camera=12:56fe5586c476d86a shadow=12:56fe5586c476d86a indirect=12:56fe5586c476d86a +geom 434: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8147701 motion [] pieces all=12:379c04aebe7f1235 camera=12:379c04aebe7f1235 shadow=12:379c04aebe7f1235 indirect=12:379c04aebe7f1235 +geom 435: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0359036 motion [] pieces all=12:9c82e3fb093d4ce9 camera=12:9c82e3fb093d4ce9 shadow=12:9c82e3fb093d4ce9 indirect=12:9c82e3fb093d4ce9 +geom 436: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8887091 motion [] pieces all=12:4dd067039b14a09c camera=12:4dd067039b14a09c shadow=12:4dd067039b14a09c indirect=12:4dd067039b14a09c +geom 437: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0876021 motion [] pieces all=12:adcec1df06892adf camera=12:adcec1df06892adf shadow=12:adcec1df06892adf indirect=12:adcec1df06892adf +geom 438: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92500865 motion [] pieces all=12:b4c4604968242fa3 camera=12:b4c4604968242fa3 shadow=12:b4c4604968242fa3 indirect=12:b4c4604968242fa3 +geom 439: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1294218 motion [] pieces all=12:4a609af6806ca295 camera=12:4a609af6806ca295 shadow=12:4a609af6806ca295 indirect=12:4a609af6806ca295 +geom 440: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0544837 motion [] pieces all=12:c23c1fb37b974306 camera=12:c23c1fb37b974306 shadow=12:c23c1fb37b974306 indirect=12:c23c1fb37b974306 +geom 441: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85322666 motion [] pieces all=12:9e79208227e8d6cd camera=12:9e79208227e8d6cd shadow=12:9e79208227e8d6cd indirect=12:9e79208227e8d6cd +geom 442: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1068927 motion [] pieces all=12:7ae5927276c6ba2c camera=12:7ae5927276c6ba2c shadow=12:7ae5927276c6ba2c indirect=12:7ae5927276c6ba2c +geom 443: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9205585 motion [] pieces all=12:0b3aafe345a0fc45 camera=12:0b3aafe345a0fc45 shadow=12:0b3aafe345a0fc45 indirect=12:0b3aafe345a0fc45 +geom 444: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9615073 motion [] pieces all=12:b590e9680cfcf69b camera=12:b590e9680cfcf69b shadow=12:b590e9680cfcf69b indirect=12:b590e9680cfcf69b +geom 445: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1863831 motion [] pieces all=12:338cd24ef03c39cc camera=12:338cd24ef03c39cc shadow=12:338cd24ef03c39cc indirect=12:338cd24ef03c39cc +geom 446: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0211514 motion [] pieces all=12:98f5251456624a50 camera=12:98f5251456624a50 shadow=12:98f5251456624a50 indirect=12:98f5251456624a50 +geom 447: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8459975 motion [] pieces all=12:0c67e1d32d3ef619 camera=12:0c67e1d32d3ef619 shadow=12:0c67e1d32d3ef619 indirect=12:0c67e1d32d3ef619 +geom 448: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0576196 motion [] pieces all=12:4ea44925b3c1e288 camera=12:4ea44925b3c1e288 shadow=12:4ea44925b3c1e288 indirect=12:4ea44925b3c1e288 +geom 449: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8603616 motion [] pieces all=12:f6920f3031014110 camera=12:f6920f3031014110 shadow=12:f6920f3031014110 indirect=12:f6920f3031014110 +geom 450: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.916093 motion [] pieces all=12:314acc86767b75be camera=12:314acc86767b75be shadow=12:314acc86767b75be indirect=12:314acc86767b75be +geom 451: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1027862 motion [] pieces all=12:a5c6a2b4211228b4 camera=12:a5c6a2b4211228b4 shadow=12:a5c6a2b4211228b4 indirect=12:a5c6a2b4211228b4 +geom 452: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0158173 motion [] pieces all=12:fa63ac2b5b212ccf camera=12:fa63ac2b5b212ccf shadow=12:fa63ac2b5b212ccf indirect=12:fa63ac2b5b212ccf +geom 453: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84249794 motion [] pieces all=12:6cb710a9166cea3b camera=12:6cb710a9166cea3b shadow=12:6cb710a9166cea3b indirect=12:6cb710a9166cea3b +geom 454: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95259416 motion [] pieces all=12:d0d64e17ba8b2e19 camera=12:d0d64e17ba8b2e19 shadow=12:d0d64e17ba8b2e19 indirect=12:d0d64e17ba8b2e19 +geom 455: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.177041 motion [] pieces all=12:e50f6b41d2063936 camera=12:e50f6b41d2063936 shadow=12:e50f6b41d2063936 indirect=12:e50f6b41d2063936 +geom 456: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98853946 motion [] pieces all=12:e1d294c3739628d6 camera=12:e1d294c3739628d6 shadow=12:e1d294c3739628d6 indirect=12:e1d294c3739628d6 +geom 457: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1716862 motion [] pieces all=12:b70a6f6cd8365893 camera=12:b70a6f6cd8365893 shadow=12:b70a6f6cd8365893 indirect=12:b70a6f6cd8365893 +geom 458: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0277379 motion [] pieces all=12:7bfd8e5388306aac camera=12:7bfd8e5388306aac shadow=12:7bfd8e5388306aac indirect=12:7bfd8e5388306aac +geom 459: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8197726 motion [] pieces all=12:7940e440986f801e camera=12:7940e440986f801e shadow=12:7940e440986f801e indirect=12:7940e440986f801e +geom 460: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9332185 motion [] pieces all=12:03245fe6d030611d camera=12:03245fe6d030611d shadow=12:03245fe6d030611d indirect=12:03245fe6d030611d +geom 461: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.13736 motion [] pieces all=12:f2ba281ed3aae295 camera=12:f2ba281ed3aae295 shadow=12:f2ba281ed3aae295 indirect=12:f2ba281ed3aae295 +geom 462: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0995164 motion [] pieces all=12:c4c4dcfd707d3c11 camera=12:c4c4dcfd707d3c11 shadow=12:c4c4dcfd707d3c11 indirect=12:c4c4dcfd707d3c11 +geom 463: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8955281 motion [] pieces all=12:8281013d9729ef87 camera=12:8281013d9729ef87 shadow=12:8281013d9729ef87 indirect=12:8281013d9729ef87 +geom 464: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0386182 motion [] pieces all=12:9020fdcfd0f904f8 camera=12:9020fdcfd0f904f8 shadow=12:9020fdcfd0f904f8 indirect=12:9020fdcfd0f904f8 +geom 465: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8011433 motion [] pieces all=12:3df400dfa596b784 camera=12:3df400dfa596b784 shadow=12:3df400dfa596b784 indirect=12:3df400dfa596b784 +geom 466: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1588373 motion [] pieces all=12:825be0825bb78942 camera=12:825be0825bb78942 shadow=12:825be0825bb78942 indirect=12:825be0825bb78942 +geom 467: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97848713 motion [] pieces all=12:496c70829654c4ad camera=12:496c70829654c4ad shadow=12:496c70829654c4ad indirect=12:496c70829654c4ad +geom 468: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.078893 motion [] pieces all=12:8e473c96049d4ce5 camera=12:8e473c96049d4ce5 shadow=12:8e473c96049d4ce5 indirect=12:8e473c96049d4ce5 +geom 469: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8776698 motion [] pieces all=12:31b0d625172cced4 camera=12:31b0d625172cced4 shadow=12:31b0d625172cced4 indirect=12:31b0d625172cced4 +geom 470: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1497374 motion [] pieces all=12:99f90e7b0335cc78 camera=12:99f90e7b0335cc78 shadow=12:99f90e7b0335cc78 indirect=12:99f90e7b0335cc78 +geom 471: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9434472 motion [] pieces all=12:f8b99415ec3b4a01 camera=12:f8b99415ec3b4a01 shadow=12:f8b99415ec3b4a01 indirect=12:f8b99415ec3b4a01 +geom 472: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.008965 motion [] pieces all=12:7419f019bce0185d camera=12:7419f019bce0185d shadow=12:7419f019bce0185d indirect=12:7419f019bce0185d +geom 473: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8347222 motion [] pieces all=12:f3469fffaebfe5df camera=12:f3469fffaebfe5df shadow=12:f3469fffaebfe5df indirect=12:f3469fffaebfe5df +geom 474: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9736176 motion [] pieces all=12:2a370fa3fd7c6578 camera=12:2a370fa3fd7c6578 shadow=12:2a370fa3fd7c6578 indirect=12:2a370fa3fd7c6578 +geom 475: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.194048 motion [] pieces all=12:14a4f24efb34e5aa camera=12:14a4f24efb34e5aa shadow=12:14a4f24efb34e5aa indirect=12:14a4f24efb34e5aa +geom 476: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1172101 motion [] pieces all=12:75a1bbe21f2f2a92 camera=12:75a1bbe21f2f2a92 shadow=12:75a1bbe21f2f2a92 indirect=12:75a1bbe21f2f2a92 +geom 477: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9016529 motion [] pieces all=12:f3b463cc424bac99 camera=12:f3b463cc424bac99 shadow=12:f3b463cc424bac99 indirect=12:f3b463cc424bac99 +geom 478: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0714942 motion [] pieces all=12:6b354034c9ec2cd5 camera=12:6b354034c9ec2cd5 shadow=12:6b354034c9ec2cd5 indirect=12:6b354034c9ec2cd5 +geom 479: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8737748 motion [] pieces all=12:d075fa22d99bb7ac camera=12:d075fa22d99bb7ac shadow=12:d075fa22d99bb7ac indirect=12:d075fa22d99bb7ac +geom 480: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94839287 motion [] pieces all=12:4cd336396f07691c camera=12:4cd336396f07691c shadow=12:4cd336396f07691c indirect=12:4cd336396f07691c +geom 481: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1380712 motion [] pieces all=12:d28ac67a5b89dd52 camera=12:d28ac67a5b89dd52 shadow=12:d28ac67a5b89dd52 indirect=12:d28ac67a5b89dd52 +geom 482: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0818378 motion [] pieces all=12:659c3931ffe0ed13 camera=12:659c3931ffe0ed13 shadow=12:659c3931ffe0ed13 indirect=12:659c3931ffe0ed13 +geom 483: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8819798 motion [] pieces all=12:9d3c7aa0dc25bba3 camera=12:9d3c7aa0dc25bba3 shadow=12:9d3c7aa0dc25bba3 indirect=12:9d3c7aa0dc25bba3 +geom 484: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9850546 motion [] pieces all=12:2e0ffb221f8316a9 camera=12:2e0ffb221f8316a9 shadow=12:2e0ffb221f8316a9 indirect=12:2e0ffb221f8316a9 +geom 485: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1558986 motion [] pieces all=12:ba1b52094e1cba75 camera=12:ba1b52094e1cba75 shadow=12:ba1b52094e1cba75 indirect=12:ba1b52094e1cba75 +geom 486: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0442858 motion [] pieces all=12:05884e6f56e90f18 camera=12:05884e6f56e90f18 shadow=12:05884e6f56e90f18 indirect=12:05884e6f56e90f18 +geom 487: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8084655 motion [] pieces all=12:0c4d353d946d289e camera=12:0c4d353d946d289e shadow=12:0c4d353d946d289e indirect=12:0c4d353d946d289e +geom 488: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9071614 motion [] pieces all=12:0c914562b95c142a camera=12:0c914562b95c142a shadow=12:0c914562b95c142a indirect=12:0c914562b95c142a +geom 489: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1215858 motion [] pieces all=12:608393a38181b910 camera=12:608393a38181b910 shadow=12:608393a38181b910 indirect=12:608393a38181b910 +geom 490: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0652461 motion [] pieces all=12:37ba959337baf522 camera=12:37ba959337baf522 shadow=12:37ba959337baf522 indirect=12:37ba959337baf522 +geom 491: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.86263853 motion [] pieces all=12:81ab49539d02aa1a camera=12:81ab49539d02aa1a shadow=12:81ab49539d02aa1a indirect=12:81ab49539d02aa1a +geom 492: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0047668 motion [] pieces all=12:bd1d49961c2be85a camera=12:bd1d49961c2be85a shadow=12:bd1d49961c2be85a indirect=12:bd1d49961c2be85a +geom 493: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82622164 motion [] pieces all=12:2661072845eff293 camera=12:2661072845eff293 shadow=12:2661072845eff293 indirect=12:2661072845eff293 +geom 494: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1931825 motion [] pieces all=12:7a6c25050428c811 camera=12:7a6c25050428c811 shadow=12:7a6c25050428c811 indirect=12:7a6c25050428c811 +geom 495: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96331364 motion [] pieces all=12:50ad6dd7a2bbe1ff camera=12:50ad6dd7a2bbe1ff shadow=12:50ad6dd7a2bbe1ff indirect=12:50ad6dd7a2bbe1ff +geom 496: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1113799 motion [] pieces all=12:a5305f50a191fac8 camera=12:a5305f50a191fac8 shadow=12:a5305f50a191fac8 indirect=12:a5305f50a191fac8 +geom 497: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9225683 motion [] pieces all=12:6850c50534ac1e03 camera=12:6850c50534ac1e03 shadow=12:6850c50534ac1e03 indirect=12:6850c50534ac1e03 +geom 498: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0511969 motion [] pieces all=12:67de18a85d693a42 camera=12:67de18a85d693a42 shadow=12:67de18a85d693a42 indirect=12:67de18a85d693a42 +geom 499: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8524485 motion [] pieces all=12:c21884d879c77cea camera=12:c21884d879c77cea shadow=12:c21884d879c77cea indirect=12:c21884d879c77cea +geom 500: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 501: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 502: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 503: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 504: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 505: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 506: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 507: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 508: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 509: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 510: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 511: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 512: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 513: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 514: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /World/stones/Prototypes/stone_a +provenance arc source: /World/stones/Prototypes/stone_b +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 514..514 } +provenance geometry 0..500: /World/stones +provenance geometry 500..501: /World/pebble/geo +provenance geometry 501..502: /World/away/geo +provenance geometry 502..503: /World/box/geo +provenance geometry 503..504: /World/sunk/geo +provenance geometry 504..505: /World/rock/geo +provenance geometry 505..506: /World/vase/geo +provenance geometry 506..507: /World/steps/geo +provenance geometry 507..508: /World/field/geo +provenance geometry 508..509: /World/slope/geo +provenance geometry 509..510: /World/terrain/geo +provenance geometry 510..511: /World/shelf/geo +provenance geometry 511..512: /World/floor/geo +provenance geometry 512..513: /World/inst +provenance geometry 513..514: /World/crate/geo +provenance geometry 514..515: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 500, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 501, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 502, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 503, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 504, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 505, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 506, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 507, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 508, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 509, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 510, slot: 9, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 511, slot: 10, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 513, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 514, slot: 11, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4345222167175548266, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 735706973108043347, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 11: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-503a8ea6d52670c0-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-503a8ea6d52670c0-1.digest new file mode 100644 index 000000000..ba553ef45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-503a8ea6d52670c0-1.digest @@ -0,0 +1,78 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 15 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } top level, PrimitiveBreakdown { triangles: 178, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 14..14 } +provenance geometry 0..1: /World/pebble/geo +provenance geometry 1..2: /World/away/geo +provenance geometry 2..3: /World/box/geo +provenance geometry 3..4: /World/sunk/geo +provenance geometry 4..5: /World/rock/geo +provenance geometry 5..6: /World/vase/geo +provenance geometry 6..7: /World/steps/geo +provenance geometry 7..8: /World/field/geo +provenance geometry 8..9: /World/slope/geo +provenance geometry 9..10: /World/terrain/geo +provenance geometry 10..11: /World/shelf/geo +provenance geometry 11..12: /World/floor/geo +provenance geometry 12..13: /World/inst +provenance geometry 13..14: /World/crate/geo +provenance geometry 14..15: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 11, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 13, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 14, slot: 9, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-63f0ce074fafa44d-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-63f0ce074fafa44d-1.digest new file mode 100644 index 000000000..f0fefcefa --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-63f0ce074fafa44d-1.digest @@ -0,0 +1,78 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 15 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } top level, PrimitiveBreakdown { triangles: 178, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:a8d87f10866c6975 camera=2:a8d87f10866c6975 shadow=2:a8d87f10866c6975 indirect=2:a8d87f10866c6975 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 14..14 } +provenance geometry 0..1: /World/pebble/geo +provenance geometry 1..2: /World/away/geo +provenance geometry 2..3: /World/box/geo +provenance geometry 3..4: /World/sunk/geo +provenance geometry 4..5: /World/rock/geo +provenance geometry 5..6: /World/vase/geo +provenance geometry 6..7: /World/steps/geo +provenance geometry 7..8: /World/field/geo +provenance geometry 8..9: /World/slope/geo +provenance geometry 9..10: /World/terrain/geo +provenance geometry 10..11: /World/shelf/geo +provenance geometry 11..12: /World/floor/geo +provenance geometry 12..13: /World/inst +provenance geometry 13..14: /World/crate/geo +provenance geometry 14..15: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 11, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 13, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 14, slot: 9, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-6fa96be933bc04d8-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-6fa96be933bc04d8-1.digest new file mode 100644 index 000000000..2a08760cc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-6fa96be933bc04d8-1.digest @@ -0,0 +1,684 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/stone_a.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 615 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 606 } top level, PrimitiveBreakdown { triangles: 190, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 606 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8990609 motion [] pieces all=12:44b1d82c21842e3b camera=12:44b1d82c21842e3b shadow=12:44b1d82c21842e3b indirect=12:44b1d82c21842e3b +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0628142 motion [] pieces all=12:fed5ab87cac668b9 camera=12:fed5ab87cac668b9 shadow=12:fed5ab87cac668b9 indirect=12:fed5ab87cac668b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94923806 motion [] pieces all=12:1ad12ee89da48838 camera=12:1ad12ee89da48838 shadow=12:1ad12ee89da48838 indirect=12:1ad12ee89da48838 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1124884 motion [] pieces all=12:8ee6a452b05da0cd camera=12:8ee6a452b05da0cd shadow=12:8ee6a452b05da0cd indirect=12:8ee6a452b05da0cd +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.187099 motion [] pieces all=12:cbc4fb39bd570db1 camera=12:cbc4fb39bd570db1 shadow=12:cbc4fb39bd570db1 indirect=12:cbc4fb39bd570db1 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9952836 motion [] pieces all=12:c0123fbd9a45557d camera=12:c0123fbd9a45557d shadow=12:c0123fbd9a45557d indirect=12:c0123fbd9a45557d +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80443853 motion [] pieces all=12:3ea10226bab9624f camera=12:3ea10226bab9624f shadow=12:3ea10226bab9624f indirect=12:3ea10226bab9624f +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0070286 motion [] pieces all=12:e3be496ac4b3262b camera=12:e3be496ac4b3262b shadow=12:e3be496ac4b3262b indirect=12:e3be496ac4b3262b +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1720115 motion [] pieces all=12:ea04bb3ba81dc81b camera=12:ea04bb3ba81dc81b shadow=12:ea04bb3ba81dc81b indirect=12:ea04bb3ba81dc81b +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96482605 motion [] pieces all=12:31ff273f8175725c camera=12:31ff273f8175725c shadow=12:31ff273f8175725c indirect=12:31ff273f8175725c +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8443385 motion [] pieces all=12:020ce5728e3ef7a9 camera=12:020ce5728e3ef7a9 shadow=12:020ce5728e3ef7a9 indirect=12:020ce5728e3ef7a9 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0417223 motion [] pieces all=12:71e1303c0b742528 camera=12:71e1303c0b742528 shadow=12:71e1303c0b742528 indirect=12:71e1303c0b742528 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8748417 motion [] pieces all=12:d637039e9d57d597 camera=12:d637039e9d57d597 shadow=12:d637039e9d57d597 indirect=12:d637039e9d57d597 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0863136 motion [] pieces all=12:6c752ae6b68c691b camera=12:6c752ae6b68c691b shadow=12:6c752ae6b68c691b indirect=12:6c752ae6b68c691b +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91278625 motion [] pieces all=12:6fc83c3207a84644 camera=12:6fc83c3207a84644 shadow=12:6fc83c3207a84644 indirect=12:6fc83c3207a84644 +geom 15: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1320257 motion [] pieces all=12:11ca234ef3c6c516 camera=12:11ca234ef3c6c516 shadow=12:11ca234ef3c6c516 indirect=12:11ca234ef3c6c516 +geom 16: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1384283 motion [] pieces all=12:11fb92adc381d6ce camera=12:11fb92adc381d6ce shadow=12:11fb92adc381d6ce indirect=12:11fb92adc381d6ce +geom 17: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9022886 motion [] pieces all=12:da9d2cdf99248ed0 camera=12:da9d2cdf99248ed0 shadow=12:da9d2cdf99248ed0 indirect=12:da9d2cdf99248ed0 +geom 18: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8560681 motion [] pieces all=12:d605449360347e25 camera=12:d605449360347e25 shadow=12:d605449360347e25 indirect=12:d605449360347e25 +geom 19: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0914848 motion [] pieces all=12:dfe5a25bbcf4b12e camera=12:dfe5a25bbcf4b12e shadow=12:dfe5a25bbcf4b12e indirect=12:dfe5a25bbcf4b12e +geom 20: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1542208 motion [] pieces all=12:14ea4f92c6d4e02f camera=12:14ea4f92c6d4e02f shadow=12:14ea4f92c6d4e02f indirect=12:14ea4f92c6d4e02f +geom 21: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95115894 motion [] pieces all=12:6239451bd4199ef0 camera=12:6239451bd4199ef0 shadow=12:6239451bd4199ef0 indirect=12:6239451bd4199ef0 +geom 22: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8291241 motion [] pieces all=12:b2ecb8be3c02cdb8 camera=12:b2ecb8be3c02cdb8 shadow=12:b2ecb8be3c02cdb8 indirect=12:b2ecb8be3c02cdb8 +geom 23: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0308899 motion [] pieces all=12:b2203d5336aff19a camera=12:b2203d5336aff19a shadow=12:b2203d5336aff19a indirect=12:b2203d5336aff19a +geom 24: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9334562 motion [] pieces all=12:32c8c79560b759ed camera=12:32c8c79560b759ed shadow=12:32c8c79560b759ed indirect=12:32c8c79560b759ed +geom 25: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1137878 motion [] pieces all=12:106810481c557f7c camera=12:106810481c557f7c shadow=12:106810481c557f7c indirect=12:106810481c557f7c +geom 26: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0543976 motion [] pieces all=12:e4160405b004d185 camera=12:e4160405b004d185 shadow=12:e4160405b004d185 indirect=12:e4160405b004d185 +geom 27: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87682164 motion [] pieces all=12:5073fc610cea0791 camera=12:5073fc610cea0791 shadow=12:5073fc610cea0791 indirect=12:5073fc610cea0791 +geom 28: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.016827 motion [] pieces all=12:60d592a4f07b6a38 camera=12:60d592a4f07b6a38 shadow=12:60d592a4f07b6a38 indirect=12:60d592a4f07b6a38 +geom 29: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8125884 motion [] pieces all=12:fc685efde84de305 camera=12:fc685efde84de305 shadow=12:fc685efde84de305 indirect=12:fc685efde84de305 +geom 30: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1979452 motion [] pieces all=12:70f20ca832b921a0 camera=12:70f20ca832b921a0 shadow=12:70f20ca832b921a0 indirect=12:70f20ca832b921a0 +geom 31: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98569065 motion [] pieces all=12:4e49d8cc8f68c48f camera=12:4e49d8cc8f68c48f shadow=12:4e49d8cc8f68c48f indirect=12:4e49d8cc8f68c48f +geom 32: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92193866 motion [] pieces all=12:a9d2072a14a53f18 camera=12:a9d2072a14a53f18 shadow=12:a9d2072a14a53f18 indirect=12:a9d2072a14a53f18 +geom 33: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.126033 motion [] pieces all=12:94fbd92676dc25b2 camera=12:94fbd92676dc25b2 shadow=12:94fbd92676dc25b2 indirect=12:94fbd92676dc25b2 +geom 34: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0781286 motion [] pieces all=12:725c4008f76a8de9 camera=12:725c4008f76a8de9 shadow=12:725c4008f76a8de9 indirect=12:725c4008f76a8de9 +geom 35: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8665554 motion [] pieces all=12:c2145267f981f560 camera=12:c2145267f981f560 shadow=12:c2145267f981f560 indirect=12:c2145267f981f560 +geom 36: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8436374 motion [] pieces all=12:d589d64853d7469a camera=12:d589d64853d7469a shadow=12:d589d64853d7469a indirect=12:d589d64853d7469a +geom 37: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0491575 motion [] pieces all=12:aeacc5b54993e3a4 camera=12:aeacc5b54993e3a4 shadow=12:aeacc5b54993e3a4 indirect=12:aeacc5b54993e3a4 +geom 38: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.970894 motion [] pieces all=12:6cd44b701cec5a02 camera=12:6cd44b701cec5a02 shadow=12:6cd44b701cec5a02 indirect=12:6cd44b701cec5a02 +geom 39: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1674632 motion [] pieces all=12:c26619c821514720 camera=12:c26619c821514720 shadow=12:c26619c821514720 indirect=12:c26619c821514720 +geom 40: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9387685 motion [] pieces all=12:2d0aafd941588f2b camera=12:2d0aafd941588f2b shadow=12:2d0aafd941588f2b indirect=12:2d0aafd941588f2b +geom 41: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1010078 motion [] pieces all=12:d0ebcbdb15f7fc1f camera=12:d0ebcbdb15f7fc1f shadow=12:d0ebcbdb15f7fc1f indirect=12:d0ebcbdb15f7fc1f +geom 42: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0749352 motion [] pieces all=12:2df2fea1349e73fc camera=12:2df2fea1349e73fc shadow=12:2df2fea1349e73fc indirect=12:2df2fea1349e73fc +geom 43: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8877842 motion [] pieces all=12:85e256d14e3e430b camera=12:85e256d14e3e430b shadow=12:85e256d14e3e430b indirect=12:85e256d14e3e430b +geom 44: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.987708 motion [] pieces all=12:bf1d02dea2d1adfc camera=12:bf1d02dea2d1adfc shadow=12:bf1d02dea2d1adfc indirect=12:bf1d02dea2d1adfc +geom 45: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1782725 motion [] pieces all=12:eed6675f2e2d35ad camera=12:eed6675f2e2d35ad shadow=12:eed6675f2e2d35ad indirect=12:eed6675f2e2d35ad +geom 46: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0043731 motion [] pieces all=12:6b90bf535f4983cb camera=12:6b90bf535f4983cb shadow=12:6b90bf535f4983cb indirect=12:6b90bf535f4983cb +geom 47: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80755323 motion [] pieces all=12:449e89141d8d6a91 camera=12:449e89141d8d6a91 shadow=12:449e89141d8d6a91 indirect=12:449e89141d8d6a91 +geom 48: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83668417 motion [] pieces all=12:1db7296c740d63f1 camera=12:1db7296c740d63f1 shadow=12:1db7296c740d63f1 indirect=12:1db7296c740d63f1 +geom 49: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0351386 motion [] pieces all=12:2c6575c259c9b975 camera=12:2c6575c259c9b975 shadow=12:2c6575c259c9b975 indirect=12:2c6575c259c9b975 +geom 50: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1581647 motion [] pieces all=12:bbc8a606fa4d000f camera=12:bbc8a606fa4d000f shadow=12:bbc8a606fa4d000f indirect=12:bbc8a606fa4d000f +geom 51: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9576694 motion [] pieces all=12:91e829c376771d11 camera=12:91e829c376771d11 shadow=12:91e829c376771d11 indirect=12:91e829c376771d11 +geom 52: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0958747 motion [] pieces all=12:b40ab56cf498811d camera=12:b40ab56cf498811d shadow=12:b40ab56cf498811d indirect=12:b40ab56cf498811d +geom 53: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85897017 motion [] pieces all=12:52808830e6104150 camera=12:52808830e6104150 shadow=12:52808830e6104150 indirect=12:52808830e6104150 +geom 54: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91061383 motion [] pieces all=12:02326fdedd732d8c camera=12:02326fdedd732d8c shadow=12:02326fdedd732d8c indirect=12:02326fdedd732d8c +geom 55: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1471994 motion [] pieces all=12:8c147f4b5d226330 camera=12:8c147f4b5d226330 shadow=12:8c147f4b5d226330 indirect=12:8c147f4b5d226330 +geom 56: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1935827 motion [] pieces all=12:911e56b8319ba4c0 camera=12:911e56b8319ba4c0 shadow=12:911e56b8319ba4c0 indirect=12:911e56b8319ba4c0 +geom 57: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.980042 motion [] pieces all=12:c275ab0655ce50b5 camera=12:c275ab0655ce50b5 shadow=12:c275ab0655ce50b5 indirect=12:c275ab0655ce50b5 +geom 58: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0233157 motion [] pieces all=12:5a0565096cbe550a camera=12:5a0565096cbe550a shadow=12:5a0565096cbe550a indirect=12:5a0565096cbe550a +geom 59: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8224425 motion [] pieces all=12:c5fd305f31d8a644 camera=12:c5fd305f31d8a644 shadow=12:c5fd305f31d8a644 indirect=12:c5fd305f31d8a644 +geom 60: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0592008 motion [] pieces all=12:b6f978c24e98ef94 camera=12:b6f978c24e98ef94 shadow=12:b6f978c24e98ef94 indirect=12:b6f978c24e98ef94 +geom 61: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8817098 motion [] pieces all=12:0ce0d9cf2f434c36 camera=12:0ce0d9cf2f434c36 shadow=12:0ce0d9cf2f434c36 indirect=12:0ce0d9cf2f434c36 +geom 62: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9295446 motion [] pieces all=12:2c015ffa5baf0735 camera=12:2c015ffa5baf0735 shadow=12:2c015ffa5baf0735 indirect=12:2c015ffa5baf0735 +geom 63: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1193067 motion [] pieces all=12:56c847b2ff301f79 camera=12:56c847b2ff301f79 shadow=12:56c847b2ff301f79 indirect=12:56c847b2ff301f79 +geom 64: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1518211 motion [] pieces all=12:627009bd45ed48c0 camera=12:627009bd45ed48c0 shadow=12:627009bd45ed48c0 indirect=12:627009bd45ed48c0 +geom 65: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9556986 motion [] pieces all=12:07e637ff927077f1 camera=12:07e637ff927077f1 shadow=12:07e637ff927077f1 indirect=12:07e637ff927077f1 +geom 66: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0273238 motion [] pieces all=12:ca2d07dbc8c81ea8 camera=12:ca2d07dbc8c81ea8 shadow=12:ca2d07dbc8c81ea8 indirect=12:ca2d07dbc8c81ea8 +geom 67: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8273176 motion [] pieces all=12:d0c7b5616de963a3 camera=12:d0c7b5616de963a3 shadow=12:d0c7b5616de963a3 indirect=12:d0c7b5616de963a3 +geom 68: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1410161 motion [] pieces all=12:cc604b00584b0eef camera=12:cc604b00584b0eef shadow=12:cc604b00584b0eef indirect=12:cc604b00584b0eef +geom 69: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9045178 motion [] pieces all=12:cffb35b8cc4f6741 camera=12:cffb35b8cc4f6741 shadow=12:cffb35b8cc4f6741 indirect=12:cffb35b8cc4f6741 +geom 70: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0891551 motion [] pieces all=12:e467d215ef374063 camera=12:e467d215ef374063 shadow=12:e467d215ef374063 indirect=12:e467d215ef374063 +geom 71: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.851863 motion [] pieces all=12:5a32a21db9151a91 camera=12:5a32a21db9151a91 shadow=12:5a32a21db9151a91 indirect=12:5a32a21db9151a91 +geom 72: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1945997 motion [] pieces all=12:5cf4521db65fa38e camera=12:5cf4521db65fa38e shadow=12:5cf4521db65fa38e indirect=12:5cf4521db65fa38e +geom 73: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9821077 motion [] pieces all=12:6f1610f26c0a9295 camera=12:6f1610f26c0a9295 shadow=12:6f1610f26c0a9295 indirect=12:6f1610f26c0a9295 +geom 74: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0151749 motion [] pieces all=12:72ad6327235e75f3 camera=12:72ad6327235e75f3 shadow=12:72ad6327235e75f3 indirect=12:72ad6327235e75f3 +geom 75: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81593794 motion [] pieces all=12:cc0b48dc986c276b camera=12:cc0b48dc986c276b shadow=12:cc0b48dc986c276b indirect=12:cc0b48dc986c276b +geom 76: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0501194 motion [] pieces all=12:07608e830f73ad69 camera=12:07608e830f73ad69 shadow=12:07608e830f73ad69 indirect=12:07608e830f73ad69 +geom 77: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8808431 motion [] pieces all=12:36acbe841ce3820a camera=12:36acbe841ce3820a shadow=12:36acbe841ce3820a indirect=12:36acbe841ce3820a +geom 78: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9359924 motion [] pieces all=12:1e736443914ad79a camera=12:1e736443914ad79a shadow=12:1e736443914ad79a indirect=12:1e736443914ad79a +geom 79: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1171876 motion [] pieces all=12:d69abdf928c43e4c camera=12:d69abdf928c43e4c shadow=12:d69abdf928c43e4c indirect=12:d69abdf928c43e4c +geom 80: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0380744 motion [] pieces all=12:91a0a7989b5b0ce7 camera=12:91a0a7989b5b0ce7 shadow=12:91a0a7989b5b0ce7 indirect=12:91a0a7989b5b0ce7 +geom 81: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8486114 motion [] pieces all=12:0980b2d1daba7f90 camera=12:0980b2d1daba7f90 shadow=12:0980b2d1daba7f90 indirect=12:0980b2d1daba7f90 +geom 82: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1718653 motion [] pieces all=12:7fa47bd767e3268e camera=12:7fa47bd767e3268e shadow=12:7fa47bd767e3268e indirect=12:7fa47bd767e3268e +geom 83: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9663366 motion [] pieces all=12:a679b83e0b0cac09 camera=12:a679b83e0b0cac09 shadow=12:a679b83e0b0cac09 indirect=12:a679b83e0b0cac09 +geom 84: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91593134 motion [] pieces all=12:18bd3540606dcc29 camera=12:18bd3540606dcc29 shadow=12:18bd3540606dcc29 indirect=12:18bd3540606dcc29 +geom 85: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1349744 motion [] pieces all=12:575041f453c38bda camera=12:575041f453c38bda shadow=12:575041f453c38bda indirect=12:575041f453c38bda +geom 86: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0823053 motion [] pieces all=12:2e91b83be04794d4 camera=12:2e91b83be04794d4 shadow=12:2e91b83be04794d4 indirect=12:2e91b83be04794d4 +geom 87: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8692073 motion [] pieces all=12:469b4983d898cee1 camera=12:469b4983d898cee1 shadow=12:469b4983d898cee1 indirect=12:469b4983d898cee1 +geom 88: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1841434 motion [] pieces all=12:aa3a0729eb91a585 camera=12:aa3a0729eb91a585 shadow=12:aa3a0729eb91a585 indirect=12:aa3a0729eb91a585 +geom 89: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9976128 motion [] pieces all=12:962d0873576941e8 camera=12:962d0873576941e8 shadow=12:962d0873576941e8 indirect=12:962d0873576941e8 +geom 90: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0106225 motion [] pieces all=12:206b577663e569fa camera=12:206b577663e569fa shadow=12:206b577663e569fa indirect=12:206b577663e569fa +geom 91: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80188763 motion [] pieces all=12:086331f78e8a8d62 camera=12:086331f78e8a8d62 shadow=12:086331f78e8a8d62 indirect=12:086331f78e8a8d62 +geom 92: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9451319 motion [] pieces all=12:6f6dcdd5eef02b6b camera=12:6f6dcdd5eef02b6b shadow=12:6f6dcdd5eef02b6b indirect=12:6f6dcdd5eef02b6b +geom 93: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1072922 motion [] pieces all=12:7346966608d93537 camera=12:7346966608d93537 shadow=12:7346966608d93537 indirect=12:7346966608d93537 +geom 94: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8943972 motion [] pieces all=12:6856d703c3e43835 camera=12:6856d703c3e43835 shadow=12:6856d703c3e43835 indirect=12:6856d703c3e43835 +geom 95: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0684817 motion [] pieces all=12:ab5e6b77fe0c146d camera=12:ab5e6b77fe0c146d shadow=12:ab5e6b77fe0c146d indirect=12:ab5e6b77fe0c146d +geom 96: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1249955 motion [] pieces all=12:61de4bf9266dbc70 camera=12:61de4bf9266dbc70 shadow=12:61de4bf9266dbc70 indirect=12:61de4bf9266dbc70 +geom 97: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9280391 motion [] pieces all=12:a3a90020585141c2 camera=12:a3a90020585141c2 shadow=12:a3a90020585141c2 indirect=12:a3a90020585141c2 +geom 98: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0595247 motion [] pieces all=12:50adb7a417da4de9 camera=12:50adb7a417da4de9 shadow=12:50adb7a417da4de9 indirect=12:50adb7a417da4de9 +geom 99: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88450146 motion [] pieces all=12:fc56548e56001d3e camera=12:fc56548e56001d3e shadow=12:fc56548e56001d3e indirect=12:fc56548e56001d3e +geom 100: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1892818 motion [] pieces all=12:3697012ed99d613b camera=12:3697012ed99d613b shadow=12:3697012ed99d613b indirect=12:3697012ed99d613b +geom 101: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97749156 motion [] pieces all=12:683faf01facb6fb3 camera=12:683faf01facb6fb3 shadow=12:683faf01facb6fb3 indirect=12:683faf01facb6fb3 +geom 102: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0217395 motion [] pieces all=12:5a8360b0f2d16458 camera=12:5a8360b0f2d16458 shadow=12:5a8360b0f2d16458 indirect=12:5a8360b0f2d16458 +geom 103: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82127976 motion [] pieces all=12:877a12bfa3c144e5 camera=12:877a12bfa3c144e5 shadow=12:877a12bfa3c144e5 indirect=12:877a12bfa3c144e5 +geom 104: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0994653 motion [] pieces all=12:b4170c138da5d199 camera=12:b4170c138da5d199 shadow=12:b4170c138da5d199 indirect=12:b4170c138da5d199 +geom 105: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8608528 motion [] pieces all=12:2979926551fa98a4 camera=12:2979926551fa98a4 shadow=12:2979926551fa98a4 indirect=12:2979926551fa98a4 +geom 106: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90750545 motion [] pieces all=12:242fbeee47e18ad0 camera=12:242fbeee47e18ad0 shadow=12:242fbeee47e18ad0 indirect=12:242fbeee47e18ad0 +geom 107: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1456926 motion [] pieces all=12:fbc5064855c1a80b camera=12:fbc5064855c1a80b shadow=12:fbc5064855c1a80b indirect=12:fbc5064855c1a80b +geom 108: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1613561 motion [] pieces all=12:282530007653267c camera=12:282530007653267c shadow=12:282530007653267c indirect=12:282530007653267c +geom 109: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96178114 motion [] pieces all=12:992eedf417885372 camera=12:992eedf417885372 shadow=12:992eedf417885372 indirect=12:992eedf417885372 +geom 110: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0319483 motion [] pieces all=12:f429f4fc21c6cb92 camera=12:f429f4fc21c6cb92 shadow=12:f429f4fc21c6cb92 indirect=12:f429f4fc21c6cb92 +geom 111: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8326967 motion [] pieces all=12:13f9a9a2245582b7 camera=12:13f9a9a2245582b7 shadow=12:13f9a9a2245582b7 indirect=12:13f9a9a2245582b7 +geom 112: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1289089 motion [] pieces all=12:43c1e0cf79e4483b camera=12:43c1e0cf79e4483b shadow=12:43c1e0cf79e4483b indirect=12:43c1e0cf79e4483b +geom 113: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92041624 motion [] pieces all=12:51d3d5c61e6a99f8 camera=12:51d3d5c61e6a99f8 shadow=12:51d3d5c61e6a99f8 indirect=12:51d3d5c61e6a99f8 +geom 114: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8645451 motion [] pieces all=12:bcf6210474f896ef camera=12:bcf6210474f896ef shadow=12:bcf6210474f896ef indirect=12:bcf6210474f896ef +geom 115: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0773754 motion [] pieces all=12:c1392d4205fdb1ef camera=12:c1392d4205fdb1ef shadow=12:c1392d4205fdb1ef indirect=12:c1392d4205fdb1ef +geom 116: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.045711 motion [] pieces all=12:0a23c800457414d4 camera=12:0a23c800457414d4 shadow=12:0a23c800457414d4 indirect=12:0a23c800457414d4 +geom 117: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8394264 motion [] pieces all=12:33b52eca5a4cb014 camera=12:33b52eca5a4cb014 shadow=12:33b52eca5a4cb014 indirect=12:33b52eca5a4cb014 +geom 118: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1634734 motion [] pieces all=12:9a92559e3f552c1d camera=12:9a92559e3f552c1d shadow=12:9a92559e3f552c1d indirect=12:9a92559e3f552c1d +geom 119: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97260165 motion [] pieces all=12:5f1c658842bda44c camera=12:5f1c658842bda44c shadow=12:5f1c658842bda44c indirect=12:5f1c658842bda44c +geom 120: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0030005 motion [] pieces all=12:a8a05b4db17e7783 camera=12:a8a05b4db17e7783 shadow=12:a8a05b4db17e7783 indirect=12:a8a05b4db17e7783 +geom 121: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8094701 motion [] pieces all=12:e42a3e316ada230a camera=12:e42a3e316ada230a shadow=12:e42a3e316ada230a indirect=12:e42a3e316ada230a +geom 122: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1763176 motion [] pieces all=12:24aacd00fe70b325 camera=12:24aacd00fe70b325 shadow=12:24aacd00fe70b325 indirect=12:24aacd00fe70b325 +geom 123: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99154574 motion [] pieces all=12:b5cee23d150ae51f camera=12:b5cee23d150ae51f shadow=12:b5cee23d150ae51f indirect=12:b5cee23d150ae51f +geom 124: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1031994 motion [] pieces all=12:e6beba0d18d503dc camera=12:e6beba0d18d503dc shadow=12:e6beba0d18d503dc indirect=12:e6beba0d18d503dc +geom 125: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9406998 motion [] pieces all=12:3bf146f916dff98b camera=12:3bf146f916dff98b shadow=12:3bf146f916dff98b indirect=12:3bf146f916dff98b +geom 126: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8914689 motion [] pieces all=12:cd694d9771b0bfd6 camera=12:cd694d9771b0bfd6 shadow=12:cd694d9771b0bfd6 indirect=12:cd694d9771b0bfd6 +geom 127: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0718373 motion [] pieces all=12:e7cc56c1a52f5951 camera=12:e7cc56c1a52f5951 shadow=12:e7cc56c1a52f5951 indirect=12:e7cc56c1a52f5951 +geom 128: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0973064 motion [] pieces all=12:9dd89cdb60cb79c8 camera=12:9dd89cdb60cb79c8 shadow=12:9dd89cdb60cb79c8 indirect=12:9dd89cdb60cb79c8 +geom 129: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8618871 motion [] pieces all=12:2d16369067aeb476 camera=12:2d16369067aeb476 shadow=12:2d16369067aeb476 indirect=12:2d16369067aeb476 +geom 130: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1439276 motion [] pieces all=12:39ea99048254fabc camera=12:39ea99048254fabc shadow=12:39ea99048254fabc indirect=12:39ea99048254fabc +geom 131: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90927 motion [] pieces all=12:54142cf8eec16079 camera=12:54142cf8eec16079 shadow=12:54142cf8eec16079 indirect=12:54142cf8eec16079 +geom 132: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8337335 motion [] pieces all=12:bcc6a15287527767 camera=12:bcc6a15287527767 shadow=12:bcc6a15287527767 indirect=12:bcc6a15287527767 +geom 133: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0330089 motion [] pieces all=12:5bff0a4f060392bd camera=12:5bff0a4f060392bd shadow=12:5bff0a4f060392bd indirect=12:5bff0a4f060392bd +geom 134: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95969594 motion [] pieces all=12:25f39ed1572bbbe5 camera=12:25f39ed1572bbbe5 shadow=12:25f39ed1572bbbe5 indirect=12:25f39ed1572bbbe5 +geom 135: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1606913 motion [] pieces all=12:10c7d51449429b12 camera=12:10c7d51449429b12 shadow=12:10c7d51449429b12 indirect=12:10c7d51449429b12 +geom 136: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9255529 motion [] pieces all=12:2abf5fb6004de21c camera=12:2abf5fb6004de21c shadow=12:2abf5fb6004de21c indirect=12:2abf5fb6004de21c +geom 137: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1223564 motion [] pieces all=12:19185f30669c7317 camera=12:19185f30669c7317 shadow=12:19185f30669c7317 indirect=12:19185f30669c7317 +geom 138: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88656634 motion [] pieces all=12:ec4911562c030504 camera=12:ec4911562c030504 shadow=12:ec4911562c030504 indirect=12:ec4911562c030504 +geom 139: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0613629 motion [] pieces all=12:e1d59546316d5b09 camera=12:e1d59546316d5b09 shadow=12:e1d59546316d5b09 indirect=12:e1d59546316d5b09 +geom 140: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81943786 motion [] pieces all=12:b1a1eb57240dc675 camera=12:b1a1eb57240dc675 shadow=12:b1a1eb57240dc675 indirect=12:b1a1eb57240dc675 +geom 141: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0191184 motion [] pieces all=12:6e040f68d8a65467 camera=12:6e040f68d8a65467 shadow=12:6e040f68d8a65467 indirect=12:6e040f68d8a65467 +geom 142: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1875308 motion [] pieces all=12:c5dc406e9310222d camera=12:c5dc406e9310222d shadow=12:c5dc406e9310222d indirect=12:c5dc406e9310222d +geom 143: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.976491 motion [] pieces all=12:4119822a6602f329 camera=12:4119822a6602f329 shadow=12:4119822a6602f329 indirect=12:4119822a6602f329 +geom 144: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8120902 motion [] pieces all=12:c8d3cfbfb004b08e camera=12:c8d3cfbfb004b08e shadow=12:c8d3cfbfb004b08e indirect=12:c8d3cfbfb004b08e +geom 145: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0007923 motion [] pieces all=12:67ce2cbfdc9194ce camera=12:67ce2cbfdc9194ce shadow=12:67ce2cbfdc9194ce indirect=12:67ce2cbfdc9194ce +geom 146: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99281836 motion [] pieces all=12:f8f2078e2644f1a1 camera=12:f8f2078e2644f1a1 shadow=12:f8f2078e2644f1a1 indirect=12:f8f2078e2644f1a1 +geom 147: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.176658 motion [] pieces all=12:ef376b6547f56451 camera=12:ef376b6547f56451 shadow=12:ef376b6547f56451 indirect=12:ef376b6547f56451 +geom 148: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8924503 motion [] pieces all=12:d69111261d18e075 camera=12:d69111261d18e075 shadow=12:d69111261d18e075 indirect=12:d69111261d18e075 +geom 149: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0700728 motion [] pieces all=12:a372d530867216db camera=12:a372d530867216db shadow=12:a372d530867216db indirect=12:a372d530867216db +geom 150: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94251525 motion [] pieces all=12:23c82ca49f580f37 camera=12:23c82ca49f580f37 shadow=12:23c82ca49f580f37 indirect=12:23c82ca49f580f37 +geom 151: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1053956 motion [] pieces all=12:ac586560f8843193 camera=12:ac586560f8843193 shadow=12:ac586560f8843193 indirect=12:ac586560f8843193 +geom 152: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91936475 motion [] pieces all=12:e2d8a8d394d9df85 camera=12:e2d8a8d394d9df85 shadow=12:e2d8a8d394d9df85 indirect=12:e2d8a8d394d9df85 +geom 153: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1310308 motion [] pieces all=12:b79a739e79cb47b9 camera=12:b79a739e79cb47b9 shadow=12:b79a739e79cb47b9 indirect=12:b79a739e79cb47b9 +geom 154: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.86296463 motion [] pieces all=12:d481e1f55ad71974 camera=12:d481e1f55ad71974 shadow=12:d481e1f55ad71974 indirect=12:d481e1f55ad71974 +geom 155: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0762703 motion [] pieces all=12:1b01bb54076296f7 camera=12:1b01bb54076296f7 shadow=12:1b01bb54076296f7 indirect=12:1b01bb54076296f7 +geom 156: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97348756 motion [] pieces all=12:32857058fb9827d3 camera=12:32857058fb9827d3 shadow=12:32857058fb9827d3 indirect=12:32857058fb9827d3 +geom 157: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.165612 motion [] pieces all=12:62f5ee9eeddede05 camera=12:62f5ee9eeddede05 shadow=12:62f5ee9eeddede05 indirect=12:62f5ee9eeddede05 +geom 158: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8385694 motion [] pieces all=12:77dee010df9fc7cd camera=12:77dee010df9fc7cd shadow=12:77dee010df9fc7cd indirect=12:77dee010df9fc7cd +geom 159: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0450324 motion [] pieces all=12:2ee41b672786304d camera=12:2ee41b672786304d shadow=12:2ee41b672786304d indirect=12:2ee41b672786304d +geom 160: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8176951 motion [] pieces all=12:0561772a4ff65c87 camera=12:0561772a4ff65c87 shadow=12:0561772a4ff65c87 indirect=12:0561772a4ff65c87 +geom 161: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0138291 motion [] pieces all=12:ef5821d89ce4565d camera=12:ef5821d89ce4565d shadow=12:ef5821d89ce4565d indirect=12:ef5821d89ce4565d +geom 162: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9841667 motion [] pieces all=12:5a634ac0a8ae7de6 camera=12:5a634ac0a8ae7de6 shadow=12:5a634ac0a8ae7de6 indirect=12:5a634ac0a8ae7de6 +geom 163: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1964471 motion [] pieces all=12:66ba0a744c1efc12 camera=12:66ba0a744c1efc12 shadow=12:66ba0a744c1efc12 indirect=12:66ba0a744c1efc12 +geom 164: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1159168 motion [] pieces all=12:e4bd4203afe37c4a camera=12:e4bd4203afe37c4a shadow=12:e4bd4203afe37c4a indirect=12:e4bd4203afe37c4a +geom 165: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93555236 motion [] pieces all=12:0a1358778e16df6b camera=12:0a1358778e16df6b shadow=12:0a1358778e16df6b indirect=12:0a1358778e16df6b +geom 166: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87922573 motion [] pieces all=12:773b51f23711364c camera=12:773b51f23711364c shadow=12:773b51f23711364c indirect=12:773b51f23711364c +geom 167: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0527939 motion [] pieces all=12:8b6cff22991bf619 camera=12:8b6cff22991bf619 shadow=12:8b6cff22991bf619 indirect=12:8b6cff22991bf619 +geom 168: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95460325 motion [] pieces all=12:32178c7813f8f425 camera=12:32178c7813f8f425 shadow=12:32178c7813f8f425 indirect=12:32178c7813f8f425 +geom 169: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1514285 motion [] pieces all=12:e3af80ec95de8f01 camera=12:e3af80ec95de8f01 shadow=12:e3af80ec95de8f01 indirect=12:e3af80ec95de8f01 +geom 170: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8263571 motion [] pieces all=12:dd3cc15eabe3c6be camera=12:dd3cc15eabe3c6be shadow=12:dd3cc15eabe3c6be indirect=12:dd3cc15eabe3c6be +geom 171: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0257798 motion [] pieces all=12:146ff2ab5a4f5eaf camera=12:146ff2ab5a4f5eaf shadow=12:146ff2ab5a4f5eaf indirect=12:146ff2ab5a4f5eaf +geom 172: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9050795 motion [] pieces all=12:512a6aff489f2358 camera=12:512a6aff489f2358 shadow=12:512a6aff489f2358 indirect=12:512a6aff489f2358 +geom 173: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1431277 motion [] pieces all=12:ebc37111e1ab423c camera=12:ebc37111e1ab423c shadow=12:ebc37111e1ab423c indirect=12:ebc37111e1ab423c +geom 174: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85037327 motion [] pieces all=12:0826f55a2356c316 camera=12:0826f55a2356c316 shadow=12:0826f55a2356c316 indirect=12:0826f55a2356c316 +geom 175: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0886608 motion [] pieces all=12:9b60aa7e84611f49 camera=12:9b60aa7e84611f49 shadow=12:9b60aa7e84611f49 indirect=12:9b60aa7e84611f49 +geom 176: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1813707 motion [] pieces all=12:f3ef9040c0fcdf3d camera=12:f3ef9040c0fcdf3d shadow=12:f3ef9040c0fcdf3d indirect=12:f3ef9040c0fcdf3d +geom 177: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9999963 motion [] pieces all=12:09a200c9652982c8 camera=12:09a200c9652982c8 shadow=12:09a200c9652982c8 indirect=12:09a200c9652982c8 +geom 178: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0124525 motion [] pieces all=12:a136c56e0b71be4a camera=12:a136c56e0b71be4a shadow=12:a136c56e0b71be4a indirect=12:a136c56e0b71be4a +geom 179: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8002113 motion [] pieces all=12:4690649814f00d31 camera=12:4690649814f00d31 shadow=12:4690649814f00d31 indirect=12:4690649814f00d31 +geom 180: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1088318 motion [] pieces all=12:c04e8ca47eb1ec4f camera=12:c04e8ca47eb1ec4f shadow=12:c04e8ca47eb1ec4f indirect=12:c04e8ca47eb1ec4f +geom 181: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9462071 motion [] pieces all=12:d96b2fd766ab6a10 camera=12:d96b2fd766ab6a10 shadow=12:d96b2fd766ab6a10 indirect=12:d96b2fd766ab6a10 +geom 182: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0659335 motion [] pieces all=12:aa8098ee0435eb55 camera=12:aa8098ee0435eb55 shadow=12:aa8098ee0435eb55 indirect=12:aa8098ee0435eb55 +geom 183: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8956352 motion [] pieces all=12:cf957c7a1e34da27 camera=12:cf957c7a1e34da27 shadow=12:cf957c7a1e34da27 indirect=12:cf957c7a1e34da27 +geom 184: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9687358 motion [] pieces all=12:be3d559b466049a9 camera=12:be3d559b466049a9 shadow=12:be3d559b466049a9 indirect=12:be3d559b466049a9 +geom 185: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1695193 motion [] pieces all=12:80bb8fee09ae42ac camera=12:80bb8fee09ae42ac shadow=12:80bb8fee09ae42ac indirect=12:80bb8fee09ae42ac +geom 186: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8472522 motion [] pieces all=12:d40d42fa1fdb91da camera=12:d40d42fa1fdb91da shadow=12:d40d42fa1fdb91da indirect=12:d40d42fa1fdb91da +geom 187: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0403028 motion [] pieces all=12:da43b2a624d630d9 camera=12:da43b2a624d630d9 shadow=12:da43b2a624d630d9 indirect=12:da43b2a624d630d9 +geom 188: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8716476 motion [] pieces all=12:7b1657c897e92643 camera=12:7b1657c897e92643 shadow=12:7b1657c897e92643 indirect=12:7b1657c897e92643 +geom 189: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0834341 motion [] pieces all=12:75fc41de1dd1f06b camera=12:75fc41de1dd1f06b shadow=12:75fc41de1dd1f06b indirect=12:75fc41de1dd1f06b +geom 190: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1361494 motion [] pieces all=12:46b37caa81ee6fae camera=12:46b37caa81ee6fae shadow=12:46b37caa81ee6fae indirect=12:46b37caa81ee6fae +geom 191: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9187317 motion [] pieces all=12:23778b55875d60e9 camera=12:23778b55875d60e9 shadow=12:23778b55875d60e9 indirect=12:23778b55875d60e9 +geom 192: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9700638 motion [] pieces all=12:1c61c851a1784a7d camera=12:1c61c851a1784a7d shadow=12:1c61c851a1784a7d indirect=12:1c61c851a1784a7d +geom 193: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1669755 motion [] pieces all=12:74a3c7fb112d835a camera=12:74a3c7fb112d835a shadow=12:74a3c7fb112d835a indirect=12:74a3c7fb112d835a +geom 194: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.840909 motion [] pieces all=12:8817791ca08859c3 camera=12:8817791ca08859c3 shadow=12:8817791ca08859c3 indirect=12:8817791ca08859c3 +geom 195: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0478053 motion [] pieces all=12:14925a47374bfb28 camera=12:14925a47374bfb28 shadow=12:14925a47374bfb28 indirect=12:14925a47374bfb28 +geom 196: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8679575 motion [] pieces all=12:74a6d16ae159b9f1 camera=12:74a6d16ae159b9f1 shadow=12:74a6d16ae159b9f1 indirect=12:74a6d16ae159b9f1 +geom 197: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0806409 motion [] pieces all=12:3d7f59062f33263c camera=12:3d7f59062f33263c shadow=12:3d7f59062f33263c indirect=12:3d7f59062f33263c +geom 198: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1279316 motion [] pieces all=12:57e16f8043e40405 camera=12:57e16f8043e40405 shadow=12:57e16f8043e40405 indirect=12:57e16f8043e40405 +geom 199: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9248103 motion [] pieces all=12:74fce40b1f8c1868 camera=12:74fce40b1f8c1868 shadow=12:74fce40b1f8c1868 indirect=12:74fce40b1f8c1868 +geom 200: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0050641 motion [] pieces all=12:6628497d8751e005 camera=12:6628497d8751e005 shadow=12:6628497d8751e005 indirect=12:6628497d8751e005 +geom 201: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80812913 motion [] pieces all=12:c00b6f37ed002e7e camera=12:c00b6f37ed002e7e shadow=12:c00b6f37ed002e7e indirect=12:c00b6f37ed002e7e +geom 202: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99041194 motion [] pieces all=12:f6eb9c32d67acbf5 camera=12:f6eb9c32d67acbf5 shadow=12:f6eb9c32d67acbf5 indirect=12:f6eb9c32d67acbf5 +geom 203: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1808091 motion [] pieces all=12:b5312a5cf19c08b1 camera=12:b5312a5cf19c08b1 shadow=12:b5312a5cf19c08b1 indirect=12:b5312a5cf19c08b1 +geom 204: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0731032 motion [] pieces all=12:1e958bfa6c666c5f camera=12:1e958bfa6c666c5f shadow=12:1e958bfa6c666c5f indirect=12:1e958bfa6c666c5f +geom 205: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8903327 motion [] pieces all=12:495ccdc5bf5628ad camera=12:495ccdc5bf5628ad shadow=12:495ccdc5bf5628ad indirect=12:495ccdc5bf5628ad +geom 206: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9400662 motion [] pieces all=12:53afcc82d9ab1338 camera=12:53afcc82d9ab1338 shadow=12:53afcc82d9ab1338 indirect=12:53afcc82d9ab1338 +geom 207: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1023835 motion [] pieces all=12:50065c508a717272 camera=12:50065c508a717272 shadow=12:50065c508a717272 indirect=12:50065c508a717272 +geom 208: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85646105 motion [] pieces all=12:9da520d2bd8ed3ec camera=12:9da520d2bd8ed3ec shadow=12:9da520d2bd8ed3ec indirect=12:9da520d2bd8ed3ec +geom 209: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0950128 motion [] pieces all=12:e81f368da828810b camera=12:e81f368da828810b shadow=12:e81f368da828810b indirect=12:e81f368da828810b +geom 210: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1498275 motion [] pieces all=12:0980250d91952b42 camera=12:0980250d91952b42 shadow=12:0980250d91952b42 indirect=12:0980250d91952b42 +geom 211: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9121352 motion [] pieces all=12:a8bf6cb97372cf62 camera=12:a8bf6cb97372cf62 shadow=12:a8bf6cb97372cf62 indirect=12:a8bf6cb97372cf62 +geom 212: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.03622 motion [] pieces all=12:af776500cab76d5b camera=12:af776500cab76d5b shadow=12:af776500cab76d5b indirect=12:af776500cab76d5b +geom 213: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.835448 motion [] pieces all=12:f1638667ca8e8ec4 camera=12:f1638667ca8e8ec4 shadow=12:f1638667ca8e8ec4 indirect=12:f1638667ca8e8ec4 +geom 214: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9593388 motion [] pieces all=12:7676d07144c43de7 camera=12:7676d07144c43de7 shadow=12:7676d07144c43de7 indirect=12:7676d07144c43de7 +geom 215: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1577525 motion [] pieces all=12:8b8e52c721dfce29 camera=12:8b8e52c721dfce29 shadow=12:8b8e52c721dfce29 indirect=12:8b8e52c721dfce29 +geom 216: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9304924 motion [] pieces all=12:ee70521e7d2c349a camera=12:ee70521e7d2c349a shadow=12:ee70521e7d2c349a indirect=12:ee70521e7d2c349a +geom 217: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1205963 motion [] pieces all=12:51b94b591533ff92 camera=12:51b94b591533ff92 shadow=12:51b94b591533ff92 indirect=12:51b94b591533ff92 +geom 218: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8828603 motion [] pieces all=12:b628384cf4be0e6e camera=12:b628384cf4be0e6e shadow=12:b628384cf4be0e6e indirect=12:b628384cf4be0e6e +geom 219: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0570121 motion [] pieces all=12:70824faf512e9e8e camera=12:70824faf512e9e8e shadow=12:70824faf512e9e8e indirect=12:70824faf512e9e8e +geom 220: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0248929 motion [] pieces all=12:0583b46b924696d1 camera=12:0583b46b924696d1 shadow=12:0583b46b924696d1 indirect=12:0583b46b924696d1 +geom 221: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82364476 motion [] pieces all=12:b9b76c3ebc95a3a2 camera=12:b9b76c3ebc95a3a2 shadow=12:b9b76c3ebc95a3a2 indirect=12:b9b76c3ebc95a3a2 +geom 222: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97815925 motion [] pieces all=12:5a27bbd65a15a9a2 camera=12:5a27bbd65a15a9a2 shadow=12:5a27bbd65a15a9a2 indirect=12:5a27bbd65a15a9a2 +geom 223: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1915545 motion [] pieces all=12:d0f739f7232ac014 camera=12:d0f739f7232ac014 shadow=12:d0f739f7232ac014 indirect=12:d0f739f7232ac014 +geom 224: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0647312 motion [] pieces all=12:b4a69b8b779b3e3b camera=12:b4a69b8b779b3e3b shadow=12:b4a69b8b779b3e3b indirect=12:b4a69b8b779b3e3b +geom 225: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8980392 motion [] pieces all=12:d16b8205265ae78c camera=12:d16b8205265ae78c shadow=12:d16b8205265ae78c indirect=12:d16b8205265ae78c +geom 226: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472939 motion [] pieces all=12:14f705f5e7de03d9 camera=12:14f705f5e7de03d9 shadow=12:14f705f5e7de03d9 indirect=12:14f705f5e7de03d9 +geom 227: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1099051 motion [] pieces all=12:1799f290d03300bd camera=12:1799f290d03300bd shadow=12:1799f290d03300bd indirect=12:1799f290d03300bd +geom 228: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0079887 motion [] pieces all=12:25b3b5ea71308ca9 camera=12:25b3b5ea71308ca9 shadow=12:25b3b5ea71308ca9 indirect=12:25b3b5ea71308ca9 +geom 229: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80509245 motion [] pieces all=12:34af0fe66b45a4dd camera=12:34af0fe66b45a4dd shadow=12:34af0fe66b45a4dd indirect=12:34af0fe66b45a4dd +geom 230: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99543554 motion [] pieces all=12:65081b63c09ed1e2 camera=12:65081b63c09ed1e2 shadow=12:65081b63c09ed1e2 indirect=12:65081b63c09ed1e2 +geom 231: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1849796 motion [] pieces all=12:4c95128dd298f347 camera=12:4c95128dd298f347 shadow=12:4c95128dd298f347 indirect=12:4c95128dd298f347 +geom 232: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0425175 motion [] pieces all=12:d8689c42feaa55c0 camera=12:d8689c42feaa55c0 shadow=12:d8689c42feaa55c0 indirect=12:d8689c42feaa55c0 +geom 233: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8462697 motion [] pieces all=12:5819bb99cb71939b camera=12:5819bb99cb71939b shadow=12:5819bb99cb71939b indirect=12:5819bb99cb71939b +geom 234: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9625314 motion [] pieces all=12:22e52b3a51254194 camera=12:22e52b3a51254194 shadow=12:22e52b3a51254194 indirect=12:22e52b3a51254194 +geom 235: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1735876 motion [] pieces all=12:946568eb332a1dc0 camera=12:946568eb332a1dc0 shadow=12:946568eb332a1dc0 indirect=12:946568eb332a1dc0 +geom 236: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87271863 motion [] pieces all=12:01ebcbb670f1693c camera=12:01ebcbb670f1693c shadow=12:01ebcbb670f1693c indirect=12:01ebcbb670f1693c +geom 237: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0844595 motion [] pieces all=12:1bd65d19d2101668 camera=12:1bd65d19d2101668 shadow=12:1bd65d19d2101668 indirect=12:1bd65d19d2101668 +geom 238: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.132906 motion [] pieces all=12:7a1eeda135c15f81 camera=12:7a1eeda135c15f81 shadow=12:7a1eeda135c15f81 indirect=12:7a1eeda135c15f81 +geom 239: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91505915 motion [] pieces all=12:22938515c35b5865 camera=12:22938515c35b5865 shadow=12:22938515c35b5865 indirect=12:22938515c35b5865 +geom 240: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9004315 motion [] pieces all=12:ba2876def87d22bc camera=12:ba2876def87d22bc shadow=12:ba2876def87d22bc indirect=12:ba2876def87d22bc +geom 241: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1393667 motion [] pieces all=12:3283b427be1693e3 camera=12:3283b427be1693e3 shadow=12:3283b427be1693e3 indirect=12:3283b427be1693e3 +geom 242: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8539201 motion [] pieces all=12:5acf1dd4de1686eb camera=12:5acf1dd4de1686eb shadow=12:5acf1dd4de1686eb indirect=12:5acf1dd4de1686eb +geom 243: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0937418 motion [] pieces all=12:b235a5a47599d508 camera=12:b235a5a47599d508 shadow=12:b235a5a47599d508 indirect=12:b235a5a47599d508 +geom 244: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.029022 motion [] pieces all=12:bcadcd74a8ed38bd camera=12:bcadcd74a8ed38bd shadow=12:bcadcd74a8ed38bd indirect=12:bcadcd74a8ed38bd +geom 245: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8305959 motion [] pieces all=12:bde378c89915d975 camera=12:bde378c89915d975 shadow=12:bde378c89915d975 indirect=12:bde378c89915d975 +geom 246: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95166606 motion [] pieces all=12:abb23bbe6e2e9798 camera=12:abb23bbe6e2e9798 shadow=12:abb23bbe6e2e9798 indirect=12:abb23bbe6e2e9798 +geom 247: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1561596 motion [] pieces all=12:bbac5e2ab38a0a4c camera=12:bbac5e2ab38a0a4c shadow=12:bbac5e2ab38a0a4c indirect=12:bbac5e2ab38a0a4c +geom 248: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0550859 motion [] pieces all=12:2d13e253c8aea5b0 camera=12:2d13e253c8aea5b0 shadow=12:2d13e253c8aea5b0 indirect=12:2d13e253c8aea5b0 +geom 249: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87541723 motion [] pieces all=12:9ca37e11899435ba camera=12:9ca37e11899435ba shadow=12:9ca37e11899435ba indirect=12:9ca37e11899435ba +geom 250: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93261766 motion [] pieces all=12:f43c358c78c458a3 camera=12:f43c358c78c458a3 shadow=12:f43c358c78c458a3 indirect=12:f43c358c78c458a3 +geom 251: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1147367 motion [] pieces all=12:8b534baed1c55c1c camera=12:8b534baed1c55c1c shadow=12:8b534baed1c55c1c indirect=12:8b534baed1c55c1c +geom 252: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8144639 motion [] pieces all=12:94166627f8bf425b camera=12:94166627f8bf425b shadow=12:94166627f8bf425b indirect=12:94166627f8bf425b +geom 253: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.017535 motion [] pieces all=12:5d4ba2fffcb76aeb camera=12:5d4ba2fffcb76aeb shadow=12:5d4ba2fffcb76aeb indirect=12:5d4ba2fffcb76aeb +geom 254: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1993625 motion [] pieces all=12:0e6938f487ad2ab1 camera=12:0e6938f487ad2ab1 shadow=12:0e6938f487ad2ab1 indirect=12:0e6938f487ad2ab1 +geom 255: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9869976 motion [] pieces all=12:b07fe9a4abb45d39 camera=12:b07fe9a4abb45d39 shadow=12:b07fe9a4abb45d39 indirect=12:b07fe9a4abb45d39 +geom 256: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8976138 motion [] pieces all=12:8d7e162511de2890 camera=12:8d7e162511de2890 shadow=12:8d7e162511de2890 indirect=12:8d7e162511de2890 +geom 257: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0649716 motion [] pieces all=12:aff6dcf4cedfae74 camera=12:aff6dcf4cedfae74 shadow=12:aff6dcf4cedfae74 indirect=12:aff6dcf4cedfae74 +geom 258: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1104784 motion [] pieces all=12:29b8bf5962bc8cc1 camera=12:29b8bf5962bc8cc1 shadow=12:29b8bf5962bc8cc1 indirect=12:29b8bf5962bc8cc1 +geom 259: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9479979 motion [] pieces all=12:8b0d548408d83be3 camera=12:8b0d548408d83be3 shadow=12:8b0d548408d83be3 indirect=12:8b0d548408d83be3 +geom 260: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1856079 motion [] pieces all=12:e00a2daeb0dc5773 camera=12:e00a2daeb0dc5773 shadow=12:e00a2daeb0dc5773 indirect=12:e00a2daeb0dc5773 +geom 261: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9966615 motion [] pieces all=12:eacbebde0ac4be34 camera=12:eacbebde0ac4be34 shadow=12:eacbebde0ac4be34 indirect=12:eacbebde0ac4be34 +geom 262: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.008784 motion [] pieces all=12:061506dcebb713da camera=12:061506dcebb713da shadow=12:061506dcebb713da indirect=12:061506dcebb713da +geom 263: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80612284 motion [] pieces all=12:b281d198ccf4899a camera=12:b281d198ccf4899a shadow=12:b281d198ccf4899a indirect=12:b281d198ccf4899a +geom 264: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8459979 motion [] pieces all=12:61b97b1525ca63ab camera=12:61b97b1525ca63ab shadow=12:61b97b1525ca63ab indirect=12:61b97b1525ca63ab +geom 265: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.043507 motion [] pieces all=12:f4f3d9db5351f0da camera=12:f4f3d9db5351f0da shadow=12:f4f3d9db5351f0da indirect=12:f4f3d9db5351f0da +geom 266: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96340424 motion [] pieces all=12:42354c2692a3f25a camera=12:42354c2692a3f25a shadow=12:42354c2692a3f25a indirect=12:42354c2692a3f25a +geom 267: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1748652 motion [] pieces all=12:47beb55b66249ab7 camera=12:47beb55b66249ab7 shadow=12:47beb55b66249ab7 indirect=12:47beb55b66249ab7 +geom 268: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1341846 motion [] pieces all=12:2acf3ad9500780d2 camera=12:2acf3ad9500780d2 shadow=12:2acf3ad9500780d2 indirect=12:2acf3ad9500780d2 +geom 269: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91431093 motion [] pieces all=12:47f723f295039741 camera=12:47f723f295039741 shadow=12:47f723f295039741 indirect=12:47f723f295039741 +geom 270: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87261844 motion [] pieces all=12:92404b2831c2fc0a camera=12:92404b2831c2fc0a shadow=12:92404b2831c2fc0a indirect=12:92404b2831c2fc0a +geom 271: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0856017 motion [] pieces all=12:1daa9c0a0e7613ef camera=12:1daa9c0a0e7613ef shadow=12:1daa9c0a0e7613ef indirect=12:1daa9c0a0e7613ef +geom 272: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0181116 motion [] pieces all=12:8d91bb4653d15e00 camera=12:8d91bb4653d15e00 shadow=12:8d91bb4653d15e00 indirect=12:8d91bb4653d15e00 +geom 273: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8153746 motion [] pieces all=12:2d8e3081a9282759 camera=12:2d8e3081a9282759 shadow=12:2d8e3081a9282759 indirect=12:2d8e3081a9282759 +geom 274: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1990607 motion [] pieces all=12:586da59f6e332d13 camera=12:586da59f6e332d13 shadow=12:586da59f6e332d13 indirect=12:586da59f6e332d13 +geom 275: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98597044 motion [] pieces all=12:e50a26a68d500849 camera=12:e50a26a68d500849 shadow=12:e50a26a68d500849 indirect=12:e50a26a68d500849 +geom 276: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1152201 motion [] pieces all=12:70cd607fb281155b camera=12:70cd607fb281155b shadow=12:70cd607fb281155b indirect=12:70cd607fb281155b +geom 277: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.931668 motion [] pieces all=12:da8e8e74af73e4ea camera=12:da8e8e74af73e4ea shadow=12:da8e8e74af73e4ea indirect=12:da8e8e74af73e4ea +geom 278: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8761894 motion [] pieces all=12:fd72275ea873dee4 camera=12:fd72275ea873dee4 shadow=12:fd72275ea873dee4 indirect=12:fd72275ea873dee4 +geom 279: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0557864 motion [] pieces all=12:470f490986e17a77 camera=12:470f490986e17a77 shadow=12:470f490986e17a77 indirect=12:470f490986e17a77 +geom 280: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1405109 motion [] pieces all=12:59370e12d5755731 camera=12:59370e12d5755731 shadow=12:59370e12d5755731 indirect=12:59370e12d5755731 +geom 281: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9010066 motion [] pieces all=12:380fa8551ffb6866 camera=12:380fa8551ffb6866 shadow=12:380fa8551ffb6866 indirect=12:380fa8551ffb6866 +geom 282: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.853276 motion [] pieces all=12:8d7e3a01aab80447 camera=12:8d7e3a01aab80447 shadow=12:8d7e3a01aab80447 indirect=12:8d7e3a01aab80447 +geom 283: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.092354 motion [] pieces all=12:da8a90c914f57101 camera=12:da8a90c914f57101 shadow=12:da8a90c914f57101 indirect=12:da8a90c914f57101 +geom 284: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0288466 motion [] pieces all=12:15047e4ee0e66ea5 camera=12:15047e4ee0e66ea5 shadow=12:15047e4ee0e66ea5 indirect=12:15047e4ee0e66ea5 +geom 285: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8301908 motion [] pieces all=12:075e03cedf539099 camera=12:075e03cedf539099 shadow=12:075e03cedf539099 indirect=12:075e03cedf539099 +geom 286: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1549389 motion [] pieces all=12:875b52edc089022c camera=12:875b52edc089022c shadow=12:875b52edc089022c indirect=12:875b52edc089022c +geom 287: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9525899 motion [] pieces all=12:a3648fda194f3d6a camera=12:a3648fda194f3d6a shadow=12:a3648fda194f3d6a indirect=12:a3648fda194f3d6a +geom 288: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1800979 motion [] pieces all=12:7bd395b95c017f90 camera=12:7bd395b95c017f90 shadow=12:7bd395b95c017f90 indirect=12:7bd395b95c017f90 +geom 289: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98930484 motion [] pieces all=12:5c234fdba64c55fb camera=12:5c234fdba64c55fb shadow=12:5c234fdba64c55fb indirect=12:5c234fdba64c55fb +geom 290: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0058508 motion [] pieces all=12:99b5f525f17a5d2b camera=12:99b5f525f17a5d2b shadow=12:99b5f525f17a5d2b indirect=12:99b5f525f17a5d2b +geom 291: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80934966 motion [] pieces all=12:b18528583f50f544 camera=12:b18528583f50f544 shadow=12:b18528583f50f544 indirect=12:b18528583f50f544 +geom 292: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0723542 motion [] pieces all=12:e545cda533fc6168 camera=12:e545cda533fc6168 shadow=12:e545cda533fc6168 indirect=12:e545cda533fc6168 +geom 293: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88943315 motion [] pieces all=12:d4436675f00e255d camera=12:d4436675f00e255d shadow=12:d4436675f00e255d indirect=12:d4436675f00e255d +geom 294: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9393691 motion [] pieces all=12:7a70e5e9788bac59 camera=12:7a70e5e9788bac59 shadow=12:7a70e5e9788bac59 indirect=12:7a70e5e9788bac59 +geom 295: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1018847 motion [] pieces all=12:72aecd176dd294b2 camera=12:72aecd176dd294b2 shadow=12:72aecd176dd294b2 indirect=12:72aecd176dd294b2 +geom 296: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1271077 motion [] pieces all=12:a5bae6b41234ceee camera=12:a5bae6b41234ceee shadow=12:a5bae6b41234ceee indirect=12:a5bae6b41234ceee +geom 297: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92361706 motion [] pieces all=12:eaa6fa1c6d9a45df camera=12:eaa6fa1c6d9a45df shadow=12:eaa6fa1c6d9a45df indirect=12:eaa6fa1c6d9a45df +geom 298: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.86828524 motion [] pieces all=12:fb6d3e396f9edccc camera=12:fb6d3e396f9edccc shadow=12:fb6d3e396f9edccc indirect=12:fb6d3e396f9edccc +geom 299: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.080165 motion [] pieces all=12:3981167a9afaed31 camera=12:3981167a9afaed31 shadow=12:3981167a9afaed31 indirect=12:3981167a9afaed31 +geom 300: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8420056 motion [] pieces all=12:f01879aa38dfaa62 camera=12:f01879aa38dfaa62 shadow=12:f01879aa38dfaa62 indirect=12:f01879aa38dfaa62 +geom 301: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0469481 motion [] pieces all=12:f0ef2865a21ba558 camera=12:f0ef2865a21ba558 shadow=12:f0ef2865a21ba558 indirect=12:f0ef2865a21ba558 +geom 302: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96943074 motion [] pieces all=12:cdcb8ace33a6aec9 camera=12:cdcb8ace33a6aec9 shadow=12:cdcb8ace33a6aec9 indirect=12:cdcb8ace33a6aec9 +geom 303: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1660948 motion [] pieces all=12:48599737ac3bc04f camera=12:48599737ac3bc04f shadow=12:48599737ac3bc04f indirect=12:48599737ac3bc04f +geom 304: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.09405 motion [] pieces all=12:26310d6b07b25e91 camera=12:26310d6b07b25e91 shadow=12:26310d6b07b25e91 indirect=12:26310d6b07b25e91 +geom 305: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8571627 motion [] pieces all=12:e42e7e45328ee2de camera=12:e42e7e45328ee2de shadow=12:e42e7e45328ee2de indirect=12:e42e7e45328ee2de +geom 306: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1489058 motion [] pieces all=12:fce556df8ae069f5 camera=12:fce556df8ae069f5 shadow=12:fce556df8ae069f5 indirect=12:fce556df8ae069f5 +geom 307: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9115789 motion [] pieces all=12:d99ab6395d650bb8 camera=12:d99ab6395d650bb8 shadow=12:d99ab6395d650bb8 indirect=12:d99ab6395d650bb8 +geom 308: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8348978 motion [] pieces all=12:52b13c1bab4c2059 camera=12:52b13c1bab4c2059 shadow=12:52b13c1bab4c2059 indirect=12:52b13c1bab4c2059 +geom 309: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.037063 motion [] pieces all=12:5a5e9e6f46c77b6b camera=12:5a5e9e6f46c77b6b shadow=12:5a5e9e6f46c77b6b indirect=12:5a5e9e6f46c77b6b +geom 310: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9582307 motion [] pieces all=12:d04f788325f07478 camera=12:d04f788325f07478 shadow=12:d04f788325f07478 indirect=12:d04f788325f07478 +geom 311: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.15666 motion [] pieces all=12:0e7c5cda0c214d4b camera=12:0e7c5cda0c214d4b shadow=12:0e7c5cda0c214d4b indirect=12:0e7c5cda0c214d4b +geom 312: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8840452 motion [] pieces all=12:c7520d614b00725e camera=12:c7520d614b00725e shadow=12:c7520d614b00725e indirect=12:c7520d614b00725e +geom 313: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0573065 motion [] pieces all=12:140be7eb767d1260 camera=12:140be7eb767d1260 shadow=12:140be7eb767d1260 indirect=12:140be7eb767d1260 +geom 314: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92969555 motion [] pieces all=12:2c1de0d51c514069 camera=12:2c1de0d51c514069 shadow=12:2c1de0d51c514069 indirect=12:2c1de0d51c514069 +geom 315: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.121772 motion [] pieces all=12:a3fdb3fcfeaa7d87 camera=12:a3fdb3fcfeaa7d87 shadow=12:a3fdb3fcfeaa7d87 indirect=12:a3fdb3fcfeaa7d87 +geom 316: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.190945 motion [] pieces all=12:a914d1c7729db355 camera=12:a914d1c7729db355 shadow=12:a914d1c7729db355 indirect=12:a914d1c7729db355 +geom 317: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97935754 motion [] pieces all=12:16e3b207fb1b22a0 camera=12:16e3b207fb1b22a0 shadow=12:16e3b207fb1b22a0 indirect=12:16e3b207fb1b22a0 +geom 318: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8246523 motion [] pieces all=12:01e6c02b8f972135 camera=12:01e6c02b8f972135 shadow=12:01e6c02b8f972135 indirect=12:01e6c02b8f972135 +geom 319: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0239916 motion [] pieces all=12:d43b6491478a1f7d camera=12:d43b6491478a1f7d shadow=12:d43b6491478a1f7d indirect=12:d43b6491478a1f7d +geom 320: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1884352 motion [] pieces all=12:347af11d36714627 camera=12:347af11d36714627 shadow=12:347af11d36714627 indirect=12:347af11d36714627 +geom 321: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97503936 motion [] pieces all=12:2b7fc13e663f28bf camera=12:2b7fc13e663f28bf shadow=12:2b7fc13e663f28bf indirect=12:2b7fc13e663f28bf +geom 322: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.819561 motion [] pieces all=12:5dad7bdd1aef5d3d camera=12:5dad7bdd1aef5d3d shadow=12:5dad7bdd1aef5d3d indirect=12:5dad7bdd1aef5d3d +geom 323: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0195632 motion [] pieces all=12:862f4285de9e660e camera=12:862f4285de9e660e shadow=12:862f4285de9e660e indirect=12:862f4285de9e660e +geom 324: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88676405 motion [] pieces all=12:201d12df974ecda3 camera=12:201d12df974ecda3 shadow=12:201d12df974ecda3 indirect=12:201d12df974ecda3 +geom 325: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0623915 motion [] pieces all=12:9bd996455e58d035 camera=12:9bd996455e58d035 shadow=12:9bd996455e58d035 indirect=12:9bd996455e58d035 +geom 326: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9264089 motion [] pieces all=12:05d5a32d6d81735d camera=12:05d5a32d6d81735d shadow=12:05d5a32d6d81735d indirect=12:05d5a32d6d81735d +geom 327: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1226625 motion [] pieces all=12:5fce68e7a928f907 camera=12:5fce68e7a928f907 shadow=12:5fce68e7a928f907 indirect=12:5fce68e7a928f907 +geom 328: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0983305 motion [] pieces all=12:137d158da7ca1689 camera=12:137d158da7ca1689 shadow=12:137d158da7ca1689 indirect=12:137d158da7ca1689 +geom 329: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8614528 motion [] pieces all=12:57188e87e047eeda camera=12:57188e87e047eeda shadow=12:57188e87e047eeda indirect=12:57188e87e047eeda +geom 330: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1451486 motion [] pieces all=12:cea12d47b7505bd8 camera=12:cea12d47b7505bd8 shadow=12:cea12d47b7505bd8 indirect=12:cea12d47b7505bd8 +geom 331: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90823436 motion [] pieces all=12:b021cc8434c6c39a camera=12:b021cc8434c6c39a shadow=12:b021cc8434c6c39a indirect=12:b021cc8434c6c39a +geom 332: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96017826 motion [] pieces all=12:8318f31089c9a3b7 camera=12:8318f31089c9a3b7 shadow=12:8318f31089c9a3b7 indirect=12:8318f31089c9a3b7 +geom 333: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1594942 motion [] pieces all=12:3ac194d9dfcc097d camera=12:3ac194d9dfcc097d shadow=12:3ac194d9dfcc097d indirect=12:3ac194d9dfcc097d +geom 334: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0338683 motion [] pieces all=12:cdf714527f413393 camera=12:cdf714527f413393 shadow=12:cdf714527f413393 indirect=12:cdf714527f413393 +geom 335: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83283126 motion [] pieces all=12:d50dd33cec4a4c97 camera=12:d50dd33cec4a4c97 shadow=12:d50dd33cec4a4c97 indirect=12:d50dd33cec4a4c97 +geom 336: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1062118 motion [] pieces all=12:7496923f4df8b213 camera=12:7496923f4df8b213 shadow=12:7496923f4df8b213 indirect=12:7496923f4df8b213 +geom 337: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9429861 motion [] pieces all=12:0cba57c504d1d0be camera=12:0cba57c504d1d0be shadow=12:0cba57c504d1d0be indirect=12:0cba57c504d1d0be +geom 338: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8931688 motion [] pieces all=12:54aca261c8533f7c camera=12:54aca261c8533f7c shadow=12:54aca261c8533f7c indirect=12:54aca261c8533f7c +geom 339: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.069382 motion [] pieces all=12:295582b101b1f8fd camera=12:295582b101b1f8fd shadow=12:295582b101b1f8fd indirect=12:295582b101b1f8fd +geom 340: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0006948 motion [] pieces all=12:b1668b48ade6af2d camera=12:b1668b48ade6af2d shadow=12:b1668b48ade6af2d indirect=12:b1668b48ade6af2d +geom 341: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8111682 motion [] pieces all=12:90793edc6cc1babe camera=12:90793edc6cc1babe shadow=12:90793edc6cc1babe indirect=12:90793edc6cc1babe +geom 342: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1774259 motion [] pieces all=12:550a3cd2c5f05144 camera=12:550a3cd2c5f05144 shadow=12:550a3cd2c5f05144 indirect=12:550a3cd2c5f05144 +geom 343: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9936028 motion [] pieces all=12:b623e674b77e1c62 camera=12:b623e674b77e1c62 shadow=12:b623e674b77e1c62 indirect=12:b623e674b77e1c62 +geom 344: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.164632 motion [] pieces all=12:808ea8825c4e58a1 camera=12:808ea8825c4e58a1 shadow=12:808ea8825c4e58a1 indirect=12:808ea8825c4e58a1 +geom 345: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97489834 motion [] pieces all=12:13ccb4f47d938444 camera=12:13ccb4f47d938444 shadow=12:13ccb4f47d938444 indirect=12:13ccb4f47d938444 +geom 346: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0438316 motion [] pieces all=12:e6a7c3ab22facd19 camera=12:e6a7c3ab22facd19 shadow=12:e6a7c3ab22facd19 indirect=12:e6a7c3ab22facd19 +geom 347: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8375302 motion [] pieces all=12:c641a83671de4a6a camera=12:c641a83671de4a6a shadow=12:c641a83671de4a6a indirect=12:c641a83671de4a6a +geom 348: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8639861 motion [] pieces all=12:71924d8657ecbff9 camera=12:71924d8657ecbff9 shadow=12:71924d8657ecbff9 indirect=12:71924d8657ecbff9 +geom 349: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0754395 motion [] pieces all=12:811b5f284bb9805b camera=12:811b5f284bb9805b shadow=12:811b5f284bb9805b indirect=12:811b5f284bb9805b +geom 350: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1303952 motion [] pieces all=12:8d68ad1c2a04dee9 camera=12:8d68ad1c2a04dee9 shadow=12:8d68ad1c2a04dee9 indirect=12:8d68ad1c2a04dee9 +geom 351: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91988903 motion [] pieces all=12:7d79472a51912b30 camera=12:7d79472a51912b30 shadow=12:7d79472a51912b30 indirect=12:7d79472a51912b30 +geom 352: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1373861 motion [] pieces all=12:2f1f08a2602e8e70 camera=12:2f1f08a2602e8e70 shadow=12:2f1f08a2602e8e70 indirect=12:2f1f08a2602e8e70 +geom 353: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9172575 motion [] pieces all=12:19b107d9e315e9af camera=12:19b107d9e315e9af shadow=12:19b107d9e315e9af indirect=12:19b107d9e315e9af +geom 354: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0840722 motion [] pieces all=12:52fab800a17a3f69 camera=12:52fab800a17a3f69 shadow=12:52fab800a17a3f69 indirect=12:52fab800a17a3f69 +geom 355: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8707261 motion [] pieces all=12:afd5f03eba34b8e1 camera=12:afd5f03eba34b8e1 shadow=12:afd5f03eba34b8e1 indirect=12:afd5f03eba34b8e1 +geom 356: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0395759 motion [] pieces all=12:8b2587b4f5645a96 camera=12:8b2587b4f5645a96 shadow=12:8b2587b4f5645a96 indirect=12:8b2587b4f5645a96 +geom 357: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84834194 motion [] pieces all=12:dad119f3e242e316 camera=12:dad119f3e242e316 shadow=12:dad119f3e242e316 indirect=12:dad119f3e242e316 +geom 358: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96762294 motion [] pieces all=12:2c9a4c5360d1a0dc camera=12:2c9a4c5360d1a0dc shadow=12:2c9a4c5360d1a0dc indirect=12:2c9a4c5360d1a0dc +geom 359: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.16959 motion [] pieces all=12:5e334efc7b63fffa camera=12:5e334efc7b63fffa shadow=12:5e334efc7b63fffa indirect=12:5e334efc7b63fffa +geom 360: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99900335 motion [] pieces all=12:169eb6deddcb5968 camera=12:169eb6deddcb5968 shadow=12:169eb6deddcb5968 indirect=12:169eb6deddcb5968 +geom 361: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1827945 motion [] pieces all=12:b6a647632a83ca6f camera=12:b6a647632a83ca6f shadow=12:b6a647632a83ca6f indirect=12:b6a647632a83ca6f +geom 362: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0113558 motion [] pieces all=12:2a5a95e95cff591f camera=12:2a5a95e95cff591f shadow=12:2a5a95e95cff591f indirect=12:2a5a95e95cff591f +geom 363: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8008391 motion [] pieces all=12:65b9decb74955a61 camera=12:65b9decb74955a61 shadow=12:65b9decb74955a61 indirect=12:65b9decb74955a61 +geom 364: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89662963 motion [] pieces all=12:ecbfa6b9aa2b7e61 camera=12:ecbfa6b9aa2b7e61 shadow=12:ecbfa6b9aa2b7e61 indirect=12:ecbfa6b9aa2b7e61 +geom 365: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0664147 motion [] pieces all=12:e58a5866cc2bbe65 camera=12:e58a5866cc2bbe65 shadow=12:e58a5866cc2bbe65 indirect=12:e58a5866cc2bbe65 +geom 366: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94571507 motion [] pieces all=12:49b1371584aec5ae camera=12:49b1371584aec5ae shadow=12:49b1371584aec5ae indirect=12:49b1371584aec5ae +geom 367: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1083539 motion [] pieces all=12:558cde4bc58b2ab2 camera=12:558cde4bc58b2ab2 shadow=12:558cde4bc58b2ab2 indirect=12:558cde4bc58b2ab2 +geom 368: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0881029 motion [] pieces all=12:e6eeb955ef5b706f camera=12:e6eeb955ef5b706f shadow=12:e6eeb955ef5b706f indirect=12:e6eeb955ef5b706f +geom 369: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8508443 motion [] pieces all=12:cda293becdc36cb3 camera=12:cda293becdc36cb3 shadow=12:cda293becdc36cb3 indirect=12:cda293becdc36cb3 +geom 370: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90589935 motion [] pieces all=12:b6ccc539de6a40ae camera=12:b6ccc539de6a40ae shadow=12:b6ccc539de6a40ae indirect=12:b6ccc539de6a40ae +geom 371: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1424141 motion [] pieces all=12:d0fce72aa7c9a6f5 camera=12:d0fce72aa7c9a6f5 shadow=12:d0fce72aa7c9a6f5 indirect=12:d0fce72aa7c9a6f5 +geom 372: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1506156 motion [] pieces all=12:fb1f30c8a821079c camera=12:fb1f30c8a821079c shadow=12:fb1f30c8a821079c indirect=12:fb1f30c8a821079c +geom 373: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9533634 motion [] pieces all=12:a20a363971cd40b8 camera=12:a20a363971cd40b8 shadow=12:a20a363971cd40b8 indirect=12:a20a363971cd40b8 +geom 374: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0258509 motion [] pieces all=12:a2b56395b2368c74 camera=12:a2b56395b2368c74 shadow=12:a2b56395b2368c74 indirect=12:a2b56395b2368c74 +geom 375: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82571924 motion [] pieces all=12:4ab45dffd951ae31 camera=12:4ab45dffd951ae31 shadow=12:4ab45dffd951ae31 indirect=12:4ab45dffd951ae31 +geom 376: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81869274 motion [] pieces all=12:ae2ea826833b422e camera=12:ae2ea826833b422e shadow=12:ae2ea826833b422e indirect=12:ae2ea826833b422e +geom 377: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0127542 motion [] pieces all=12:79db0c567bd34183 camera=12:79db0c567bd34183 shadow=12:79db0c567bd34183 indirect=12:79db0c567bd34183 +geom 378: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98320615 motion [] pieces all=12:01b6096960d920cc camera=12:01b6096960d920cc shadow=12:01b6096960d920cc indirect=12:01b6096960d920cc +geom 379: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1958272 motion [] pieces all=12:d3c8e4eef1f217f8 camera=12:d3c8e4eef1f217f8 shadow=12:d3c8e4eef1f217f8 indirect=12:d3c8e4eef1f217f8 +geom 380: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1164564 motion [] pieces all=12:36eaefabb23528eb camera=12:36eaefabb23528eb shadow=12:36eaefabb23528eb indirect=12:36eaefabb23528eb +geom 381: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9347236 motion [] pieces all=12:d594f813ad113d89 camera=12:d594f813ad113d89 shadow=12:d594f813ad113d89 indirect=12:d594f813ad113d89 +geom 382: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8784035 motion [] pieces all=12:6f569e26a9b8cb38 camera=12:6f569e26a9b8cb38 shadow=12:6f569e26a9b8cb38 indirect=12:6f569e26a9b8cb38 +geom 383: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0521004 motion [] pieces all=12:a6a2c749796d646f camera=12:a6a2c749796d646f shadow=12:a6a2c749796d646f indirect=12:a6a2c749796d646f +geom 384: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0741146 motion [] pieces all=12:7ab3662ce3feca21 camera=12:7ab3662ce3feca21 shadow=12:7ab3662ce3feca21 indirect=12:7ab3662ce3feca21 +geom 385: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88828635 motion [] pieces all=12:19a966d42c84dccd camera=12:19a966d42c84dccd shadow=12:19a966d42c84dccd indirect=12:19a966d42c84dccd +geom 386: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9380987 motion [] pieces all=12:50dcd7a9666ad9e4 camera=12:50dcd7a9666ad9e4 shadow=12:50dcd7a9666ad9e4 indirect=12:50dcd7a9666ad9e4 +geom 387: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1000046 motion [] pieces all=12:2726fcc411c50446 camera=12:2726fcc411c50446 shadow=12:2726fcc411c50446 indirect=12:2726fcc411c50446 +geom 388: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.003469 motion [] pieces all=12:de75fb09f46b0714 camera=12:de75fb09f46b0714 shadow=12:de75fb09f46b0714 indirect=12:de75fb09f46b0714 +geom 389: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8069174 motion [] pieces all=12:09cc27f44483a284 camera=12:09cc27f44483a284 shadow=12:09cc27f44483a284 indirect=12:09cc27f44483a284 +geom 390: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9884987 motion [] pieces all=12:c5a5bc7778ddb174 camera=12:c5a5bc7778ddb174 shadow=12:c5a5bc7778ddb174 indirect=12:c5a5bc7778ddb174 +geom 391: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1792359 motion [] pieces all=12:5288286f976f8e48 camera=12:5288286f976f8e48 shadow=12:5288286f976f8e48 indirect=12:5288286f976f8e48 +geom 392: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.049391 motion [] pieces all=12:6d63eb55ab4ed63f camera=12:6d63eb55ab4ed63f shadow=12:6d63eb55ab4ed63f indirect=12:6d63eb55ab4ed63f +geom 393: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8426635 motion [] pieces all=12:256647833c390e78 camera=12:256647833c390e78 shadow=12:256647833c390e78 indirect=12:256647833c390e78 +geom 394: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.971427 motion [] pieces all=12:8ae535fb31dee5f1 camera=12:8ae535fb31dee5f1 shadow=12:8ae535fb31dee5f1 indirect=12:8ae535fb31dee5f1 +geom 395: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1684103 motion [] pieces all=12:5daae7246429889a camera=12:5daae7246429889a shadow=12:5daae7246429889a indirect=12:5daae7246429889a +geom 396: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8659053 motion [] pieces all=12:0b754f94908852bf camera=12:0b754f94908852bf shadow=12:0b754f94908852bf indirect=12:0b754f94908852bf +geom 397: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0790608 motion [] pieces all=12:17c06b147aff1ed8 camera=12:17c06b147aff1ed8 shadow=12:17c06b147aff1ed8 indirect=12:17c06b147aff1ed8 +geom 398: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1252201 motion [] pieces all=12:5f3d26d1633b786e camera=12:5f3d26d1633b786e shadow=12:5f3d26d1633b786e indirect=12:5f3d26d1633b786e +geom 399: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9228201 motion [] pieces all=12:8a03effd358aa4f1 camera=12:8a03effd358aa4f1 shadow=12:8a03effd358aa4f1 indirect=12:8a03effd358aa4f1 +geom 400: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92855155 motion [] pieces all=12:ca195dc2e6d1caba camera=12:ca195dc2e6d1caba shadow=12:ca195dc2e6d1caba indirect=12:ca195dc2e6d1caba +geom 401: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1198676 motion [] pieces all=12:1659c9b2f2f68411 camera=12:1659c9b2f2f68411 shadow=12:1659c9b2f2f68411 indirect=12:1659c9b2f2f68411 +geom 402: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0583727 motion [] pieces all=12:5fadfea1e44f0e9c camera=12:5fadfea1e44f0e9c shadow=12:5fadfea1e44f0e9c indirect=12:5fadfea1e44f0e9c +geom 403: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88229245 motion [] pieces all=12:7ab894825d77d5d3 camera=12:7ab894825d77d5d3 shadow=12:7ab894825d77d5d3 indirect=12:7ab894825d77d5d3 +geom 404: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1928078 motion [] pieces all=12:3ee3d50b727e2a58 camera=12:3ee3d50b727e2a58 shadow=12:3ee3d50b727e2a58 indirect=12:3ee3d50b727e2a58 +geom 405: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9810347 motion [] pieces all=12:d243e8f4b6019762 camera=12:d243e8f4b6019762 shadow=12:d243e8f4b6019762 indirect=12:d243e8f4b6019762 +geom 406: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8228548 motion [] pieces all=12:0f3fac2ac5138c26 camera=12:0f3fac2ac5138c26 shadow=12:0f3fac2ac5138c26 indirect=12:0f3fac2ac5138c26 +geom 407: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0222763 motion [] pieces all=12:f36957ef1d5bf9f4 camera=12:f36957ef1d5bf9f4 shadow=12:f36957ef1d5bf9f4 indirect=12:f36957ef1d5bf9f4 +geom 408: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9566892 motion [] pieces all=12:ce0e92808faa3bd0 camera=12:ce0e92808faa3bd0 shadow=12:ce0e92808faa3bd0 indirect=12:ce0e92808faa3bd0 +geom 409: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1590903 motion [] pieces all=12:bb0aff4861d0e5c7 camera=12:bb0aff4861d0e5c7 shadow=12:bb0aff4861d0e5c7 indirect=12:bb0aff4861d0e5c7 +geom 410: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0355825 motion [] pieces all=12:0927cb148bc24760 camera=12:0927cb148bc24760 shadow=12:0927cb148bc24760 indirect=12:0927cb148bc24760 +geom 411: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83733 motion [] pieces all=12:2ff48555423d38f5 camera=12:2ff48555423d38f5 shadow=12:2ff48555423d38f5 indirect=12:2ff48555423d38f5 +geom 412: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9099854 motion [] pieces all=12:0f291e56c9c39d06 camera=12:0f291e56c9c39d06 shadow=12:0f291e56c9c39d06 indirect=12:0f291e56c9c39d06 +geom 413: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1480556 motion [] pieces all=12:c6b48ac24a12c819 camera=12:c6b48ac24a12c819 shadow=12:c6b48ac24a12c819 indirect=12:c6b48ac24a12c819 +geom 414: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0967451 motion [] pieces all=12:b500eba6cee7a7f1 camera=12:b500eba6cee7a7f1 shadow=12:b500eba6cee7a7f1 indirect=12:b500eba6cee7a7f1 +geom 415: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8585492 motion [] pieces all=12:cf6a1f614b3b7bcf camera=12:cf6a1f614b3b7bcf shadow=12:cf6a1f614b3b7bcf indirect=12:cf6a1f614b3b7bcf +geom 416: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0872761 motion [] pieces all=12:8bf0ee56c82758fd camera=12:8bf0ee56c82758fd shadow=12:8bf0ee56c82758fd indirect=12:8bf0ee56c82758fd +geom 417: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8735011 motion [] pieces all=12:b0276b38bc801f05 camera=12:b0276b38bc801f05 shadow=12:b0276b38bc801f05 indirect=12:b0276b38bc801f05 +geom 418: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1322085 motion [] pieces all=12:92013c8cf299ee3d camera=12:92013c8cf299ee3d shadow=12:92013c8cf299ee3d indirect=12:92013c8cf299ee3d +geom 419: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91393906 motion [] pieces all=12:7a81fde75dbafdf4 camera=12:7a81fde75dbafdf4 shadow=12:7a81fde75dbafdf4 indirect=12:7a81fde75dbafdf4 +geom 420: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1731441 motion [] pieces all=12:6ca24d9b1cb2bd35 camera=12:6ca24d9b1cb2bd35 shadow=12:6ca24d9b1cb2bd35 indirect=12:6ca24d9b1cb2bd35 +geom 421: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9652642 motion [] pieces all=12:6b1346b4ec218dcd camera=12:6b1346b4ec218dcd shadow=12:6b1346b4ec218dcd indirect=12:6b1346b4ec218dcd +geom 422: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84529215 motion [] pieces all=12:04df38a4c4503749 camera=12:04df38a4c4503749 shadow=12:04df38a4c4503749 indirect=12:04df38a4c4503749 +geom 423: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.040804 motion [] pieces all=12:435d97f0bf3e1929 camera=12:435d97f0bf3e1929 shadow=12:435d97f0bf3e1929 indirect=12:435d97f0bf3e1929 +geom 424: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1115723 motion [] pieces all=12:7b623ed7ac966f41 camera=12:7b623ed7ac966f41 shadow=12:7b623ed7ac966f41 indirect=12:7b623ed7ac966f41 +geom 425: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9487359 motion [] pieces all=12:a9ea55ada1928227 camera=12:a9ea55ada1928227 shadow=12:a9ea55ada1928227 indirect=12:a9ea55ada1928227 +geom 426: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8999349 motion [] pieces all=12:25db60042db2e310 camera=12:25db60042db2e310 shadow=12:25db60042db2e310 indirect=12:25db60042db2e310 +geom 427: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0640092 motion [] pieces all=12:b9487da92f78a773 camera=12:b9487da92f78a773 shadow=12:b9487da92f78a773 indirect=12:b9487da92f78a773 +geom 428: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99416155 motion [] pieces all=12:11c8047ca053be03 camera=12:11c8047ca053be03 shadow=12:11c8047ca053be03 indirect=12:11c8047ca053be03 +geom 429: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1863627 motion [] pieces all=12:5b272fbb1291ff05 camera=12:5b272fbb1291ff05 shadow=12:5b272fbb1291ff05 indirect=12:5b272fbb1291ff05 +geom 430: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0074881 motion [] pieces all=12:fb4df4495b934d19 camera=12:fb4df4495b934d19 shadow=12:fb4df4495b934d19 indirect=12:fb4df4495b934d19 +geom 431: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8032813 motion [] pieces all=12:80033bd0cc9a3656 camera=12:80033bd0cc9a3656 shadow=12:80033bd0cc9a3656 indirect=12:80033bd0cc9a3656 +geom 432: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93390155 motion [] pieces all=12:ac76560929186009 camera=12:ac76560929186009 shadow=12:ac76560929186009 indirect=12:ac76560929186009 +geom 433: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1131442 motion [] pieces all=12:51b165a6546bc415 camera=12:51b165a6546bc415 shadow=12:51b165a6546bc415 indirect=12:51b165a6546bc415 +geom 434: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.053656 motion [] pieces all=12:1a547d8c29cc4f3d camera=12:1a547d8c29cc4f3d shadow=12:1a547d8c29cc4f3d indirect=12:1a547d8c29cc4f3d +geom 435: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8774742 motion [] pieces all=12:5d810e6a4b296cad camera=12:5d810e6a4b296cad shadow=12:5d810e6a4b296cad indirect=12:5d810e6a4b296cad +geom 436: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1976509 motion [] pieces all=12:be9adb6d880c1229 camera=12:be9adb6d880c1229 shadow=12:be9adb6d880c1229 indirect=12:be9adb6d880c1229 +geom 437: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9849389 motion [] pieces all=12:a46a1608942d758d camera=12:a46a1608942d758d shadow=12:a46a1608942d758d indirect=12:a46a1608942d758d +geom 438: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.813529 motion [] pieces all=12:fda70acf609042ce camera=12:fda70acf609042ce shadow=12:fda70acf609042ce indirect=12:fda70acf609042ce +geom 439: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0156319 motion [] pieces all=12:f41f0f54ec39adeb camera=12:f41f0f54ec39adeb shadow=12:f41f0f54ec39adeb indirect=12:f41f0f54ec39adeb +geom 440: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95077723 motion [] pieces all=12:0a9eb720af1a3bd4 camera=12:0a9eb720af1a3bd4 shadow=12:0a9eb720af1a3bd4 indirect=12:0a9eb720af1a3bd4 +geom 441: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1535623 motion [] pieces all=12:336c360aeef5faf5 camera=12:336c360aeef5faf5 shadow=12:336c360aeef5faf5 indirect=12:336c360aeef5faf5 +geom 442: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0297333 motion [] pieces all=12:645d7bb6a3b95bd8 camera=12:645d7bb6a3b95bd8 shadow=12:645d7bb6a3b95bd8 indirect=12:645d7bb6a3b95bd8 +geom 443: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8287572 motion [] pieces all=12:4592c6855a292fea camera=12:4592c6855a292fea shadow=12:4592c6855a292fea indirect=12:4592c6855a292fea +geom 444: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9023757 motion [] pieces all=12:e731c0a111cb98d1 camera=12:e731c0a111cb98d1 shadow=12:e731c0a111cb98d1 indirect=12:e731c0a111cb98d1 +geom 445: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1376117 motion [] pieces all=12:37a20bbc2a1f4904 camera=12:37a20bbc2a1f4904 shadow=12:37a20bbc2a1f4904 indirect=12:37a20bbc2a1f4904 +geom 446: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0911936 motion [] pieces all=12:524b1b596a3fa5ef camera=12:524b1b596a3fa5ef shadow=12:524b1b596a3fa5ef indirect=12:524b1b596a3fa5ef +geom 447: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85525686 motion [] pieces all=12:38e8539a12fb9b3f camera=12:38e8539a12fb9b3f shadow=12:38e8539a12fb9b3f indirect=12:38e8539a12fb9b3f +geom 448: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8316441 motion [] pieces all=12:b405971f8aa011fc camera=12:b405971f8aa011fc shadow=12:b405971f8aa011fc indirect=12:b405971f8aa011fc +geom 449: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.032447 motion [] pieces all=12:db46adba899d5142 camera=12:db46adba899d5142 shadow=12:db46adba899d5142 indirect=12:db46adba899d5142 +geom 450: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96151036 motion [] pieces all=12:5621f8ff01a34a29 camera=12:5621f8ff01a34a29 shadow=12:5621f8ff01a34a29 indirect=12:5621f8ff01a34a29 +geom 451: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1623033 motion [] pieces all=12:aaf3da8f43a191f0 camera=12:aaf3da8f43a191f0 shadow=12:aaf3da8f43a191f0 indirect=12:aaf3da8f43a191f0 +geom 452: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85963744 motion [] pieces all=12:0eb38e954d9f4621 camera=12:0eb38e954d9f4621 shadow=12:0eb38e954d9f4621 indirect=12:0eb38e954d9f4621 +geom 453: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.09886 motion [] pieces all=12:f380c5248da00ed3 camera=12:f380c5248da00ed3 shadow=12:f380c5248da00ed3 indirect=12:f380c5248da00ed3 +geom 454: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9070294 motion [] pieces all=12:bb386147aa56f833 camera=12:bb386147aa56f833 shadow=12:bb386147aa56f833 indirect=12:bb386147aa56f833 +geom 455: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1466872 motion [] pieces all=12:bc039ca1e5b269be camera=12:bc039ca1e5b269be shadow=12:bc039ca1e5b269be indirect=12:bc039ca1e5b269be +geom 456: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9773077 motion [] pieces all=12:c359f8304ad10baa camera=12:c359f8304ad10baa shadow=12:c359f8304ad10baa indirect=12:c359f8304ad10baa +geom 457: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.190172 motion [] pieces all=12:789ebef75a5d6368 camera=12:789ebef75a5d6368 shadow=12:789ebef75a5d6368 indirect=12:789ebef75a5d6368 +geom 458: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0206813 motion [] pieces all=12:a95fcdbc04f1b322 camera=12:a95fcdbc04f1b322 shadow=12:a95fcdbc04f1b322 indirect=12:a95fcdbc04f1b322 +geom 459: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8205765 motion [] pieces all=12:8cd061c77484d1f9 camera=12:8cd061c77484d1f9 shadow=12:8cd061c77484d1f9 indirect=12:8cd061c77484d1f9 +geom 460: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0603322 motion [] pieces all=12:21e3f6766dc4873c camera=12:21e3f6766dc4873c shadow=12:21e3f6766dc4873c indirect=12:21e3f6766dc4873c +geom 461: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8858062 motion [] pieces all=12:8732059bb4b03c40 camera=12:8732059bb4b03c40 shadow=12:8732059bb4b03c40 indirect=12:8732059bb4b03c40 +geom 462: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1239856 motion [] pieces all=12:d33603ce069a6fc7 camera=12:d33603ce069a6fc7 shadow=12:d33603ce069a6fc7 indirect=12:d33603ce069a6fc7 +geom 463: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9266704 motion [] pieces all=12:f66e85ff299269a7 camera=12:f66e85ff299269a7 shadow=12:f66e85ff299269a7 indirect=12:f66e85ff299269a7 +geom 464: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.104276 motion [] pieces all=12:badf7e07917b3454 camera=12:badf7e07917b3454 shadow=12:badf7e07917b3454 indirect=12:badf7e07917b3454 +geom 465: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9416502 motion [] pieces all=12:5bf162743147bb01 camera=12:5bf162743147bb01 shadow=12:5bf162743147bb01 indirect=12:5bf162743147bb01 +geom 466: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0707836 motion [] pieces all=12:16caa9eff55a3ae5 camera=12:16caa9eff55a3ae5 shadow=12:16caa9eff55a3ae5 indirect=12:16caa9eff55a3ae5 +geom 467: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89121234 motion [] pieces all=12:906cd7ad75a17cbe camera=12:906cd7ad75a17cbe shadow=12:906cd7ad75a17cbe indirect=12:906cd7ad75a17cbe +geom 468: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99138224 motion [] pieces all=12:e4a9a79b146978b5 camera=12:e4a9a79b146978b5 shadow=12:e4a9a79b146978b5 indirect=12:e4a9a79b146978b5 +geom 469: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1752003 motion [] pieces all=12:264241ca86c16666 camera=12:264241ca86c16666 shadow=12:264241ca86c16666 indirect=12:264241ca86c16666 +geom 470: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81064636 motion [] pieces all=12:f81fdb0030c2a9ca camera=12:f81fdb0030c2a9ca shadow=12:f81fdb0030c2a9ca indirect=12:f81fdb0030c2a9ca +geom 471: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0018771 motion [] pieces all=12:22b1a5c4d00823e2 camera=12:22b1a5c4d00823e2 shadow=12:22b1a5c4d00823e2 indirect=12:22b1a5c4d00823e2 +geom 472: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1626403 motion [] pieces all=12:51194ccbf911a624 camera=12:51194ccbf911a624 shadow=12:51194ccbf911a624 indirect=12:51194ccbf911a624 +geom 473: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9727246 motion [] pieces all=12:25244f833b6acce5 camera=12:25244f833b6acce5 shadow=12:25244f833b6acce5 indirect=12:25244f833b6acce5 +geom 474: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0468313 motion [] pieces all=12:ee742bd865ff2662 camera=12:ee742bd865ff2662 shadow=12:ee742bd865ff2662 indirect=12:ee742bd865ff2662 +geom 475: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8404454 motion [] pieces all=12:0fa5506eb54d9ae8 camera=12:0fa5506eb54d9ae8 shadow=12:0fa5506eb54d9ae8 indirect=12:0fa5506eb54d9ae8 +geom 476: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1281568 motion [] pieces all=12:8ddd449552ed69a5 camera=12:8ddd449552ed69a5 shadow=12:8ddd449552ed69a5 indirect=12:8ddd449552ed69a5 +geom 477: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92151695 motion [] pieces all=12:444af567cb7d0162 camera=12:444af567cb7d0162 shadow=12:444af567cb7d0162 indirect=12:444af567cb7d0162 +geom 478: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0769413 motion [] pieces all=12:aa431d94ab3f48ae camera=12:aa431d94ab3f48ae shadow=12:aa431d94ab3f48ae indirect=12:aa431d94ab3f48ae +geom 479: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8655292 motion [] pieces all=12:edb83e430474aae2 camera=12:edb83e430474aae2 shadow=12:edb83e430474aae2 indirect=12:edb83e430474aae2 +geom 480: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85253334 motion [] pieces all=12:7d25e2d3928636c1 camera=12:7d25e2d3928636c1 shadow=12:7d25e2d3928636c1 indirect=12:7d25e2d3928636c1 +geom 481: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0899037 motion [] pieces all=12:b7c6bc423922f094 camera=12:b7c6bc423922f094 shadow=12:b7c6bc423922f094 indirect=12:b7c6bc423922f094 +geom 482: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9033633 motion [] pieces all=12:c4c732f074943047 camera=12:c4c732f074943047 shadow=12:c4c732f074943047 indirect=12:c4c732f074943047 +geom 483: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.14154 motion [] pieces all=12:2bcc27e184983e9c camera=12:2bcc27e184983e9c shadow=12:2bcc27e184983e9c indirect=12:2bcc27e184983e9c +geom 484: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0275213 motion [] pieces all=12:819b70b7d45cf9b2 camera=12:819b70b7d45cf9b2 shadow=12:819b70b7d45cf9b2 indirect=12:819b70b7d45cf9b2 +geom 485: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82741916 motion [] pieces all=12:9a9da58ac212404b camera=12:9a9da58ac212404b shadow=12:9a9da58ac212404b indirect=12:9a9da58ac212404b +geom 486: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1528425 motion [] pieces all=12:a89f73997f111567 camera=12:a89f73997f111567 shadow=12:a89f73997f111567 indirect=12:a89f73997f111567 +geom 487: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95527947 motion [] pieces all=12:bb01b61f711383d5 camera=12:bb01b61f711383d5 shadow=12:bb01b61f711383d5 indirect=12:bb01b61f711383d5 +geom 488: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1944077 motion [] pieces all=12:2ffe0c3f28c236dc camera=12:2ffe0c3f28c236dc shadow=12:2ffe0c3f28c236dc indirect=12:2ffe0c3f28c236dc +geom 489: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9815056 motion [] pieces all=12:91eb9411b9928e56 camera=12:91eb9411b9928e56 shadow=12:91eb9411b9928e56 indirect=12:91eb9411b9928e56 +geom 490: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0148056 motion [] pieces all=12:17138d3451f2bd4e camera=12:17138d3451f2bd4e shadow=12:17138d3451f2bd4e indirect=12:17138d3451f2bd4e +geom 491: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.816761 motion [] pieces all=12:306e835f81e541cb camera=12:306e835f81e541cb shadow=12:306e835f81e541cb indirect=12:306e835f81e541cb +geom 492: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9368933 motion [] pieces all=12:a75accad21041f48 camera=12:a75accad21041f48 shadow=12:a75accad21041f48 indirect=12:a75accad21041f48 +geom 493: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1182696 motion [] pieces all=12:a8b2727fdf034941 camera=12:a8b2727fdf034941 shadow=12:a8b2727fdf034941 indirect=12:a8b2727fdf034941 +geom 494: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87989783 motion [] pieces all=12:d10d6ce818157f05 camera=12:d10d6ce818157f05 shadow=12:d10d6ce818157f05 indirect=12:d10d6ce818157f05 +geom 495: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0513932 motion [] pieces all=12:08aa1a6090cb19d8 camera=12:08aa1a6090cb19d8 shadow=12:08aa1a6090cb19d8 indirect=12:08aa1a6090cb19d8 +geom 496: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1709273 motion [] pieces all=12:6cd171a4e9fa7dc0 camera=12:6cd171a4e9fa7dc0 shadow=12:6cd171a4e9fa7dc0 indirect=12:6cd171a4e9fa7dc0 +geom 497: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96645564 motion [] pieces all=12:1ca8b562a4dc8ad4 camera=12:1ca8b562a4dc8ad4 shadow=12:1ca8b562a4dc8ad4 indirect=12:1ca8b562a4dc8ad4 +geom 498: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0384126 motion [] pieces all=12:bfd25e19e8bf0df8 camera=12:bfd25e19e8bf0df8 shadow=12:bfd25e19e8bf0df8 indirect=12:bfd25e19e8bf0df8 +geom 499: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8496135 motion [] pieces all=12:cbc98d16444c9942 camera=12:cbc98d16444c9942 shadow=12:cbc98d16444c9942 indirect=12:cbc98d16444c9942 +geom 500: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0302348 motion [] pieces all=12:4e47456226ea853b camera=12:4e47456226ea853b shadow=12:4e47456226ea853b indirect=12:4e47456226ea853b +geom 501: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9703491 motion [] pieces all=12:ee2f51c1cd819aa5 camera=12:ee2f51c1cd819aa5 shadow=12:ee2f51c1cd819aa5 indirect=12:ee2f51c1cd819aa5 +geom 502: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8307657 motion [] pieces all=12:4456538a2171cd9c camera=12:4456538a2171cd9c shadow=12:4456538a2171cd9c indirect=12:4456538a2171cd9c +geom 503: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1194483 motion [] pieces all=12:23ee1769174a108a camera=12:23ee1769174a108a shadow=12:23ee1769174a108a indirect=12:23ee1769174a108a +geom 504: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0775396 motion [] pieces all=12:a369bbc5ef22c736 camera=12:a369bbc5ef22c736 shadow=12:a369bbc5ef22c736 indirect=12:a369bbc5ef22c736 +geom 505: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94118965 motion [] pieces all=12:3f9c2945e264a3a7 camera=12:3f9c2945e264a3a7 shadow=12:3f9c2945e264a3a7 indirect=12:3f9c2945e264a3a7 +geom 506: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8952345 motion [] pieces all=12:728a445b371853d8 camera=12:728a445b371853d8 shadow=12:728a445b371853d8 indirect=12:728a445b371853d8 +geom 507: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1544443 motion [] pieces all=12:086da29016ba95b0 camera=12:086da29016ba95b0 shadow=12:086da29016ba95b0 indirect=12:086da29016ba95b0 +geom 508: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0568454 motion [] pieces all=12:a3831c1aa822f259 camera=12:a3831c1aa822f259 shadow=12:a3831c1aa822f259 indirect=12:a3831c1aa822f259 +geom 509: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91884345 motion [] pieces all=12:a4f6586fe5ef3e21 camera=12:a4f6586fe5ef3e21 shadow=12:a4f6586fe5ef3e21 indirect=12:a4f6586fe5ef3e21 +geom 510: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8698318 motion [] pieces all=12:f0760d5faae11b3b camera=12:f0760d5faae11b3b shadow=12:f0760d5faae11b3b indirect=12:f0760d5faae11b3b +geom 511: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1947867 motion [] pieces all=12:5b32133f4614fd46 camera=12:5b32133f4614fd46 shadow=12:5b32133f4614fd46 indirect=12:5b32133f4614fd46 +geom 512: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9751468 motion [] pieces all=12:d51360056d6a17f1 camera=12:d51360056d6a17f1 shadow=12:d51360056d6a17f1 indirect=12:d51360056d6a17f1 +geom 513: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0068411 motion [] pieces all=12:d10eeeefb1edb19c camera=12:d10eeeefb1edb19c shadow=12:d10eeeefb1edb19c indirect=12:d10eeeefb1edb19c +geom 514: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1298987 motion [] pieces all=12:e3f44cff56520c66 camera=12:e3f44cff56520c66 shadow=12:e3f44cff56520c66 indirect=12:e3f44cff56520c66 +geom 515: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8074785 motion [] pieces all=12:76182490231cb2c0 camera=12:76182490231cb2c0 shadow=12:76182490231cb2c0 indirect=12:76182490231cb2c0 +geom 516: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93526125 motion [] pieces all=12:4bdb31af636839b0 camera=12:4bdb31af636839b0 shadow=12:4bdb31af636839b0 indirect=12:4bdb31af636839b0 +geom 517: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0933704 motion [] pieces all=12:e1cd969552f25674 camera=12:e1cd969552f25674 shadow=12:e1cd969552f25674 indirect=12:e1cd969552f25674 +geom 518: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1666417 motion [] pieces all=12:8cb23d264ba6bfbb camera=12:8cb23d264ba6bfbb shadow=12:8cb23d264ba6bfbb indirect=12:8cb23d264ba6bfbb +geom 519: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8871478 motion [] pieces all=12:4a7858789cd9df8e camera=12:4a7858789cd9df8e shadow=12:4a7858789cd9df8e indirect=12:4a7858789cd9df8e +geom 520: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0460746 motion [] pieces all=12:6426416e8a5deb32 camera=12:6426416e8a5deb32 shadow=12:6426416e8a5deb32 indirect=12:6426416e8a5deb32 +geom 521: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9511921 motion [] pieces all=12:f56b8604101514c9 camera=12:f56b8604101514c9 shadow=12:f56b8604101514c9 indirect=12:f56b8604101514c9 +geom 522: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84485286 motion [] pieces all=12:db689d8c9a6cd4c8 camera=12:db689d8c9a6cd4c8 shadow=12:db689d8c9a6cd4c8 indirect=12:db689d8c9a6cd4c8 +geom 523: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1097914 motion [] pieces all=12:f09788fda874e4f9 camera=12:f09788fda874e4f9 shadow=12:f09788fda874e4f9 indirect=12:f09788fda874e4f9 +geom 524: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81755817 motion [] pieces all=12:111f011a0f808f01 camera=12:111f011a0f808f01 shadow=12:111f011a0f808f01 indirect=12:111f011a0f808f01 +geom 525: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1459739 motion [] pieces all=12:43cd6550e6fe7eb3 camera=12:43cd6550e6fe7eb3 shadow=12:43cd6550e6fe7eb3 indirect=12:43cd6550e6fe7eb3 +geom 526: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0129569 motion [] pieces all=12:fc789e4c2f5a396d camera=12:fc789e4c2f5a396d shadow=12:fc789e4c2f5a396d indirect=12:fc789e4c2f5a396d +geom 527: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9887796 motion [] pieces all=12:17b9413cef4977d1 camera=12:17b9413cef4977d1 shadow=12:17b9413cef4977d1 indirect=12:17b9413cef4977d1 +geom 528: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1784618 motion [] pieces all=12:94146ea4b00252bf camera=12:94146ea4b00252bf shadow=12:94146ea4b00252bf indirect=12:94146ea4b00252bf +geom 529: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8605717 motion [] pieces all=12:12a68d3d3b360732 camera=12:12a68d3d3b360732 shadow=12:12a68d3d3b360732 indirect=12:12a68d3d3b360732 +geom 530: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90049964 motion [] pieces all=12:bbc25fd4b02e380f camera=12:bbc25fd4b02e380f shadow=12:bbc25fd4b02e380f indirect=12:bbc25fd4b02e380f +geom 531: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0697577 motion [] pieces all=12:c475c08b4f7c3376 camera=12:c475c08b4f7c3376 shadow=12:c475c08b4f7c3376 indirect=12:c475c08b4f7c3376 +geom 532: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8753944 motion [] pieces all=12:f7430be8cddff05a camera=12:f7430be8cddff05a shadow=12:f7430be8cddff05a indirect=12:f7430be8cddff05a +geom 533: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1720527 motion [] pieces all=12:5cd3ac711c786885 camera=12:5cd3ac711c786885 shadow=12:5cd3ac711c786885 indirect=12:5cd3ac711c786885 +geom 534: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0938879 motion [] pieces all=12:abf9f129ca95e4f5 camera=12:abf9f129ca95e4f5 shadow=12:abf9f129ca95e4f5 indirect=12:abf9f129ca95e4f5 +geom 535: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9269793 motion [] pieces all=12:e657abaf59804d56 camera=12:e657abaf59804d56 shadow=12:e657abaf59804d56 indirect=12:e657abaf59804d56 +geom 536: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8431831 motion [] pieces all=12:11fc198140ede24e camera=12:11fc198140ede24e shadow=12:11fc198140ede24e indirect=12:11fc198140ede24e +geom 537: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1019206 motion [] pieces all=12:11cf76c922df119e camera=12:11cf76c922df119e shadow=12:11cf76c922df119e indirect=12:11cf76c922df119e +geom 538: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0432779 motion [] pieces all=12:c438f3c44f47c25d camera=12:c438f3c44f47c25d shadow=12:c438f3c44f47c25d indirect=12:c438f3c44f47c25d +geom 539: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96232396 motion [] pieces all=12:13d8666cee5fecc3 camera=12:13d8666cee5fecc3 shadow=12:13d8666cee5fecc3 indirect=12:13d8666cee5fecc3 +geom 540: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.023567 motion [] pieces all=12:18c97bf35a8997a4 camera=12:18c97bf35a8997a4 shadow=12:18c97bf35a8997a4 indirect=12:18c97bf35a8997a4 +geom 541: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9956807 motion [] pieces all=12:e75636321407dd22 camera=12:e75636321407dd22 shadow=12:e75636321407dd22 indirect=12:e75636321407dd22 +geom 542: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8209068 motion [] pieces all=12:d4be977b87b8f2c5 camera=12:d4be977b87b8f2c5 shadow=12:d4be977b87b8f2c5 indirect=12:d4be977b87b8f2c5 +geom 543: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1392137 motion [] pieces all=12:38f1366b090718c5 camera=12:38f1366b090718c5 shadow=12:38f1366b090718c5 indirect=12:38f1366b090718c5 +geom 544: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0633069 motion [] pieces all=12:af93a450dcaa3ed7 camera=12:af93a450dcaa3ed7 shadow=12:af93a450dcaa3ed7 indirect=12:af93a450dcaa3ed7 +geom 545: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91163903 motion [] pieces all=12:e9eaf279b4fd310c camera=12:e9eaf279b4fd310c shadow=12:e9eaf279b4fd310c indirect=12:e9eaf279b4fd310c +geom 546: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85597336 motion [] pieces all=12:75b84129502c9e93 camera=12:75b84129502c9e93 shadow=12:75b84129502c9e93 indirect=12:75b84129502c9e93 +geom 547: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1847972 motion [] pieces all=12:848a7256c4a42f64 camera=12:848a7256c4a42f64 shadow=12:848a7256c4a42f64 indirect=12:848a7256c4a42f64 +geom 548: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0359192 motion [] pieces all=12:f9cd1e14b2117f7d camera=12:f9cd1e14b2117f7d shadow=12:f9cd1e14b2117f7d indirect=12:f9cd1e14b2117f7d +geom 549: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96330434 motion [] pieces all=12:a240996e765dcaca camera=12:a240996e765dcaca shadow=12:a240996e765dcaca indirect=12:a240996e765dcaca +geom 550: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8354984 motion [] pieces all=12:4d3480a3dfbefce8 camera=12:4d3480a3dfbefce8 shadow=12:4d3480a3dfbefce8 indirect=12:4d3480a3dfbefce8 +geom 551: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1180665 motion [] pieces all=12:9066996782485a15 camera=12:9066996782485a15 shadow=12:9066996782485a15 indirect=12:9066996782485a15 +geom 552: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0866416 motion [] pieces all=12:8d4d3ecfaa01e70f camera=12:8d4d3ecfaa01e70f shadow=12:8d4d3ecfaa01e70f indirect=12:8d4d3ecfaa01e70f +geom 553: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9495417 motion [] pieces all=12:15fb4a3bbaf8ba17 camera=12:15fb4a3bbaf8ba17 shadow=12:15fb4a3bbaf8ba17 indirect=12:15fb4a3bbaf8ba17 +geom 554: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8930357 motion [] pieces all=12:d2b655f51fba3b60 camera=12:d2b655f51fba3b60 shadow=12:d2b655f51fba3b60 indirect=12:d2b655f51fba3b60 +geom 555: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1609201 motion [] pieces all=12:9472cda2f739b9fb camera=12:9472cda2f739b9fb shadow=12:9472cda2f739b9fb indirect=12:9472cda2f739b9fb +geom 556: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0515589 motion [] pieces all=12:cd4b0efb6f96ae7a camera=12:cd4b0efb6f96ae7a shadow=12:cd4b0efb6f96ae7a indirect=12:cd4b0efb6f96ae7a +geom 557: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91319627 motion [] pieces all=12:5a6276f8576a6b5a camera=12:5a6276f8576a6b5a shadow=12:5a6276f8576a6b5a indirect=12:5a6276f8576a6b5a +geom 558: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8628024 motion [] pieces all=12:d3696c57874475d0 camera=12:d3696c57874475d0 shadow=12:d3696c57874475d0 indirect=12:d3696c57874475d0 +geom 559: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1927012 motion [] pieces all=12:a2e82cef96955606 camera=12:a2e82cef96955606 shadow=12:a2e82cef96955606 indirect=12:a2e82cef96955606 +geom 560: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9843564 motion [] pieces all=12:182c6d894be25135 camera=12:182c6d894be25135 shadow=12:182c6d894be25135 indirect=12:182c6d894be25135 +geom 561: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0001198 motion [] pieces all=12:7a9d4d3c8591c209 camera=12:7a9d4d3c8591c209 shadow=12:7a9d4d3c8591c209 indirect=12:7a9d4d3c8591c209 +geom 562: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1337063 motion [] pieces all=12:4c1c1e515c79bdc3 camera=12:4c1c1e515c79bdc3 shadow=12:4c1c1e515c79bdc3 indirect=12:4c1c1e515c79bdc3 +geom 563: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80129576 motion [] pieces all=12:7c756f7c6eb8a981 camera=12:7c756f7c6eb8a981 shadow=12:7c756f7c6eb8a981 indirect=12:7c756f7c6eb8a981 +geom 564: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87433505 motion [] pieces all=12:4108f5b4686e35be camera=12:4108f5b4686e35be shadow=12:4108f5b4686e35be indirect=12:4108f5b4686e35be +geom 565: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1975825 motion [] pieces all=12:4734019265471665 camera=12:4734019265471665 shadow=12:4734019265471665 indirect=12:4734019265471665 +geom 566: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0621684 motion [] pieces all=12:715804278013b789 camera=12:715804278013b789 shadow=12:715804278013b789 indirect=12:715804278013b789 +geom 567: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9226387 motion [] pieces all=12:bb6f7c1e8cc4f1e2 camera=12:bb6f7c1e8cc4f1e2 shadow=12:bb6f7c1e8cc4f1e2 indirect=12:bb6f7c1e8cc4f1e2 +geom 568: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8097593 motion [] pieces all=12:c268e5368146ae1f camera=12:c268e5368146ae1f shadow=12:c268e5368146ae1f indirect=12:c268e5368146ae1f +geom 569: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.127293 motion [] pieces all=12:457c05048f3f693d camera=12:457c05048f3f693d shadow=12:457c05048f3f693d indirect=12:457c05048f3f693d +geom 570: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0116408 motion [] pieces all=12:e703eedb7b026723 camera=12:e703eedb7b026723 shadow=12:e703eedb7b026723 indirect=12:e703eedb7b026723 +geom 571: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97932434 motion [] pieces all=12:fd327f9bca95a0db camera=12:fd327f9bca95a0db shadow=12:fd327f9bca95a0db indirect=12:fd327f9bca95a0db +geom 572: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82668763 motion [] pieces all=12:6d2ad38125bafc84 camera=12:6d2ad38125bafc84 shadow=12:6d2ad38125bafc84 indirect=12:6d2ad38125bafc84 +geom 573: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1249206 motion [] pieces all=12:c9a251d6e544d9bf camera=12:c9a251d6e544d9bf shadow=12:c9a251d6e544d9bf indirect=12:c9a251d6e544d9bf +geom 574: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0261687 motion [] pieces all=12:20ba675322687129 camera=12:20ba675322687129 shadow=12:20ba675322687129 indirect=12:20ba675322687129 +geom 575: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97264576 motion [] pieces all=12:ef6c1b9a2c6c864b camera=12:ef6c1b9a2c6c864b shadow=12:ef6c1b9a2c6c864b indirect=12:ef6c1b9a2c6c864b +geom 576: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1511 motion [] pieces all=12:07fc7bc9d1792ccc camera=12:07fc7bc9d1792ccc shadow=12:07fc7bc9d1792ccc indirect=12:07fc7bc9d1792ccc +geom 577: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89762646 motion [] pieces all=12:aa185da6e53f4927 camera=12:aa185da6e53f4927 shadow=12:aa185da6e53f4927 indirect=12:aa185da6e53f4927 +geom 578: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94019973 motion [] pieces all=12:01b6b3d88c45c033 camera=12:01b6b3d88c45c033 shadow=12:01b6b3d88c45c033 indirect=12:01b6b3d88c45c033 +geom 579: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0800166 motion [] pieces all=12:a9bf056d392621b0 camera=12:a9bf056d392621b0 shadow=12:a9bf056d392621b0 indirect=12:a9bf056d392621b0 +geom 580: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85747635 motion [] pieces all=12:94de06f236b8b820 camera=12:94de06f236b8b820 shadow=12:94de06f236b8b820 indirect=12:94de06f236b8b820 +geom 581: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1759998 motion [] pieces all=12:92f726545f6a3ab5 camera=12:92f726545f6a3ab5 shadow=12:92f726545f6a3ab5 indirect=12:92f726545f6a3ab5 +geom 582: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0728099 motion [] pieces all=12:09e30d626f61ccf4 camera=12:09e30d626f61ccf4 shadow=12:09e30d626f61ccf4 indirect=12:09e30d626f61ccf4 +geom 583: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9043027 motion [] pieces all=12:d53f7aff7fe21e21 camera=12:d53f7aff7fe21e21 shadow=12:d53f7aff7fe21e21 indirect=12:d53f7aff7fe21e21 +geom 584: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8145665 motion [] pieces all=12:f2810bc8218d17d8 camera=12:f2810bc8218d17d8 shadow=12:f2810bc8218d17d8 indirect=12:f2810bc8218d17d8 +geom 585: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1478072 motion [] pieces all=12:4aa5066447045ac2 camera=12:4aa5066447045ac2 shadow=12:4aa5066447045ac2 indirect=12:4aa5066447045ac2 +geom 586: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0164454 motion [] pieces all=12:0a5f20c20324f76e camera=12:0a5f20c20324f76e shadow=12:0a5f20c20324f76e indirect=12:0a5f20c20324f76e +geom 587: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99306315 motion [] pieces all=12:ddcf41cfc3c6173f camera=12:ddcf41cfc3c6173f shadow=12:ddcf41cfc3c6173f indirect=12:ddcf41cfc3c6173f +geom 588: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1079575 motion [] pieces all=12:0003a64b0b152a73 camera=12:0003a64b0b152a73 shadow=12:0003a64b0b152a73 indirect=12:0003a64b0b152a73 +geom 589: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8493257 motion [] pieces all=12:cc9da69acf673059 camera=12:cc9da69acf673059 shadow=12:cc9da69acf673059 indirect=12:cc9da69acf673059 +geom 590: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.955672 motion [] pieces all=12:1516c749ba6d4473 camera=12:1516c749ba6d4473 shadow=12:1516c749ba6d4473 indirect=12:1516c749ba6d4473 +geom 591: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0495518 motion [] pieces all=12:6f60f8b334446267 camera=12:6f60f8b334446267 shadow=12:6f60f8b334446267 indirect=12:6f60f8b334446267 +geom 592: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8838227 motion [] pieces all=12:26f088ca4a7afba0 camera=12:26f088ca4a7afba0 shadow=12:26f088ca4a7afba0 indirect=12:26f088ca4a7afba0 +geom 593: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1644161 motion [] pieces all=12:548f82962b9f27a4 camera=12:548f82962b9f27a4 shadow=12:548f82962b9f27a4 indirect=12:548f82962b9f27a4 +geom 594: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0903423 motion [] pieces all=12:ee4bc3ad2dcc7fb4 camera=12:ee4bc3ad2dcc7fb4 shadow=12:ee4bc3ad2dcc7fb4 indirect=12:ee4bc3ad2dcc7fb4 +geom 595: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9327857 motion [] pieces all=12:1d6114476eb4c674 camera=12:1d6114476eb4c674 shadow=12:1d6114476eb4c674 indirect=12:1d6114476eb4c674 +geom 596: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95914304 motion [] pieces all=12:2b6d8b99d404bb45 camera=12:2b6d8b99d404bb45 shadow=12:2b6d8b99d404bb45 indirect=12:2b6d8b99d404bb45 +geom 597: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0385134 motion [] pieces all=12:1a072a290ef6a1af camera=12:1a072a290ef6a1af shadow=12:1a072a290ef6a1af indirect=12:1a072a290ef6a1af +geom 598: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1047977 motion [] pieces all=12:d2ca3713572d5eae camera=12:d2ca3713572d5eae shadow=12:d2ca3713572d5eae indirect=12:d2ca3713572d5eae +geom 599: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83981353 motion [] pieces all=12:8d980a8119c93b32 camera=12:8d980a8119c93b32 shadow=12:8d980a8119c93b32 indirect=12:8d980a8119c93b32 +geom 600: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 601: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 602: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 603: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 604: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 605: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 606: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 607: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 608: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 609: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 610: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 611: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 612: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 613: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 614: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /World/dense/Prototypes/pebble +provenance arc source: /World/flat/Prototypes/stone_a +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 614..614 } +provenance geometry 0..500: /World/flat +provenance geometry 500..600: /World/dense +provenance geometry 600..601: /World/pebble/geo +provenance geometry 601..602: /World/away/geo +provenance geometry 602..603: /World/box/geo +provenance geometry 603..604: /World/sunk/geo +provenance geometry 604..605: /World/rock/geo +provenance geometry 605..606: /World/vase/geo +provenance geometry 606..607: /World/steps/geo +provenance geometry 607..608: /World/field/geo +provenance geometry 608..609: /World/slope/geo +provenance geometry 609..610: /World/terrain/geo +provenance geometry 610..611: /World/shelf/geo +provenance geometry 611..612: /World/floor/geo +provenance geometry 612..613: /World/inst +provenance geometry 613..614: /World/crate/geo +provenance geometry 614..615: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 600, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 601, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 602, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 603, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 604, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 605, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 606, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 607, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 608, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 609, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 610, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 611, slot: 9, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 613, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 614, slot: 10, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4345222167175548266, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-7ad6f5aa95ba8499-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-7ad6f5aa95ba8499-1.digest new file mode 100644 index 000000000..ba553ef45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-7ad6f5aa95ba8499-1.digest @@ -0,0 +1,78 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 15 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } top level, PrimitiveBreakdown { triangles: 178, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 14..14 } +provenance geometry 0..1: /World/pebble/geo +provenance geometry 1..2: /World/away/geo +provenance geometry 2..3: /World/box/geo +provenance geometry 3..4: /World/sunk/geo +provenance geometry 4..5: /World/rock/geo +provenance geometry 5..6: /World/vase/geo +provenance geometry 6..7: /World/steps/geo +provenance geometry 7..8: /World/field/geo +provenance geometry 8..9: /World/slope/geo +provenance geometry 9..10: /World/terrain/geo +provenance geometry 10..11: /World/shelf/geo +provenance geometry 11..12: /World/floor/geo +provenance geometry 12..13: /World/inst +provenance geometry 13..14: /World/crate/geo +provenance geometry 14..15: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 11, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 13, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 14, slot: 9, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-1.digest new file mode 100644 index 000000000..ec4a141bb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-1.digest @@ -0,0 +1,585 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/stone_a.usda +layer: $DIR/stone_b.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 515 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 506 } top level, PrimitiveBreakdown { triangles: 202, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 506 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1761441 motion [] pieces all=12:45a862dded98b1c6 camera=12:45a862dded98b1c6 shadow=12:45a862dded98b1c6 indirect=12:45a862dded98b1c6 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8810865 motion [] pieces all=12:64944d265981058e camera=12:64944d265981058e shadow=12:64944d265981058e indirect=12:64944d265981058e +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0232378 motion [] pieces all=12:3388e3ca138a3f1f camera=12:3388e3ca138a3f1f shadow=12:3388e3ca138a3f1f indirect=12:3388e3ca138a3f1f +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99894494 motion [] pieces all=12:fdfa25d8c193c4a0 camera=12:fdfa25d8c193c4a0 shadow=12:fdfa25d8c193c4a0 indirect=12:fdfa25d8c193c4a0 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1065642 motion [] pieces all=12:6955ab4220a0f7f0 camera=12:6955ab4220a0f7f0 shadow=12:6955ab4220a0f7f0 indirect=12:6955ab4220a0f7f0 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80337954 motion [] pieces all=12:e2e3eb04df83a72a camera=12:e2e3eb04df83a72a shadow=12:e2e3eb04df83a72a indirect=12:e2e3eb04df83a72a +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0571522 motion [] pieces all=12:61f3b3daf13919ed camera=12:61f3b3daf13919ed shadow=12:61f3b3daf13919ed indirect=12:61f3b3daf13919ed +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9235039 motion [] pieces all=12:67d2180e9e401524 camera=12:67d2180e9e401524 shadow=12:67d2180e9e401524 indirect=12:67d2180e9e401524 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97259986 motion [] pieces all=12:76d9e29bdce76947 camera=12:76d9e29bdce76947 shadow=12:76d9e29bdce76947 indirect=12:76d9e29bdce76947 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0333868 motion [] pieces all=12:f70acb4c14b57733 camera=12:f70acb4c14b57733 shadow=12:f70acb4c14b57733 indirect=12:f70acb4c14b57733 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8712479 motion [] pieces all=12:a6e3103831c2bb95 camera=12:a6e3103831c2bb95 shadow=12:a6e3103831c2bb95 indirect=12:a6e3103831c2bb95 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1695868 motion [] pieces all=12:b68f582acb9488d9 camera=12:b68f582acb9488d9 shadow=12:b68f582acb9488d9 indirect=12:b68f582acb9488d9 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8319464 motion [] pieces all=12:acbc4ae83f658381 camera=12:acbc4ae83f658381 shadow=12:acbc4ae83f658381 indirect=12:acbc4ae83f658381 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.13118 motion [] pieces all=12:598aa1811e9041e8 camera=12:598aa1811e9041e8 shadow=12:598aa1811e9041e8 indirect=12:598aa1811e9041e8 +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0985051 motion [] pieces all=12:e42f85275179f9eb camera=12:e42f85275179f9eb shadow=12:e42f85275179f9eb indirect=12:e42f85275179f9eb +geom 15: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.930394 motion [] pieces all=12:ecc186bbcfc12323 camera=12:ecc186bbcfc12323 shadow=12:ecc186bbcfc12323 indirect=12:ecc186bbcfc12323 +geom 16: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1146806 motion [] pieces all=12:57da4df43fb578d2 camera=12:57da4df43fb578d2 shadow=12:57da4df43fb578d2 indirect=12:57da4df43fb578d2 +geom 17: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8209351 motion [] pieces all=12:e25b06971fef82ac camera=12:e25b06971fef82ac shadow=12:e25b06971fef82ac indirect=12:e25b06971fef82ac +geom 18: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0663182 motion [] pieces all=12:b307914e162ebd94 camera=12:b307914e162ebd94 shadow=12:b307914e162ebd94 indirect=12:b307914e162ebd94 +geom 19: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9115253 motion [] pieces all=12:24a6e636442db05b camera=12:24a6e636442db05b shadow=12:24a6e636442db05b indirect=12:24a6e636442db05b +geom 20: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1879729 motion [] pieces all=12:481f9cd756cedde0 camera=12:481f9cd756cedde0 shadow=12:481f9cd756cedde0 indirect=12:481f9cd756cedde0 +geom 21: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8957119 motion [] pieces all=12:2d4663e6184de452 camera=12:2d4663e6184de452 shadow=12:2d4663e6184de452 indirect=12:2d4663e6184de452 +geom 22: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0098108 motion [] pieces all=12:b0bb69961ba75478 camera=12:b0bb69961ba75478 shadow=12:b0bb69961ba75478 indirect=12:b0bb69961ba75478 +geom 23: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98019165 motion [] pieces all=12:b9afdaa931bffdb6 camera=12:b9afdaa931bffdb6 shadow=12:b9afdaa931bffdb6 indirect=12:b9afdaa931bffdb6 +geom 24: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0813562 motion [] pieces all=12:f5d0fb106b756265 camera=12:f5d0fb106b756265 shadow=12:f5d0fb106b756265 indirect=12:f5d0fb106b756265 +geom 25: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94515204 motion [] pieces all=12:089190d039cd8f05 camera=12:089190d039cd8f05 shadow=12:089190d039cd8f05 indirect=12:089190d039cd8f05 +geom 26: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84345704 motion [] pieces all=12:e26f0d45af850c90 camera=12:e26f0d45af850c90 shadow=12:e26f0d45af850c90 indirect=12:e26f0d45af850c90 +geom 27: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1462855 motion [] pieces all=12:b6f87466c44a00c9 camera=12:b6f87466c44a00c9 shadow=12:b6f87466c44a00c9 indirect=12:b6f87466c44a00c9 +geom 28: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1544222 motion [] pieces all=12:797d242554fe864a camera=12:797d242554fe864a shadow=12:797d242554fe864a indirect=12:797d242554fe864a +geom 29: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.86153686 motion [] pieces all=12:be846117a4ea7801 camera=12:be846117a4ea7801 shadow=12:be846117a4ea7801 indirect=12:be846117a4ea7801 +geom 30: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0419827 motion [] pieces all=12:6ddf27426dad80b8 camera=12:6ddf27426dad80b8 shadow=12:6ddf27426dad80b8 indirect=12:6ddf27426dad80b8 +geom 31: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9549145 motion [] pieces all=12:3f3d2de984f016e1 camera=12:3f3d2de984f016e1 shadow=12:3f3d2de984f016e1 indirect=12:3f3d2de984f016e1 +geom 32: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1013982 motion [] pieces all=12:d325740a4c504329 camera=12:d325740a4c504329 shadow=12:d325740a4c504329 indirect=12:d325740a4c504329 +geom 33: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8114375 motion [] pieces all=12:f529c99ebd35ea5e camera=12:f529c99ebd35ea5e shadow=12:f529c99ebd35ea5e indirect=12:f529c99ebd35ea5e +geom 34: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0561118 motion [] pieces all=12:3b32daf9fb97191e camera=12:3b32daf9fb97191e shadow=12:3b32daf9fb97191e indirect=12:3b32daf9fb97191e +geom 35: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91436315 motion [] pieces all=12:9336514ad2a50746 camera=12:9336514ad2a50746 shadow=12:9336514ad2a50746 indirect=12:9336514ad2a50746 +geom 36: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8854387 motion [] pieces all=12:ee06eb3bb41cf5e3 camera=12:ee06eb3bb41cf5e3 shadow=12:ee06eb3bb41cf5e3 indirect=12:ee06eb3bb41cf5e3 +geom 37: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1826364 motion [] pieces all=12:6ab824c87ddbb42e camera=12:6ab824c87ddbb42e shadow=12:6ab824c87ddbb42e indirect=12:6ab824c87ddbb42e +geom 38: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98780096 motion [] pieces all=12:3e246edc11785421 camera=12:3e246edc11785421 shadow=12:3e246edc11785421 indirect=12:3e246edc11785421 +geom 39: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0161881 motion [] pieces all=12:460bcfda839b7475 camera=12:460bcfda839b7475 shadow=12:460bcfda839b7475 indirect=12:460bcfda839b7475 +geom 40: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1313198 motion [] pieces all=12:1df02a18f6ef0cb0 camera=12:1df02a18f6ef0cb0 shadow=12:1df02a18f6ef0cb0 indirect=12:1df02a18f6ef0cb0 +geom 41: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8307075 motion [] pieces all=12:e5bd325c9cc63258 camera=12:e5bd325c9cc63258 shadow=12:e5bd325c9cc63258 indirect=12:e5bd325c9cc63258 +geom 42: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93608296 motion [] pieces all=12:eaf20bfe2d9d2ea8 camera=12:eaf20bfe2d9d2ea8 shadow=12:eaf20bfe2d9d2ea8 indirect=12:eaf20bfe2d9d2ea8 +geom 43: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0927486 motion [] pieces all=12:0b46814b8788d10c camera=12:0b46814b8788d10c shadow=12:0b46814b8788d10c indirect=12:0b46814b8788d10c +geom 44: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9677548 motion [] pieces all=12:a11085306be96c79 camera=12:a11085306be96c79 shadow=12:a11085306be96c79 indirect=12:a11085306be96c79 +geom 45: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0287622 motion [] pieces all=12:a2e4e83ee9235718 camera=12:a2e4e83ee9235718 shadow=12:a2e4e83ee9235718 indirect=12:a2e4e83ee9235718 +geom 46: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.867445 motion [] pieces all=12:52a12ca2ad2269a0 camera=12:52a12ca2ad2269a0 shadow=12:52a12ca2ad2269a0 indirect=12:52a12ca2ad2269a0 +geom 47: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1652948 motion [] pieces all=12:8ac666cdc9aed126 camera=12:8ac666cdc9aed126 shadow=12:8ac666cdc9aed126 indirect=12:8ac666cdc9aed126 +geom 48: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1573718 motion [] pieces all=12:dc22e4e0c3a563c5 camera=12:dc22e4e0c3a563c5 shadow=12:dc22e4e0c3a563c5 indirect=12:dc22e4e0c3a563c5 +geom 49: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8516039 motion [] pieces all=12:d5439bf95adb5d29 camera=12:d5439bf95adb5d29 shadow=12:d5439bf95adb5d29 indirect=12:d5439bf95adb5d29 +geom 50: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.957956 motion [] pieces all=12:a2366eb57be17947 camera=12:a2366eb57be17947 shadow=12:a2366eb57be17947 indirect=12:a2366eb57be17947 +geom 51: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476611 motion [] pieces all=12:aa424a427bf1da18 camera=12:aa424a427bf1da18 shadow=12:aa424a427bf1da18 indirect=12:aa424a427bf1da18 +geom 52: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94141537 motion [] pieces all=12:439332df7477a2f0 camera=12:439332df7477a2f0 shadow=12:439332df7477a2f0 indirect=12:439332df7477a2f0 +geom 53: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0779837 motion [] pieces all=12:050de2f979a00214 camera=12:050de2f979a00214 shadow=12:050de2f979a00214 indirect=12:050de2f979a00214 +geom 54: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84913945 motion [] pieces all=12:d359da50fe63fc4e camera=12:d359da50fe63fc4e shadow=12:d359da50fe63fc4e indirect=12:d359da50fe63fc4e +geom 55: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1388466 motion [] pieces all=12:f274bc0e146ac6ec camera=12:f274bc0e146ac6ec shadow=12:f274bc0e146ac6ec indirect=12:f274bc0e146ac6ec +geom 56: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81745243 motion [] pieces all=12:59b88eaab766334e camera=12:59b88eaab766334e shadow=12:59b88eaab766334e indirect=12:59b88eaab766334e +geom 57: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1221887 motion [] pieces all=12:4391248690d8a96c camera=12:4391248690d8a96c shadow=12:4391248690d8a96c indirect=12:4391248690d8a96c +geom 58: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0737523 motion [] pieces all=12:5ca2a2dc5d2ca537 camera=12:5ca2a2dc5d2ca537 shadow=12:5ca2a2dc5d2ca537 indirect=12:5ca2a2dc5d2ca537 +geom 59: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90149456 motion [] pieces all=12:c6c2782f00a068ab camera=12:c6c2782f00a068ab shadow=12:c6c2782f00a068ab indirect=12:c6c2782f00a068ab +geom 60: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98508954 motion [] pieces all=12:75bc6455fa6a273c camera=12:75bc6455fa6a273c shadow=12:75bc6455fa6a273c indirect=12:75bc6455fa6a273c +geom 61: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0035064 motion [] pieces all=12:197384b40f7a87e2 camera=12:197384b40f7a87e2 shadow=12:197384b40f7a87e2 indirect=12:197384b40f7a87e2 +geom 62: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8923537 motion [] pieces all=12:2b6626eb636f521c camera=12:2b6626eb636f521c shadow=12:2b6626eb636f521c indirect=12:2b6626eb636f521c +geom 63: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1949198 motion [] pieces all=12:61af9c9b07f1116d camera=12:61af9c9b07f1116d shadow=12:61af9c9b07f1116d indirect=12:61af9c9b07f1116d +geom 64: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1920719 motion [] pieces all=12:cfd846df87adb0da camera=12:cfd846df87adb0da shadow=12:cfd846df87adb0da indirect=12:cfd846df87adb0da +geom 65: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8984334 motion [] pieces all=12:333d41a0dcb2e201 camera=12:333d41a0dcb2e201 shadow=12:333d41a0dcb2e201 indirect=12:333d41a0dcb2e201 +geom 66: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9751323 motion [] pieces all=12:b7bdd232140c4521 camera=12:b7bdd232140c4521 shadow=12:b7bdd232140c4521 indirect=12:b7bdd232140c4521 +geom 67: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0087382 motion [] pieces all=12:d13ed6cfaf8f058c camera=12:d13ed6cfaf8f058c shadow=12:d13ed6cfaf8f058c indirect=12:d13ed6cfaf8f058c +geom 68: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0648361 motion [] pieces all=12:c21a4efa1141550f camera=12:c21a4efa1141550f shadow=12:c21a4efa1141550f indirect=12:c21a4efa1141550f +geom 69: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90664405 motion [] pieces all=12:c2720b1e01aad493 camera=12:c2720b1e01aad493 shadow=12:c2720b1e01aad493 indirect=12:c2720b1e01aad493 +geom 70: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1171777 motion [] pieces all=12:fad9d3b4cef64b24 camera=12:fad9d3b4cef64b24 shadow=12:fad9d3b4cef64b24 indirect=12:fad9d3b4cef64b24 +geom 71: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.824887 motion [] pieces all=12:f4410e325cd0afb1 camera=12:f4410e325cd0afb1 shadow=12:f4410e325cd0afb1 indirect=12:f4410e325cd0afb1 +geom 72: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9516001 motion [] pieces all=12:cc84d88f692e85a6 camera=12:cc84d88f692e85a6 shadow=12:cc84d88f692e85a6 indirect=12:cc84d88f692e85a6 +geom 73: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0400816 motion [] pieces all=12:e22ab20fe11d8cfe camera=12:e22ab20fe11d8cfe shadow=12:e22ab20fe11d8cfe indirect=12:e22ab20fe11d8cfe +geom 74: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8592531 motion [] pieces all=12:13c0a13a86e249ef camera=12:13c0a13a86e249ef shadow=12:13c0a13a86e249ef indirect=12:13c0a13a86e249ef +geom 75: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1510249 motion [] pieces all=12:1937c664f4367544 camera=12:1937c664f4367544 shadow=12:1937c664f4367544 indirect=12:1937c664f4367544 +geom 76: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0866565 motion [] pieces all=12:5db5fb4d3b4d5b35 camera=12:5db5fb4d3b4d5b35 shadow=12:5db5fb4d3b4d5b35 indirect=12:5db5fb4d3b4d5b35 +geom 77: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9487157 motion [] pieces all=12:d58005e750fb4342 camera=12:d58005e750fb4342 shadow=12:d58005e750fb4342 indirect=12:d58005e750fb4342 +geom 78: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1492283 motion [] pieces all=12:0342164286461ee3 camera=12:0342164286461ee3 shadow=12:0342164286461ee3 indirect=12:0342164286461ee3 +geom 79: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83977586 motion [] pieces all=12:c807827e3075e055 camera=12:c807827e3075e055 shadow=12:c807827e3075e055 indirect=12:c807827e3075e055 +geom 80: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0217434 motion [] pieces all=12:5285ac30cc4da062 camera=12:5285ac30cc4da062 shadow=12:5285ac30cc4da062 indirect=12:5285ac30cc4da062 +geom 81: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9952757 motion [] pieces all=12:10bc56ab6511ed11 camera=12:10bc56ab6511ed11 shadow=12:10bc56ab6511ed11 indirect=12:10bc56ab6511ed11 +geom 82: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87789065 motion [] pieces all=12:b7b3cff366213430 camera=12:b7b3cff366213430 shadow=12:b7b3cff366213430 indirect=12:b7b3cff366213430 +geom 83: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.179131 motion [] pieces all=12:26dba7352b5248dd camera=12:26dba7352b5248dd shadow=12:26dba7352b5248dd indirect=12:26dba7352b5248dd +geom 84: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80048686 motion [] pieces all=12:ca11206893156c4a camera=12:ca11206893156c4a shadow=12:ca11206893156c4a indirect=12:ca11206893156c4a +geom 85: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1101823 motion [] pieces all=12:956ae996e038f15c camera=12:956ae996e038f15c shadow=12:956ae996e038f15c indirect=12:956ae996e038f15c +geom 86: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92086023 motion [] pieces all=12:bb66f238124bf21c camera=12:bb66f238124bf21c shadow=12:bb66f238124bf21c indirect=12:bb66f238124bf21c +geom 87: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0607451 motion [] pieces all=12:bfb452bde61271c1 camera=12:bfb452bde61271c1 shadow=12:bfb452bde61271c1 indirect=12:bfb452bde61271c1 +geom 88: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1730204 motion [] pieces all=12:4202277f53e57a26 camera=12:4202277f53e57a26 shadow=12:4202277f53e57a26 indirect=12:4202277f53e57a26 +geom 89: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8726802 motion [] pieces all=12:bfff37b52c3695b3 camera=12:bfff37b52c3695b3 shadow=12:bfff37b52c3695b3 indirect=12:bfff37b52c3695b3 +geom 90: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0355178 motion [] pieces all=12:d92670a1b5505f3f camera=12:d92670a1b5505f3f shadow=12:d92670a1b5505f3f indirect=12:d92670a1b5505f3f +geom 91: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97155887 motion [] pieces all=12:038043fc4d8f3922 camera=12:038043fc4d8f3922 shadow=12:038043fc4d8f3922 indirect=12:038043fc4d8f3922 +geom 92: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1275393 motion [] pieces all=12:21160187a4422810 camera=12:21160187a4422810 shadow=12:21160187a4422810 indirect=12:21160187a4422810 +geom 93: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83525693 motion [] pieces all=12:222fd24745b9a688 camera=12:222fd24745b9a688 shadow=12:222fd24745b9a688 indirect=12:222fd24745b9a688 +geom 94: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0946484 motion [] pieces all=12:b93a89503d2db429 camera=12:b93a89503d2db429 shadow=12:b93a89503d2db429 indirect=12:b93a89503d2db429 +geom 95: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92521805 motion [] pieces all=12:9deb2e0bd53286f5 camera=12:9deb2e0bd53286f5 shadow=12:9deb2e0bd53286f5 indirect=12:9deb2e0bd53286f5 +geom 96: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0792248 motion [] pieces all=12:c39dad0894dc3c01 camera=12:c39dad0894dc3c01 shadow=12:c39dad0894dc3c01 indirect=12:c39dad0894dc3c01 +geom 97: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.938952 motion [] pieces all=12:82dba3e562b9171c camera=12:82dba3e562b9171c shadow=12:82dba3e562b9171c indirect=12:82dba3e562b9171c +geom 98: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8466961 motion [] pieces all=12:5771a39944397bbc camera=12:5771a39944397bbc shadow=12:5771a39944397bbc indirect=12:5771a39944397bbc +geom 99: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1409111 motion [] pieces all=12:f4f5b1d34830c065 camera=12:f4f5b1d34830c065 shadow=12:f4f5b1d34830c065 indirect=12:f4f5b1d34830c065 +geom 100: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1619297 motion [] pieces all=12:2ac55dd6a5129a82 camera=12:2ac55dd6a5129a82 shadow=12:2ac55dd6a5129a82 indirect=12:2ac55dd6a5129a82 +geom 101: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8545255 motion [] pieces all=12:3318ba1c1ea6cb67 camera=12:3318ba1c1ea6cb67 shadow=12:3318ba1c1ea6cb67 indirect=12:3318ba1c1ea6cb67 +geom 102: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0461638 motion [] pieces all=12:abd06b6ac0d101a8 camera=12:abd06b6ac0d101a8 shadow=12:abd06b6ac0d101a8 indirect=12:abd06b6ac0d101a8 +geom 103: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95997083 motion [] pieces all=12:0e766dd59c7864ea camera=12:0e766dd59c7864ea shadow=12:0e766dd59c7864ea indirect=12:0e766dd59c7864ea +geom 104: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9838973 motion [] pieces all=12:4e51be9913a19574 camera=12:4e51be9913a19574 shadow=12:4e51be9913a19574 indirect=12:4e51be9913a19574 +geom 105: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0016983 motion [] pieces all=12:205b772513a5b2d0 camera=12:205b772513a5b2d0 shadow=12:205b772513a5b2d0 indirect=12:205b772513a5b2d0 +geom 106: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1974854 motion [] pieces all=12:aafd38f582755d75 camera=12:aafd38f582755d75 shadow=12:aafd38f582755d75 indirect=12:aafd38f582755d75 +geom 107: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89059156 motion [] pieces all=12:5e1c6ed9efae70da camera=12:5e1c6ed9efae70da shadow=12:5e1c6ed9efae70da indirect=12:5e1c6ed9efae70da +geom 108: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1189466 motion [] pieces all=12:1ccc269c6db79208 camera=12:1ccc269c6db79208 shadow=12:1ccc269c6db79208 indirect=12:1ccc269c6db79208 +geom 109: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81325066 motion [] pieces all=12:13bc64f0b3663db5 camera=12:13bc64f0b3663db5 shadow=12:13bc64f0b3663db5 indirect=12:13bc64f0b3663db5 +geom 110: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.069818 motion [] pieces all=12:932fe7987a89653d camera=12:932fe7987a89653d shadow=12:932fe7987a89653d indirect=12:932fe7987a89653d +geom 111: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9038211 motion [] pieces all=12:90f5b972915f93b4 camera=12:90f5b972915f93b4 shadow=12:90f5b972915f93b4 indirect=12:90f5b972915f93b4 +geom 112: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1853997 motion [] pieces all=12:8179b93651694931 camera=12:8179b93651694931 shadow=12:8179b93651694931 indirect=12:8179b93651694931 +geom 113: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88160837 motion [] pieces all=12:069fc554995e3ee7 camera=12:069fc554995e3ee7 shadow=12:069fc554995e3ee7 indirect=12:069fc554995e3ee7 +geom 114: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0146524 motion [] pieces all=12:e176080f78b1eb15 camera=12:e176080f78b1eb15 shadow=12:e176080f78b1eb15 indirect=12:e176080f78b1eb15 +geom 115: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99161226 motion [] pieces all=12:ef58b8a0de63d3c4 camera=12:ef58b8a0de63d3c4 shadow=12:ef58b8a0de63d3c4 indirect=12:ef58b8a0de63d3c4 +geom 116: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0511867 motion [] pieces all=12:4b16770c04cd474b camera=12:4b16770c04cd474b shadow=12:4b16770c04cd474b indirect=12:4b16770c04cd474b +geom 117: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9171676 motion [] pieces all=12:609f6f3ddcf1af6d camera=12:609f6f3ddcf1af6d shadow=12:609f6f3ddcf1af6d indirect=12:609f6f3ddcf1af6d +geom 118: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80908626 motion [] pieces all=12:4c035f8f3318d2f6 camera=12:4c035f8f3318d2f6 shadow=12:4c035f8f3318d2f6 indirect=12:4c035f8f3318d2f6 +geom 119: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.103263 motion [] pieces all=12:700889d040a6e4dd camera=12:700889d040a6e4dd shadow=12:700889d040a6e4dd indirect=12:700889d040a6e4dd +geom 120: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8642026 motion [] pieces all=12:6e10e505ba86c48e camera=12:6e10e505ba86c48e shadow=12:6e10e505ba86c48e indirect=12:6e10e505ba86c48e +geom 121: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1678903 motion [] pieces all=12:3582f8fba0915f4a camera=12:3582f8fba0915f4a shadow=12:3582f8fba0915f4a indirect=12:3582f8fba0915f4a +geom 122: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9633117 motion [] pieces all=12:2040ef2ac8c3a93d camera=12:2040ef2ac8c3a93d shadow=12:2040ef2ac8c3a93d indirect=12:2040ef2ac8c3a93d +geom 123: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0253445 motion [] pieces all=12:a91be1fa2268d70b camera=12:a91be1fa2268d70b shadow=12:a91be1fa2268d70b indirect=12:a91be1fa2268d70b +geom 124: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.13635 motion [] pieces all=12:9e7372e64ec5bb9d camera=12:9e7372e64ec5bb9d shadow=12:9e7372e64ec5bb9d indirect=12:9e7372e64ec5bb9d +geom 125: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8252184 motion [] pieces all=12:27afe71487c8acfc camera=12:27afe71487c8acfc shadow=12:27afe71487c8acfc indirect=12:27afe71487c8acfc +geom 126: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0885826 motion [] pieces all=12:c9ce7a955379bf47 camera=12:c9ce7a955379bf47 shadow=12:c9ce7a955379bf47 indirect=12:c9ce7a955379bf47 +geom 127: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9313929 motion [] pieces all=12:f936746ea9fdaa67 camera=12:f936746ea9fdaa67 shadow=12:f936746ea9fdaa67 indirect=12:f936746ea9fdaa67 +geom 128: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0906614 motion [] pieces all=12:e6990c8db4ea9e79 camera=12:e6990c8db4ea9e79 shadow=12:e6990c8db4ea9e79 indirect=12:e6990c8db4ea9e79 +geom 129: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93495494 motion [] pieces all=12:75b610907ba3ea9b camera=12:75b610907ba3ea9b shadow=12:75b610907ba3ea9b indirect=12:75b610907ba3ea9b +geom 130: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82858384 motion [] pieces all=12:e78b8cafbe306a32 camera=12:e78b8cafbe306a32 shadow=12:e78b8cafbe306a32 indirect=12:e78b8cafbe306a32 +geom 131: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1339966 motion [] pieces all=12:b9ac9a14840ed1f6 camera=12:b9ac9a14840ed1f6 shadow=12:b9ac9a14840ed1f6 indirect=12:b9ac9a14840ed1f6 +geom 132: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8659113 motion [] pieces all=12:b1a9a739c1c000bc camera=12:b1a9a739c1c000bc shadow=12:b1a9a739c1c000bc indirect=12:b1a9a739c1c000bc +geom 133: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1626551 motion [] pieces all=12:9f5c63d26cf251c1 camera=12:9f5c63d26cf251c1 shadow=12:9f5c63d26cf251c1 indirect=12:9f5c63d26cf251c1 +geom 134: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96570367 motion [] pieces all=12:e82835f20fda3a2d camera=12:e82835f20fda3a2d shadow=12:e82835f20fda3a2d indirect=12:e82835f20fda3a2d +geom 135: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0299364 motion [] pieces all=12:a9c34018dedecc29 camera=12:a9c34018dedecc29 shadow=12:a9c34018dedecc29 indirect=12:a9c34018dedecc29 +geom 136: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0544772 motion [] pieces all=12:f171c63901b9cd24 camera=12:f171c63901b9cd24 shadow=12:f171c63901b9cd24 indirect=12:f171c63901b9cd24 +geom 137: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9139284 motion [] pieces all=12:66942b3dbac18127 camera=12:66942b3dbac18127 shadow=12:66942b3dbac18127 indirect=12:66942b3dbac18127 +geom 138: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.103051 motion [] pieces all=12:0c9467685e6faf9b camera=12:0c9467685e6faf9b shadow=12:0c9467685e6faf9b indirect=12:0c9467685e6faf9b +geom 139: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81037587 motion [] pieces all=12:4628207e87532cd9 camera=12:4628207e87532cd9 shadow=12:4628207e87532cd9 indirect=12:4628207e87532cd9 +geom 140: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0183249 motion [] pieces all=12:865fd372ca38e7d5 camera=12:865fd372ca38e7d5 shadow=12:865fd372ca38e7d5 indirect=12:865fd372ca38e7d5 +geom 141: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99033916 motion [] pieces all=12:fd4547bf3f39772e camera=12:fd4547bf3f39772e shadow=12:fd4547bf3f39772e indirect=12:fd4547bf3f39772e +geom 142: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1833695 motion [] pieces all=12:4718ab9f74de7af5 camera=12:4718ab9f74de7af5 shadow=12:4718ab9f74de7af5 indirect=12:4718ab9f74de7af5 +geom 143: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8870931 motion [] pieces all=12:f073ad6af47da1b9 camera=12:f073ad6af47da1b9 shadow=12:f073ad6af47da1b9 indirect=12:f073ad6af47da1b9 +geom 144: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0751863 motion [] pieces all=12:469243371e3601c4 camera=12:469243371e3601c4 shadow=12:469243371e3601c4 indirect=12:469243371e3601c4 +geom 145: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94338113 motion [] pieces all=12:242ede1ac82d2838 camera=12:242ede1ac82d2838 shadow=12:242ede1ac82d2838 indirect=12:242ede1ac82d2838 +geom 146: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1404334 motion [] pieces all=12:6ae0e374492b1345 camera=12:6ae0e374492b1345 shadow=12:6ae0e374492b1345 indirect=12:6ae0e374492b1345 +geom 147: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84811646 motion [] pieces all=12:7fc28f36f60f9e79 camera=12:7fc28f36f60f9e79 shadow=12:7fc28f36f60f9e79 indirect=12:7fc28f36f60f9e79 +geom 148: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1578814 motion [] pieces all=12:004bab5661b3c514 camera=12:004bab5661b3c514 shadow=12:004bab5661b3c514 indirect=12:004bab5661b3c514 +geom 149: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8510541 motion [] pieces all=12:06ee30278c301b97 camera=12:06ee30278c301b97 shadow=12:06ee30278c301b97 indirect=12:06ee30278c301b97 +geom 150: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95639116 motion [] pieces all=12:0cc69f7eab6608d5 camera=12:0cc69f7eab6608d5 shadow=12:0cc69f7eab6608d5 indirect=12:0cc69f7eab6608d5 +geom 151: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0488136 motion [] pieces all=12:84683631bf3f2d7f camera=12:84683631bf3f2d7f shadow=12:84683631bf3f2d7f indirect=12:84683631bf3f2d7f +geom 152: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1240493 motion [] pieces all=12:09e0339043c05885 camera=12:09e0339043c05885 shadow=12:09e0339043c05885 indirect=12:09e0339043c05885 +geom 153: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81715965 motion [] pieces all=12:baff44b23fa2fe8c camera=12:baff44b23fa2fe8c shadow=12:baff44b23fa2fe8c indirect=12:baff44b23fa2fe8c +geom 154: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.072348 motion [] pieces all=12:7f07f015aba3675f camera=12:7f07f015aba3675f shadow=12:7f07f015aba3675f indirect=12:7f07f015aba3675f +geom 155: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9028523 motion [] pieces all=12:e544345b30b64bce camera=12:e544345b30b64bce shadow=12:e544345b30b64bce indirect=12:e544345b30b64bce +geom 156: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.195409 motion [] pieces all=12:bf44779c62a0d1d9 camera=12:bf44779c62a0d1d9 shadow=12:bf44779c62a0d1d9 indirect=12:bf44779c62a0d1d9 +geom 157: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8909322 motion [] pieces all=12:d9444d58a4aa29bf camera=12:d9444d58a4aa29bf shadow=12:d9444d58a4aa29bf indirect=12:d9444d58a4aa29bf +geom 158: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0053203 motion [] pieces all=12:f5a72299b44a6f83 camera=12:f5a72299b44a6f83 shadow=12:f5a72299b44a6f83 indirect=12:f5a72299b44a6f83 +geom 159: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9874529 motion [] pieces all=12:478c430d181f0449 camera=12:478c430d181f0449 shadow=12:478c430d181f0449 indirect=12:478c430d181f0449 +geom 160: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.833996 motion [] pieces all=12:4f2c575953df9f82 camera=12:4f2c575953df9f82 shadow=12:4f2c575953df9f82 indirect=12:4f2c575953df9f82 +geom 161: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.129332 motion [] pieces all=12:858c4460ee11a801 camera=12:858c4460ee11a801 shadow=12:858c4460ee11a801 indirect=12:858c4460ee11a801 +geom 162: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9295599 motion [] pieces all=12:e49c9cd7bb7700e3 camera=12:e49c9cd7bb7700e3 shadow=12:e49c9cd7bb7700e3 indirect=12:e49c9cd7bb7700e3 +geom 163: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0982622 motion [] pieces all=12:dc41ad73cd114385 camera=12:dc41ad73cd114385 shadow=12:dc41ad73cd114385 indirect=12:dc41ad73cd114385 +geom 164: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97451484 motion [] pieces all=12:09af8565fc3d201d camera=12:09af8565fc3d201d shadow=12:09af8565fc3d201d indirect=12:09af8565fc3d201d +geom 165: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0320674 motion [] pieces all=12:9f9b6a360e10adbb camera=12:9f9b6a360e10adbb shadow=12:9f9b6a360e10adbb indirect=12:9f9b6a360e10adbb +geom 166: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1709979 motion [] pieces all=12:99d2f51f4821115d camera=12:99d2f51f4821115d shadow=12:99d2f51f4821115d indirect=12:99d2f51f4821115d +geom 167: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8691917 motion [] pieces all=12:0d56e690544efec0 camera=12:0d56e690544efec0 shadow=12:0d56e690544efec0 indirect=12:0d56e690544efec0 +geom 168: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87965363 motion [] pieces all=12:827e12ddbf252fb5 camera=12:827e12ddbf252fb5 shadow=12:827e12ddbf252fb5 indirect=12:827e12ddbf252fb5 +geom 169: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1770281 motion [] pieces all=12:88a6fafd5aaa039d camera=12:88a6fafd5aaa039d shadow=12:88a6fafd5aaa039d indirect=12:88a6fafd5aaa039d +geom 170: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9975212 motion [] pieces all=12:f46016e89c458233 camera=12:f46016e89c458233 shadow=12:f46016e89c458233 indirect=12:f46016e89c458233 +geom 171: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0249971 motion [] pieces all=12:d662864dd505c55e camera=12:d662864dd505c55e shadow=12:d662864dd505c55e indirect=12:d662864dd505c55e +geom 172: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92243314 motion [] pieces all=12:f342c3a2ed6b0950 camera=12:f342c3a2ed6b0950 shadow=12:f342c3a2ed6b0950 indirect=12:f342c3a2ed6b0950 +geom 173: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0585103 motion [] pieces all=12:ee7ff15f2424922f camera=12:ee7ff15f2424922f shadow=12:ee7ff15f2424922f indirect=12:ee7ff15f2424922f +geom 174: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1082776 motion [] pieces all=12:86ef859898372a65 camera=12:86ef859898372a65 shadow=12:86ef859898372a65 indirect=12:86ef859898372a65 +geom 175: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80569136 motion [] pieces all=12:9ec313ad6c2136d1 camera=12:9ec313ad6c2136d1 shadow=12:9ec313ad6c2136d1 indirect=12:9ec313ad6c2136d1 +geom 176: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9787432 motion [] pieces all=12:2dde1f02614bce01 camera=12:2dde1f02614bce01 shadow=12:2dde1f02614bce01 indirect=12:2dde1f02614bce01 +geom 177: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0118738 motion [] pieces all=12:aafadba605d03110 camera=12:aafadba605d03110 shadow=12:aafadba605d03110 indirect=12:aafadba605d03110 +geom 178: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89458597 motion [] pieces all=12:21e27892f962ac44 camera=12:21e27892f962ac44 shadow=12:21e27892f962ac44 indirect=12:21e27892f962ac44 +geom 179: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.190431 motion [] pieces all=12:6675c70617e67d8a camera=12:6675c70617e67d8a shadow=12:6675c70617e67d8a indirect=12:6675c70617e67d8a +geom 180: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0687202 motion [] pieces all=12:c5167e2e7d81c2ff camera=12:c5167e2e7d81c2ff shadow=12:c5167e2e7d81c2ff indirect=12:c5167e2e7d81c2ff +geom 181: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91078526 motion [] pieces all=12:48e2cb88cfa05576 camera=12:48e2cb88cfa05576 shadow=12:48e2cb88cfa05576 indirect=12:48e2cb88cfa05576 +geom 182: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1132085 motion [] pieces all=12:043069344a3076c2 camera=12:043069344a3076c2 shadow=12:043069344a3076c2 indirect=12:043069344a3076c2 +geom 183: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81958956 motion [] pieces all=12:b6a3b6188b4b31bf camera=12:b6a3b6188b4b31bf shadow=12:b6a3b6188b4b31bf indirect=12:b6a3b6188b4b31bf +geom 184: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95427895 motion [] pieces all=12:c001bd0dad9ff844 camera=12:c001bd0dad9ff844 shadow=12:c001bd0dad9ff844 indirect=12:c001bd0dad9ff844 +geom 185: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0434186 motion [] pieces all=12:0b59ff7e43848943 camera=12:0b59ff7e43848943 shadow=12:0b59ff7e43848943 indirect=12:0b59ff7e43848943 +geom 186: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1551938 motion [] pieces all=12:5218f56e8786a8d1 camera=12:5218f56e8786a8d1 shadow=12:5218f56e8786a8d1 indirect=12:5218f56e8786a8d1 +geom 187: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8595143 motion [] pieces all=12:4a7806cbcbb88531 camera=12:4a7806cbcbb88531 shadow=12:4a7806cbcbb88531 indirect=12:4a7806cbcbb88531 +geom 188: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8408943 motion [] pieces all=12:7f3b442d9e722de1 camera=12:7f3b442d9e722de1 shadow=12:7f3b442d9e722de1 indirect=12:7f3b442d9e722de1 +geom 189: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1452442 motion [] pieces all=12:e0d5bbe9bb208a1d camera=12:e0d5bbe9bb208a1d shadow=12:e0d5bbe9bb208a1d indirect=12:e0d5bbe9bb208a1d +geom 190: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9464676 motion [] pieces all=12:b085d7918bf6355b camera=12:b085d7918bf6355b shadow=12:b085d7918bf6355b indirect=12:b085d7918bf6355b +geom 191: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0834273 motion [] pieces all=12:abe6c6954e3382a9 camera=12:abe6c6954e3382a9 shadow=12:abe6c6954e3382a9 indirect=12:abe6c6954e3382a9 +geom 192: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8574602 motion [] pieces all=12:71ee11b13c594ff9 camera=12:71ee11b13c594ff9 shadow=12:71ee11b13c594ff9 indirect=12:71ee11b13c594ff9 +geom 193: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.151815 motion [] pieces all=12:dbe2a094f9f5dd6a camera=12:dbe2a094f9f5dd6a shadow=12:dbe2a094f9f5dd6a indirect=12:dbe2a094f9f5dd6a +geom 194: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0380479 motion [] pieces all=12:287aaeeaee0c366b camera=12:287aaeeaee0c366b shadow=12:287aaeeaee0c366b indirect=12:287aaeeaee0c366b +geom 195: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95154804 motion [] pieces all=12:4846d4ce61cd070a camera=12:4846d4ce61cd070a shadow=12:4846d4ce61cd070a indirect=12:4846d4ce61cd070a +geom 196: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0853423 motion [] pieces all=12:668675de6db22ea9 camera=12:668675de6db22ea9 shadow=12:668675de6db22ea9 indirect=12:668675de6db22ea9 +geom 197: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9481686 motion [] pieces all=12:b2176c9e3a8bd6be camera=12:b2176c9e3a8bd6be shadow=12:b2176c9e3a8bd6be indirect=12:b2176c9e3a8bd6be +geom 198: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.148388 motion [] pieces all=12:1b5bfe08d8aecf46 camera=12:1b5bfe08d8aecf46 shadow=12:1b5bfe08d8aecf46 indirect=12:1b5bfe08d8aecf46 +geom 199: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8388503 motion [] pieces all=12:ed6a27aa851d98b4 camera=12:ed6a27aa851d98b4 shadow=12:ed6a27aa851d98b4 indirect=12:ed6a27aa851d98b4 +geom 200: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1177161 motion [] pieces all=12:477f446ff91418fe camera=12:477f446ff91418fe shadow=12:477f446ff91418fe indirect=12:477f446ff91418fe +geom 201: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.821902 motion [] pieces all=12:e45df0929b4a7a20 camera=12:e45df0929b4a7a20 shadow=12:e45df0929b4a7a20 indirect=12:e45df0929b4a7a20 +geom 202: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9081097 motion [] pieces all=12:d8ac1550c1d701d3 camera=12:d8ac1550c1d701d3 shadow=12:d8ac1550c1d701d3 indirect=12:d8ac1550c1d701d3 +geom 203: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0630432 motion [] pieces all=12:4bf7c09967756dab camera=12:4bf7c09967756dab shadow=12:4bf7c09967756dab indirect=12:4bf7c09967756dab +geom 204: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0076557 motion [] pieces all=12:4b743cdcfe182631 camera=12:4b743cdcfe182631 shadow=12:4b743cdcfe182631 indirect=12:4b743cdcfe182631 +geom 205: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97757643 motion [] pieces all=12:ce244f01fc616d6d camera=12:ce244f01fc616d6d shadow=12:ce244f01fc616d6d indirect=12:ce244f01fc616d6d +geom 206: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1927692 motion [] pieces all=12:3680ff2a1925c2b8 camera=12:3680ff2a1925c2b8 shadow=12:3680ff2a1925c2b8 indirect=12:3680ff2a1925c2b8 +geom 207: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8998191 motion [] pieces all=12:631eb32618265a1d camera=12:631eb32618265a1d shadow=12:631eb32618265a1d indirect=12:631eb32618265a1d +geom 208: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0190506 motion [] pieces all=12:ecbbd67d5ea82535 camera=12:ecbbd67d5ea82535 shadow=12:ecbbd67d5ea82535 indirect=12:ecbbd67d5ea82535 +geom 209: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99540603 motion [] pieces all=12:3ff8d546f9bdd0fb camera=12:3ff8d546f9bdd0fb shadow=12:3ff8d546f9bdd0fb indirect=12:3ff8d546f9bdd0fb +geom 210: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1799959 motion [] pieces all=12:2317ef2a031d8f47 camera=12:2317ef2a031d8f47 shadow=12:2317ef2a031d8f47 indirect=12:2317ef2a031d8f47 +geom 211: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87620467 motion [] pieces all=12:1779aa23bb0f9042 camera=12:1779aa23bb0f9042 shadow=12:1779aa23bb0f9042 indirect=12:1779aa23bb0f9042 +geom 212: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1119057 motion [] pieces all=12:91f1de75efe1ff66 camera=12:91f1de75efe1ff66 shadow=12:91f1de75efe1ff66 indirect=12:91f1de75efe1ff66 +geom 213: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8029353 motion [] pieces all=12:504fea94e49e26b5 camera=12:504fea94e49e26b5 shadow=12:504fea94e49e26b5 indirect=12:504fea94e49e26b5 +geom 214: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9190664 motion [] pieces all=12:0efb54b7f23ac443 camera=12:0efb54b7f23ac443 shadow=12:0efb54b7f23ac443 indirect=12:0efb54b7f23ac443 +geom 215: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0612158 motion [] pieces all=12:55a92efc8135fc5d camera=12:55a92efc8135fc5d shadow=12:55a92efc8135fc5d indirect=12:55a92efc8135fc5d +geom 216: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1734748 motion [] pieces all=12:a620be5aa9925d00 camera=12:a620be5aa9925d00 shadow=12:a620be5aa9925d00 indirect=12:a620be5aa9925d00 +geom 217: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8742897 motion [] pieces all=12:c2fbfc60af19f0d0 camera=12:c2fbfc60af19f0d0 shadow=12:c2fbfc60af19f0d0 indirect=12:c2fbfc60af19f0d0 +geom 218: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0368638 motion [] pieces all=12:fd178773edcdb210 camera=12:fd178773edcdb210 shadow=12:fd178773edcdb210 indirect=12:fd178773edcdb210 +geom 219: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9695358 motion [] pieces all=12:92c10878d7799c47 camera=12:92c10878d7799c47 shadow=12:92c10878d7799c47 indirect=12:92c10878d7799c47 +geom 220: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83632326 motion [] pieces all=12:56eef0396f98b12d camera=12:56eef0396f98b12d shadow=12:56eef0396f98b12d indirect=12:56eef0396f98b12d +geom 221: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.125916 motion [] pieces all=12:2ee3e4102b2ca7c0 camera=12:2ee3e4102b2ca7c0 shadow=12:2ee3e4102b2ca7c0 indirect=12:2ee3e4102b2ca7c0 +geom 222: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92677325 motion [] pieces all=12:9c793be4df2804bc camera=12:9c793be4df2804bc shadow=12:9c793be4df2804bc indirect=12:9c793be4df2804bc +geom 223: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.096751 motion [] pieces all=12:b6735b8f2a80f193 camera=12:b6735b8f2a80f193 shadow=12:b6735b8f2a80f193 indirect=12:b6735b8f2a80f193 +geom 224: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99294955 motion [] pieces all=12:e14d605bbad5054b camera=12:e14d605bbad5054b shadow=12:e14d605bbad5054b indirect=12:e14d605bbad5054b +geom 225: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0129327 motion [] pieces all=12:ce70384139f3d953 camera=12:ce70384139f3d953 shadow=12:ce70384139f3d953 indirect=12:ce70384139f3d953 +geom 226: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8834852 motion [] pieces all=12:f275b69e8465276d camera=12:f275b69e8465276d shadow=12:f275b69e8465276d indirect=12:f275b69e8465276d +geom 227: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1862364 motion [] pieces all=12:73a525c8a7cfebfc camera=12:73a525c8a7cfebfc shadow=12:73a525c8a7cfebfc indirect=12:73a525c8a7cfebfc +geom 228: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80695534 motion [] pieces all=12:4fc4787ac53c19ae camera=12:4fc4787ac53c19ae shadow=12:4fc4787ac53c19ae indirect=12:4fc4787ac53c19ae +geom 229: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1052685 motion [] pieces all=12:5f526759f00f8bb1 camera=12:5f526759f00f8bb1 shadow=12:5f526759f00f8bb1 indirect=12:5f526759f00f8bb1 +geom 230: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0517714 motion [] pieces all=12:43a08224d7f3a5ff camera=12:43a08224d7f3a5ff shadow=12:43a08224d7f3a5ff indirect=12:43a08224d7f3a5ff +geom 231: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9183691 motion [] pieces all=12:4e8261fe621a8754 camera=12:4e8261fe621a8754 shadow=12:4e8261fe621a8754 indirect=12:4e8261fe621a8754 +geom 232: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0896878 motion [] pieces all=12:2105a034e5acb921 camera=12:2105a034e5acb921 shadow=12:2105a034e5acb921 indirect=12:2105a034e5acb921 +geom 233: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93423206 motion [] pieces all=12:47b70feddcfef5c4 camera=12:47b70feddcfef5c4 shadow=12:47b70feddcfef5c4 indirect=12:47b70feddcfef5c4 +geom 234: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1348141 motion [] pieces all=12:c150c564a2f639e3 camera=12:c150c564a2f639e3 shadow=12:c150c564a2f639e3 indirect=12:c150c564a2f639e3 +geom 235: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8272541 motion [] pieces all=12:9a036bb10f2a8c19 camera=12:9a036bb10f2a8c19 shadow=12:9a036bb10f2a8c19 indirect=12:9a036bb10f2a8c19 +geom 236: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8628023 motion [] pieces all=12:df84cc6ab0cf1013 camera=12:df84cc6ab0cf1013 shadow=12:df84cc6ab0cf1013 indirect=12:df84cc6ab0cf1013 +geom 237: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1667898 motion [] pieces all=12:ea055c935781e4b2 camera=12:ea055c935781e4b2 shadow=12:ea055c935781e4b2 indirect=12:ea055c935781e4b2 +geom 238: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0272492 motion [] pieces all=12:b666550bc7f3f2e3 camera=12:b666550bc7f3f2e3 shadow=12:b666550bc7f3f2e3 indirect=12:b666550bc7f3f2e3 +geom 239: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9644636 motion [] pieces all=12:25b40fe1e3b33c13 camera=12:25b40fe1e3b33c13 shadow=12:25b40fe1e3b33c13 indirect=12:25b40fe1e3b33c13 +geom 240: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9401488 motion [] pieces all=12:ef193e56f1c675ad camera=12:ef193e56f1c675ad shadow=12:ef193e56f1c675ad indirect=12:ef193e56f1c675ad +geom 241: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0806658 motion [] pieces all=12:6cd8d81131f613a5 camera=12:6cd8d81131f613a5 shadow=12:6cd8d81131f613a5 indirect=12:6cd8d81131f613a5 +geom 242: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84431666 motion [] pieces all=12:75d58887322e3c92 camera=12:75d58887322e3c92 shadow=12:75d58887322e3c92 indirect=12:75d58887322e3c92 +geom 243: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1427468 motion [] pieces all=12:ceb6c2a84e7313ea camera=12:ceb6c2a84e7313ea shadow=12:ceb6c2a84e7313ea indirect=12:ceb6c2a84e7313ea +geom 244: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8558955 motion [] pieces all=12:966eb51da03b3092 camera=12:966eb51da03b3092 shadow=12:966eb51da03b3092 indirect=12:966eb51da03b3092 +geom 245: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1608133 motion [] pieces all=12:4684046ad71d3941 camera=12:4684046ad71d3941 shadow=12:4684046ad71d3941 indirect=12:4684046ad71d3941 +geom 246: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0448556 motion [] pieces all=12:8909f2f12790188f camera=12:8909f2f12790188f shadow=12:8909f2f12790188f indirect=12:8909f2f12790188f +geom 247: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9619815 motion [] pieces all=12:e68d935303781b60 camera=12:e68d935303781b60 shadow=12:e68d935303781b60 indirect=12:e68d935303781b60 +geom 248: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9050406 motion [] pieces all=12:77e1fb7c3ccd3b72 camera=12:77e1fb7c3ccd3b72 shadow=12:77e1fb7c3ccd3b72 indirect=12:77e1fb7c3ccd3b72 +geom 249: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0704575 motion [] pieces all=12:bf814629e90eb2a6 camera=12:bf814629e90eb2a6 shadow=12:bf814629e90eb2a6 indirect=12:bf814629e90eb2a6 +geom 250: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8142105 motion [] pieces all=12:3e101c8e3b9023da camera=12:3e101c8e3b9023da shadow=12:3e101c8e3b9023da indirect=12:3e101c8e3b9023da +geom 251: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1210591 motion [] pieces all=12:adeb9df8e5336e1e camera=12:adeb9df8e5336e1e shadow=12:adeb9df8e5336e1e indirect=12:adeb9df8e5336e1e +geom 252: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0009634 motion [] pieces all=12:243ce4af91f5aa9f camera=12:243ce4af91f5aa9f shadow=12:243ce4af91f5aa9f indirect=12:243ce4af91f5aa9f +geom 253: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9823128 motion [] pieces all=12:930bc470da7bfca0 camera=12:930bc470da7bfca0 shadow=12:930bc470da7bfca0 indirect=12:930bc470da7bfca0 +geom 254: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1997087 motion [] pieces all=12:0eed12db9d57f617 camera=12:0eed12db9d57f617 shadow=12:0eed12db9d57f617 indirect=12:0eed12db9d57f617 +geom 255: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8885824 motion [] pieces all=12:085bce0e053ac672 camera=12:085bce0e053ac672 shadow=12:085bce0e053ac672 indirect=12:085bce0e053ac672 +geom 256: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1071253 motion [] pieces all=12:558e90753a1dbe0c camera=12:558e90753a1dbe0c shadow=12:558e90753a1dbe0c indirect=12:558e90753a1dbe0c +geom 257: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80412865 motion [] pieces all=12:438f0ac0ef81a15c camera=12:438f0ac0ef81a15c shadow=12:438f0ac0ef81a15c indirect=12:438f0ac0ef81a15c +geom 258: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.056387 motion [] pieces all=12:532e9c68579ceebf camera=12:532e9c68579ceebf shadow=12:532e9c68579ceebf indirect=12:532e9c68579ceebf +geom 259: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92466545 motion [] pieces all=12:8bd67b0e1ac0a9c5 camera=12:8bd67b0e1ac0a9c5 shadow=12:8bd67b0e1ac0a9c5 indirect=12:8bd67b0e1ac0a9c5 +geom 260: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0224771 motion [] pieces all=12:db8f1a9cc1fdd115 camera=12:db8f1a9cc1fdd115 shadow=12:db8f1a9cc1fdd115 indirect=12:db8f1a9cc1fdd115 +geom 261: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9992335 motion [] pieces all=12:c12fef72270cd9b9 camera=12:c12fef72270cd9b9 shadow=12:c12fef72270cd9b9 indirect=12:c12fef72270cd9b9 +geom 262: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8799568 motion [] pieces all=12:99f42a5ee0052055 camera=12:99f42a5ee0052055 shadow=12:99f42a5ee0052055 indirect=12:99f42a5ee0052055 +geom 263: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1754391 motion [] pieces all=12:aec0913446abacc1 camera=12:aec0913446abacc1 shadow=12:aec0913446abacc1 indirect=12:aec0913446abacc1 +geom 264: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1689945 motion [] pieces all=12:817419b742012466 camera=12:817419b742012466 shadow=12:817419b742012466 indirect=12:817419b742012466 +geom 265: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8709754 motion [] pieces all=12:11dc946f2502073c camera=12:11dc946f2502073c shadow=12:11dc946f2502073c indirect=12:11dc946f2502073c +geom 266: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0341958 motion [] pieces all=12:2cdb9da3d277d7c3 camera=12:2cdb9da3d277d7c3 shadow=12:2cdb9da3d277d7c3 indirect=12:2cdb9da3d277d7c3 +geom 267: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9728058 motion [] pieces all=12:adf045b7d32a2f1f camera=12:adf045b7d32a2f1f shadow=12:adf045b7d32a2f1f indirect=12:adf045b7d32a2f1f +geom 268: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9305494 motion [] pieces all=12:8fdab00337b44101 camera=12:8fdab00337b44101 shadow=12:8fdab00337b44101 indirect=12:8fdab00337b44101 +geom 269: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0993541 motion [] pieces all=12:e9f74cbbc31e88ca camera=12:e9f74cbbc31e88ca shadow=12:e9f74cbbc31e88ca indirect=12:e9f74cbbc31e88ca +geom 270: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1297429 motion [] pieces all=12:e6f58dc9a2c8cf31 camera=12:e6f58dc9a2c8cf31 shadow=12:e6f58dc9a2c8cf31 indirect=12:e6f58dc9a2c8cf31 +geom 271: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8328105 motion [] pieces all=12:28fe4127d8309887 camera=12:28fe4127d8309887 shadow=12:28fe4127d8309887 indirect=12:28fe4127d8309887 +geom 272: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0407774 motion [] pieces all=12:d1adc814dd14ee88 camera=12:d1adc814dd14ee88 shadow=12:d1adc814dd14ee88 indirect=12:d1adc814dd14ee88 +geom 273: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9556146 motion [] pieces all=12:6d24b8714ab18ccb camera=12:6d24b8714ab18ccb shadow=12:6d24b8714ab18ccb indirect=12:6d24b8714ab18ccb +geom 274: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8622651 motion [] pieces all=12:4123fa223d783808 camera=12:4123fa223d783808 shadow=12:4123fa223d783808 indirect=12:4123fa223d783808 +geom 275: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1533363 motion [] pieces all=12:b1d8d2f5c048d126 camera=12:b1d8d2f5c048d126 shadow=12:b1d8d2f5c048d126 indirect=12:b1d8d2f5c048d126 +geom 276: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0827482 motion [] pieces all=12:b34d3f2fea6ccf3f camera=12:b34d3f2fea6ccf3f shadow=12:b34d3f2fea6ccf3f indirect=12:b34d3f2fea6ccf3f +geom 277: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94452286 motion [] pieces all=12:d7313d7a2c947b15 camera=12:d7313d7a2c947b15 shadow=12:d7313d7a2c947b15 indirect=12:d7313d7a2c947b15 +geom 278: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84241277 motion [] pieces all=12:cf8f50c89c7848bf camera=12:cf8f50c89c7848bf shadow=12:cf8f50c89c7848bf indirect=12:cf8f50c89c7848bf +geom 279: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.145969 motion [] pieces all=12:fc6d0c5cd4ac480a camera=12:fc6d0c5cd4ac480a shadow=12:fc6d0c5cd4ac480a indirect=12:fc6d0c5cd4ac480a +geom 280: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8967557 motion [] pieces all=12:01efc81ea2dc09da camera=12:01efc81ea2dc09da shadow=12:01efc81ea2dc09da indirect=12:01efc81ea2dc09da +geom 281: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1884634 motion [] pieces all=12:985e2ace4f406785 camera=12:985e2ace4f406785 shadow=12:985e2ace4f406785 indirect=12:985e2ace4f406785 +geom 282: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0103384 motion [] pieces all=12:595d0b15b7883054 camera=12:595d0b15b7883054 shadow=12:595d0b15b7883054 indirect=12:595d0b15b7883054 +geom 283: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9807979 motion [] pieces all=12:91c655586891aa6d camera=12:91c655586891aa6d shadow=12:91c655586891aa6d indirect=12:91c655586891aa6d +geom 284: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91237754 motion [] pieces all=12:1f92e95a24a0a941 camera=12:1f92e95a24a0a941 shadow=12:1f92e95a24a0a941 indirect=12:1f92e95a24a0a941 +geom 285: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0665895 motion [] pieces all=12:24eed0a13c96f7c0 camera=12:24eed0a13c96f7c0 shadow=12:24eed0a13c96f7c0 indirect=12:24eed0a13c96f7c0 +geom 286: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8213568 motion [] pieces all=12:3ace4e273389b040 camera=12:3ace4e273389b040 shadow=12:3ace4e273389b040 indirect=12:3ace4e273389b040 +geom 287: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1155375 motion [] pieces all=12:a774e8fd544c302f camera=12:a774e8fd544c302f shadow=12:a774e8fd544c302f indirect=12:a774e8fd544c302f +geom 288: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0168831 motion [] pieces all=12:3b8dfe9ac6e074e4 camera=12:3b8dfe9ac6e074e4 shadow=12:3b8dfe9ac6e074e4 indirect=12:3b8dfe9ac6e074e4 +geom 289: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9887352 motion [] pieces all=12:9cc4d9cc6beae0f8 camera=12:9cc4d9cc6beae0f8 shadow=12:9cc4d9cc6beae0f8 indirect=12:9cc4d9cc6beae0f8 +geom 290: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88512194 motion [] pieces all=12:54452159c0cc6de1 camera=12:54452159c0cc6de1 shadow=12:54452159c0cc6de1 indirect=12:54452159c0cc6de1 +geom 291: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1818812 motion [] pieces all=12:d8d6033726a0ae3c camera=12:d8d6033726a0ae3c shadow=12:d8d6033726a0ae3c indirect=12:d8d6033726a0ae3c +geom 292: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0553548 motion [] pieces all=12:14bad604a1de7065 camera=12:14bad604a1de7065 shadow=12:14bad604a1de7065 indirect=12:14bad604a1de7065 +geom 293: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91546917 motion [] pieces all=12:c40b47e88849fe33 camera=12:c40b47e88849fe33 shadow=12:c40b47e88849fe33 indirect=12:c40b47e88849fe33 +geom 294: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8122816 motion [] pieces all=12:2e893d2222249532 camera=12:2e893d2222249532 shadow=12:2e893d2222249532 indirect=12:2e893d2222249532 +geom 295: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1005894 motion [] pieces all=12:bd58cb1520f6c589 camera=12:bd58cb1520f6c589 shadow=12:bd58cb1520f6c589 indirect=12:bd58cb1520f6c589 +geom 296: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9684521 motion [] pieces all=12:5ee1a186ae2d9dd0 camera=12:5ee1a186ae2d9dd0 shadow=12:5ee1a186ae2d9dd0 indirect=12:5ee1a186ae2d9dd0 +geom 297: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0291594 motion [] pieces all=12:bbe60b405380df40 camera=12:bbe60b405380df40 shadow=12:bbe60b405380df40 indirect=12:bbe60b405380df40 +geom 298: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.868216 motion [] pieces all=12:1139e1c7e4a5e8fb camera=12:1139e1c7e4a5e8fb shadow=12:1139e1c7e4a5e8fb indirect=12:1139e1c7e4a5e8fb +geom 299: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1648309 motion [] pieces all=12:f4d9f51838186556 camera=12:f4d9f51838186556 shadow=12:f4d9f51838186556 indirect=12:f4d9f51838186556 +geom 300: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1327685 motion [] pieces all=12:6c7567952e89b197 camera=12:6c7567952e89b197 shadow=12:6c7567952e89b197 indirect=12:6c7567952e89b197 +geom 301: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8302819 motion [] pieces all=12:78388d34aa653f58 camera=12:78388d34aa653f58 shadow=12:78388d34aa653f58 indirect=12:78388d34aa653f58 +geom 302: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93690276 motion [] pieces all=12:b8ddd2c09893939a camera=12:b8ddd2c09893939a shadow=12:b8ddd2c09893939a indirect=12:b8ddd2c09893939a +geom 303: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0930607 motion [] pieces all=12:1439028a696a7d6a camera=12:1439028a696a7d6a shadow=12:1439028a696a7d6a indirect=12:1439028a696a7d6a +geom 304: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98559374 motion [] pieces all=12:2d5a80cc0e242252 camera=12:2d5a80cc0e242252 shadow=12:2d5a80cc0e242252 indirect=12:2d5a80cc0e242252 +geom 305: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0042014 motion [] pieces all=12:ba32837f934d89a0 camera=12:ba32837f934d89a0 shadow=12:ba32837f934d89a0 indirect=12:ba32837f934d89a0 +geom 306: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1942586 motion [] pieces all=12:eafe5de3bea88df7 camera=12:eafe5de3bea88df7 shadow=12:eafe5de3bea88df7 indirect=12:eafe5de3bea88df7 +geom 307: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.893466 motion [] pieces all=12:647780a6ed707c17 camera=12:647780a6ed707c17 shadow=12:647780a6ed707c17 indirect=12:647780a6ed707c17 +geom 308: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90030926 motion [] pieces all=12:487b70fa9b392254 camera=12:487b70fa9b392254 shadow=12:487b70fa9b392254 indirect=12:487b70fa9b392254 +geom 309: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0744654 motion [] pieces all=12:d541c481d5fd43bf camera=12:d541c481d5fd43bf shadow=12:d541c481d5fd43bf indirect=12:d541c481d5fd43bf +geom 310: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1226648 motion [] pieces all=12:631e3ff8dcda598a camera=12:631e3ff8dcda598a shadow=12:631e3ff8dcda598a indirect=12:631e3ff8dcda598a +geom 311: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8183132 motion [] pieces all=12:4d8c861c7b334b12 camera=12:4d8c861c7b334b12 shadow=12:4d8c861c7b334b12 indirect=12:4d8c861c7b334b12 +geom 312: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0470083 motion [] pieces all=12:144bf5f952df3aae camera=12:144bf5f952df3aae shadow=12:144bf5f952df3aae indirect=12:144bf5f952df3aae +geom 313: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9589237 motion [] pieces all=12:6f08e2f191c13829 camera=12:6f08e2f191c13829 shadow=12:6f08e2f191c13829 indirect=12:6f08e2f191c13829 +geom 314: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1568285 motion [] pieces all=12:9ddb7a84275336f2 camera=12:9ddb7a84275336f2 shadow=12:9ddb7a84275336f2 indirect=12:9ddb7a84275336f2 +geom 315: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8528369 motion [] pieces all=12:dc6f6b0e0689c4fe camera=12:dc6f6b0e0689c4fe shadow=12:dc6f6b0e0689c4fe indirect=12:dc6f6b0e0689c4fe +geom 316: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1375338 motion [] pieces all=12:771d4bc7d8a2055c camera=12:771d4bc7d8a2055c shadow=12:771d4bc7d8a2055c indirect=12:771d4bc7d8a2055c +geom 317: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84985673 motion [] pieces all=12:5f8f376f318e7dd6 camera=12:5f8f376f318e7dd6 shadow=12:5f8f376f318e7dd6 indirect=12:5f8f376f318e7dd6 +geom 318: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94081056 motion [] pieces all=12:7a3fb26c1cd5533d camera=12:7a3fb26c1cd5533d shadow=12:7a3fb26c1cd5533d indirect=12:7a3fb26c1cd5533d +geom 319: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0773013 motion [] pieces all=12:d7fce092f6c85dec camera=12:d7fce092f6c85dec shadow=12:d7fce092f6c85dec indirect=12:d7fce092f6c85dec +geom 320: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1783283 motion [] pieces all=12:37d30f1a46e449ff camera=12:37d30f1a46e449ff shadow=12:37d30f1a46e449ff indirect=12:37d30f1a46e449ff +geom 321: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87658024 motion [] pieces all=12:14d43fd6bb0ff55d camera=12:14d43fd6bb0ff55d shadow=12:14d43fd6bb0ff55d indirect=12:14d43fd6bb0ff55d +geom 322: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0205542 motion [] pieces all=12:87481ae735713eaa camera=12:87481ae735713eaa shadow=12:87481ae735713eaa indirect=12:87481ae735713eaa +geom 323: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99422103 motion [] pieces all=12:5bde4420dcb7830a camera=12:5bde4420dcb7830a shadow=12:5bde4420dcb7830a indirect=12:5bde4420dcb7830a +geom 324: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9212079 motion [] pieces all=12:dd5d8187b0e11f4d camera=12:dd5d8187b0e11f4d shadow=12:dd5d8187b0e11f4d indirect=12:dd5d8187b0e11f4d +geom 325: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0596653 motion [] pieces all=12:a13d8d5031328858 camera=12:a13d8d5031328858 shadow=12:a13d8d5031328858 indirect=12:a13d8d5031328858 +geom 326: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1097448 motion [] pieces all=12:df0336c5dc625715 camera=12:df0336c5dc625715 shadow=12:df0336c5dc625715 indirect=12:df0336c5dc625715 +geom 327: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80082613 motion [] pieces all=12:7fdb2280b720b4e0 camera=12:7fdb2280b720b4e0 shadow=12:7fdb2280b720b4e0 indirect=12:7fdb2280b720b4e0 +geom 328: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83511055 motion [] pieces all=12:8e6bbb989918f2d4 camera=12:8e6bbb989918f2d4 shadow=12:8e6bbb989918f2d4 indirect=12:8e6bbb989918f2d4 +geom 329: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.126959 motion [] pieces all=12:30f7453b0f345828 camera=12:30f7453b0f345828 shadow=12:30f7453b0f345828 indirect=12:30f7453b0f345828 +geom 330: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92609227 motion [] pieces all=12:91f9f276b93f6466 camera=12:91f9f276b93f6466 shadow=12:91f9f276b93f6466 indirect=12:91f9f276b93f6466 +geom 331: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0945077 motion [] pieces all=12:d6b247f1e91ba686 camera=12:d6b247f1e91ba686 shadow=12:d6b247f1e91ba686 indirect=12:d6b247f1e91ba686 +geom 332: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0349877 motion [] pieces all=12:d5740e0bac5cd316 camera=12:d5740e0bac5cd316 shadow=12:d5740e0bac5cd316 indirect=12:d5740e0bac5cd316 +geom 333: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9710804 motion [] pieces all=12:27d44de46e3dca54 camera=12:27d44de46e3dca54 shadow=12:27d44de46e3dca54 indirect=12:27d44de46e3dca54 +geom 334: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8721167 motion [] pieces all=12:18228ff2b63f8c7d camera=12:18228ff2b63f8c7d shadow=12:18228ff2b63f8c7d indirect=12:18228ff2b63f8c7d +geom 335: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1724524 motion [] pieces all=12:2ab0876e534f298f camera=12:2ab0876e534f298f shadow=12:2ab0876e534f298f indirect=12:2ab0876e534f298f +geom 336: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8403497 motion [] pieces all=12:41a2c55a267ac5c4 camera=12:41a2c55a267ac5c4 shadow=12:41a2c55a267ac5c4 indirect=12:41a2c55a267ac5c4 +geom 337: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1488395 motion [] pieces all=12:dfc161a8f6a92ea3 camera=12:dfc161a8f6a92ea3 shadow=12:dfc161a8f6a92ea3 indirect=12:dfc161a8f6a92ea3 +geom 338: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0872728 motion [] pieces all=12:4009af968809592a camera=12:4009af968809592a shadow=12:4009af968809592a indirect=12:4009af968809592a +geom 339: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9498308 motion [] pieces all=12:d97514bcecdc5662 camera=12:d97514bcecdc5662 shadow=12:d97514bcecdc5662 indirect=12:d97514bcecdc5662 +geom 340: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1501721 motion [] pieces all=12:d7c58849a10d0edf camera=12:d7c58849a10d0edf shadow=12:d7c58849a10d0edf indirect=12:d7c58849a10d0edf +geom 341: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85824037 motion [] pieces all=12:aed050e32284fe6e camera=12:aed050e32284fe6e shadow=12:aed050e32284fe6e indirect=12:aed050e32284fe6e +geom 342: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9529558 motion [] pieces all=12:ea1dbdb85f1f4d6d camera=12:ea1dbdb85f1f4d6d shadow=12:ea1dbdb85f1f4d6d indirect=12:ea1dbdb85f1f4d6d +geom 343: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0397669 motion [] pieces all=12:6babb56fe308d4cb camera=12:6babb56fe308d4cb shadow=12:6babb56fe308d4cb indirect=12:6babb56fe308d4cb +geom 344: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1160651 motion [] pieces all=12:2957ca89e418c28f camera=12:2957ca89e418c28f shadow=12:2957ca89e418c28f indirect=12:2957ca89e418c28f +geom 345: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8239306 motion [] pieces all=12:2e7f31d4fa464ed4 camera=12:2e7f31d4fa464ed4 shadow=12:2e7f31d4fa464ed4 indirect=12:2e7f31d4fa464ed4 +geom 346: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0655339 motion [] pieces all=12:b200843dc58e1388 camera=12:b200843dc58e1388 shadow=12:b200843dc58e1388 indirect=12:b200843dc58e1388 +geom 347: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9071375 motion [] pieces all=12:249c549d82e9acea camera=12:249c549d82e9acea shadow=12:249c549d82e9acea indirect=12:249c549d82e9acea +geom 348: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0080239 motion [] pieces all=12:e170da844f0a982b camera=12:e170da844f0a982b shadow=12:e170da844f0a982b indirect=12:e170da844f0a982b +geom 349: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97620225 motion [] pieces all=12:193709b6aa2f5d65 camera=12:193709b6aa2f5d65 shadow=12:193709b6aa2f5d65 indirect=12:193709b6aa2f5d65 +geom 350: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89718294 motion [] pieces all=12:c4f52cbc70fa9dca camera=12:c4f52cbc70fa9dca shadow=12:c4f52cbc70fa9dca indirect=12:c4f52cbc70fa9dca +geom 351: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.191257 motion [] pieces all=12:9bcfc66882080152 camera=12:9bcfc66882080152 shadow=12:9bcfc66882080152 indirect=12:9bcfc66882080152 +geom 352: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1368771 motion [] pieces all=12:17d409264b25aaa1 camera=12:17d409264b25aaa1 shadow=12:17d409264b25aaa1 indirect=12:17d409264b25aaa1 +geom 353: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8263488 motion [] pieces all=12:c88cfa106e34b214 camera=12:c88cfa106e34b214 shadow=12:c88cfa106e34b214 indirect=12:c88cfa106e34b214 +geom 354: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9322859 motion [] pieces all=12:72d56a4ceec9b227 camera=12:72d56a4ceec9b227 shadow=12:72d56a4ceec9b227 indirect=12:72d56a4ceec9b227 +geom 355: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0880939 motion [] pieces all=12:b195b52f8adf62a0 camera=12:b195b52f8adf62a0 shadow=12:b195b52f8adf62a0 indirect=12:b195b52f8adf62a0 +geom 356: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0262136 motion [] pieces all=12:45df4628c3eb5709 camera=12:45df4628c3eb5709 shadow=12:45df4628c3eb5709 indirect=12:45df4628c3eb5709 +geom 357: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96307683 motion [] pieces all=12:345e61e8806a6778 camera=12:345e61e8806a6778 shadow=12:345e61e8806a6778 indirect=12:345e61e8806a6778 +geom 358: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1681463 motion [] pieces all=12:86243dfecd6ed800 camera=12:86243dfecd6ed800 shadow=12:86243dfecd6ed800 indirect=12:86243dfecd6ed800 +geom 359: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.86502236 motion [] pieces all=12:343a16809805502c camera=12:343a16809805502c shadow=12:343a16809805502c indirect=12:343a16809805502c +geom 360: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.050149 motion [] pieces all=12:82646e4cfdf87acb camera=12:82646e4cfdf87acb shadow=12:82646e4cfdf87acb indirect=12:82646e4cfdf87acb +geom 361: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9158084 motion [] pieces all=12:24aaf806f2e380e8 camera=12:24aaf806f2e380e8 shadow=12:24aaf806f2e380e8 indirect=12:24aaf806f2e380e8 +geom 362: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8081211 motion [] pieces all=12:7cbe153faf6f8d7a camera=12:7cbe153faf6f8d7a shadow=12:7cbe153faf6f8d7a indirect=12:7cbe153faf6f8d7a +geom 363: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1042663 motion [] pieces all=12:35a219666dea319c camera=12:35a219666dea319c shadow=12:35a219666dea319c indirect=12:35a219666dea319c +geom 364: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0155733 motion [] pieces all=12:e6d7079bdb47adab camera=12:e6d7079bdb47adab shadow=12:e6d7079bdb47adab indirect=12:e6d7079bdb47adab +geom 365: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9908399 motion [] pieces all=12:e8c07fc49651ed38 camera=12:e8c07fc49651ed38 shadow=12:e8c07fc49651ed38 indirect=12:e8c07fc49651ed38 +geom 366: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88250023 motion [] pieces all=12:f5e38f522feb37cb camera=12:f5e38f522feb37cb shadow=12:f5e38f522feb37cb indirect=12:f5e38f522feb37cb +geom 367: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1847697 motion [] pieces all=12:fbc06fd87a8d291f camera=12:fbc06fd87a8d291f shadow=12:fbc06fd87a8d291f indirect=12:fbc06fd87a8d291f +geom 368: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.046034 motion [] pieces all=12:9f78122893426734 camera=12:9f78122893426734 shadow=12:9f78122893426734 indirect=12:9f78122893426734 +geom 369: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96090317 motion [] pieces all=12:5694cc0009888a2a camera=12:5694cc0009888a2a shadow=12:5694cc0009888a2a indirect=12:5694cc0009888a2a +geom 370: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85369337 motion [] pieces all=12:cc6149139636f173 camera=12:cc6149139636f173 shadow=12:cc6149139636f173 indirect=12:cc6149139636f173 +geom 371: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1612246 motion [] pieces all=12:479fb480718c0a74 camera=12:479fb480718c0a74 shadow=12:479fb480718c0a74 indirect=12:479fb480718c0a74 +geom 372: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1420475 motion [] pieces all=12:5011fcf9b2420f89 camera=12:5011fcf9b2420f89 shadow=12:5011fcf9b2420f89 indirect=12:5011fcf9b2420f89 +geom 373: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8454647 motion [] pieces all=12:fe62212b32243903 camera=12:fe62212b32243903 shadow=12:fe62212b32243903 indirect=12:fe62212b32243903 +geom 374: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0787628 motion [] pieces all=12:c09b7779bc49b050 camera=12:c09b7779bc49b050 shadow=12:c09b7779bc49b050 indirect=12:c09b7779bc49b050 +geom 375: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93800545 motion [] pieces all=12:29492bf11ee992b7 camera=12:29492bf11ee992b7 shadow=12:29492bf11ee992b7 indirect=12:29492bf11ee992b7 +geom 376: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0030414 motion [] pieces all=12:12425a2887a24940 camera=12:12425a2887a24940 shadow=12:12425a2887a24940 indirect=12:12425a2887a24940 +geom 377: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.983221 motion [] pieces all=12:c8dff14682474aff camera=12:c8dff14682474aff shadow=12:c8dff14682474aff indirect=12:c8dff14682474aff +geom 378: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8891724 motion [] pieces all=12:1c2a82a18eb963f6 camera=12:1c2a82a18eb963f6 shadow=12:1c2a82a18eb963f6 indirect=12:1c2a82a18eb963f6 +geom 379: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1983188 motion [] pieces all=12:0512533337d37dec camera=12:0512533337d37dec shadow=12:0512533337d37dec indirect=12:0512533337d37dec +geom 380: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0690044 motion [] pieces all=12:d7ddf5a4c50ddc75 camera=12:d7ddf5a4c50ddc75 shadow=12:d7ddf5a4c50ddc75 indirect=12:d7ddf5a4c50ddc75 +geom 381: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9040715 motion [] pieces all=12:69a66701f2fff347 camera=12:69a66701f2fff347 shadow=12:69a66701f2fff347 indirect=12:69a66701f2fff347 +geom 382: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8138704 motion [] pieces all=12:e569ce107be2c4d3 camera=12:e569ce107be2c4d3 shadow=12:e569ce107be2c4d3 indirect=12:e569ce107be2c4d3 +geom 383: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1195462 motion [] pieces all=12:42484194db7c8a06 camera=12:42484194db7c8a06 shadow=12:42484194db7c8a06 indirect=12:42484194db7c8a06 +geom 384: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9979357 motion [] pieces all=12:817b453870a3d419 camera=12:817b453870a3d419 shadow=12:817b453870a3d419 indirect=12:817b453870a3d419 +geom 385: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0240195 motion [] pieces all=12:2ced474f3777cf40 camera=12:2ced474f3777cf40 shadow=12:2ced474f3777cf40 indirect=12:2ced474f3777cf40 +geom 386: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1780815 motion [] pieces all=12:9393967072a354e1 camera=12:9393967072a354e1 shadow=12:9393967072a354e1 indirect=12:9393967072a354e1 +geom 387: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87838584 motion [] pieces all=12:027e2841751e5753 camera=12:027e2841751e5753 shadow=12:027e2841751e5753 indirect=12:027e2841751e5753 +geom 388: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1091733 motion [] pieces all=12:2ed1840aa5cba15e camera=12:2ed1840aa5cba15e shadow=12:2ed1840aa5cba15e indirect=12:2ed1840aa5cba15e +geom 389: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.805113 motion [] pieces all=12:60447d059631efd4 camera=12:60447d059631efd4 shadow=12:60447d059631efd4 indirect=12:60447d059631efd4 +geom 390: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0589079 motion [] pieces all=12:e47acd5a96839e07 camera=12:e47acd5a96839e07 shadow=12:e47acd5a96839e07 indirect=12:e47acd5a96839e07 +geom 391: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92295647 motion [] pieces all=12:7b43a30fb1dddcde camera=12:7b43a30fb1dddcde shadow=12:7b43a30fb1dddcde indirect=12:7b43a30fb1dddcde +geom 392: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.128148 motion [] pieces all=12:69a0ed79f1b361cf camera=12:69a0ed79f1b361cf shadow=12:69a0ed79f1b361cf indirect=12:69a0ed79f1b361cf +geom 393: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83284235 motion [] pieces all=12:d0f91134dfad0a19 camera=12:d0f91134dfad0a19 shadow=12:d0f91134dfad0a19 indirect=12:d0f91134dfad0a19 +geom 394: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92853355 motion [] pieces all=12:f81b7e7017cc610e camera=12:f81b7e7017cc610e shadow=12:f81b7e7017cc610e indirect=12:f81b7e7017cc610e +geom 395: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0970887 motion [] pieces all=12:78927457c90a0400 camera=12:78927457c90a0400 shadow=12:78927457c90a0400 indirect=12:78927457c90a0400 +geom 396: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0317997 motion [] pieces all=12:20b0fd0fc171807f camera=12:20b0fd0fc171807f shadow=12:20b0fd0fc171807f indirect=12:20b0fd0fc171807f +geom 397: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97373277 motion [] pieces all=12:dcdf42631e7cd0a2 camera=12:dcdf42631e7cd0a2 shadow=12:dcdf42631e7cd0a2 indirect=12:dcdf42631e7cd0a2 +geom 398: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1714392 motion [] pieces all=12:c472d0d4899eae67 camera=12:c472d0d4899eae67 shadow=12:c472d0d4899eae67 indirect=12:c472d0d4899eae67 +geom 399: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8703055 motion [] pieces all=12:8267e610d01a5680 camera=12:8267e610d01a5680 shadow=12:8267e610d01a5680 indirect=12:8267e610d01a5680 +geom 400: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1441025 motion [] pieces all=12:279b3e24a102bf1e camera=12:279b3e24a102bf1e shadow=12:279b3e24a102bf1e indirect=12:279b3e24a102bf1e +geom 401: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84141374 motion [] pieces all=12:d17319b14aca9e2c camera=12:d17319b14aca9e2c shadow=12:d17319b14aca9e2c indirect=12:d17319b14aca9e2c +geom 402: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0838239 motion [] pieces all=12:96dd4c0357b42b14 camera=12:96dd4c0357b42b14 shadow=12:96dd4c0357b42b14 indirect=12:96dd4c0357b42b14 +geom 403: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94532305 motion [] pieces all=12:f5fe4cb39a4686ce camera=12:f5fe4cb39a4686ce shadow=12:f5fe4cb39a4686ce indirect=12:f5fe4cb39a4686ce +geom 404: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95378745 motion [] pieces all=12:8dd37214aa940697 camera=12:8dd37214aa940697 shadow=12:8dd37214aa940697 indirect=12:8dd37214aa940697 +geom 405: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0423332 motion [] pieces all=12:de1e755492a14152 camera=12:de1e755492a14152 shadow=12:de1e755492a14152 indirect=12:de1e755492a14152 +geom 406: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1559403 motion [] pieces all=12:9249a94688f496e1 camera=12:9249a94688f496e1 shadow=12:9249a94688f496e1 indirect=12:9249a94688f496e1 +geom 407: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8601882 motion [] pieces all=12:1283b0c1c55f493f camera=12:1283b0c1c55f493f shadow=12:1283b0c1c55f493f indirect=12:1283b0c1c55f493f +geom 408: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1138958 motion [] pieces all=12:8c88dd3a0f244fe6 camera=12:8c88dd3a0f244fe6 shadow=12:8c88dd3a0f244fe6 indirect=12:8c88dd3a0f244fe6 +geom 409: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8189872 motion [] pieces all=12:6fe3119800e2b724 camera=12:6fe3119800e2b724 shadow=12:6fe3119800e2b724 indirect=12:6fe3119800e2b724 +geom 410: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90952617 motion [] pieces all=12:8c6a289ed18001c2 camera=12:8c6a289ed18001c2 shadow=12:8c6a289ed18001c2 indirect=12:8c6a289ed18001c2 +geom 411: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0676242 motion [] pieces all=12:48ef6b53ccf7f3ae camera=12:48ef6b53ccf7f3ae shadow=12:48ef6b53ccf7f3ae indirect=12:48ef6b53ccf7f3ae +geom 412: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1898406 motion [] pieces all=12:b2408acca88da277 camera=12:b2408acca88da277 shadow=12:b2408acca88da277 indirect=12:b2408acca88da277 +geom 413: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8942463 motion [] pieces all=12:6be4b9c1cca2d56a camera=12:6be4b9c1cca2d56a shadow=12:6be4b9c1cca2d56a indirect=12:6be4b9c1cca2d56a +geom 414: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97924507 motion [] pieces all=12:225624b471d1e03b camera=12:225624b471d1e03b shadow=12:225624b471d1e03b indirect=12:225624b471d1e03b +geom 415: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0110332 motion [] pieces all=12:cca30bb094acd981 camera=12:cca30bb094acd981 shadow=12:cca30bb094acd981 indirect=12:cca30bb094acd981 +geom 416: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81568116 motion [] pieces all=12:d0cafe097a17f591 camera=12:d0cafe097a17f591 shadow=12:d0cafe097a17f591 indirect=12:d0cafe097a17f591 +geom 417: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1248193 motion [] pieces all=12:37a2bd30f2744dc6 camera=12:37a2bd30f2744dc6 shadow=12:37a2bd30f2744dc6 indirect=12:37a2bd30f2744dc6 +geom 418: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9016662 motion [] pieces all=12:22706d0be71e9245 camera=12:22706d0be71e9245 shadow=12:22706d0be71e9245 indirect=12:22706d0be71e9245 +geom 419: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0732667 motion [] pieces all=12:40038908680d4401 camera=12:40038908680d4401 shadow=12:40038908680d4401 indirect=12:40038908680d4401 +geom 420: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0060534 motion [] pieces all=12:f41bc3293229b5c6 camera=12:f41bc3293229b5c6 shadow=12:f41bc3293229b5c6 indirect=12:f41bc3293229b5c6 +geom 421: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98605454 motion [] pieces all=12:74201c06a60b7e79 camera=12:74201c06a60b7e79 shadow=12:74201c06a60b7e79 indirect=12:74201c06a60b7e79 +geom 422: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8919946 motion [] pieces all=12:5f2730bf79a70fe6 camera=12:5f2730bf79a70fe6 shadow=12:5f2730bf79a70fe6 indirect=12:5f2730bf79a70fe6 +geom 423: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.19644 motion [] pieces all=12:3146e5e85b71495b camera=12:3146e5e85b71495b shadow=12:3146e5e85b71495b indirect=12:3146e5e85b71495b +geom 424: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8503766 motion [] pieces all=12:08a48fe8aa435062 camera=12:08a48fe8aa435062 shadow=12:08a48fe8aa435062 indirect=12:08a48fe8aa435062 +geom 425: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1588464 motion [] pieces all=12:42a78cff3d571444 camera=12:42a78cff3d571444 shadow=12:42a78cff3d571444 indirect=12:42a78cff3d571444 +geom 426: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95724255 motion [] pieces all=12:a5085c33a6b177c9 camera=12:a5085c33a6b177c9 shadow=12:a5085c33a6b177c9 indirect=12:a5085c33a6b177c9 +geom 427: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0496792 motion [] pieces all=12:d237182b1562400a camera=12:d237182b1562400a shadow=12:d237182b1562400a indirect=12:d237182b1562400a +geom 428: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0764337 motion [] pieces all=12:1fc7edde3708a83c camera=12:1fc7edde3708a83c shadow=12:1fc7edde3708a83c indirect=12:1fc7edde3708a83c +geom 429: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94295996 motion [] pieces all=12:49bee21585a46b48 camera=12:49bee21585a46b48 shadow=12:49bee21585a46b48 indirect=12:49bee21585a46b48 +geom 430: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84723824 motion [] pieces all=12:f8f063c5827ba797 camera=12:f8f063c5827ba797 shadow=12:f8f063c5827ba797 indirect=12:f8f063c5827ba797 +geom 431: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.139218 motion [] pieces all=12:a397a5167452c818 camera=12:a397a5167452c818 shadow=12:a397a5167452c818 indirect=12:a397a5167452c818 +geom 432: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8667562 motion [] pieces all=12:6dc7c0e793f4c492 camera=12:6dc7c0e793f4c492 shadow=12:6dc7c0e793f4c492 indirect=12:6dc7c0e793f4c492 +geom 433: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1638904 motion [] pieces all=12:c005ed491d1abb17 camera=12:c005ed491d1abb17 shadow=12:c005ed491d1abb17 indirect=12:c005ed491d1abb17 +geom 434: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96669084 motion [] pieces all=12:9a5425fe4964167c camera=12:9a5425fe4964167c shadow=12:9a5425fe4964167c indirect=12:9a5425fe4964167c +geom 435: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0310098 motion [] pieces all=12:422a73f3c3468e8a camera=12:422a73f3c3468e8a shadow=12:422a73f3c3468e8a indirect=12:422a73f3c3468e8a +geom 436: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9359371 motion [] pieces all=12:c41f8c20a8cefe26 camera=12:c41f8c20a8cefe26 shadow=12:c41f8c20a8cefe26 indirect=12:c41f8c20a8cefe26 +geom 437: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0920191 motion [] pieces all=12:67da5a5117403cb0 camera=12:67da5a5117403cb0 shadow=12:67da5a5117403cb0 indirect=12:67da5a5117403cb0 +geom 438: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1332088 motion [] pieces all=12:fc1749d615ff3503 camera=12:fc1749d615ff3503 shadow=12:fc1749d615ff3503 indirect=12:fc1749d615ff3503 +geom 439: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82963383 motion [] pieces all=12:8923dc9c030f82cb camera=12:8923dc9c030f82cb shadow=12:8923dc9c030f82cb indirect=12:8923dc9c030f82cb +geom 440: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.989561 motion [] pieces all=12:53a4125ff63a0937 camera=12:53a4125ff63a0937 shadow=12:53a4125ff63a0937 indirect=12:53a4125ff63a0937 +geom 441: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0177096 motion [] pieces all=12:65f91049698d610a camera=12:65f91049698d610a shadow=12:65f91049698d610a indirect=12:65f91049698d610a +geom 442: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1837815 motion [] pieces all=12:cdcb5a0d01d898da camera=12:cdcb5a0d01d898da shadow=12:cdcb5a0d01d898da indirect=12:cdcb5a0d01d898da +geom 443: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88659936 motion [] pieces all=12:9499b7def0936290 camera=12:9499b7def0936290 shadow=12:9499b7def0936290 indirect=12:9499b7def0936290 +geom 444: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91293037 motion [] pieces all=12:83e3abd6ac7f83a9 camera=12:83e3abd6ac7f83a9 shadow=12:83e3abd6ac7f83a9 indirect=12:83e3abd6ac7f83a9 +geom 445: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.053651 motion [] pieces all=12:b0a60d26f0688b94 camera=12:b0a60d26f0688b94 shadow=12:b0a60d26f0688b94 indirect=12:b0a60d26f0688b94 +geom 446: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1022353 motion [] pieces all=12:a8aca66167227e3e camera=12:a8aca66167227e3e shadow=12:a8aca66167227e3e indirect=12:a8aca66167227e3e +geom 447: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8098009 motion [] pieces all=12:d772aadd56b26362 camera=12:d772aadd56b26362 shadow=12:d772aadd56b26362 indirect=12:d772aadd56b26362 +geom 448: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1986847 motion [] pieces all=12:c1d1ba87d4521c68 camera=12:c1d1ba87d4521c68 shadow=12:c1d1ba87d4521c68 indirect=12:c1d1ba87d4521c68 +geom 449: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8879799 motion [] pieces all=12:1cb570eb6a8dbc6e camera=12:1cb570eb6a8dbc6e shadow=12:1cb570eb6a8dbc6e indirect=12:1cb570eb6a8dbc6e +geom 450: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98173344 motion [] pieces all=12:7eee75fae3c2c38e camera=12:7eee75fae3c2c38e shadow=12:7eee75fae3c2c38e indirect=12:7eee75fae3c2c38e +geom 451: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0000744 motion [] pieces all=12:ded11bb563f60b18 camera=12:ded11bb563f60b18 shadow=12:ded11bb563f60b18 indirect=12:ded11bb563f60b18 +geom 452: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1216958 motion [] pieces all=12:7d0ffec4d58dda61 camera=12:7d0ffec4d58dda61 shadow=12:7d0ffec4d58dda61 indirect=12:7d0ffec4d58dda61 +geom 453: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81506497 motion [] pieces all=12:11b648c7989f69d4 camera=12:11b648c7989f69d4 shadow=12:11b648c7989f69d4 indirect=12:11b648c7989f69d4 +geom 454: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9058803 motion [] pieces all=12:9cd46ed2bbcbe3f3 camera=12:9cd46ed2bbcbe3f3 shadow=12:9cd46ed2bbcbe3f3 indirect=12:9cd46ed2bbcbe3f3 +geom 455: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0716925 motion [] pieces all=12:e1619e0d048155ae camera=12:e1619e0d048155ae shadow=12:e1619e0d048155ae indirect=12:e1619e0d048155ae +geom 456: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85529506 motion [] pieces all=12:02ba68249605a870 camera=12:02ba68249605a870 shadow=12:02ba68249605a870 indirect=12:02ba68249605a870 +geom 457: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1597875 motion [] pieces all=12:a894986db251ee0f camera=12:a894986db251ee0f shadow=12:a894986db251ee0f indirect=12:a894986db251ee0f +geom 458: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0444325 motion [] pieces all=12:4a2250159785a6e2 camera=12:4a2250159785a6e2 shadow=12:4a2250159785a6e2 indirect=12:4a2250159785a6e2 +geom 459: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9616838 motion [] pieces all=12:d1ec13b3e62f6e92 camera=12:d1ec13b3e62f6e92 shadow=12:d1ec13b3e62f6e92 indirect=12:d1ec13b3e62f6e92 +geom 460: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93935156 motion [] pieces all=12:04ea79f01e5f9a59 camera=12:04ea79f01e5f9a59 shadow=12:04ea79f01e5f9a59 indirect=12:04ea79f01e5f9a59 +geom 461: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0803297 motion [] pieces all=12:bf10521f4ec2bbb3 camera=12:bf10521f4ec2bbb3 shadow=12:bf10521f4ec2bbb3 indirect=12:bf10521f4ec2bbb3 +geom 462: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8450973 motion [] pieces all=12:2a5cfdaaddca44c2 camera=12:2a5cfdaaddca44c2 shadow=12:2a5cfdaaddca44c2 indirect=12:2a5cfdaaddca44c2 +geom 463: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1432472 motion [] pieces all=12:fbc5ba1ad600edaa camera=12:fbc5ba1ad600edaa shadow=12:fbc5ba1ad600edaa indirect=12:fbc5ba1ad600edaa +geom 464: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1353691 motion [] pieces all=12:049353c120cbebfc camera=12:049353c120cbebfc shadow=12:049353c120cbebfc indirect=12:049353c120cbebfc +geom 465: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8273636 motion [] pieces all=12:3c3011131e7e8813 camera=12:3c3011131e7e8813 shadow=12:3c3011131e7e8813 indirect=12:3c3011131e7e8813 +geom 466: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0902855 motion [] pieces all=12:772930a049a7379c camera=12:772930a049a7379c shadow=12:772930a049a7379c indirect=12:772930a049a7379c +geom 467: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93297297 motion [] pieces all=12:25b9c445d211692a camera=12:25b9c445d211692a shadow=12:25b9c445d211692a indirect=12:25b9c445d211692a +geom 468: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.027414 motion [] pieces all=12:740d229d84e9cff7 camera=12:740d229d84e9cff7 shadow=12:740d229d84e9cff7 indirect=12:740d229d84e9cff7 +geom 469: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96549386 motion [] pieces all=12:0aaa0db013610e8a camera=12:0aaa0db013610e8a shadow=12:0aaa0db013610e8a indirect=12:0aaa0db013610e8a +geom 470: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8634908 motion [] pieces all=12:2fbc17d887102e0e camera=12:2fbc17d887102e0e shadow=12:2fbc17d887102e0e indirect=12:2fbc17d887102e0e +geom 471: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.165813 motion [] pieces all=12:016baf1b7130dcdc camera=12:016baf1b7130dcdc shadow=12:016baf1b7130dcdc indirect=12:016baf1b7130dcdc +geom 472: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9932002 motion [] pieces all=12:614b99fb4286ac07 camera=12:614b99fb4286ac07 shadow=12:614b99fb4286ac07 indirect=12:614b99fb4286ac07 +geom 473: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0138267 motion [] pieces all=12:7f75b45364112aba camera=12:7f75b45364112aba shadow=12:7f75b45364112aba indirect=12:7f75b45364112aba +geom 474: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8838996 motion [] pieces all=12:188942be9177a3f5 camera=12:188942be9177a3f5 shadow=12:188942be9177a3f5 indirect=12:188942be9177a3f5 +geom 475: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1870891 motion [] pieces all=12:7546e17f458e7da2 camera=12:7546e17f458e7da2 shadow=12:7546e17f458e7da2 indirect=12:7546e17f458e7da2 +geom 476: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1059833 motion [] pieces all=12:26de3a63ac32d9c0 camera=12:26de3a63ac32d9c0 shadow=12:26de3a63ac32d9c0 indirect=12:26de3a63ac32d9c0 +geom 477: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8076202 motion [] pieces all=12:e1c21f8a4b9a925f camera=12:e1c21f8a4b9a925f shadow=12:e1c21f8a4b9a925f indirect=12:e1c21f8a4b9a925f +geom 478: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.917528 motion [] pieces all=12:7e89e6fe71b7d5e1 camera=12:7e89e6fe71b7d5e1 shadow=12:7e89e6fe71b7d5e1 indirect=12:7e89e6fe71b7d5e1 +geom 479: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0525516 motion [] pieces all=12:2e4367fb76a93572 camera=12:2e4367fb76a93572 shadow=12:2e4367fb76a93572 indirect=12:2e4367fb76a93572 +geom 480: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1471847 motion [] pieces all=12:487ee130369a3f18 camera=12:487ee130369a3f18 shadow=12:487ee130369a3f18 indirect=12:487ee130369a3f18 +geom 481: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8377189 motion [] pieces all=12:81f60f5e764c9e94 camera=12:81f60f5e764c9e94 shadow=12:81f60f5e764c9e94 indirect=12:81f60f5e764c9e94 +geom 482: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9474101 motion [] pieces all=12:26736fb3efaf0e8b camera=12:26736fb3efaf0e8b shadow=12:26736fb3efaf0e8b indirect=12:26736fb3efaf0e8b +geom 483: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.085121 motion [] pieces all=12:9661338d340c04ba camera=12:9661338d340c04ba shadow=12:9661338d340c04ba indirect=12:9661338d340c04ba +geom 484: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.856993 motion [] pieces all=12:dbdb91d39e8aae83 camera=12:dbdb91d39e8aae83 shadow=12:dbdb91d39e8aae83 indirect=12:dbdb91d39e8aae83 +geom 485: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1528894 motion [] pieces all=12:77eb4b680ce04830 camera=12:77eb4b680ce04830 shadow=12:77eb4b680ce04830 indirect=12:77eb4b680ce04830 +geom 486: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.038916 motion [] pieces all=12:81a43a78bc1e73fd camera=12:81a43a78bc1e73fd shadow=12:81a43a78bc1e73fd indirect=12:81a43a78bc1e73fd +geom 487: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9504711 motion [] pieces all=12:5ff064de78509a0a camera=12:5ff064de78509a0a shadow=12:5ff064de78509a0a indirect=12:5ff064de78509a0a +geom 488: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0637788 motion [] pieces all=12:559a1655469b6861 camera=12:559a1655469b6861 shadow=12:559a1655469b6861 indirect=12:559a1655469b6861 +geom 489: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90910155 motion [] pieces all=12:44a0535ec759978f camera=12:44a0535ec759978f shadow=12:44a0535ec759978f indirect=12:44a0535ec759978f +geom 490: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1182432 motion [] pieces all=12:8b8f0bbb4571f9ae camera=12:8b8f0bbb4571f9ae shadow=12:8b8f0bbb4571f9ae indirect=12:8b8f0bbb4571f9ae +geom 491: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82327044 motion [] pieces all=12:044596a57f782592 camera=12:044596a57f782592 shadow=12:044596a57f782592 indirect=12:044596a57f782592 +geom 492: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.193281 motion [] pieces all=12:583665b31fb2f901 camera=12:583665b31fb2f901 shadow=12:583665b31fb2f901 indirect=12:583665b31fb2f901 +geom 493: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8985092 motion [] pieces all=12:16ee9626140776f4 camera=12:16ee9626140776f4 shadow=12:16ee9626140776f4 indirect=12:16ee9626140776f4 +geom 494: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9765626 motion [] pieces all=12:9ac81ebc0d4f4c1d camera=12:9ac81ebc0d4f4c1d shadow=12:9ac81ebc0d4f4c1d indirect=12:9ac81ebc0d4f4c1d +geom 495: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0068495 motion [] pieces all=12:b55004e8fe41a807 camera=12:b55004e8fe41a807 shadow=12:b55004e8fe41a807 indirect=12:b55004e8fe41a807 +geom 496: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1257349 motion [] pieces all=12:794d02ae4d0bbc6b camera=12:794d02ae4d0bbc6b shadow=12:794d02ae4d0bbc6b indirect=12:794d02ae4d0bbc6b +geom 497: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8368855 motion [] pieces all=12:978c75be788afc67 camera=12:978c75be788afc67 shadow=12:978c75be788afc67 indirect=12:978c75be788afc67 +geom 498: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92759454 motion [] pieces all=12:8c8da1e4983b11c8 camera=12:8c8da1e4983b11c8 shadow=12:8c8da1e4983b11c8 indirect=12:8c8da1e4983b11c8 +geom 499: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0956422 motion [] pieces all=12:ac83c9c903ea15c9 camera=12:ac83c9c903ea15c9 shadow=12:ac83c9c903ea15c9 indirect=12:ac83c9c903ea15c9 +geom 500: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 501: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 502: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 503: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 504: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 505: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 506: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 507: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 508: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 509: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 510: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 511: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 512: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 513: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 514: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /World/stones/Prototypes/stone_a +provenance arc source: /World/stones/Prototypes/stone_b +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 514..514 } +provenance geometry 0..500: /World/stones +provenance geometry 500..501: /World/pebble/geo +provenance geometry 501..502: /World/away/geo +provenance geometry 502..503: /World/box/geo +provenance geometry 503..504: /World/sunk/geo +provenance geometry 504..505: /World/rock/geo +provenance geometry 505..506: /World/vase/geo +provenance geometry 506..507: /World/steps/geo +provenance geometry 507..508: /World/field/geo +provenance geometry 508..509: /World/slope/geo +provenance geometry 509..510: /World/terrain/geo +provenance geometry 510..511: /World/shelf/geo +provenance geometry 511..512: /World/floor/geo +provenance geometry 512..513: /World/inst +provenance geometry 513..514: /World/crate/geo +provenance geometry 514..515: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 500, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 501, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 502, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 503, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 504, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 505, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 506, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 507, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 508, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 509, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 510, slot: 9, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 511, slot: 10, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 513, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 514, slot: 11, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4345222167175548266, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 735706973108043347, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 11: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-2.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-2.digest new file mode 100644 index 000000000..ec4a141bb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-2.digest @@ -0,0 +1,585 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/stone_a.usda +layer: $DIR/stone_b.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 515 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 506 } top level, PrimitiveBreakdown { triangles: 202, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 506 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1761441 motion [] pieces all=12:45a862dded98b1c6 camera=12:45a862dded98b1c6 shadow=12:45a862dded98b1c6 indirect=12:45a862dded98b1c6 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8810865 motion [] pieces all=12:64944d265981058e camera=12:64944d265981058e shadow=12:64944d265981058e indirect=12:64944d265981058e +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0232378 motion [] pieces all=12:3388e3ca138a3f1f camera=12:3388e3ca138a3f1f shadow=12:3388e3ca138a3f1f indirect=12:3388e3ca138a3f1f +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99894494 motion [] pieces all=12:fdfa25d8c193c4a0 camera=12:fdfa25d8c193c4a0 shadow=12:fdfa25d8c193c4a0 indirect=12:fdfa25d8c193c4a0 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1065642 motion [] pieces all=12:6955ab4220a0f7f0 camera=12:6955ab4220a0f7f0 shadow=12:6955ab4220a0f7f0 indirect=12:6955ab4220a0f7f0 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80337954 motion [] pieces all=12:e2e3eb04df83a72a camera=12:e2e3eb04df83a72a shadow=12:e2e3eb04df83a72a indirect=12:e2e3eb04df83a72a +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0571522 motion [] pieces all=12:61f3b3daf13919ed camera=12:61f3b3daf13919ed shadow=12:61f3b3daf13919ed indirect=12:61f3b3daf13919ed +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9235039 motion [] pieces all=12:67d2180e9e401524 camera=12:67d2180e9e401524 shadow=12:67d2180e9e401524 indirect=12:67d2180e9e401524 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97259986 motion [] pieces all=12:76d9e29bdce76947 camera=12:76d9e29bdce76947 shadow=12:76d9e29bdce76947 indirect=12:76d9e29bdce76947 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0333868 motion [] pieces all=12:f70acb4c14b57733 camera=12:f70acb4c14b57733 shadow=12:f70acb4c14b57733 indirect=12:f70acb4c14b57733 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8712479 motion [] pieces all=12:a6e3103831c2bb95 camera=12:a6e3103831c2bb95 shadow=12:a6e3103831c2bb95 indirect=12:a6e3103831c2bb95 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1695868 motion [] pieces all=12:b68f582acb9488d9 camera=12:b68f582acb9488d9 shadow=12:b68f582acb9488d9 indirect=12:b68f582acb9488d9 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8319464 motion [] pieces all=12:acbc4ae83f658381 camera=12:acbc4ae83f658381 shadow=12:acbc4ae83f658381 indirect=12:acbc4ae83f658381 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.13118 motion [] pieces all=12:598aa1811e9041e8 camera=12:598aa1811e9041e8 shadow=12:598aa1811e9041e8 indirect=12:598aa1811e9041e8 +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0985051 motion [] pieces all=12:e42f85275179f9eb camera=12:e42f85275179f9eb shadow=12:e42f85275179f9eb indirect=12:e42f85275179f9eb +geom 15: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.930394 motion [] pieces all=12:ecc186bbcfc12323 camera=12:ecc186bbcfc12323 shadow=12:ecc186bbcfc12323 indirect=12:ecc186bbcfc12323 +geom 16: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1146806 motion [] pieces all=12:57da4df43fb578d2 camera=12:57da4df43fb578d2 shadow=12:57da4df43fb578d2 indirect=12:57da4df43fb578d2 +geom 17: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8209351 motion [] pieces all=12:e25b06971fef82ac camera=12:e25b06971fef82ac shadow=12:e25b06971fef82ac indirect=12:e25b06971fef82ac +geom 18: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0663182 motion [] pieces all=12:b307914e162ebd94 camera=12:b307914e162ebd94 shadow=12:b307914e162ebd94 indirect=12:b307914e162ebd94 +geom 19: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9115253 motion [] pieces all=12:24a6e636442db05b camera=12:24a6e636442db05b shadow=12:24a6e636442db05b indirect=12:24a6e636442db05b +geom 20: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1879729 motion [] pieces all=12:481f9cd756cedde0 camera=12:481f9cd756cedde0 shadow=12:481f9cd756cedde0 indirect=12:481f9cd756cedde0 +geom 21: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8957119 motion [] pieces all=12:2d4663e6184de452 camera=12:2d4663e6184de452 shadow=12:2d4663e6184de452 indirect=12:2d4663e6184de452 +geom 22: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0098108 motion [] pieces all=12:b0bb69961ba75478 camera=12:b0bb69961ba75478 shadow=12:b0bb69961ba75478 indirect=12:b0bb69961ba75478 +geom 23: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98019165 motion [] pieces all=12:b9afdaa931bffdb6 camera=12:b9afdaa931bffdb6 shadow=12:b9afdaa931bffdb6 indirect=12:b9afdaa931bffdb6 +geom 24: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0813562 motion [] pieces all=12:f5d0fb106b756265 camera=12:f5d0fb106b756265 shadow=12:f5d0fb106b756265 indirect=12:f5d0fb106b756265 +geom 25: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94515204 motion [] pieces all=12:089190d039cd8f05 camera=12:089190d039cd8f05 shadow=12:089190d039cd8f05 indirect=12:089190d039cd8f05 +geom 26: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84345704 motion [] pieces all=12:e26f0d45af850c90 camera=12:e26f0d45af850c90 shadow=12:e26f0d45af850c90 indirect=12:e26f0d45af850c90 +geom 27: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1462855 motion [] pieces all=12:b6f87466c44a00c9 camera=12:b6f87466c44a00c9 shadow=12:b6f87466c44a00c9 indirect=12:b6f87466c44a00c9 +geom 28: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1544222 motion [] pieces all=12:797d242554fe864a camera=12:797d242554fe864a shadow=12:797d242554fe864a indirect=12:797d242554fe864a +geom 29: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.86153686 motion [] pieces all=12:be846117a4ea7801 camera=12:be846117a4ea7801 shadow=12:be846117a4ea7801 indirect=12:be846117a4ea7801 +geom 30: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0419827 motion [] pieces all=12:6ddf27426dad80b8 camera=12:6ddf27426dad80b8 shadow=12:6ddf27426dad80b8 indirect=12:6ddf27426dad80b8 +geom 31: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9549145 motion [] pieces all=12:3f3d2de984f016e1 camera=12:3f3d2de984f016e1 shadow=12:3f3d2de984f016e1 indirect=12:3f3d2de984f016e1 +geom 32: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1013982 motion [] pieces all=12:d325740a4c504329 camera=12:d325740a4c504329 shadow=12:d325740a4c504329 indirect=12:d325740a4c504329 +geom 33: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8114375 motion [] pieces all=12:f529c99ebd35ea5e camera=12:f529c99ebd35ea5e shadow=12:f529c99ebd35ea5e indirect=12:f529c99ebd35ea5e +geom 34: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0561118 motion [] pieces all=12:3b32daf9fb97191e camera=12:3b32daf9fb97191e shadow=12:3b32daf9fb97191e indirect=12:3b32daf9fb97191e +geom 35: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91436315 motion [] pieces all=12:9336514ad2a50746 camera=12:9336514ad2a50746 shadow=12:9336514ad2a50746 indirect=12:9336514ad2a50746 +geom 36: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8854387 motion [] pieces all=12:ee06eb3bb41cf5e3 camera=12:ee06eb3bb41cf5e3 shadow=12:ee06eb3bb41cf5e3 indirect=12:ee06eb3bb41cf5e3 +geom 37: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1826364 motion [] pieces all=12:6ab824c87ddbb42e camera=12:6ab824c87ddbb42e shadow=12:6ab824c87ddbb42e indirect=12:6ab824c87ddbb42e +geom 38: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98780096 motion [] pieces all=12:3e246edc11785421 camera=12:3e246edc11785421 shadow=12:3e246edc11785421 indirect=12:3e246edc11785421 +geom 39: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0161881 motion [] pieces all=12:460bcfda839b7475 camera=12:460bcfda839b7475 shadow=12:460bcfda839b7475 indirect=12:460bcfda839b7475 +geom 40: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1313198 motion [] pieces all=12:1df02a18f6ef0cb0 camera=12:1df02a18f6ef0cb0 shadow=12:1df02a18f6ef0cb0 indirect=12:1df02a18f6ef0cb0 +geom 41: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8307075 motion [] pieces all=12:e5bd325c9cc63258 camera=12:e5bd325c9cc63258 shadow=12:e5bd325c9cc63258 indirect=12:e5bd325c9cc63258 +geom 42: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93608296 motion [] pieces all=12:eaf20bfe2d9d2ea8 camera=12:eaf20bfe2d9d2ea8 shadow=12:eaf20bfe2d9d2ea8 indirect=12:eaf20bfe2d9d2ea8 +geom 43: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0927486 motion [] pieces all=12:0b46814b8788d10c camera=12:0b46814b8788d10c shadow=12:0b46814b8788d10c indirect=12:0b46814b8788d10c +geom 44: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9677548 motion [] pieces all=12:a11085306be96c79 camera=12:a11085306be96c79 shadow=12:a11085306be96c79 indirect=12:a11085306be96c79 +geom 45: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0287622 motion [] pieces all=12:a2e4e83ee9235718 camera=12:a2e4e83ee9235718 shadow=12:a2e4e83ee9235718 indirect=12:a2e4e83ee9235718 +geom 46: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.867445 motion [] pieces all=12:52a12ca2ad2269a0 camera=12:52a12ca2ad2269a0 shadow=12:52a12ca2ad2269a0 indirect=12:52a12ca2ad2269a0 +geom 47: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1652948 motion [] pieces all=12:8ac666cdc9aed126 camera=12:8ac666cdc9aed126 shadow=12:8ac666cdc9aed126 indirect=12:8ac666cdc9aed126 +geom 48: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1573718 motion [] pieces all=12:dc22e4e0c3a563c5 camera=12:dc22e4e0c3a563c5 shadow=12:dc22e4e0c3a563c5 indirect=12:dc22e4e0c3a563c5 +geom 49: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8516039 motion [] pieces all=12:d5439bf95adb5d29 camera=12:d5439bf95adb5d29 shadow=12:d5439bf95adb5d29 indirect=12:d5439bf95adb5d29 +geom 50: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.957956 motion [] pieces all=12:a2366eb57be17947 camera=12:a2366eb57be17947 shadow=12:a2366eb57be17947 indirect=12:a2366eb57be17947 +geom 51: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476611 motion [] pieces all=12:aa424a427bf1da18 camera=12:aa424a427bf1da18 shadow=12:aa424a427bf1da18 indirect=12:aa424a427bf1da18 +geom 52: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94141537 motion [] pieces all=12:439332df7477a2f0 camera=12:439332df7477a2f0 shadow=12:439332df7477a2f0 indirect=12:439332df7477a2f0 +geom 53: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0779837 motion [] pieces all=12:050de2f979a00214 camera=12:050de2f979a00214 shadow=12:050de2f979a00214 indirect=12:050de2f979a00214 +geom 54: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84913945 motion [] pieces all=12:d359da50fe63fc4e camera=12:d359da50fe63fc4e shadow=12:d359da50fe63fc4e indirect=12:d359da50fe63fc4e +geom 55: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1388466 motion [] pieces all=12:f274bc0e146ac6ec camera=12:f274bc0e146ac6ec shadow=12:f274bc0e146ac6ec indirect=12:f274bc0e146ac6ec +geom 56: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81745243 motion [] pieces all=12:59b88eaab766334e camera=12:59b88eaab766334e shadow=12:59b88eaab766334e indirect=12:59b88eaab766334e +geom 57: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1221887 motion [] pieces all=12:4391248690d8a96c camera=12:4391248690d8a96c shadow=12:4391248690d8a96c indirect=12:4391248690d8a96c +geom 58: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0737523 motion [] pieces all=12:5ca2a2dc5d2ca537 camera=12:5ca2a2dc5d2ca537 shadow=12:5ca2a2dc5d2ca537 indirect=12:5ca2a2dc5d2ca537 +geom 59: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90149456 motion [] pieces all=12:c6c2782f00a068ab camera=12:c6c2782f00a068ab shadow=12:c6c2782f00a068ab indirect=12:c6c2782f00a068ab +geom 60: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98508954 motion [] pieces all=12:75bc6455fa6a273c camera=12:75bc6455fa6a273c shadow=12:75bc6455fa6a273c indirect=12:75bc6455fa6a273c +geom 61: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0035064 motion [] pieces all=12:197384b40f7a87e2 camera=12:197384b40f7a87e2 shadow=12:197384b40f7a87e2 indirect=12:197384b40f7a87e2 +geom 62: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8923537 motion [] pieces all=12:2b6626eb636f521c camera=12:2b6626eb636f521c shadow=12:2b6626eb636f521c indirect=12:2b6626eb636f521c +geom 63: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1949198 motion [] pieces all=12:61af9c9b07f1116d camera=12:61af9c9b07f1116d shadow=12:61af9c9b07f1116d indirect=12:61af9c9b07f1116d +geom 64: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1920719 motion [] pieces all=12:cfd846df87adb0da camera=12:cfd846df87adb0da shadow=12:cfd846df87adb0da indirect=12:cfd846df87adb0da +geom 65: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8984334 motion [] pieces all=12:333d41a0dcb2e201 camera=12:333d41a0dcb2e201 shadow=12:333d41a0dcb2e201 indirect=12:333d41a0dcb2e201 +geom 66: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9751323 motion [] pieces all=12:b7bdd232140c4521 camera=12:b7bdd232140c4521 shadow=12:b7bdd232140c4521 indirect=12:b7bdd232140c4521 +geom 67: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0087382 motion [] pieces all=12:d13ed6cfaf8f058c camera=12:d13ed6cfaf8f058c shadow=12:d13ed6cfaf8f058c indirect=12:d13ed6cfaf8f058c +geom 68: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0648361 motion [] pieces all=12:c21a4efa1141550f camera=12:c21a4efa1141550f shadow=12:c21a4efa1141550f indirect=12:c21a4efa1141550f +geom 69: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90664405 motion [] pieces all=12:c2720b1e01aad493 camera=12:c2720b1e01aad493 shadow=12:c2720b1e01aad493 indirect=12:c2720b1e01aad493 +geom 70: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1171777 motion [] pieces all=12:fad9d3b4cef64b24 camera=12:fad9d3b4cef64b24 shadow=12:fad9d3b4cef64b24 indirect=12:fad9d3b4cef64b24 +geom 71: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.824887 motion [] pieces all=12:f4410e325cd0afb1 camera=12:f4410e325cd0afb1 shadow=12:f4410e325cd0afb1 indirect=12:f4410e325cd0afb1 +geom 72: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9516001 motion [] pieces all=12:cc84d88f692e85a6 camera=12:cc84d88f692e85a6 shadow=12:cc84d88f692e85a6 indirect=12:cc84d88f692e85a6 +geom 73: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0400816 motion [] pieces all=12:e22ab20fe11d8cfe camera=12:e22ab20fe11d8cfe shadow=12:e22ab20fe11d8cfe indirect=12:e22ab20fe11d8cfe +geom 74: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8592531 motion [] pieces all=12:13c0a13a86e249ef camera=12:13c0a13a86e249ef shadow=12:13c0a13a86e249ef indirect=12:13c0a13a86e249ef +geom 75: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1510249 motion [] pieces all=12:1937c664f4367544 camera=12:1937c664f4367544 shadow=12:1937c664f4367544 indirect=12:1937c664f4367544 +geom 76: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0866565 motion [] pieces all=12:5db5fb4d3b4d5b35 camera=12:5db5fb4d3b4d5b35 shadow=12:5db5fb4d3b4d5b35 indirect=12:5db5fb4d3b4d5b35 +geom 77: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9487157 motion [] pieces all=12:d58005e750fb4342 camera=12:d58005e750fb4342 shadow=12:d58005e750fb4342 indirect=12:d58005e750fb4342 +geom 78: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1492283 motion [] pieces all=12:0342164286461ee3 camera=12:0342164286461ee3 shadow=12:0342164286461ee3 indirect=12:0342164286461ee3 +geom 79: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83977586 motion [] pieces all=12:c807827e3075e055 camera=12:c807827e3075e055 shadow=12:c807827e3075e055 indirect=12:c807827e3075e055 +geom 80: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0217434 motion [] pieces all=12:5285ac30cc4da062 camera=12:5285ac30cc4da062 shadow=12:5285ac30cc4da062 indirect=12:5285ac30cc4da062 +geom 81: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9952757 motion [] pieces all=12:10bc56ab6511ed11 camera=12:10bc56ab6511ed11 shadow=12:10bc56ab6511ed11 indirect=12:10bc56ab6511ed11 +geom 82: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87789065 motion [] pieces all=12:b7b3cff366213430 camera=12:b7b3cff366213430 shadow=12:b7b3cff366213430 indirect=12:b7b3cff366213430 +geom 83: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.179131 motion [] pieces all=12:26dba7352b5248dd camera=12:26dba7352b5248dd shadow=12:26dba7352b5248dd indirect=12:26dba7352b5248dd +geom 84: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80048686 motion [] pieces all=12:ca11206893156c4a camera=12:ca11206893156c4a shadow=12:ca11206893156c4a indirect=12:ca11206893156c4a +geom 85: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1101823 motion [] pieces all=12:956ae996e038f15c camera=12:956ae996e038f15c shadow=12:956ae996e038f15c indirect=12:956ae996e038f15c +geom 86: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92086023 motion [] pieces all=12:bb66f238124bf21c camera=12:bb66f238124bf21c shadow=12:bb66f238124bf21c indirect=12:bb66f238124bf21c +geom 87: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0607451 motion [] pieces all=12:bfb452bde61271c1 camera=12:bfb452bde61271c1 shadow=12:bfb452bde61271c1 indirect=12:bfb452bde61271c1 +geom 88: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1730204 motion [] pieces all=12:4202277f53e57a26 camera=12:4202277f53e57a26 shadow=12:4202277f53e57a26 indirect=12:4202277f53e57a26 +geom 89: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8726802 motion [] pieces all=12:bfff37b52c3695b3 camera=12:bfff37b52c3695b3 shadow=12:bfff37b52c3695b3 indirect=12:bfff37b52c3695b3 +geom 90: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0355178 motion [] pieces all=12:d92670a1b5505f3f camera=12:d92670a1b5505f3f shadow=12:d92670a1b5505f3f indirect=12:d92670a1b5505f3f +geom 91: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97155887 motion [] pieces all=12:038043fc4d8f3922 camera=12:038043fc4d8f3922 shadow=12:038043fc4d8f3922 indirect=12:038043fc4d8f3922 +geom 92: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1275393 motion [] pieces all=12:21160187a4422810 camera=12:21160187a4422810 shadow=12:21160187a4422810 indirect=12:21160187a4422810 +geom 93: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83525693 motion [] pieces all=12:222fd24745b9a688 camera=12:222fd24745b9a688 shadow=12:222fd24745b9a688 indirect=12:222fd24745b9a688 +geom 94: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0946484 motion [] pieces all=12:b93a89503d2db429 camera=12:b93a89503d2db429 shadow=12:b93a89503d2db429 indirect=12:b93a89503d2db429 +geom 95: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92521805 motion [] pieces all=12:9deb2e0bd53286f5 camera=12:9deb2e0bd53286f5 shadow=12:9deb2e0bd53286f5 indirect=12:9deb2e0bd53286f5 +geom 96: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0792248 motion [] pieces all=12:c39dad0894dc3c01 camera=12:c39dad0894dc3c01 shadow=12:c39dad0894dc3c01 indirect=12:c39dad0894dc3c01 +geom 97: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.938952 motion [] pieces all=12:82dba3e562b9171c camera=12:82dba3e562b9171c shadow=12:82dba3e562b9171c indirect=12:82dba3e562b9171c +geom 98: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8466961 motion [] pieces all=12:5771a39944397bbc camera=12:5771a39944397bbc shadow=12:5771a39944397bbc indirect=12:5771a39944397bbc +geom 99: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1409111 motion [] pieces all=12:f4f5b1d34830c065 camera=12:f4f5b1d34830c065 shadow=12:f4f5b1d34830c065 indirect=12:f4f5b1d34830c065 +geom 100: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1619297 motion [] pieces all=12:2ac55dd6a5129a82 camera=12:2ac55dd6a5129a82 shadow=12:2ac55dd6a5129a82 indirect=12:2ac55dd6a5129a82 +geom 101: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8545255 motion [] pieces all=12:3318ba1c1ea6cb67 camera=12:3318ba1c1ea6cb67 shadow=12:3318ba1c1ea6cb67 indirect=12:3318ba1c1ea6cb67 +geom 102: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0461638 motion [] pieces all=12:abd06b6ac0d101a8 camera=12:abd06b6ac0d101a8 shadow=12:abd06b6ac0d101a8 indirect=12:abd06b6ac0d101a8 +geom 103: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95997083 motion [] pieces all=12:0e766dd59c7864ea camera=12:0e766dd59c7864ea shadow=12:0e766dd59c7864ea indirect=12:0e766dd59c7864ea +geom 104: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9838973 motion [] pieces all=12:4e51be9913a19574 camera=12:4e51be9913a19574 shadow=12:4e51be9913a19574 indirect=12:4e51be9913a19574 +geom 105: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0016983 motion [] pieces all=12:205b772513a5b2d0 camera=12:205b772513a5b2d0 shadow=12:205b772513a5b2d0 indirect=12:205b772513a5b2d0 +geom 106: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1974854 motion [] pieces all=12:aafd38f582755d75 camera=12:aafd38f582755d75 shadow=12:aafd38f582755d75 indirect=12:aafd38f582755d75 +geom 107: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89059156 motion [] pieces all=12:5e1c6ed9efae70da camera=12:5e1c6ed9efae70da shadow=12:5e1c6ed9efae70da indirect=12:5e1c6ed9efae70da +geom 108: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1189466 motion [] pieces all=12:1ccc269c6db79208 camera=12:1ccc269c6db79208 shadow=12:1ccc269c6db79208 indirect=12:1ccc269c6db79208 +geom 109: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81325066 motion [] pieces all=12:13bc64f0b3663db5 camera=12:13bc64f0b3663db5 shadow=12:13bc64f0b3663db5 indirect=12:13bc64f0b3663db5 +geom 110: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.069818 motion [] pieces all=12:932fe7987a89653d camera=12:932fe7987a89653d shadow=12:932fe7987a89653d indirect=12:932fe7987a89653d +geom 111: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9038211 motion [] pieces all=12:90f5b972915f93b4 camera=12:90f5b972915f93b4 shadow=12:90f5b972915f93b4 indirect=12:90f5b972915f93b4 +geom 112: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1853997 motion [] pieces all=12:8179b93651694931 camera=12:8179b93651694931 shadow=12:8179b93651694931 indirect=12:8179b93651694931 +geom 113: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88160837 motion [] pieces all=12:069fc554995e3ee7 camera=12:069fc554995e3ee7 shadow=12:069fc554995e3ee7 indirect=12:069fc554995e3ee7 +geom 114: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0146524 motion [] pieces all=12:e176080f78b1eb15 camera=12:e176080f78b1eb15 shadow=12:e176080f78b1eb15 indirect=12:e176080f78b1eb15 +geom 115: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99161226 motion [] pieces all=12:ef58b8a0de63d3c4 camera=12:ef58b8a0de63d3c4 shadow=12:ef58b8a0de63d3c4 indirect=12:ef58b8a0de63d3c4 +geom 116: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0511867 motion [] pieces all=12:4b16770c04cd474b camera=12:4b16770c04cd474b shadow=12:4b16770c04cd474b indirect=12:4b16770c04cd474b +geom 117: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9171676 motion [] pieces all=12:609f6f3ddcf1af6d camera=12:609f6f3ddcf1af6d shadow=12:609f6f3ddcf1af6d indirect=12:609f6f3ddcf1af6d +geom 118: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80908626 motion [] pieces all=12:4c035f8f3318d2f6 camera=12:4c035f8f3318d2f6 shadow=12:4c035f8f3318d2f6 indirect=12:4c035f8f3318d2f6 +geom 119: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.103263 motion [] pieces all=12:700889d040a6e4dd camera=12:700889d040a6e4dd shadow=12:700889d040a6e4dd indirect=12:700889d040a6e4dd +geom 120: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8642026 motion [] pieces all=12:6e10e505ba86c48e camera=12:6e10e505ba86c48e shadow=12:6e10e505ba86c48e indirect=12:6e10e505ba86c48e +geom 121: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1678903 motion [] pieces all=12:3582f8fba0915f4a camera=12:3582f8fba0915f4a shadow=12:3582f8fba0915f4a indirect=12:3582f8fba0915f4a +geom 122: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9633117 motion [] pieces all=12:2040ef2ac8c3a93d camera=12:2040ef2ac8c3a93d shadow=12:2040ef2ac8c3a93d indirect=12:2040ef2ac8c3a93d +geom 123: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0253445 motion [] pieces all=12:a91be1fa2268d70b camera=12:a91be1fa2268d70b shadow=12:a91be1fa2268d70b indirect=12:a91be1fa2268d70b +geom 124: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.13635 motion [] pieces all=12:9e7372e64ec5bb9d camera=12:9e7372e64ec5bb9d shadow=12:9e7372e64ec5bb9d indirect=12:9e7372e64ec5bb9d +geom 125: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8252184 motion [] pieces all=12:27afe71487c8acfc camera=12:27afe71487c8acfc shadow=12:27afe71487c8acfc indirect=12:27afe71487c8acfc +geom 126: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0885826 motion [] pieces all=12:c9ce7a955379bf47 camera=12:c9ce7a955379bf47 shadow=12:c9ce7a955379bf47 indirect=12:c9ce7a955379bf47 +geom 127: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9313929 motion [] pieces all=12:f936746ea9fdaa67 camera=12:f936746ea9fdaa67 shadow=12:f936746ea9fdaa67 indirect=12:f936746ea9fdaa67 +geom 128: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0906614 motion [] pieces all=12:e6990c8db4ea9e79 camera=12:e6990c8db4ea9e79 shadow=12:e6990c8db4ea9e79 indirect=12:e6990c8db4ea9e79 +geom 129: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93495494 motion [] pieces all=12:75b610907ba3ea9b camera=12:75b610907ba3ea9b shadow=12:75b610907ba3ea9b indirect=12:75b610907ba3ea9b +geom 130: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82858384 motion [] pieces all=12:e78b8cafbe306a32 camera=12:e78b8cafbe306a32 shadow=12:e78b8cafbe306a32 indirect=12:e78b8cafbe306a32 +geom 131: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1339966 motion [] pieces all=12:b9ac9a14840ed1f6 camera=12:b9ac9a14840ed1f6 shadow=12:b9ac9a14840ed1f6 indirect=12:b9ac9a14840ed1f6 +geom 132: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8659113 motion [] pieces all=12:b1a9a739c1c000bc camera=12:b1a9a739c1c000bc shadow=12:b1a9a739c1c000bc indirect=12:b1a9a739c1c000bc +geom 133: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1626551 motion [] pieces all=12:9f5c63d26cf251c1 camera=12:9f5c63d26cf251c1 shadow=12:9f5c63d26cf251c1 indirect=12:9f5c63d26cf251c1 +geom 134: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96570367 motion [] pieces all=12:e82835f20fda3a2d camera=12:e82835f20fda3a2d shadow=12:e82835f20fda3a2d indirect=12:e82835f20fda3a2d +geom 135: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0299364 motion [] pieces all=12:a9c34018dedecc29 camera=12:a9c34018dedecc29 shadow=12:a9c34018dedecc29 indirect=12:a9c34018dedecc29 +geom 136: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0544772 motion [] pieces all=12:f171c63901b9cd24 camera=12:f171c63901b9cd24 shadow=12:f171c63901b9cd24 indirect=12:f171c63901b9cd24 +geom 137: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9139284 motion [] pieces all=12:66942b3dbac18127 camera=12:66942b3dbac18127 shadow=12:66942b3dbac18127 indirect=12:66942b3dbac18127 +geom 138: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.103051 motion [] pieces all=12:0c9467685e6faf9b camera=12:0c9467685e6faf9b shadow=12:0c9467685e6faf9b indirect=12:0c9467685e6faf9b +geom 139: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81037587 motion [] pieces all=12:4628207e87532cd9 camera=12:4628207e87532cd9 shadow=12:4628207e87532cd9 indirect=12:4628207e87532cd9 +geom 140: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0183249 motion [] pieces all=12:865fd372ca38e7d5 camera=12:865fd372ca38e7d5 shadow=12:865fd372ca38e7d5 indirect=12:865fd372ca38e7d5 +geom 141: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99033916 motion [] pieces all=12:fd4547bf3f39772e camera=12:fd4547bf3f39772e shadow=12:fd4547bf3f39772e indirect=12:fd4547bf3f39772e +geom 142: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1833695 motion [] pieces all=12:4718ab9f74de7af5 camera=12:4718ab9f74de7af5 shadow=12:4718ab9f74de7af5 indirect=12:4718ab9f74de7af5 +geom 143: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8870931 motion [] pieces all=12:f073ad6af47da1b9 camera=12:f073ad6af47da1b9 shadow=12:f073ad6af47da1b9 indirect=12:f073ad6af47da1b9 +geom 144: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0751863 motion [] pieces all=12:469243371e3601c4 camera=12:469243371e3601c4 shadow=12:469243371e3601c4 indirect=12:469243371e3601c4 +geom 145: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94338113 motion [] pieces all=12:242ede1ac82d2838 camera=12:242ede1ac82d2838 shadow=12:242ede1ac82d2838 indirect=12:242ede1ac82d2838 +geom 146: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1404334 motion [] pieces all=12:6ae0e374492b1345 camera=12:6ae0e374492b1345 shadow=12:6ae0e374492b1345 indirect=12:6ae0e374492b1345 +geom 147: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84811646 motion [] pieces all=12:7fc28f36f60f9e79 camera=12:7fc28f36f60f9e79 shadow=12:7fc28f36f60f9e79 indirect=12:7fc28f36f60f9e79 +geom 148: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1578814 motion [] pieces all=12:004bab5661b3c514 camera=12:004bab5661b3c514 shadow=12:004bab5661b3c514 indirect=12:004bab5661b3c514 +geom 149: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8510541 motion [] pieces all=12:06ee30278c301b97 camera=12:06ee30278c301b97 shadow=12:06ee30278c301b97 indirect=12:06ee30278c301b97 +geom 150: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95639116 motion [] pieces all=12:0cc69f7eab6608d5 camera=12:0cc69f7eab6608d5 shadow=12:0cc69f7eab6608d5 indirect=12:0cc69f7eab6608d5 +geom 151: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0488136 motion [] pieces all=12:84683631bf3f2d7f camera=12:84683631bf3f2d7f shadow=12:84683631bf3f2d7f indirect=12:84683631bf3f2d7f +geom 152: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1240493 motion [] pieces all=12:09e0339043c05885 camera=12:09e0339043c05885 shadow=12:09e0339043c05885 indirect=12:09e0339043c05885 +geom 153: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81715965 motion [] pieces all=12:baff44b23fa2fe8c camera=12:baff44b23fa2fe8c shadow=12:baff44b23fa2fe8c indirect=12:baff44b23fa2fe8c +geom 154: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.072348 motion [] pieces all=12:7f07f015aba3675f camera=12:7f07f015aba3675f shadow=12:7f07f015aba3675f indirect=12:7f07f015aba3675f +geom 155: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9028523 motion [] pieces all=12:e544345b30b64bce camera=12:e544345b30b64bce shadow=12:e544345b30b64bce indirect=12:e544345b30b64bce +geom 156: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.195409 motion [] pieces all=12:bf44779c62a0d1d9 camera=12:bf44779c62a0d1d9 shadow=12:bf44779c62a0d1d9 indirect=12:bf44779c62a0d1d9 +geom 157: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8909322 motion [] pieces all=12:d9444d58a4aa29bf camera=12:d9444d58a4aa29bf shadow=12:d9444d58a4aa29bf indirect=12:d9444d58a4aa29bf +geom 158: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0053203 motion [] pieces all=12:f5a72299b44a6f83 camera=12:f5a72299b44a6f83 shadow=12:f5a72299b44a6f83 indirect=12:f5a72299b44a6f83 +geom 159: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9874529 motion [] pieces all=12:478c430d181f0449 camera=12:478c430d181f0449 shadow=12:478c430d181f0449 indirect=12:478c430d181f0449 +geom 160: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.833996 motion [] pieces all=12:4f2c575953df9f82 camera=12:4f2c575953df9f82 shadow=12:4f2c575953df9f82 indirect=12:4f2c575953df9f82 +geom 161: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.129332 motion [] pieces all=12:858c4460ee11a801 camera=12:858c4460ee11a801 shadow=12:858c4460ee11a801 indirect=12:858c4460ee11a801 +geom 162: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9295599 motion [] pieces all=12:e49c9cd7bb7700e3 camera=12:e49c9cd7bb7700e3 shadow=12:e49c9cd7bb7700e3 indirect=12:e49c9cd7bb7700e3 +geom 163: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0982622 motion [] pieces all=12:dc41ad73cd114385 camera=12:dc41ad73cd114385 shadow=12:dc41ad73cd114385 indirect=12:dc41ad73cd114385 +geom 164: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97451484 motion [] pieces all=12:09af8565fc3d201d camera=12:09af8565fc3d201d shadow=12:09af8565fc3d201d indirect=12:09af8565fc3d201d +geom 165: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0320674 motion [] pieces all=12:9f9b6a360e10adbb camera=12:9f9b6a360e10adbb shadow=12:9f9b6a360e10adbb indirect=12:9f9b6a360e10adbb +geom 166: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1709979 motion [] pieces all=12:99d2f51f4821115d camera=12:99d2f51f4821115d shadow=12:99d2f51f4821115d indirect=12:99d2f51f4821115d +geom 167: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8691917 motion [] pieces all=12:0d56e690544efec0 camera=12:0d56e690544efec0 shadow=12:0d56e690544efec0 indirect=12:0d56e690544efec0 +geom 168: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87965363 motion [] pieces all=12:827e12ddbf252fb5 camera=12:827e12ddbf252fb5 shadow=12:827e12ddbf252fb5 indirect=12:827e12ddbf252fb5 +geom 169: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1770281 motion [] pieces all=12:88a6fafd5aaa039d camera=12:88a6fafd5aaa039d shadow=12:88a6fafd5aaa039d indirect=12:88a6fafd5aaa039d +geom 170: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9975212 motion [] pieces all=12:f46016e89c458233 camera=12:f46016e89c458233 shadow=12:f46016e89c458233 indirect=12:f46016e89c458233 +geom 171: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0249971 motion [] pieces all=12:d662864dd505c55e camera=12:d662864dd505c55e shadow=12:d662864dd505c55e indirect=12:d662864dd505c55e +geom 172: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92243314 motion [] pieces all=12:f342c3a2ed6b0950 camera=12:f342c3a2ed6b0950 shadow=12:f342c3a2ed6b0950 indirect=12:f342c3a2ed6b0950 +geom 173: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0585103 motion [] pieces all=12:ee7ff15f2424922f camera=12:ee7ff15f2424922f shadow=12:ee7ff15f2424922f indirect=12:ee7ff15f2424922f +geom 174: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1082776 motion [] pieces all=12:86ef859898372a65 camera=12:86ef859898372a65 shadow=12:86ef859898372a65 indirect=12:86ef859898372a65 +geom 175: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80569136 motion [] pieces all=12:9ec313ad6c2136d1 camera=12:9ec313ad6c2136d1 shadow=12:9ec313ad6c2136d1 indirect=12:9ec313ad6c2136d1 +geom 176: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9787432 motion [] pieces all=12:2dde1f02614bce01 camera=12:2dde1f02614bce01 shadow=12:2dde1f02614bce01 indirect=12:2dde1f02614bce01 +geom 177: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0118738 motion [] pieces all=12:aafadba605d03110 camera=12:aafadba605d03110 shadow=12:aafadba605d03110 indirect=12:aafadba605d03110 +geom 178: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89458597 motion [] pieces all=12:21e27892f962ac44 camera=12:21e27892f962ac44 shadow=12:21e27892f962ac44 indirect=12:21e27892f962ac44 +geom 179: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.190431 motion [] pieces all=12:6675c70617e67d8a camera=12:6675c70617e67d8a shadow=12:6675c70617e67d8a indirect=12:6675c70617e67d8a +geom 180: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0687202 motion [] pieces all=12:c5167e2e7d81c2ff camera=12:c5167e2e7d81c2ff shadow=12:c5167e2e7d81c2ff indirect=12:c5167e2e7d81c2ff +geom 181: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91078526 motion [] pieces all=12:48e2cb88cfa05576 camera=12:48e2cb88cfa05576 shadow=12:48e2cb88cfa05576 indirect=12:48e2cb88cfa05576 +geom 182: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1132085 motion [] pieces all=12:043069344a3076c2 camera=12:043069344a3076c2 shadow=12:043069344a3076c2 indirect=12:043069344a3076c2 +geom 183: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81958956 motion [] pieces all=12:b6a3b6188b4b31bf camera=12:b6a3b6188b4b31bf shadow=12:b6a3b6188b4b31bf indirect=12:b6a3b6188b4b31bf +geom 184: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95427895 motion [] pieces all=12:c001bd0dad9ff844 camera=12:c001bd0dad9ff844 shadow=12:c001bd0dad9ff844 indirect=12:c001bd0dad9ff844 +geom 185: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0434186 motion [] pieces all=12:0b59ff7e43848943 camera=12:0b59ff7e43848943 shadow=12:0b59ff7e43848943 indirect=12:0b59ff7e43848943 +geom 186: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1551938 motion [] pieces all=12:5218f56e8786a8d1 camera=12:5218f56e8786a8d1 shadow=12:5218f56e8786a8d1 indirect=12:5218f56e8786a8d1 +geom 187: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8595143 motion [] pieces all=12:4a7806cbcbb88531 camera=12:4a7806cbcbb88531 shadow=12:4a7806cbcbb88531 indirect=12:4a7806cbcbb88531 +geom 188: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8408943 motion [] pieces all=12:7f3b442d9e722de1 camera=12:7f3b442d9e722de1 shadow=12:7f3b442d9e722de1 indirect=12:7f3b442d9e722de1 +geom 189: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1452442 motion [] pieces all=12:e0d5bbe9bb208a1d camera=12:e0d5bbe9bb208a1d shadow=12:e0d5bbe9bb208a1d indirect=12:e0d5bbe9bb208a1d +geom 190: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9464676 motion [] pieces all=12:b085d7918bf6355b camera=12:b085d7918bf6355b shadow=12:b085d7918bf6355b indirect=12:b085d7918bf6355b +geom 191: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0834273 motion [] pieces all=12:abe6c6954e3382a9 camera=12:abe6c6954e3382a9 shadow=12:abe6c6954e3382a9 indirect=12:abe6c6954e3382a9 +geom 192: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8574602 motion [] pieces all=12:71ee11b13c594ff9 camera=12:71ee11b13c594ff9 shadow=12:71ee11b13c594ff9 indirect=12:71ee11b13c594ff9 +geom 193: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.151815 motion [] pieces all=12:dbe2a094f9f5dd6a camera=12:dbe2a094f9f5dd6a shadow=12:dbe2a094f9f5dd6a indirect=12:dbe2a094f9f5dd6a +geom 194: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0380479 motion [] pieces all=12:287aaeeaee0c366b camera=12:287aaeeaee0c366b shadow=12:287aaeeaee0c366b indirect=12:287aaeeaee0c366b +geom 195: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95154804 motion [] pieces all=12:4846d4ce61cd070a camera=12:4846d4ce61cd070a shadow=12:4846d4ce61cd070a indirect=12:4846d4ce61cd070a +geom 196: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0853423 motion [] pieces all=12:668675de6db22ea9 camera=12:668675de6db22ea9 shadow=12:668675de6db22ea9 indirect=12:668675de6db22ea9 +geom 197: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9481686 motion [] pieces all=12:b2176c9e3a8bd6be camera=12:b2176c9e3a8bd6be shadow=12:b2176c9e3a8bd6be indirect=12:b2176c9e3a8bd6be +geom 198: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.148388 motion [] pieces all=12:1b5bfe08d8aecf46 camera=12:1b5bfe08d8aecf46 shadow=12:1b5bfe08d8aecf46 indirect=12:1b5bfe08d8aecf46 +geom 199: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8388503 motion [] pieces all=12:ed6a27aa851d98b4 camera=12:ed6a27aa851d98b4 shadow=12:ed6a27aa851d98b4 indirect=12:ed6a27aa851d98b4 +geom 200: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1177161 motion [] pieces all=12:477f446ff91418fe camera=12:477f446ff91418fe shadow=12:477f446ff91418fe indirect=12:477f446ff91418fe +geom 201: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.821902 motion [] pieces all=12:e45df0929b4a7a20 camera=12:e45df0929b4a7a20 shadow=12:e45df0929b4a7a20 indirect=12:e45df0929b4a7a20 +geom 202: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9081097 motion [] pieces all=12:d8ac1550c1d701d3 camera=12:d8ac1550c1d701d3 shadow=12:d8ac1550c1d701d3 indirect=12:d8ac1550c1d701d3 +geom 203: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0630432 motion [] pieces all=12:4bf7c09967756dab camera=12:4bf7c09967756dab shadow=12:4bf7c09967756dab indirect=12:4bf7c09967756dab +geom 204: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0076557 motion [] pieces all=12:4b743cdcfe182631 camera=12:4b743cdcfe182631 shadow=12:4b743cdcfe182631 indirect=12:4b743cdcfe182631 +geom 205: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97757643 motion [] pieces all=12:ce244f01fc616d6d camera=12:ce244f01fc616d6d shadow=12:ce244f01fc616d6d indirect=12:ce244f01fc616d6d +geom 206: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1927692 motion [] pieces all=12:3680ff2a1925c2b8 camera=12:3680ff2a1925c2b8 shadow=12:3680ff2a1925c2b8 indirect=12:3680ff2a1925c2b8 +geom 207: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8998191 motion [] pieces all=12:631eb32618265a1d camera=12:631eb32618265a1d shadow=12:631eb32618265a1d indirect=12:631eb32618265a1d +geom 208: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0190506 motion [] pieces all=12:ecbbd67d5ea82535 camera=12:ecbbd67d5ea82535 shadow=12:ecbbd67d5ea82535 indirect=12:ecbbd67d5ea82535 +geom 209: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99540603 motion [] pieces all=12:3ff8d546f9bdd0fb camera=12:3ff8d546f9bdd0fb shadow=12:3ff8d546f9bdd0fb indirect=12:3ff8d546f9bdd0fb +geom 210: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1799959 motion [] pieces all=12:2317ef2a031d8f47 camera=12:2317ef2a031d8f47 shadow=12:2317ef2a031d8f47 indirect=12:2317ef2a031d8f47 +geom 211: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87620467 motion [] pieces all=12:1779aa23bb0f9042 camera=12:1779aa23bb0f9042 shadow=12:1779aa23bb0f9042 indirect=12:1779aa23bb0f9042 +geom 212: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1119057 motion [] pieces all=12:91f1de75efe1ff66 camera=12:91f1de75efe1ff66 shadow=12:91f1de75efe1ff66 indirect=12:91f1de75efe1ff66 +geom 213: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8029353 motion [] pieces all=12:504fea94e49e26b5 camera=12:504fea94e49e26b5 shadow=12:504fea94e49e26b5 indirect=12:504fea94e49e26b5 +geom 214: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9190664 motion [] pieces all=12:0efb54b7f23ac443 camera=12:0efb54b7f23ac443 shadow=12:0efb54b7f23ac443 indirect=12:0efb54b7f23ac443 +geom 215: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0612158 motion [] pieces all=12:55a92efc8135fc5d camera=12:55a92efc8135fc5d shadow=12:55a92efc8135fc5d indirect=12:55a92efc8135fc5d +geom 216: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1734748 motion [] pieces all=12:a620be5aa9925d00 camera=12:a620be5aa9925d00 shadow=12:a620be5aa9925d00 indirect=12:a620be5aa9925d00 +geom 217: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8742897 motion [] pieces all=12:c2fbfc60af19f0d0 camera=12:c2fbfc60af19f0d0 shadow=12:c2fbfc60af19f0d0 indirect=12:c2fbfc60af19f0d0 +geom 218: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0368638 motion [] pieces all=12:fd178773edcdb210 camera=12:fd178773edcdb210 shadow=12:fd178773edcdb210 indirect=12:fd178773edcdb210 +geom 219: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9695358 motion [] pieces all=12:92c10878d7799c47 camera=12:92c10878d7799c47 shadow=12:92c10878d7799c47 indirect=12:92c10878d7799c47 +geom 220: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83632326 motion [] pieces all=12:56eef0396f98b12d camera=12:56eef0396f98b12d shadow=12:56eef0396f98b12d indirect=12:56eef0396f98b12d +geom 221: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.125916 motion [] pieces all=12:2ee3e4102b2ca7c0 camera=12:2ee3e4102b2ca7c0 shadow=12:2ee3e4102b2ca7c0 indirect=12:2ee3e4102b2ca7c0 +geom 222: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92677325 motion [] pieces all=12:9c793be4df2804bc camera=12:9c793be4df2804bc shadow=12:9c793be4df2804bc indirect=12:9c793be4df2804bc +geom 223: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.096751 motion [] pieces all=12:b6735b8f2a80f193 camera=12:b6735b8f2a80f193 shadow=12:b6735b8f2a80f193 indirect=12:b6735b8f2a80f193 +geom 224: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99294955 motion [] pieces all=12:e14d605bbad5054b camera=12:e14d605bbad5054b shadow=12:e14d605bbad5054b indirect=12:e14d605bbad5054b +geom 225: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0129327 motion [] pieces all=12:ce70384139f3d953 camera=12:ce70384139f3d953 shadow=12:ce70384139f3d953 indirect=12:ce70384139f3d953 +geom 226: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8834852 motion [] pieces all=12:f275b69e8465276d camera=12:f275b69e8465276d shadow=12:f275b69e8465276d indirect=12:f275b69e8465276d +geom 227: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1862364 motion [] pieces all=12:73a525c8a7cfebfc camera=12:73a525c8a7cfebfc shadow=12:73a525c8a7cfebfc indirect=12:73a525c8a7cfebfc +geom 228: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80695534 motion [] pieces all=12:4fc4787ac53c19ae camera=12:4fc4787ac53c19ae shadow=12:4fc4787ac53c19ae indirect=12:4fc4787ac53c19ae +geom 229: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1052685 motion [] pieces all=12:5f526759f00f8bb1 camera=12:5f526759f00f8bb1 shadow=12:5f526759f00f8bb1 indirect=12:5f526759f00f8bb1 +geom 230: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0517714 motion [] pieces all=12:43a08224d7f3a5ff camera=12:43a08224d7f3a5ff shadow=12:43a08224d7f3a5ff indirect=12:43a08224d7f3a5ff +geom 231: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9183691 motion [] pieces all=12:4e8261fe621a8754 camera=12:4e8261fe621a8754 shadow=12:4e8261fe621a8754 indirect=12:4e8261fe621a8754 +geom 232: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0896878 motion [] pieces all=12:2105a034e5acb921 camera=12:2105a034e5acb921 shadow=12:2105a034e5acb921 indirect=12:2105a034e5acb921 +geom 233: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93423206 motion [] pieces all=12:47b70feddcfef5c4 camera=12:47b70feddcfef5c4 shadow=12:47b70feddcfef5c4 indirect=12:47b70feddcfef5c4 +geom 234: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1348141 motion [] pieces all=12:c150c564a2f639e3 camera=12:c150c564a2f639e3 shadow=12:c150c564a2f639e3 indirect=12:c150c564a2f639e3 +geom 235: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8272541 motion [] pieces all=12:9a036bb10f2a8c19 camera=12:9a036bb10f2a8c19 shadow=12:9a036bb10f2a8c19 indirect=12:9a036bb10f2a8c19 +geom 236: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8628023 motion [] pieces all=12:df84cc6ab0cf1013 camera=12:df84cc6ab0cf1013 shadow=12:df84cc6ab0cf1013 indirect=12:df84cc6ab0cf1013 +geom 237: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1667898 motion [] pieces all=12:ea055c935781e4b2 camera=12:ea055c935781e4b2 shadow=12:ea055c935781e4b2 indirect=12:ea055c935781e4b2 +geom 238: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0272492 motion [] pieces all=12:b666550bc7f3f2e3 camera=12:b666550bc7f3f2e3 shadow=12:b666550bc7f3f2e3 indirect=12:b666550bc7f3f2e3 +geom 239: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9644636 motion [] pieces all=12:25b40fe1e3b33c13 camera=12:25b40fe1e3b33c13 shadow=12:25b40fe1e3b33c13 indirect=12:25b40fe1e3b33c13 +geom 240: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9401488 motion [] pieces all=12:ef193e56f1c675ad camera=12:ef193e56f1c675ad shadow=12:ef193e56f1c675ad indirect=12:ef193e56f1c675ad +geom 241: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0806658 motion [] pieces all=12:6cd8d81131f613a5 camera=12:6cd8d81131f613a5 shadow=12:6cd8d81131f613a5 indirect=12:6cd8d81131f613a5 +geom 242: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84431666 motion [] pieces all=12:75d58887322e3c92 camera=12:75d58887322e3c92 shadow=12:75d58887322e3c92 indirect=12:75d58887322e3c92 +geom 243: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1427468 motion [] pieces all=12:ceb6c2a84e7313ea camera=12:ceb6c2a84e7313ea shadow=12:ceb6c2a84e7313ea indirect=12:ceb6c2a84e7313ea +geom 244: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8558955 motion [] pieces all=12:966eb51da03b3092 camera=12:966eb51da03b3092 shadow=12:966eb51da03b3092 indirect=12:966eb51da03b3092 +geom 245: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1608133 motion [] pieces all=12:4684046ad71d3941 camera=12:4684046ad71d3941 shadow=12:4684046ad71d3941 indirect=12:4684046ad71d3941 +geom 246: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0448556 motion [] pieces all=12:8909f2f12790188f camera=12:8909f2f12790188f shadow=12:8909f2f12790188f indirect=12:8909f2f12790188f +geom 247: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9619815 motion [] pieces all=12:e68d935303781b60 camera=12:e68d935303781b60 shadow=12:e68d935303781b60 indirect=12:e68d935303781b60 +geom 248: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9050406 motion [] pieces all=12:77e1fb7c3ccd3b72 camera=12:77e1fb7c3ccd3b72 shadow=12:77e1fb7c3ccd3b72 indirect=12:77e1fb7c3ccd3b72 +geom 249: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0704575 motion [] pieces all=12:bf814629e90eb2a6 camera=12:bf814629e90eb2a6 shadow=12:bf814629e90eb2a6 indirect=12:bf814629e90eb2a6 +geom 250: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8142105 motion [] pieces all=12:3e101c8e3b9023da camera=12:3e101c8e3b9023da shadow=12:3e101c8e3b9023da indirect=12:3e101c8e3b9023da +geom 251: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1210591 motion [] pieces all=12:adeb9df8e5336e1e camera=12:adeb9df8e5336e1e shadow=12:adeb9df8e5336e1e indirect=12:adeb9df8e5336e1e +geom 252: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0009634 motion [] pieces all=12:243ce4af91f5aa9f camera=12:243ce4af91f5aa9f shadow=12:243ce4af91f5aa9f indirect=12:243ce4af91f5aa9f +geom 253: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9823128 motion [] pieces all=12:930bc470da7bfca0 camera=12:930bc470da7bfca0 shadow=12:930bc470da7bfca0 indirect=12:930bc470da7bfca0 +geom 254: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1997087 motion [] pieces all=12:0eed12db9d57f617 camera=12:0eed12db9d57f617 shadow=12:0eed12db9d57f617 indirect=12:0eed12db9d57f617 +geom 255: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8885824 motion [] pieces all=12:085bce0e053ac672 camera=12:085bce0e053ac672 shadow=12:085bce0e053ac672 indirect=12:085bce0e053ac672 +geom 256: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1071253 motion [] pieces all=12:558e90753a1dbe0c camera=12:558e90753a1dbe0c shadow=12:558e90753a1dbe0c indirect=12:558e90753a1dbe0c +geom 257: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80412865 motion [] pieces all=12:438f0ac0ef81a15c camera=12:438f0ac0ef81a15c shadow=12:438f0ac0ef81a15c indirect=12:438f0ac0ef81a15c +geom 258: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.056387 motion [] pieces all=12:532e9c68579ceebf camera=12:532e9c68579ceebf shadow=12:532e9c68579ceebf indirect=12:532e9c68579ceebf +geom 259: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92466545 motion [] pieces all=12:8bd67b0e1ac0a9c5 camera=12:8bd67b0e1ac0a9c5 shadow=12:8bd67b0e1ac0a9c5 indirect=12:8bd67b0e1ac0a9c5 +geom 260: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0224771 motion [] pieces all=12:db8f1a9cc1fdd115 camera=12:db8f1a9cc1fdd115 shadow=12:db8f1a9cc1fdd115 indirect=12:db8f1a9cc1fdd115 +geom 261: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9992335 motion [] pieces all=12:c12fef72270cd9b9 camera=12:c12fef72270cd9b9 shadow=12:c12fef72270cd9b9 indirect=12:c12fef72270cd9b9 +geom 262: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8799568 motion [] pieces all=12:99f42a5ee0052055 camera=12:99f42a5ee0052055 shadow=12:99f42a5ee0052055 indirect=12:99f42a5ee0052055 +geom 263: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1754391 motion [] pieces all=12:aec0913446abacc1 camera=12:aec0913446abacc1 shadow=12:aec0913446abacc1 indirect=12:aec0913446abacc1 +geom 264: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1689945 motion [] pieces all=12:817419b742012466 camera=12:817419b742012466 shadow=12:817419b742012466 indirect=12:817419b742012466 +geom 265: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8709754 motion [] pieces all=12:11dc946f2502073c camera=12:11dc946f2502073c shadow=12:11dc946f2502073c indirect=12:11dc946f2502073c +geom 266: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0341958 motion [] pieces all=12:2cdb9da3d277d7c3 camera=12:2cdb9da3d277d7c3 shadow=12:2cdb9da3d277d7c3 indirect=12:2cdb9da3d277d7c3 +geom 267: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9728058 motion [] pieces all=12:adf045b7d32a2f1f camera=12:adf045b7d32a2f1f shadow=12:adf045b7d32a2f1f indirect=12:adf045b7d32a2f1f +geom 268: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9305494 motion [] pieces all=12:8fdab00337b44101 camera=12:8fdab00337b44101 shadow=12:8fdab00337b44101 indirect=12:8fdab00337b44101 +geom 269: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0993541 motion [] pieces all=12:e9f74cbbc31e88ca camera=12:e9f74cbbc31e88ca shadow=12:e9f74cbbc31e88ca indirect=12:e9f74cbbc31e88ca +geom 270: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1297429 motion [] pieces all=12:e6f58dc9a2c8cf31 camera=12:e6f58dc9a2c8cf31 shadow=12:e6f58dc9a2c8cf31 indirect=12:e6f58dc9a2c8cf31 +geom 271: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8328105 motion [] pieces all=12:28fe4127d8309887 camera=12:28fe4127d8309887 shadow=12:28fe4127d8309887 indirect=12:28fe4127d8309887 +geom 272: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0407774 motion [] pieces all=12:d1adc814dd14ee88 camera=12:d1adc814dd14ee88 shadow=12:d1adc814dd14ee88 indirect=12:d1adc814dd14ee88 +geom 273: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9556146 motion [] pieces all=12:6d24b8714ab18ccb camera=12:6d24b8714ab18ccb shadow=12:6d24b8714ab18ccb indirect=12:6d24b8714ab18ccb +geom 274: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8622651 motion [] pieces all=12:4123fa223d783808 camera=12:4123fa223d783808 shadow=12:4123fa223d783808 indirect=12:4123fa223d783808 +geom 275: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1533363 motion [] pieces all=12:b1d8d2f5c048d126 camera=12:b1d8d2f5c048d126 shadow=12:b1d8d2f5c048d126 indirect=12:b1d8d2f5c048d126 +geom 276: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0827482 motion [] pieces all=12:b34d3f2fea6ccf3f camera=12:b34d3f2fea6ccf3f shadow=12:b34d3f2fea6ccf3f indirect=12:b34d3f2fea6ccf3f +geom 277: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94452286 motion [] pieces all=12:d7313d7a2c947b15 camera=12:d7313d7a2c947b15 shadow=12:d7313d7a2c947b15 indirect=12:d7313d7a2c947b15 +geom 278: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84241277 motion [] pieces all=12:cf8f50c89c7848bf camera=12:cf8f50c89c7848bf shadow=12:cf8f50c89c7848bf indirect=12:cf8f50c89c7848bf +geom 279: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.145969 motion [] pieces all=12:fc6d0c5cd4ac480a camera=12:fc6d0c5cd4ac480a shadow=12:fc6d0c5cd4ac480a indirect=12:fc6d0c5cd4ac480a +geom 280: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8967557 motion [] pieces all=12:01efc81ea2dc09da camera=12:01efc81ea2dc09da shadow=12:01efc81ea2dc09da indirect=12:01efc81ea2dc09da +geom 281: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1884634 motion [] pieces all=12:985e2ace4f406785 camera=12:985e2ace4f406785 shadow=12:985e2ace4f406785 indirect=12:985e2ace4f406785 +geom 282: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0103384 motion [] pieces all=12:595d0b15b7883054 camera=12:595d0b15b7883054 shadow=12:595d0b15b7883054 indirect=12:595d0b15b7883054 +geom 283: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9807979 motion [] pieces all=12:91c655586891aa6d camera=12:91c655586891aa6d shadow=12:91c655586891aa6d indirect=12:91c655586891aa6d +geom 284: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91237754 motion [] pieces all=12:1f92e95a24a0a941 camera=12:1f92e95a24a0a941 shadow=12:1f92e95a24a0a941 indirect=12:1f92e95a24a0a941 +geom 285: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0665895 motion [] pieces all=12:24eed0a13c96f7c0 camera=12:24eed0a13c96f7c0 shadow=12:24eed0a13c96f7c0 indirect=12:24eed0a13c96f7c0 +geom 286: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8213568 motion [] pieces all=12:3ace4e273389b040 camera=12:3ace4e273389b040 shadow=12:3ace4e273389b040 indirect=12:3ace4e273389b040 +geom 287: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1155375 motion [] pieces all=12:a774e8fd544c302f camera=12:a774e8fd544c302f shadow=12:a774e8fd544c302f indirect=12:a774e8fd544c302f +geom 288: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0168831 motion [] pieces all=12:3b8dfe9ac6e074e4 camera=12:3b8dfe9ac6e074e4 shadow=12:3b8dfe9ac6e074e4 indirect=12:3b8dfe9ac6e074e4 +geom 289: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9887352 motion [] pieces all=12:9cc4d9cc6beae0f8 camera=12:9cc4d9cc6beae0f8 shadow=12:9cc4d9cc6beae0f8 indirect=12:9cc4d9cc6beae0f8 +geom 290: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88512194 motion [] pieces all=12:54452159c0cc6de1 camera=12:54452159c0cc6de1 shadow=12:54452159c0cc6de1 indirect=12:54452159c0cc6de1 +geom 291: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1818812 motion [] pieces all=12:d8d6033726a0ae3c camera=12:d8d6033726a0ae3c shadow=12:d8d6033726a0ae3c indirect=12:d8d6033726a0ae3c +geom 292: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0553548 motion [] pieces all=12:14bad604a1de7065 camera=12:14bad604a1de7065 shadow=12:14bad604a1de7065 indirect=12:14bad604a1de7065 +geom 293: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91546917 motion [] pieces all=12:c40b47e88849fe33 camera=12:c40b47e88849fe33 shadow=12:c40b47e88849fe33 indirect=12:c40b47e88849fe33 +geom 294: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8122816 motion [] pieces all=12:2e893d2222249532 camera=12:2e893d2222249532 shadow=12:2e893d2222249532 indirect=12:2e893d2222249532 +geom 295: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1005894 motion [] pieces all=12:bd58cb1520f6c589 camera=12:bd58cb1520f6c589 shadow=12:bd58cb1520f6c589 indirect=12:bd58cb1520f6c589 +geom 296: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9684521 motion [] pieces all=12:5ee1a186ae2d9dd0 camera=12:5ee1a186ae2d9dd0 shadow=12:5ee1a186ae2d9dd0 indirect=12:5ee1a186ae2d9dd0 +geom 297: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0291594 motion [] pieces all=12:bbe60b405380df40 camera=12:bbe60b405380df40 shadow=12:bbe60b405380df40 indirect=12:bbe60b405380df40 +geom 298: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.868216 motion [] pieces all=12:1139e1c7e4a5e8fb camera=12:1139e1c7e4a5e8fb shadow=12:1139e1c7e4a5e8fb indirect=12:1139e1c7e4a5e8fb +geom 299: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1648309 motion [] pieces all=12:f4d9f51838186556 camera=12:f4d9f51838186556 shadow=12:f4d9f51838186556 indirect=12:f4d9f51838186556 +geom 300: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1327685 motion [] pieces all=12:6c7567952e89b197 camera=12:6c7567952e89b197 shadow=12:6c7567952e89b197 indirect=12:6c7567952e89b197 +geom 301: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8302819 motion [] pieces all=12:78388d34aa653f58 camera=12:78388d34aa653f58 shadow=12:78388d34aa653f58 indirect=12:78388d34aa653f58 +geom 302: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93690276 motion [] pieces all=12:b8ddd2c09893939a camera=12:b8ddd2c09893939a shadow=12:b8ddd2c09893939a indirect=12:b8ddd2c09893939a +geom 303: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0930607 motion [] pieces all=12:1439028a696a7d6a camera=12:1439028a696a7d6a shadow=12:1439028a696a7d6a indirect=12:1439028a696a7d6a +geom 304: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98559374 motion [] pieces all=12:2d5a80cc0e242252 camera=12:2d5a80cc0e242252 shadow=12:2d5a80cc0e242252 indirect=12:2d5a80cc0e242252 +geom 305: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0042014 motion [] pieces all=12:ba32837f934d89a0 camera=12:ba32837f934d89a0 shadow=12:ba32837f934d89a0 indirect=12:ba32837f934d89a0 +geom 306: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1942586 motion [] pieces all=12:eafe5de3bea88df7 camera=12:eafe5de3bea88df7 shadow=12:eafe5de3bea88df7 indirect=12:eafe5de3bea88df7 +geom 307: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.893466 motion [] pieces all=12:647780a6ed707c17 camera=12:647780a6ed707c17 shadow=12:647780a6ed707c17 indirect=12:647780a6ed707c17 +geom 308: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90030926 motion [] pieces all=12:487b70fa9b392254 camera=12:487b70fa9b392254 shadow=12:487b70fa9b392254 indirect=12:487b70fa9b392254 +geom 309: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0744654 motion [] pieces all=12:d541c481d5fd43bf camera=12:d541c481d5fd43bf shadow=12:d541c481d5fd43bf indirect=12:d541c481d5fd43bf +geom 310: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1226648 motion [] pieces all=12:631e3ff8dcda598a camera=12:631e3ff8dcda598a shadow=12:631e3ff8dcda598a indirect=12:631e3ff8dcda598a +geom 311: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8183132 motion [] pieces all=12:4d8c861c7b334b12 camera=12:4d8c861c7b334b12 shadow=12:4d8c861c7b334b12 indirect=12:4d8c861c7b334b12 +geom 312: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0470083 motion [] pieces all=12:144bf5f952df3aae camera=12:144bf5f952df3aae shadow=12:144bf5f952df3aae indirect=12:144bf5f952df3aae +geom 313: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9589237 motion [] pieces all=12:6f08e2f191c13829 camera=12:6f08e2f191c13829 shadow=12:6f08e2f191c13829 indirect=12:6f08e2f191c13829 +geom 314: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1568285 motion [] pieces all=12:9ddb7a84275336f2 camera=12:9ddb7a84275336f2 shadow=12:9ddb7a84275336f2 indirect=12:9ddb7a84275336f2 +geom 315: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8528369 motion [] pieces all=12:dc6f6b0e0689c4fe camera=12:dc6f6b0e0689c4fe shadow=12:dc6f6b0e0689c4fe indirect=12:dc6f6b0e0689c4fe +geom 316: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1375338 motion [] pieces all=12:771d4bc7d8a2055c camera=12:771d4bc7d8a2055c shadow=12:771d4bc7d8a2055c indirect=12:771d4bc7d8a2055c +geom 317: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84985673 motion [] pieces all=12:5f8f376f318e7dd6 camera=12:5f8f376f318e7dd6 shadow=12:5f8f376f318e7dd6 indirect=12:5f8f376f318e7dd6 +geom 318: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94081056 motion [] pieces all=12:7a3fb26c1cd5533d camera=12:7a3fb26c1cd5533d shadow=12:7a3fb26c1cd5533d indirect=12:7a3fb26c1cd5533d +geom 319: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0773013 motion [] pieces all=12:d7fce092f6c85dec camera=12:d7fce092f6c85dec shadow=12:d7fce092f6c85dec indirect=12:d7fce092f6c85dec +geom 320: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1783283 motion [] pieces all=12:37d30f1a46e449ff camera=12:37d30f1a46e449ff shadow=12:37d30f1a46e449ff indirect=12:37d30f1a46e449ff +geom 321: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87658024 motion [] pieces all=12:14d43fd6bb0ff55d camera=12:14d43fd6bb0ff55d shadow=12:14d43fd6bb0ff55d indirect=12:14d43fd6bb0ff55d +geom 322: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0205542 motion [] pieces all=12:87481ae735713eaa camera=12:87481ae735713eaa shadow=12:87481ae735713eaa indirect=12:87481ae735713eaa +geom 323: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99422103 motion [] pieces all=12:5bde4420dcb7830a camera=12:5bde4420dcb7830a shadow=12:5bde4420dcb7830a indirect=12:5bde4420dcb7830a +geom 324: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9212079 motion [] pieces all=12:dd5d8187b0e11f4d camera=12:dd5d8187b0e11f4d shadow=12:dd5d8187b0e11f4d indirect=12:dd5d8187b0e11f4d +geom 325: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0596653 motion [] pieces all=12:a13d8d5031328858 camera=12:a13d8d5031328858 shadow=12:a13d8d5031328858 indirect=12:a13d8d5031328858 +geom 326: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1097448 motion [] pieces all=12:df0336c5dc625715 camera=12:df0336c5dc625715 shadow=12:df0336c5dc625715 indirect=12:df0336c5dc625715 +geom 327: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80082613 motion [] pieces all=12:7fdb2280b720b4e0 camera=12:7fdb2280b720b4e0 shadow=12:7fdb2280b720b4e0 indirect=12:7fdb2280b720b4e0 +geom 328: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83511055 motion [] pieces all=12:8e6bbb989918f2d4 camera=12:8e6bbb989918f2d4 shadow=12:8e6bbb989918f2d4 indirect=12:8e6bbb989918f2d4 +geom 329: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.126959 motion [] pieces all=12:30f7453b0f345828 camera=12:30f7453b0f345828 shadow=12:30f7453b0f345828 indirect=12:30f7453b0f345828 +geom 330: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92609227 motion [] pieces all=12:91f9f276b93f6466 camera=12:91f9f276b93f6466 shadow=12:91f9f276b93f6466 indirect=12:91f9f276b93f6466 +geom 331: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0945077 motion [] pieces all=12:d6b247f1e91ba686 camera=12:d6b247f1e91ba686 shadow=12:d6b247f1e91ba686 indirect=12:d6b247f1e91ba686 +geom 332: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0349877 motion [] pieces all=12:d5740e0bac5cd316 camera=12:d5740e0bac5cd316 shadow=12:d5740e0bac5cd316 indirect=12:d5740e0bac5cd316 +geom 333: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9710804 motion [] pieces all=12:27d44de46e3dca54 camera=12:27d44de46e3dca54 shadow=12:27d44de46e3dca54 indirect=12:27d44de46e3dca54 +geom 334: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8721167 motion [] pieces all=12:18228ff2b63f8c7d camera=12:18228ff2b63f8c7d shadow=12:18228ff2b63f8c7d indirect=12:18228ff2b63f8c7d +geom 335: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1724524 motion [] pieces all=12:2ab0876e534f298f camera=12:2ab0876e534f298f shadow=12:2ab0876e534f298f indirect=12:2ab0876e534f298f +geom 336: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8403497 motion [] pieces all=12:41a2c55a267ac5c4 camera=12:41a2c55a267ac5c4 shadow=12:41a2c55a267ac5c4 indirect=12:41a2c55a267ac5c4 +geom 337: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1488395 motion [] pieces all=12:dfc161a8f6a92ea3 camera=12:dfc161a8f6a92ea3 shadow=12:dfc161a8f6a92ea3 indirect=12:dfc161a8f6a92ea3 +geom 338: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0872728 motion [] pieces all=12:4009af968809592a camera=12:4009af968809592a shadow=12:4009af968809592a indirect=12:4009af968809592a +geom 339: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9498308 motion [] pieces all=12:d97514bcecdc5662 camera=12:d97514bcecdc5662 shadow=12:d97514bcecdc5662 indirect=12:d97514bcecdc5662 +geom 340: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1501721 motion [] pieces all=12:d7c58849a10d0edf camera=12:d7c58849a10d0edf shadow=12:d7c58849a10d0edf indirect=12:d7c58849a10d0edf +geom 341: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85824037 motion [] pieces all=12:aed050e32284fe6e camera=12:aed050e32284fe6e shadow=12:aed050e32284fe6e indirect=12:aed050e32284fe6e +geom 342: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9529558 motion [] pieces all=12:ea1dbdb85f1f4d6d camera=12:ea1dbdb85f1f4d6d shadow=12:ea1dbdb85f1f4d6d indirect=12:ea1dbdb85f1f4d6d +geom 343: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0397669 motion [] pieces all=12:6babb56fe308d4cb camera=12:6babb56fe308d4cb shadow=12:6babb56fe308d4cb indirect=12:6babb56fe308d4cb +geom 344: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1160651 motion [] pieces all=12:2957ca89e418c28f camera=12:2957ca89e418c28f shadow=12:2957ca89e418c28f indirect=12:2957ca89e418c28f +geom 345: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8239306 motion [] pieces all=12:2e7f31d4fa464ed4 camera=12:2e7f31d4fa464ed4 shadow=12:2e7f31d4fa464ed4 indirect=12:2e7f31d4fa464ed4 +geom 346: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0655339 motion [] pieces all=12:b200843dc58e1388 camera=12:b200843dc58e1388 shadow=12:b200843dc58e1388 indirect=12:b200843dc58e1388 +geom 347: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9071375 motion [] pieces all=12:249c549d82e9acea camera=12:249c549d82e9acea shadow=12:249c549d82e9acea indirect=12:249c549d82e9acea +geom 348: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0080239 motion [] pieces all=12:e170da844f0a982b camera=12:e170da844f0a982b shadow=12:e170da844f0a982b indirect=12:e170da844f0a982b +geom 349: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97620225 motion [] pieces all=12:193709b6aa2f5d65 camera=12:193709b6aa2f5d65 shadow=12:193709b6aa2f5d65 indirect=12:193709b6aa2f5d65 +geom 350: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89718294 motion [] pieces all=12:c4f52cbc70fa9dca camera=12:c4f52cbc70fa9dca shadow=12:c4f52cbc70fa9dca indirect=12:c4f52cbc70fa9dca +geom 351: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.191257 motion [] pieces all=12:9bcfc66882080152 camera=12:9bcfc66882080152 shadow=12:9bcfc66882080152 indirect=12:9bcfc66882080152 +geom 352: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1368771 motion [] pieces all=12:17d409264b25aaa1 camera=12:17d409264b25aaa1 shadow=12:17d409264b25aaa1 indirect=12:17d409264b25aaa1 +geom 353: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8263488 motion [] pieces all=12:c88cfa106e34b214 camera=12:c88cfa106e34b214 shadow=12:c88cfa106e34b214 indirect=12:c88cfa106e34b214 +geom 354: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9322859 motion [] pieces all=12:72d56a4ceec9b227 camera=12:72d56a4ceec9b227 shadow=12:72d56a4ceec9b227 indirect=12:72d56a4ceec9b227 +geom 355: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0880939 motion [] pieces all=12:b195b52f8adf62a0 camera=12:b195b52f8adf62a0 shadow=12:b195b52f8adf62a0 indirect=12:b195b52f8adf62a0 +geom 356: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0262136 motion [] pieces all=12:45df4628c3eb5709 camera=12:45df4628c3eb5709 shadow=12:45df4628c3eb5709 indirect=12:45df4628c3eb5709 +geom 357: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96307683 motion [] pieces all=12:345e61e8806a6778 camera=12:345e61e8806a6778 shadow=12:345e61e8806a6778 indirect=12:345e61e8806a6778 +geom 358: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1681463 motion [] pieces all=12:86243dfecd6ed800 camera=12:86243dfecd6ed800 shadow=12:86243dfecd6ed800 indirect=12:86243dfecd6ed800 +geom 359: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.86502236 motion [] pieces all=12:343a16809805502c camera=12:343a16809805502c shadow=12:343a16809805502c indirect=12:343a16809805502c +geom 360: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.050149 motion [] pieces all=12:82646e4cfdf87acb camera=12:82646e4cfdf87acb shadow=12:82646e4cfdf87acb indirect=12:82646e4cfdf87acb +geom 361: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9158084 motion [] pieces all=12:24aaf806f2e380e8 camera=12:24aaf806f2e380e8 shadow=12:24aaf806f2e380e8 indirect=12:24aaf806f2e380e8 +geom 362: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8081211 motion [] pieces all=12:7cbe153faf6f8d7a camera=12:7cbe153faf6f8d7a shadow=12:7cbe153faf6f8d7a indirect=12:7cbe153faf6f8d7a +geom 363: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1042663 motion [] pieces all=12:35a219666dea319c camera=12:35a219666dea319c shadow=12:35a219666dea319c indirect=12:35a219666dea319c +geom 364: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0155733 motion [] pieces all=12:e6d7079bdb47adab camera=12:e6d7079bdb47adab shadow=12:e6d7079bdb47adab indirect=12:e6d7079bdb47adab +geom 365: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9908399 motion [] pieces all=12:e8c07fc49651ed38 camera=12:e8c07fc49651ed38 shadow=12:e8c07fc49651ed38 indirect=12:e8c07fc49651ed38 +geom 366: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88250023 motion [] pieces all=12:f5e38f522feb37cb camera=12:f5e38f522feb37cb shadow=12:f5e38f522feb37cb indirect=12:f5e38f522feb37cb +geom 367: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1847697 motion [] pieces all=12:fbc06fd87a8d291f camera=12:fbc06fd87a8d291f shadow=12:fbc06fd87a8d291f indirect=12:fbc06fd87a8d291f +geom 368: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.046034 motion [] pieces all=12:9f78122893426734 camera=12:9f78122893426734 shadow=12:9f78122893426734 indirect=12:9f78122893426734 +geom 369: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96090317 motion [] pieces all=12:5694cc0009888a2a camera=12:5694cc0009888a2a shadow=12:5694cc0009888a2a indirect=12:5694cc0009888a2a +geom 370: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85369337 motion [] pieces all=12:cc6149139636f173 camera=12:cc6149139636f173 shadow=12:cc6149139636f173 indirect=12:cc6149139636f173 +geom 371: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1612246 motion [] pieces all=12:479fb480718c0a74 camera=12:479fb480718c0a74 shadow=12:479fb480718c0a74 indirect=12:479fb480718c0a74 +geom 372: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1420475 motion [] pieces all=12:5011fcf9b2420f89 camera=12:5011fcf9b2420f89 shadow=12:5011fcf9b2420f89 indirect=12:5011fcf9b2420f89 +geom 373: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8454647 motion [] pieces all=12:fe62212b32243903 camera=12:fe62212b32243903 shadow=12:fe62212b32243903 indirect=12:fe62212b32243903 +geom 374: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0787628 motion [] pieces all=12:c09b7779bc49b050 camera=12:c09b7779bc49b050 shadow=12:c09b7779bc49b050 indirect=12:c09b7779bc49b050 +geom 375: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93800545 motion [] pieces all=12:29492bf11ee992b7 camera=12:29492bf11ee992b7 shadow=12:29492bf11ee992b7 indirect=12:29492bf11ee992b7 +geom 376: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0030414 motion [] pieces all=12:12425a2887a24940 camera=12:12425a2887a24940 shadow=12:12425a2887a24940 indirect=12:12425a2887a24940 +geom 377: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.983221 motion [] pieces all=12:c8dff14682474aff camera=12:c8dff14682474aff shadow=12:c8dff14682474aff indirect=12:c8dff14682474aff +geom 378: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8891724 motion [] pieces all=12:1c2a82a18eb963f6 camera=12:1c2a82a18eb963f6 shadow=12:1c2a82a18eb963f6 indirect=12:1c2a82a18eb963f6 +geom 379: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1983188 motion [] pieces all=12:0512533337d37dec camera=12:0512533337d37dec shadow=12:0512533337d37dec indirect=12:0512533337d37dec +geom 380: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0690044 motion [] pieces all=12:d7ddf5a4c50ddc75 camera=12:d7ddf5a4c50ddc75 shadow=12:d7ddf5a4c50ddc75 indirect=12:d7ddf5a4c50ddc75 +geom 381: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9040715 motion [] pieces all=12:69a66701f2fff347 camera=12:69a66701f2fff347 shadow=12:69a66701f2fff347 indirect=12:69a66701f2fff347 +geom 382: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8138704 motion [] pieces all=12:e569ce107be2c4d3 camera=12:e569ce107be2c4d3 shadow=12:e569ce107be2c4d3 indirect=12:e569ce107be2c4d3 +geom 383: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1195462 motion [] pieces all=12:42484194db7c8a06 camera=12:42484194db7c8a06 shadow=12:42484194db7c8a06 indirect=12:42484194db7c8a06 +geom 384: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9979357 motion [] pieces all=12:817b453870a3d419 camera=12:817b453870a3d419 shadow=12:817b453870a3d419 indirect=12:817b453870a3d419 +geom 385: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0240195 motion [] pieces all=12:2ced474f3777cf40 camera=12:2ced474f3777cf40 shadow=12:2ced474f3777cf40 indirect=12:2ced474f3777cf40 +geom 386: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1780815 motion [] pieces all=12:9393967072a354e1 camera=12:9393967072a354e1 shadow=12:9393967072a354e1 indirect=12:9393967072a354e1 +geom 387: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87838584 motion [] pieces all=12:027e2841751e5753 camera=12:027e2841751e5753 shadow=12:027e2841751e5753 indirect=12:027e2841751e5753 +geom 388: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1091733 motion [] pieces all=12:2ed1840aa5cba15e camera=12:2ed1840aa5cba15e shadow=12:2ed1840aa5cba15e indirect=12:2ed1840aa5cba15e +geom 389: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.805113 motion [] pieces all=12:60447d059631efd4 camera=12:60447d059631efd4 shadow=12:60447d059631efd4 indirect=12:60447d059631efd4 +geom 390: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0589079 motion [] pieces all=12:e47acd5a96839e07 camera=12:e47acd5a96839e07 shadow=12:e47acd5a96839e07 indirect=12:e47acd5a96839e07 +geom 391: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92295647 motion [] pieces all=12:7b43a30fb1dddcde camera=12:7b43a30fb1dddcde shadow=12:7b43a30fb1dddcde indirect=12:7b43a30fb1dddcde +geom 392: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.128148 motion [] pieces all=12:69a0ed79f1b361cf camera=12:69a0ed79f1b361cf shadow=12:69a0ed79f1b361cf indirect=12:69a0ed79f1b361cf +geom 393: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83284235 motion [] pieces all=12:d0f91134dfad0a19 camera=12:d0f91134dfad0a19 shadow=12:d0f91134dfad0a19 indirect=12:d0f91134dfad0a19 +geom 394: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92853355 motion [] pieces all=12:f81b7e7017cc610e camera=12:f81b7e7017cc610e shadow=12:f81b7e7017cc610e indirect=12:f81b7e7017cc610e +geom 395: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0970887 motion [] pieces all=12:78927457c90a0400 camera=12:78927457c90a0400 shadow=12:78927457c90a0400 indirect=12:78927457c90a0400 +geom 396: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0317997 motion [] pieces all=12:20b0fd0fc171807f camera=12:20b0fd0fc171807f shadow=12:20b0fd0fc171807f indirect=12:20b0fd0fc171807f +geom 397: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97373277 motion [] pieces all=12:dcdf42631e7cd0a2 camera=12:dcdf42631e7cd0a2 shadow=12:dcdf42631e7cd0a2 indirect=12:dcdf42631e7cd0a2 +geom 398: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1714392 motion [] pieces all=12:c472d0d4899eae67 camera=12:c472d0d4899eae67 shadow=12:c472d0d4899eae67 indirect=12:c472d0d4899eae67 +geom 399: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8703055 motion [] pieces all=12:8267e610d01a5680 camera=12:8267e610d01a5680 shadow=12:8267e610d01a5680 indirect=12:8267e610d01a5680 +geom 400: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1441025 motion [] pieces all=12:279b3e24a102bf1e camera=12:279b3e24a102bf1e shadow=12:279b3e24a102bf1e indirect=12:279b3e24a102bf1e +geom 401: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84141374 motion [] pieces all=12:d17319b14aca9e2c camera=12:d17319b14aca9e2c shadow=12:d17319b14aca9e2c indirect=12:d17319b14aca9e2c +geom 402: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0838239 motion [] pieces all=12:96dd4c0357b42b14 camera=12:96dd4c0357b42b14 shadow=12:96dd4c0357b42b14 indirect=12:96dd4c0357b42b14 +geom 403: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94532305 motion [] pieces all=12:f5fe4cb39a4686ce camera=12:f5fe4cb39a4686ce shadow=12:f5fe4cb39a4686ce indirect=12:f5fe4cb39a4686ce +geom 404: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95378745 motion [] pieces all=12:8dd37214aa940697 camera=12:8dd37214aa940697 shadow=12:8dd37214aa940697 indirect=12:8dd37214aa940697 +geom 405: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0423332 motion [] pieces all=12:de1e755492a14152 camera=12:de1e755492a14152 shadow=12:de1e755492a14152 indirect=12:de1e755492a14152 +geom 406: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1559403 motion [] pieces all=12:9249a94688f496e1 camera=12:9249a94688f496e1 shadow=12:9249a94688f496e1 indirect=12:9249a94688f496e1 +geom 407: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8601882 motion [] pieces all=12:1283b0c1c55f493f camera=12:1283b0c1c55f493f shadow=12:1283b0c1c55f493f indirect=12:1283b0c1c55f493f +geom 408: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1138958 motion [] pieces all=12:8c88dd3a0f244fe6 camera=12:8c88dd3a0f244fe6 shadow=12:8c88dd3a0f244fe6 indirect=12:8c88dd3a0f244fe6 +geom 409: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8189872 motion [] pieces all=12:6fe3119800e2b724 camera=12:6fe3119800e2b724 shadow=12:6fe3119800e2b724 indirect=12:6fe3119800e2b724 +geom 410: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90952617 motion [] pieces all=12:8c6a289ed18001c2 camera=12:8c6a289ed18001c2 shadow=12:8c6a289ed18001c2 indirect=12:8c6a289ed18001c2 +geom 411: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0676242 motion [] pieces all=12:48ef6b53ccf7f3ae camera=12:48ef6b53ccf7f3ae shadow=12:48ef6b53ccf7f3ae indirect=12:48ef6b53ccf7f3ae +geom 412: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1898406 motion [] pieces all=12:b2408acca88da277 camera=12:b2408acca88da277 shadow=12:b2408acca88da277 indirect=12:b2408acca88da277 +geom 413: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8942463 motion [] pieces all=12:6be4b9c1cca2d56a camera=12:6be4b9c1cca2d56a shadow=12:6be4b9c1cca2d56a indirect=12:6be4b9c1cca2d56a +geom 414: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97924507 motion [] pieces all=12:225624b471d1e03b camera=12:225624b471d1e03b shadow=12:225624b471d1e03b indirect=12:225624b471d1e03b +geom 415: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0110332 motion [] pieces all=12:cca30bb094acd981 camera=12:cca30bb094acd981 shadow=12:cca30bb094acd981 indirect=12:cca30bb094acd981 +geom 416: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81568116 motion [] pieces all=12:d0cafe097a17f591 camera=12:d0cafe097a17f591 shadow=12:d0cafe097a17f591 indirect=12:d0cafe097a17f591 +geom 417: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1248193 motion [] pieces all=12:37a2bd30f2744dc6 camera=12:37a2bd30f2744dc6 shadow=12:37a2bd30f2744dc6 indirect=12:37a2bd30f2744dc6 +geom 418: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9016662 motion [] pieces all=12:22706d0be71e9245 camera=12:22706d0be71e9245 shadow=12:22706d0be71e9245 indirect=12:22706d0be71e9245 +geom 419: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0732667 motion [] pieces all=12:40038908680d4401 camera=12:40038908680d4401 shadow=12:40038908680d4401 indirect=12:40038908680d4401 +geom 420: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0060534 motion [] pieces all=12:f41bc3293229b5c6 camera=12:f41bc3293229b5c6 shadow=12:f41bc3293229b5c6 indirect=12:f41bc3293229b5c6 +geom 421: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98605454 motion [] pieces all=12:74201c06a60b7e79 camera=12:74201c06a60b7e79 shadow=12:74201c06a60b7e79 indirect=12:74201c06a60b7e79 +geom 422: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8919946 motion [] pieces all=12:5f2730bf79a70fe6 camera=12:5f2730bf79a70fe6 shadow=12:5f2730bf79a70fe6 indirect=12:5f2730bf79a70fe6 +geom 423: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.19644 motion [] pieces all=12:3146e5e85b71495b camera=12:3146e5e85b71495b shadow=12:3146e5e85b71495b indirect=12:3146e5e85b71495b +geom 424: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8503766 motion [] pieces all=12:08a48fe8aa435062 camera=12:08a48fe8aa435062 shadow=12:08a48fe8aa435062 indirect=12:08a48fe8aa435062 +geom 425: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1588464 motion [] pieces all=12:42a78cff3d571444 camera=12:42a78cff3d571444 shadow=12:42a78cff3d571444 indirect=12:42a78cff3d571444 +geom 426: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95724255 motion [] pieces all=12:a5085c33a6b177c9 camera=12:a5085c33a6b177c9 shadow=12:a5085c33a6b177c9 indirect=12:a5085c33a6b177c9 +geom 427: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0496792 motion [] pieces all=12:d237182b1562400a camera=12:d237182b1562400a shadow=12:d237182b1562400a indirect=12:d237182b1562400a +geom 428: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0764337 motion [] pieces all=12:1fc7edde3708a83c camera=12:1fc7edde3708a83c shadow=12:1fc7edde3708a83c indirect=12:1fc7edde3708a83c +geom 429: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94295996 motion [] pieces all=12:49bee21585a46b48 camera=12:49bee21585a46b48 shadow=12:49bee21585a46b48 indirect=12:49bee21585a46b48 +geom 430: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84723824 motion [] pieces all=12:f8f063c5827ba797 camera=12:f8f063c5827ba797 shadow=12:f8f063c5827ba797 indirect=12:f8f063c5827ba797 +geom 431: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.139218 motion [] pieces all=12:a397a5167452c818 camera=12:a397a5167452c818 shadow=12:a397a5167452c818 indirect=12:a397a5167452c818 +geom 432: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8667562 motion [] pieces all=12:6dc7c0e793f4c492 camera=12:6dc7c0e793f4c492 shadow=12:6dc7c0e793f4c492 indirect=12:6dc7c0e793f4c492 +geom 433: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1638904 motion [] pieces all=12:c005ed491d1abb17 camera=12:c005ed491d1abb17 shadow=12:c005ed491d1abb17 indirect=12:c005ed491d1abb17 +geom 434: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96669084 motion [] pieces all=12:9a5425fe4964167c camera=12:9a5425fe4964167c shadow=12:9a5425fe4964167c indirect=12:9a5425fe4964167c +geom 435: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0310098 motion [] pieces all=12:422a73f3c3468e8a camera=12:422a73f3c3468e8a shadow=12:422a73f3c3468e8a indirect=12:422a73f3c3468e8a +geom 436: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9359371 motion [] pieces all=12:c41f8c20a8cefe26 camera=12:c41f8c20a8cefe26 shadow=12:c41f8c20a8cefe26 indirect=12:c41f8c20a8cefe26 +geom 437: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0920191 motion [] pieces all=12:67da5a5117403cb0 camera=12:67da5a5117403cb0 shadow=12:67da5a5117403cb0 indirect=12:67da5a5117403cb0 +geom 438: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1332088 motion [] pieces all=12:fc1749d615ff3503 camera=12:fc1749d615ff3503 shadow=12:fc1749d615ff3503 indirect=12:fc1749d615ff3503 +geom 439: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82963383 motion [] pieces all=12:8923dc9c030f82cb camera=12:8923dc9c030f82cb shadow=12:8923dc9c030f82cb indirect=12:8923dc9c030f82cb +geom 440: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.989561 motion [] pieces all=12:53a4125ff63a0937 camera=12:53a4125ff63a0937 shadow=12:53a4125ff63a0937 indirect=12:53a4125ff63a0937 +geom 441: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0177096 motion [] pieces all=12:65f91049698d610a camera=12:65f91049698d610a shadow=12:65f91049698d610a indirect=12:65f91049698d610a +geom 442: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1837815 motion [] pieces all=12:cdcb5a0d01d898da camera=12:cdcb5a0d01d898da shadow=12:cdcb5a0d01d898da indirect=12:cdcb5a0d01d898da +geom 443: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.88659936 motion [] pieces all=12:9499b7def0936290 camera=12:9499b7def0936290 shadow=12:9499b7def0936290 indirect=12:9499b7def0936290 +geom 444: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91293037 motion [] pieces all=12:83e3abd6ac7f83a9 camera=12:83e3abd6ac7f83a9 shadow=12:83e3abd6ac7f83a9 indirect=12:83e3abd6ac7f83a9 +geom 445: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.053651 motion [] pieces all=12:b0a60d26f0688b94 camera=12:b0a60d26f0688b94 shadow=12:b0a60d26f0688b94 indirect=12:b0a60d26f0688b94 +geom 446: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1022353 motion [] pieces all=12:a8aca66167227e3e camera=12:a8aca66167227e3e shadow=12:a8aca66167227e3e indirect=12:a8aca66167227e3e +geom 447: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8098009 motion [] pieces all=12:d772aadd56b26362 camera=12:d772aadd56b26362 shadow=12:d772aadd56b26362 indirect=12:d772aadd56b26362 +geom 448: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1986847 motion [] pieces all=12:c1d1ba87d4521c68 camera=12:c1d1ba87d4521c68 shadow=12:c1d1ba87d4521c68 indirect=12:c1d1ba87d4521c68 +geom 449: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8879799 motion [] pieces all=12:1cb570eb6a8dbc6e camera=12:1cb570eb6a8dbc6e shadow=12:1cb570eb6a8dbc6e indirect=12:1cb570eb6a8dbc6e +geom 450: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98173344 motion [] pieces all=12:7eee75fae3c2c38e camera=12:7eee75fae3c2c38e shadow=12:7eee75fae3c2c38e indirect=12:7eee75fae3c2c38e +geom 451: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0000744 motion [] pieces all=12:ded11bb563f60b18 camera=12:ded11bb563f60b18 shadow=12:ded11bb563f60b18 indirect=12:ded11bb563f60b18 +geom 452: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1216958 motion [] pieces all=12:7d0ffec4d58dda61 camera=12:7d0ffec4d58dda61 shadow=12:7d0ffec4d58dda61 indirect=12:7d0ffec4d58dda61 +geom 453: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81506497 motion [] pieces all=12:11b648c7989f69d4 camera=12:11b648c7989f69d4 shadow=12:11b648c7989f69d4 indirect=12:11b648c7989f69d4 +geom 454: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9058803 motion [] pieces all=12:9cd46ed2bbcbe3f3 camera=12:9cd46ed2bbcbe3f3 shadow=12:9cd46ed2bbcbe3f3 indirect=12:9cd46ed2bbcbe3f3 +geom 455: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0716925 motion [] pieces all=12:e1619e0d048155ae camera=12:e1619e0d048155ae shadow=12:e1619e0d048155ae indirect=12:e1619e0d048155ae +geom 456: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85529506 motion [] pieces all=12:02ba68249605a870 camera=12:02ba68249605a870 shadow=12:02ba68249605a870 indirect=12:02ba68249605a870 +geom 457: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1597875 motion [] pieces all=12:a894986db251ee0f camera=12:a894986db251ee0f shadow=12:a894986db251ee0f indirect=12:a894986db251ee0f +geom 458: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0444325 motion [] pieces all=12:4a2250159785a6e2 camera=12:4a2250159785a6e2 shadow=12:4a2250159785a6e2 indirect=12:4a2250159785a6e2 +geom 459: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9616838 motion [] pieces all=12:d1ec13b3e62f6e92 camera=12:d1ec13b3e62f6e92 shadow=12:d1ec13b3e62f6e92 indirect=12:d1ec13b3e62f6e92 +geom 460: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93935156 motion [] pieces all=12:04ea79f01e5f9a59 camera=12:04ea79f01e5f9a59 shadow=12:04ea79f01e5f9a59 indirect=12:04ea79f01e5f9a59 +geom 461: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0803297 motion [] pieces all=12:bf10521f4ec2bbb3 camera=12:bf10521f4ec2bbb3 shadow=12:bf10521f4ec2bbb3 indirect=12:bf10521f4ec2bbb3 +geom 462: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8450973 motion [] pieces all=12:2a5cfdaaddca44c2 camera=12:2a5cfdaaddca44c2 shadow=12:2a5cfdaaddca44c2 indirect=12:2a5cfdaaddca44c2 +geom 463: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1432472 motion [] pieces all=12:fbc5ba1ad600edaa camera=12:fbc5ba1ad600edaa shadow=12:fbc5ba1ad600edaa indirect=12:fbc5ba1ad600edaa +geom 464: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1353691 motion [] pieces all=12:049353c120cbebfc camera=12:049353c120cbebfc shadow=12:049353c120cbebfc indirect=12:049353c120cbebfc +geom 465: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8273636 motion [] pieces all=12:3c3011131e7e8813 camera=12:3c3011131e7e8813 shadow=12:3c3011131e7e8813 indirect=12:3c3011131e7e8813 +geom 466: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0902855 motion [] pieces all=12:772930a049a7379c camera=12:772930a049a7379c shadow=12:772930a049a7379c indirect=12:772930a049a7379c +geom 467: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93297297 motion [] pieces all=12:25b9c445d211692a camera=12:25b9c445d211692a shadow=12:25b9c445d211692a indirect=12:25b9c445d211692a +geom 468: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.027414 motion [] pieces all=12:740d229d84e9cff7 camera=12:740d229d84e9cff7 shadow=12:740d229d84e9cff7 indirect=12:740d229d84e9cff7 +geom 469: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96549386 motion [] pieces all=12:0aaa0db013610e8a camera=12:0aaa0db013610e8a shadow=12:0aaa0db013610e8a indirect=12:0aaa0db013610e8a +geom 470: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8634908 motion [] pieces all=12:2fbc17d887102e0e camera=12:2fbc17d887102e0e shadow=12:2fbc17d887102e0e indirect=12:2fbc17d887102e0e +geom 471: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.165813 motion [] pieces all=12:016baf1b7130dcdc camera=12:016baf1b7130dcdc shadow=12:016baf1b7130dcdc indirect=12:016baf1b7130dcdc +geom 472: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9932002 motion [] pieces all=12:614b99fb4286ac07 camera=12:614b99fb4286ac07 shadow=12:614b99fb4286ac07 indirect=12:614b99fb4286ac07 +geom 473: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0138267 motion [] pieces all=12:7f75b45364112aba camera=12:7f75b45364112aba shadow=12:7f75b45364112aba indirect=12:7f75b45364112aba +geom 474: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8838996 motion [] pieces all=12:188942be9177a3f5 camera=12:188942be9177a3f5 shadow=12:188942be9177a3f5 indirect=12:188942be9177a3f5 +geom 475: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1870891 motion [] pieces all=12:7546e17f458e7da2 camera=12:7546e17f458e7da2 shadow=12:7546e17f458e7da2 indirect=12:7546e17f458e7da2 +geom 476: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1059833 motion [] pieces all=12:26de3a63ac32d9c0 camera=12:26de3a63ac32d9c0 shadow=12:26de3a63ac32d9c0 indirect=12:26de3a63ac32d9c0 +geom 477: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8076202 motion [] pieces all=12:e1c21f8a4b9a925f camera=12:e1c21f8a4b9a925f shadow=12:e1c21f8a4b9a925f indirect=12:e1c21f8a4b9a925f +geom 478: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.917528 motion [] pieces all=12:7e89e6fe71b7d5e1 camera=12:7e89e6fe71b7d5e1 shadow=12:7e89e6fe71b7d5e1 indirect=12:7e89e6fe71b7d5e1 +geom 479: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0525516 motion [] pieces all=12:2e4367fb76a93572 camera=12:2e4367fb76a93572 shadow=12:2e4367fb76a93572 indirect=12:2e4367fb76a93572 +geom 480: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1471847 motion [] pieces all=12:487ee130369a3f18 camera=12:487ee130369a3f18 shadow=12:487ee130369a3f18 indirect=12:487ee130369a3f18 +geom 481: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8377189 motion [] pieces all=12:81f60f5e764c9e94 camera=12:81f60f5e764c9e94 shadow=12:81f60f5e764c9e94 indirect=12:81f60f5e764c9e94 +geom 482: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9474101 motion [] pieces all=12:26736fb3efaf0e8b camera=12:26736fb3efaf0e8b shadow=12:26736fb3efaf0e8b indirect=12:26736fb3efaf0e8b +geom 483: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.085121 motion [] pieces all=12:9661338d340c04ba camera=12:9661338d340c04ba shadow=12:9661338d340c04ba indirect=12:9661338d340c04ba +geom 484: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.856993 motion [] pieces all=12:dbdb91d39e8aae83 camera=12:dbdb91d39e8aae83 shadow=12:dbdb91d39e8aae83 indirect=12:dbdb91d39e8aae83 +geom 485: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1528894 motion [] pieces all=12:77eb4b680ce04830 camera=12:77eb4b680ce04830 shadow=12:77eb4b680ce04830 indirect=12:77eb4b680ce04830 +geom 486: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.038916 motion [] pieces all=12:81a43a78bc1e73fd camera=12:81a43a78bc1e73fd shadow=12:81a43a78bc1e73fd indirect=12:81a43a78bc1e73fd +geom 487: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9504711 motion [] pieces all=12:5ff064de78509a0a camera=12:5ff064de78509a0a shadow=12:5ff064de78509a0a indirect=12:5ff064de78509a0a +geom 488: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0637788 motion [] pieces all=12:559a1655469b6861 camera=12:559a1655469b6861 shadow=12:559a1655469b6861 indirect=12:559a1655469b6861 +geom 489: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90910155 motion [] pieces all=12:44a0535ec759978f camera=12:44a0535ec759978f shadow=12:44a0535ec759978f indirect=12:44a0535ec759978f +geom 490: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1182432 motion [] pieces all=12:8b8f0bbb4571f9ae camera=12:8b8f0bbb4571f9ae shadow=12:8b8f0bbb4571f9ae indirect=12:8b8f0bbb4571f9ae +geom 491: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82327044 motion [] pieces all=12:044596a57f782592 camera=12:044596a57f782592 shadow=12:044596a57f782592 indirect=12:044596a57f782592 +geom 492: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.193281 motion [] pieces all=12:583665b31fb2f901 camera=12:583665b31fb2f901 shadow=12:583665b31fb2f901 indirect=12:583665b31fb2f901 +geom 493: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8985092 motion [] pieces all=12:16ee9626140776f4 camera=12:16ee9626140776f4 shadow=12:16ee9626140776f4 indirect=12:16ee9626140776f4 +geom 494: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9765626 motion [] pieces all=12:9ac81ebc0d4f4c1d camera=12:9ac81ebc0d4f4c1d shadow=12:9ac81ebc0d4f4c1d indirect=12:9ac81ebc0d4f4c1d +geom 495: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0068495 motion [] pieces all=12:b55004e8fe41a807 camera=12:b55004e8fe41a807 shadow=12:b55004e8fe41a807 indirect=12:b55004e8fe41a807 +geom 496: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1257349 motion [] pieces all=12:794d02ae4d0bbc6b camera=12:794d02ae4d0bbc6b shadow=12:794d02ae4d0bbc6b indirect=12:794d02ae4d0bbc6b +geom 497: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8368855 motion [] pieces all=12:978c75be788afc67 camera=12:978c75be788afc67 shadow=12:978c75be788afc67 indirect=12:978c75be788afc67 +geom 498: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.92759454 motion [] pieces all=12:8c8da1e4983b11c8 camera=12:8c8da1e4983b11c8 shadow=12:8c8da1e4983b11c8 indirect=12:8c8da1e4983b11c8 +geom 499: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0956422 motion [] pieces all=12:ac83c9c903ea15c9 camera=12:ac83c9c903ea15c9 shadow=12:ac83c9c903ea15c9 indirect=12:ac83c9c903ea15c9 +geom 500: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 501: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 502: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 503: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 504: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 505: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 506: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 507: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 508: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 509: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 510: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 511: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 512: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 513: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 514: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /World/stones/Prototypes/stone_a +provenance arc source: /World/stones/Prototypes/stone_b +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 514..514 } +provenance geometry 0..500: /World/stones +provenance geometry 500..501: /World/pebble/geo +provenance geometry 501..502: /World/away/geo +provenance geometry 502..503: /World/box/geo +provenance geometry 503..504: /World/sunk/geo +provenance geometry 504..505: /World/rock/geo +provenance geometry 505..506: /World/vase/geo +provenance geometry 506..507: /World/steps/geo +provenance geometry 507..508: /World/field/geo +provenance geometry 508..509: /World/slope/geo +provenance geometry 509..510: /World/terrain/geo +provenance geometry 510..511: /World/shelf/geo +provenance geometry 511..512: /World/floor/geo +provenance geometry 512..513: /World/inst +provenance geometry 513..514: /World/crate/geo +provenance geometry 514..515: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 500, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 501, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 502, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 503, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 504, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 505, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 506, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 507, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 508, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 509, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 510, slot: 9, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 511, slot: 10, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 513, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 514, slot: 11, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4345222167175548266, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 735706973108043347, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 11: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-85cdaaa611ddcfb8-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-85cdaaa611ddcfb8-1.digest new file mode 100644 index 000000000..ba553ef45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-85cdaaa611ddcfb8-1.digest @@ -0,0 +1,78 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 15 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } top level, PrimitiveBreakdown { triangles: 178, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 14..14 } +provenance geometry 0..1: /World/pebble/geo +provenance geometry 1..2: /World/away/geo +provenance geometry 2..3: /World/box/geo +provenance geometry 3..4: /World/sunk/geo +provenance geometry 4..5: /World/rock/geo +provenance geometry 5..6: /World/vase/geo +provenance geometry 6..7: /World/steps/geo +provenance geometry 7..8: /World/field/geo +provenance geometry 8..9: /World/slope/geo +provenance geometry 9..10: /World/terrain/geo +provenance geometry 10..11: /World/shelf/geo +provenance geometry 11..12: /World/floor/geo +provenance geometry 12..13: /World/inst +provenance geometry 13..14: /World/crate/geo +provenance geometry 14..15: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 11, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 13, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 14, slot: 9, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-94944664ab7e307d-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-94944664ab7e307d-1.digest new file mode 100644 index 000000000..ba553ef45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-94944664ab7e307d-1.digest @@ -0,0 +1,78 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 15 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } top level, PrimitiveBreakdown { triangles: 178, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 14..14 } +provenance geometry 0..1: /World/pebble/geo +provenance geometry 1..2: /World/away/geo +provenance geometry 2..3: /World/box/geo +provenance geometry 3..4: /World/sunk/geo +provenance geometry 4..5: /World/rock/geo +provenance geometry 5..6: /World/vase/geo +provenance geometry 6..7: /World/steps/geo +provenance geometry 7..8: /World/field/geo +provenance geometry 8..9: /World/slope/geo +provenance geometry 9..10: /World/terrain/geo +provenance geometry 10..11: /World/shelf/geo +provenance geometry 11..12: /World/floor/geo +provenance geometry 12..13: /World/inst +provenance geometry 13..14: /World/crate/geo +provenance geometry 14..15: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 11, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 13, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 14, slot: 9, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-97fbc0f3fbe2c018-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-97fbc0f3fbe2c018-1.digest new file mode 100644 index 000000000..ba553ef45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-97fbc0f3fbe2c018-1.digest @@ -0,0 +1,78 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 15 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } top level, PrimitiveBreakdown { triangles: 178, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 14..14 } +provenance geometry 0..1: /World/pebble/geo +provenance geometry 1..2: /World/away/geo +provenance geometry 2..3: /World/box/geo +provenance geometry 3..4: /World/sunk/geo +provenance geometry 4..5: /World/rock/geo +provenance geometry 5..6: /World/vase/geo +provenance geometry 6..7: /World/steps/geo +provenance geometry 7..8: /World/field/geo +provenance geometry 8..9: /World/slope/geo +provenance geometry 9..10: /World/terrain/geo +provenance geometry 10..11: /World/shelf/geo +provenance geometry 11..12: /World/floor/geo +provenance geometry 12..13: /World/inst +provenance geometry 13..14: /World/crate/geo +provenance geometry 14..15: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 11, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 13, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 14, slot: 9, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-b9e166293d4eb014-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-b9e166293d4eb014-1.digest new file mode 100644 index 000000000..ba553ef45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-b9e166293d4eb014-1.digest @@ -0,0 +1,78 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 15 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } top level, PrimitiveBreakdown { triangles: 178, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 14..14 } +provenance geometry 0..1: /World/pebble/geo +provenance geometry 1..2: /World/away/geo +provenance geometry 2..3: /World/box/geo +provenance geometry 3..4: /World/sunk/geo +provenance geometry 4..5: /World/rock/geo +provenance geometry 5..6: /World/vase/geo +provenance geometry 6..7: /World/steps/geo +provenance geometry 7..8: /World/field/geo +provenance geometry 8..9: /World/slope/geo +provenance geometry 9..10: /World/terrain/geo +provenance geometry 10..11: /World/shelf/geo +provenance geometry 11..12: /World/floor/geo +provenance geometry 12..13: /World/inst +provenance geometry 13..14: /World/crate/geo +provenance geometry 14..15: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 11, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 13, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 14, slot: 9, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-1.digest new file mode 100644 index 000000000..ba553ef45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-1.digest @@ -0,0 +1,78 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 15 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } top level, PrimitiveBreakdown { triangles: 178, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 14..14 } +provenance geometry 0..1: /World/pebble/geo +provenance geometry 1..2: /World/away/geo +provenance geometry 2..3: /World/box/geo +provenance geometry 3..4: /World/sunk/geo +provenance geometry 4..5: /World/rock/geo +provenance geometry 5..6: /World/vase/geo +provenance geometry 6..7: /World/steps/geo +provenance geometry 7..8: /World/field/geo +provenance geometry 8..9: /World/slope/geo +provenance geometry 9..10: /World/terrain/geo +provenance geometry 10..11: /World/shelf/geo +provenance geometry 11..12: /World/floor/geo +provenance geometry 12..13: /World/inst +provenance geometry 13..14: /World/crate/geo +provenance geometry 14..15: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 11, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 13, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 14, slot: 9, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-2.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-2.digest new file mode 100644 index 000000000..ba553ef45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-2.digest @@ -0,0 +1,78 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 15 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } top level, PrimitiveBreakdown { triangles: 178, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 14..14 } +provenance geometry 0..1: /World/pebble/geo +provenance geometry 1..2: /World/away/geo +provenance geometry 2..3: /World/box/geo +provenance geometry 3..4: /World/sunk/geo +provenance geometry 4..5: /World/rock/geo +provenance geometry 5..6: /World/vase/geo +provenance geometry 6..7: /World/steps/geo +provenance geometry 7..8: /World/field/geo +provenance geometry 8..9: /World/slope/geo +provenance geometry 9..10: /World/terrain/geo +provenance geometry 10..11: /World/shelf/geo +provenance geometry 11..12: /World/floor/geo +provenance geometry 12..13: /World/inst +provenance geometry 13..14: /World/crate/geo +provenance geometry 14..15: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 11, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 13, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 14, slot: 9, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-3.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-3.digest new file mode 100644 index 000000000..ba553ef45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-3.digest @@ -0,0 +1,78 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 15 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } top level, PrimitiveBreakdown { triangles: 178, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 14..14 } +provenance geometry 0..1: /World/pebble/geo +provenance geometry 1..2: /World/away/geo +provenance geometry 2..3: /World/box/geo +provenance geometry 3..4: /World/sunk/geo +provenance geometry 4..5: /World/rock/geo +provenance geometry 5..6: /World/vase/geo +provenance geometry 6..7: /World/steps/geo +provenance geometry 7..8: /World/field/geo +provenance geometry 8..9: /World/slope/geo +provenance geometry 9..10: /World/terrain/geo +provenance geometry 10..11: /World/shelf/geo +provenance geometry 11..12: /World/floor/geo +provenance geometry 12..13: /World/inst +provenance geometry 13..14: /World/crate/geo +provenance geometry 14..15: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 11, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 13, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 14, slot: 9, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-c316df83883a2080-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-c316df83883a2080-1.digest new file mode 100644 index 000000000..ba553ef45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-c316df83883a2080-1.digest @@ -0,0 +1,78 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 15 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } top level, PrimitiveBreakdown { triangles: 178, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 14..14 } +provenance geometry 0..1: /World/pebble/geo +provenance geometry 1..2: /World/away/geo +provenance geometry 2..3: /World/box/geo +provenance geometry 3..4: /World/sunk/geo +provenance geometry 4..5: /World/rock/geo +provenance geometry 5..6: /World/vase/geo +provenance geometry 6..7: /World/steps/geo +provenance geometry 7..8: /World/field/geo +provenance geometry 8..9: /World/slope/geo +provenance geometry 9..10: /World/terrain/geo +provenance geometry 10..11: /World/shelf/geo +provenance geometry 11..12: /World/floor/geo +provenance geometry 12..13: /World/inst +provenance geometry 13..14: /World/crate/geo +provenance geometry 14..15: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 11, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 13, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 14, slot: 9, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-d17077acbffaca45-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-d17077acbffaca45-1.digest new file mode 100644 index 000000000..ba553ef45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-d17077acbffaca45-1.digest @@ -0,0 +1,78 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 15 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } top level, PrimitiveBreakdown { triangles: 178, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 14..14 } +provenance geometry 0..1: /World/pebble/geo +provenance geometry 1..2: /World/away/geo +provenance geometry 2..3: /World/box/geo +provenance geometry 3..4: /World/sunk/geo +provenance geometry 4..5: /World/rock/geo +provenance geometry 5..6: /World/vase/geo +provenance geometry 6..7: /World/steps/geo +provenance geometry 7..8: /World/field/geo +provenance geometry 8..9: /World/slope/geo +provenance geometry 9..10: /World/terrain/geo +provenance geometry 10..11: /World/shelf/geo +provenance geometry 11..12: /World/floor/geo +provenance geometry 12..13: /World/inst +provenance geometry 13..14: /World/crate/geo +provenance geometry 14..15: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 11, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 13, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 14, slot: 9, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-d4ecee5c0312cf96-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-d4ecee5c0312cf96-1.digest new file mode 100644 index 000000000..ba553ef45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-d4ecee5c0312cf96-1.digest @@ -0,0 +1,78 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 15 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } top level, PrimitiveBreakdown { triangles: 178, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 14..14 } +provenance geometry 0..1: /World/pebble/geo +provenance geometry 1..2: /World/away/geo +provenance geometry 2..3: /World/box/geo +provenance geometry 3..4: /World/sunk/geo +provenance geometry 4..5: /World/rock/geo +provenance geometry 5..6: /World/vase/geo +provenance geometry 6..7: /World/steps/geo +provenance geometry 7..8: /World/field/geo +provenance geometry 8..9: /World/slope/geo +provenance geometry 9..10: /World/terrain/geo +provenance geometry 10..11: /World/shelf/geo +provenance geometry 11..12: /World/floor/geo +provenance geometry 12..13: /World/inst +provenance geometry 13..14: /World/crate/geo +provenance geometry 14..15: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 11, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 13, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 14, slot: 9, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-dc7b9c4f6886cafa-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-dc7b9c4f6886cafa-1.digest new file mode 100644 index 000000000..ba553ef45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-dc7b9c4f6886cafa-1.digest @@ -0,0 +1,78 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 15 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } top level, PrimitiveBreakdown { triangles: 178, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 14..14 } +provenance geometry 0..1: /World/pebble/geo +provenance geometry 1..2: /World/away/geo +provenance geometry 2..3: /World/box/geo +provenance geometry 3..4: /World/sunk/geo +provenance geometry 4..5: /World/rock/geo +provenance geometry 5..6: /World/vase/geo +provenance geometry 6..7: /World/steps/geo +provenance geometry 7..8: /World/field/geo +provenance geometry 8..9: /World/slope/geo +provenance geometry 9..10: /World/terrain/geo +provenance geometry 10..11: /World/shelf/geo +provenance geometry 11..12: /World/floor/geo +provenance geometry 12..13: /World/inst +provenance geometry 13..14: /World/crate/geo +provenance geometry 14..15: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 11, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 13, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 14, slot: 9, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-f5c13f6f8bb66ab5-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-f5c13f6f8bb66ab5-1.digest new file mode 100644 index 000000000..7dbe0a167 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-f5c13f6f8bb66ab5-1.digest @@ -0,0 +1,180 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 14.0), lower_left_corner: Vec3A(-6.371167, -0.2474451, 4.0), horizontal: Vec3A(12.742334, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 3, width: 48, height: 32, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 32 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placed.usda", "$DIR/stage.usda", "$DIR/table.usda"], invisible_overrides: Some(0) } +layer: $DIR/crate.usda +layer: $DIR/placed.usda +layer: $DIR/stage.usda +layer: $DIR/table.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 115 geometries, PrimitiveBreakdown { triangles: 166, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 106 } top level, PrimitiveBreakdown { triangles: 178, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 106 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0302348 motion [] pieces all=12:4e47456226ea853b camera=12:4e47456226ea853b shadow=12:4e47456226ea853b indirect=12:4e47456226ea853b +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9703491 motion [] pieces all=12:ee2f51c1cd819aa5 camera=12:ee2f51c1cd819aa5 shadow=12:ee2f51c1cd819aa5 indirect=12:ee2f51c1cd819aa5 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8307657 motion [] pieces all=12:4456538a2171cd9c camera=12:4456538a2171cd9c shadow=12:4456538a2171cd9c indirect=12:4456538a2171cd9c +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1194483 motion [] pieces all=12:23ee1769174a108a camera=12:23ee1769174a108a shadow=12:23ee1769174a108a indirect=12:23ee1769174a108a +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0775396 motion [] pieces all=12:a369bbc5ef22c736 camera=12:a369bbc5ef22c736 shadow=12:a369bbc5ef22c736 indirect=12:a369bbc5ef22c736 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94118965 motion [] pieces all=12:3f9c2945e264a3a7 camera=12:3f9c2945e264a3a7 shadow=12:3f9c2945e264a3a7 indirect=12:3f9c2945e264a3a7 +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8952345 motion [] pieces all=12:728a445b371853d8 camera=12:728a445b371853d8 shadow=12:728a445b371853d8 indirect=12:728a445b371853d8 +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1544443 motion [] pieces all=12:086da29016ba95b0 camera=12:086da29016ba95b0 shadow=12:086da29016ba95b0 indirect=12:086da29016ba95b0 +geom 8: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0568454 motion [] pieces all=12:a3831c1aa822f259 camera=12:a3831c1aa822f259 shadow=12:a3831c1aa822f259 indirect=12:a3831c1aa822f259 +geom 9: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91884345 motion [] pieces all=12:a4f6586fe5ef3e21 camera=12:a4f6586fe5ef3e21 shadow=12:a4f6586fe5ef3e21 indirect=12:a4f6586fe5ef3e21 +geom 10: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8698318 motion [] pieces all=12:f0760d5faae11b3b camera=12:f0760d5faae11b3b shadow=12:f0760d5faae11b3b indirect=12:f0760d5faae11b3b +geom 11: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1947867 motion [] pieces all=12:5b32133f4614fd46 camera=12:5b32133f4614fd46 shadow=12:5b32133f4614fd46 indirect=12:5b32133f4614fd46 +geom 12: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9751468 motion [] pieces all=12:d51360056d6a17f1 camera=12:d51360056d6a17f1 shadow=12:d51360056d6a17f1 indirect=12:d51360056d6a17f1 +geom 13: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0068411 motion [] pieces all=12:d10eeeefb1edb19c camera=12:d10eeeefb1edb19c shadow=12:d10eeeefb1edb19c indirect=12:d10eeeefb1edb19c +geom 14: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1298987 motion [] pieces all=12:e3f44cff56520c66 camera=12:e3f44cff56520c66 shadow=12:e3f44cff56520c66 indirect=12:e3f44cff56520c66 +geom 15: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8074785 motion [] pieces all=12:76182490231cb2c0 camera=12:76182490231cb2c0 shadow=12:76182490231cb2c0 indirect=12:76182490231cb2c0 +geom 16: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.93526125 motion [] pieces all=12:4bdb31af636839b0 camera=12:4bdb31af636839b0 shadow=12:4bdb31af636839b0 indirect=12:4bdb31af636839b0 +geom 17: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0933704 motion [] pieces all=12:e1cd969552f25674 camera=12:e1cd969552f25674 shadow=12:e1cd969552f25674 indirect=12:e1cd969552f25674 +geom 18: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1666417 motion [] pieces all=12:8cb23d264ba6bfbb camera=12:8cb23d264ba6bfbb shadow=12:8cb23d264ba6bfbb indirect=12:8cb23d264ba6bfbb +geom 19: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8871478 motion [] pieces all=12:4a7858789cd9df8e camera=12:4a7858789cd9df8e shadow=12:4a7858789cd9df8e indirect=12:4a7858789cd9df8e +geom 20: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0460746 motion [] pieces all=12:6426416e8a5deb32 camera=12:6426416e8a5deb32 shadow=12:6426416e8a5deb32 indirect=12:6426416e8a5deb32 +geom 21: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9511921 motion [] pieces all=12:f56b8604101514c9 camera=12:f56b8604101514c9 shadow=12:f56b8604101514c9 indirect=12:f56b8604101514c9 +geom 22: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.84485286 motion [] pieces all=12:db689d8c9a6cd4c8 camera=12:db689d8c9a6cd4c8 shadow=12:db689d8c9a6cd4c8 indirect=12:db689d8c9a6cd4c8 +geom 23: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1097914 motion [] pieces all=12:f09788fda874e4f9 camera=12:f09788fda874e4f9 shadow=12:f09788fda874e4f9 indirect=12:f09788fda874e4f9 +geom 24: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.81755817 motion [] pieces all=12:111f011a0f808f01 camera=12:111f011a0f808f01 shadow=12:111f011a0f808f01 indirect=12:111f011a0f808f01 +geom 25: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1459739 motion [] pieces all=12:43cd6550e6fe7eb3 camera=12:43cd6550e6fe7eb3 shadow=12:43cd6550e6fe7eb3 indirect=12:43cd6550e6fe7eb3 +geom 26: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0129569 motion [] pieces all=12:fc789e4c2f5a396d camera=12:fc789e4c2f5a396d shadow=12:fc789e4c2f5a396d indirect=12:fc789e4c2f5a396d +geom 27: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9887796 motion [] pieces all=12:17b9413cef4977d1 camera=12:17b9413cef4977d1 shadow=12:17b9413cef4977d1 indirect=12:17b9413cef4977d1 +geom 28: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1784618 motion [] pieces all=12:94146ea4b00252bf camera=12:94146ea4b00252bf shadow=12:94146ea4b00252bf indirect=12:94146ea4b00252bf +geom 29: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8605717 motion [] pieces all=12:12a68d3d3b360732 camera=12:12a68d3d3b360732 shadow=12:12a68d3d3b360732 indirect=12:12a68d3d3b360732 +geom 30: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.90049964 motion [] pieces all=12:bbc25fd4b02e380f camera=12:bbc25fd4b02e380f shadow=12:bbc25fd4b02e380f indirect=12:bbc25fd4b02e380f +geom 31: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0697577 motion [] pieces all=12:c475c08b4f7c3376 camera=12:c475c08b4f7c3376 shadow=12:c475c08b4f7c3376 indirect=12:c475c08b4f7c3376 +geom 32: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8753944 motion [] pieces all=12:f7430be8cddff05a camera=12:f7430be8cddff05a shadow=12:f7430be8cddff05a indirect=12:f7430be8cddff05a +geom 33: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1720527 motion [] pieces all=12:5cd3ac711c786885 camera=12:5cd3ac711c786885 shadow=12:5cd3ac711c786885 indirect=12:5cd3ac711c786885 +geom 34: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0938879 motion [] pieces all=12:abf9f129ca95e4f5 camera=12:abf9f129ca95e4f5 shadow=12:abf9f129ca95e4f5 indirect=12:abf9f129ca95e4f5 +geom 35: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9269793 motion [] pieces all=12:e657abaf59804d56 camera=12:e657abaf59804d56 shadow=12:e657abaf59804d56 indirect=12:e657abaf59804d56 +geom 36: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8431831 motion [] pieces all=12:11fc198140ede24e camera=12:11fc198140ede24e shadow=12:11fc198140ede24e indirect=12:11fc198140ede24e +geom 37: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1019206 motion [] pieces all=12:11cf76c922df119e camera=12:11cf76c922df119e shadow=12:11cf76c922df119e indirect=12:11cf76c922df119e +geom 38: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0432779 motion [] pieces all=12:c438f3c44f47c25d camera=12:c438f3c44f47c25d shadow=12:c438f3c44f47c25d indirect=12:c438f3c44f47c25d +geom 39: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96232396 motion [] pieces all=12:13d8666cee5fecc3 camera=12:13d8666cee5fecc3 shadow=12:13d8666cee5fecc3 indirect=12:13d8666cee5fecc3 +geom 40: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.023567 motion [] pieces all=12:18c97bf35a8997a4 camera=12:18c97bf35a8997a4 shadow=12:18c97bf35a8997a4 indirect=12:18c97bf35a8997a4 +geom 41: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9956807 motion [] pieces all=12:e75636321407dd22 camera=12:e75636321407dd22 shadow=12:e75636321407dd22 indirect=12:e75636321407dd22 +geom 42: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8209068 motion [] pieces all=12:d4be977b87b8f2c5 camera=12:d4be977b87b8f2c5 shadow=12:d4be977b87b8f2c5 indirect=12:d4be977b87b8f2c5 +geom 43: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1392137 motion [] pieces all=12:38f1366b090718c5 camera=12:38f1366b090718c5 shadow=12:38f1366b090718c5 indirect=12:38f1366b090718c5 +geom 44: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0633069 motion [] pieces all=12:af93a450dcaa3ed7 camera=12:af93a450dcaa3ed7 shadow=12:af93a450dcaa3ed7 indirect=12:af93a450dcaa3ed7 +geom 45: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91163903 motion [] pieces all=12:e9eaf279b4fd310c camera=12:e9eaf279b4fd310c shadow=12:e9eaf279b4fd310c indirect=12:e9eaf279b4fd310c +geom 46: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85597336 motion [] pieces all=12:75b84129502c9e93 camera=12:75b84129502c9e93 shadow=12:75b84129502c9e93 indirect=12:75b84129502c9e93 +geom 47: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1847972 motion [] pieces all=12:848a7256c4a42f64 camera=12:848a7256c4a42f64 shadow=12:848a7256c4a42f64 indirect=12:848a7256c4a42f64 +geom 48: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0359192 motion [] pieces all=12:f9cd1e14b2117f7d camera=12:f9cd1e14b2117f7d shadow=12:f9cd1e14b2117f7d indirect=12:f9cd1e14b2117f7d +geom 49: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.96330434 motion [] pieces all=12:a240996e765dcaca camera=12:a240996e765dcaca shadow=12:a240996e765dcaca indirect=12:a240996e765dcaca +geom 50: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8354984 motion [] pieces all=12:4d3480a3dfbefce8 camera=12:4d3480a3dfbefce8 shadow=12:4d3480a3dfbefce8 indirect=12:4d3480a3dfbefce8 +geom 51: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1180665 motion [] pieces all=12:9066996782485a15 camera=12:9066996782485a15 shadow=12:9066996782485a15 indirect=12:9066996782485a15 +geom 52: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0866416 motion [] pieces all=12:8d4d3ecfaa01e70f camera=12:8d4d3ecfaa01e70f shadow=12:8d4d3ecfaa01e70f indirect=12:8d4d3ecfaa01e70f +geom 53: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9495417 motion [] pieces all=12:15fb4a3bbaf8ba17 camera=12:15fb4a3bbaf8ba17 shadow=12:15fb4a3bbaf8ba17 indirect=12:15fb4a3bbaf8ba17 +geom 54: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8930357 motion [] pieces all=12:d2b655f51fba3b60 camera=12:d2b655f51fba3b60 shadow=12:d2b655f51fba3b60 indirect=12:d2b655f51fba3b60 +geom 55: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1609201 motion [] pieces all=12:9472cda2f739b9fb camera=12:9472cda2f739b9fb shadow=12:9472cda2f739b9fb indirect=12:9472cda2f739b9fb +geom 56: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0515589 motion [] pieces all=12:cd4b0efb6f96ae7a camera=12:cd4b0efb6f96ae7a shadow=12:cd4b0efb6f96ae7a indirect=12:cd4b0efb6f96ae7a +geom 57: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.91319627 motion [] pieces all=12:5a6276f8576a6b5a camera=12:5a6276f8576a6b5a shadow=12:5a6276f8576a6b5a indirect=12:5a6276f8576a6b5a +geom 58: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8628024 motion [] pieces all=12:d3696c57874475d0 camera=12:d3696c57874475d0 shadow=12:d3696c57874475d0 indirect=12:d3696c57874475d0 +geom 59: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1927012 motion [] pieces all=12:a2e82cef96955606 camera=12:a2e82cef96955606 shadow=12:a2e82cef96955606 indirect=12:a2e82cef96955606 +geom 60: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9843564 motion [] pieces all=12:182c6d894be25135 camera=12:182c6d894be25135 shadow=12:182c6d894be25135 indirect=12:182c6d894be25135 +geom 61: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0001198 motion [] pieces all=12:7a9d4d3c8591c209 camera=12:7a9d4d3c8591c209 shadow=12:7a9d4d3c8591c209 indirect=12:7a9d4d3c8591c209 +geom 62: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1337063 motion [] pieces all=12:4c1c1e515c79bdc3 camera=12:4c1c1e515c79bdc3 shadow=12:4c1c1e515c79bdc3 indirect=12:4c1c1e515c79bdc3 +geom 63: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.80129576 motion [] pieces all=12:7c756f7c6eb8a981 camera=12:7c756f7c6eb8a981 shadow=12:7c756f7c6eb8a981 indirect=12:7c756f7c6eb8a981 +geom 64: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.87433505 motion [] pieces all=12:4108f5b4686e35be camera=12:4108f5b4686e35be shadow=12:4108f5b4686e35be indirect=12:4108f5b4686e35be +geom 65: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1975825 motion [] pieces all=12:4734019265471665 camera=12:4734019265471665 shadow=12:4734019265471665 indirect=12:4734019265471665 +geom 66: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0621684 motion [] pieces all=12:715804278013b789 camera=12:715804278013b789 shadow=12:715804278013b789 indirect=12:715804278013b789 +geom 67: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9226387 motion [] pieces all=12:bb6f7c1e8cc4f1e2 camera=12:bb6f7c1e8cc4f1e2 shadow=12:bb6f7c1e8cc4f1e2 indirect=12:bb6f7c1e8cc4f1e2 +geom 68: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8097593 motion [] pieces all=12:c268e5368146ae1f camera=12:c268e5368146ae1f shadow=12:c268e5368146ae1f indirect=12:c268e5368146ae1f +geom 69: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.127293 motion [] pieces all=12:457c05048f3f693d camera=12:457c05048f3f693d shadow=12:457c05048f3f693d indirect=12:457c05048f3f693d +geom 70: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0116408 motion [] pieces all=12:e703eedb7b026723 camera=12:e703eedb7b026723 shadow=12:e703eedb7b026723 indirect=12:e703eedb7b026723 +geom 71: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97932434 motion [] pieces all=12:fd327f9bca95a0db camera=12:fd327f9bca95a0db shadow=12:fd327f9bca95a0db indirect=12:fd327f9bca95a0db +geom 72: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.82668763 motion [] pieces all=12:6d2ad38125bafc84 camera=12:6d2ad38125bafc84 shadow=12:6d2ad38125bafc84 indirect=12:6d2ad38125bafc84 +geom 73: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1249206 motion [] pieces all=12:c9a251d6e544d9bf camera=12:c9a251d6e544d9bf shadow=12:c9a251d6e544d9bf indirect=12:c9a251d6e544d9bf +geom 74: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0261687 motion [] pieces all=12:20ba675322687129 camera=12:20ba675322687129 shadow=12:20ba675322687129 indirect=12:20ba675322687129 +geom 75: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.97264576 motion [] pieces all=12:ef6c1b9a2c6c864b camera=12:ef6c1b9a2c6c864b shadow=12:ef6c1b9a2c6c864b indirect=12:ef6c1b9a2c6c864b +geom 76: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1511 motion [] pieces all=12:07fc7bc9d1792ccc camera=12:07fc7bc9d1792ccc shadow=12:07fc7bc9d1792ccc indirect=12:07fc7bc9d1792ccc +geom 77: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.89762646 motion [] pieces all=12:aa185da6e53f4927 camera=12:aa185da6e53f4927 shadow=12:aa185da6e53f4927 indirect=12:aa185da6e53f4927 +geom 78: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.94019973 motion [] pieces all=12:01b6b3d88c45c033 camera=12:01b6b3d88c45c033 shadow=12:01b6b3d88c45c033 indirect=12:01b6b3d88c45c033 +geom 79: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0800166 motion [] pieces all=12:a9bf056d392621b0 camera=12:a9bf056d392621b0 shadow=12:a9bf056d392621b0 indirect=12:a9bf056d392621b0 +geom 80: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.85747635 motion [] pieces all=12:94de06f236b8b820 camera=12:94de06f236b8b820 shadow=12:94de06f236b8b820 indirect=12:94de06f236b8b820 +geom 81: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1759998 motion [] pieces all=12:92f726545f6a3ab5 camera=12:92f726545f6a3ab5 shadow=12:92f726545f6a3ab5 indirect=12:92f726545f6a3ab5 +geom 82: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0728099 motion [] pieces all=12:09e30d626f61ccf4 camera=12:09e30d626f61ccf4 shadow=12:09e30d626f61ccf4 indirect=12:09e30d626f61ccf4 +geom 83: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9043027 motion [] pieces all=12:d53f7aff7fe21e21 camera=12:d53f7aff7fe21e21 shadow=12:d53f7aff7fe21e21 indirect=12:d53f7aff7fe21e21 +geom 84: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8145665 motion [] pieces all=12:f2810bc8218d17d8 camera=12:f2810bc8218d17d8 shadow=12:f2810bc8218d17d8 indirect=12:f2810bc8218d17d8 +geom 85: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1478072 motion [] pieces all=12:4aa5066447045ac2 camera=12:4aa5066447045ac2 shadow=12:4aa5066447045ac2 indirect=12:4aa5066447045ac2 +geom 86: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0164454 motion [] pieces all=12:0a5f20c20324f76e camera=12:0a5f20c20324f76e shadow=12:0a5f20c20324f76e indirect=12:0a5f20c20324f76e +geom 87: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.99306315 motion [] pieces all=12:ddcf41cfc3c6173f camera=12:ddcf41cfc3c6173f shadow=12:ddcf41cfc3c6173f indirect=12:ddcf41cfc3c6173f +geom 88: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1079575 motion [] pieces all=12:0003a64b0b152a73 camera=12:0003a64b0b152a73 shadow=12:0003a64b0b152a73 indirect=12:0003a64b0b152a73 +geom 89: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8493257 motion [] pieces all=12:cc9da69acf673059 camera=12:cc9da69acf673059 shadow=12:cc9da69acf673059 indirect=12:cc9da69acf673059 +geom 90: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.955672 motion [] pieces all=12:1516c749ba6d4473 camera=12:1516c749ba6d4473 shadow=12:1516c749ba6d4473 indirect=12:1516c749ba6d4473 +geom 91: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0495518 motion [] pieces all=12:6f60f8b334446267 camera=12:6f60f8b334446267 shadow=12:6f60f8b334446267 indirect=12:6f60f8b334446267 +geom 92: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.8838227 motion [] pieces all=12:26f088ca4a7afba0 camera=12:26f088ca4a7afba0 shadow=12:26f088ca4a7afba0 indirect=12:26f088ca4a7afba0 +geom 93: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1644161 motion [] pieces all=12:548f82962b9f27a4 camera=12:548f82962b9f27a4 shadow=12:548f82962b9f27a4 indirect=12:548f82962b9f27a4 +geom 94: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0903423 motion [] pieces all=12:ee4bc3ad2dcc7fb4 camera=12:ee4bc3ad2dcc7fb4 shadow=12:ee4bc3ad2dcc7fb4 indirect=12:ee4bc3ad2dcc7fb4 +geom 95: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9327857 motion [] pieces all=12:1d6114476eb4c674 camera=12:1d6114476eb4c674 shadow=12:1d6114476eb4c674 indirect=12:1d6114476eb4c674 +geom 96: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.95914304 motion [] pieces all=12:2b6d8b99d404bb45 camera=12:2b6d8b99d404bb45 shadow=12:2b6d8b99d404bb45 indirect=12:2b6d8b99d404bb45 +geom 97: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0385134 motion [] pieces all=12:1a072a290ef6a1af camera=12:1a072a290ef6a1af shadow=12:1a072a290ef6a1af indirect=12:1a072a290ef6a1af +geom 98: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1047977 motion [] pieces all=12:d2ca3713572d5eae camera=12:d2ca3713572d5eae shadow=12:d2ca3713572d5eae indirect=12:d2ca3713572d5eae +geom 99: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.83981353 motion [] pieces all=12:8d980a8119c93b32 camera=12:8d980a8119c93b32 shadow=12:8d980a8119c93b32 indirect=12:8d980a8119c93b32 +geom 100: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d69dc8407e39c57d camera=12:d69dc8407e39c57d shadow=12:d69dc8407e39c57d indirect=12:d69dc8407e39c57d +geom 101: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:108ece7556e2045d camera=12:108ece7556e2045d shadow=12:108ece7556e2045d indirect=12:108ece7556e2045d +geom 102: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b6f2f6b932607ce5 camera=12:b6f2f6b932607ce5 shadow=12:b6f2f6b932607ce5 indirect=12:b6f2f6b932607ce5 +geom 103: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:18f7f442a8f08005 camera=12:18f7f442a8f08005 shadow=12:18f7f442a8f08005 indirect=12:18f7f442a8f08005 +geom 104: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:95835634df888e55 camera=12:95835634df888e55 shadow=12:95835634df888e55 indirect=12:95835634df888e55 +geom 105: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:26e126fb8d08607d camera=12:26e126fb8d08607d shadow=12:26e126fb8d08607d indirect=12:26e126fb8d08607d +geom 106: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:d3ae5d8c61eeefd5 camera=4:d3ae5d8c61eeefd5 shadow=4:d3ae5d8c61eeefd5 indirect=4:d3ae5d8c61eeefd5 +geom 107: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02dee92ba923d022 camera=2:02dee92ba923d022 shadow=2:02dee92ba923d022 indirect=2:02dee92ba923d022 +geom 108: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d420bef838b31092 camera=2:d420bef838b31092 shadow=2:d420bef838b31092 indirect=2:d420bef838b31092 +geom 109: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=128:7e7f92bf6cf1e8e1 camera=128:7e7f92bf6cf1e8e1 shadow=128:7e7f92bf6cf1e8e1 indirect=128:7e7f92bf6cf1e8e1 +geom 110: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5fd3af8a8974e005 camera=2:5fd3af8a8974e005 shadow=2:5fd3af8a8974e005 indirect=2:5fd3af8a8974e005 +geom 111: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 112: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65eff1dac76e16e5 camera=12:65eff1dac76e16e5 shadow=12:65eff1dac76e16e5 indirect=12:65eff1dac76e16e5 +geom 113: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5bbf2f135b5e22b camera=12:c5bbf2f135b5e22b shadow=12:c5bbf2f135b5e22b indirect=12:c5bbf2f135b5e22b +geom 114: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:77f8032df1a5e1f5 camera=2:77f8032df1a5e1f5 shadow=2:77f8032df1a5e1f5 indirect=2:77f8032df1a5e1f5 +provenance arc source: /Crate +provenance arc source: /Crate/geo +provenance arc source: /World/dense/Prototypes/pebble +provenance arc source: /_Cube +provenance light /World/Sky: LightOrigin { index: 0, geoms: 114..114 } +provenance geometry 0..100: /World/dense +provenance geometry 100..101: /World/pebble/geo +provenance geometry 101..102: /World/away/geo +provenance geometry 102..103: /World/box/geo +provenance geometry 103..104: /World/sunk/geo +provenance geometry 104..105: /World/rock/geo +provenance geometry 105..106: /World/vase/geo +provenance geometry 106..107: /World/steps/geo +provenance geometry 107..108: /World/field/geo +provenance geometry 108..109: /World/slope/geo +provenance geometry 109..110: /World/terrain/geo +provenance geometry 110..111: /World/shelf/geo +provenance geometry 111..112: /World/floor/geo +provenance geometry 112..113: /World/inst +provenance geometry 113..114: /World/crate/geo +provenance geometry 114..115: /World/table/geo +provenance mesh: MeshOrigin { geom_id: 100, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 101, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 102, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 103, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 104, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 105, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 106, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 107, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 108, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 109, slot: 6, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 110, slot: 7, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 111, slot: 8, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 113, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 114, slot: 9, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2634041098053373584, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 5, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14470132405950877311, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1206830347127950734, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1341889141698287293, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15760070156626746114, n_points: 81, n_indices: 256, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1050066994217133652, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/placements_usda-275bfd0cb4688e5d-1.digest b/crates/crust-core/tests/data/import_baselines/placements_usda-275bfd0cb4688e5d-1.digest new file mode 100644 index 000000000..2a63ad401 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placements_usda-275bfd0cb4688e5d-1.digest @@ -0,0 +1,31 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/placements.usda"], invisible_overrides: Some(0) } +layer: $DIR/placements.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 8 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 8 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 8 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:f5e0ec2a6ccb450b camera=2:f5e0ec2a6ccb450b shadow=2:f5e0ec2a6ccb450b indirect=2:f5e0ec2a6ccb450b +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(1), false)) swapped false curves false scale 1.0 motion [] pieces all=2:e87bd710c180b19d camera=2:e87bd710c180b19d shadow=2:e87bd710c180b19d indirect=2:e87bd710c180b19d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:b4eaf3018eb97dcb camera=2:b4eaf3018eb97dcb shadow=2:b4eaf3018eb97dcb indirect=2:b4eaf3018eb97dcb +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(1), false)) swapped false curves false scale 1.0 motion [] pieces all=2:65649e45c2a14ee5 camera=2:65649e45c2a14ee5 shadow=2:65649e45c2a14ee5 indirect=2:65649e45c2a14ee5 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:b7cfe822e7d973dd camera=2:b7cfe822e7d973dd shadow=2:b7cfe822e7d973dd indirect=2:b7cfe822e7d973dd +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(1), false)) swapped false curves false scale 1.0 motion [] pieces all=2:93ecb0fad19a3320 camera=2:93ecb0fad19a3320 shadow=2:93ecb0fad19a3320 indirect=2:93ecb0fad19a3320 +geom 6: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2ad6f988c7cf63dd camera=2:2ad6f988c7cf63dd shadow=2:2ad6f988c7cf63dd indirect=2:2ad6f988c7cf63dd +geom 7: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(1), false)) swapped false curves false scale 1.0 motion [] pieces all=2:cd8fb527bc7b2520 camera=2:cd8fb527bc7b2520 shadow=2:cd8fb527bc7b2520 indirect=2:cd8fb527bc7b2520 +provenance light /World/dome: LightOrigin { index: 0, geoms: 8..8 } +provenance geometry 0..4: /World/scatter +provenance geometry 4..6: /World/mirrored +provenance geometry 6..8: /World/left +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18409182714597880266, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3180332025478702472, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plane_usda-e5035e45dccaf24c-1.digest b/crates/crust-core/tests/data/import_baselines/plane_usda-e5035e45dccaf24c-1.digest new file mode 100644 index 000000000..af55513e2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plane_usda-e5035e45dccaf24c-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 5.0), lower_left_corner: Vec3A(-0.27183646, -0.15290801, -5.0), horizontal: Vec3A(0.5436729, 0.0, 0.0), vertical: Vec3A(0.0, 0.30581602, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, -1.0, -3.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 1 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 500.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plane.usda"], invisible_overrides: Some(0) } +layer: $DIR/plane.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d5fa2ac5108a1585 camera=1:d5fa2ac5108a1585 shadow=1:d5fa2ac5108a1585 indirect=1:d5fa2ac5108a1585 +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/planes_usda-b941e449ca4a031a-1.digest b/crates/crust-core/tests/data/import_baselines/planes_usda-b941e449ca4a031a-1.digest new file mode 100644 index 000000000..0e3ce580b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/planes_usda-b941e449ca4a031a-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 5.0), lower_left_corner: Vec3A(-0.27183646, -0.15290801, -5.0), horizontal: Vec3A(0.5436729, 0.0, 0.0), vertical: Vec3A(0.0, 0.30581602, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, -1.0, 4.0), Vec4(0.0, 0.0, -1.0, 4.0), Vec4(0.0, 0.0, -1.0, 4.0), Vec4(0.0, 0.0, -1.0, 4.0), Vec4(0.0, 0.0, -1.0, 4.0), Vec4(0.0, 0.0, -1.0, 4.0), Vec4(0.0, 0.0, -1.0, 4.0), Vec4(0.0, 0.0, -1.0, 4.0)], count: 8 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 500.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/planes.usda"], invisible_overrides: Some(0) } +layer: $DIR/planes.usda +warning: Warning { code: CameraTooManyClippingPlanes, kind: Approximated, count: 1, prims: ["/World/Cam"], message: "/World/Cam: clippingPlanes authors 9 planes; crust honours the first 8 and ignores the other 1" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d5fa2ac5108a1585 camera=1:d5fa2ac5108a1585 shadow=1:d5fa2ac5108a1585 indirect=1:d5fa2ac5108a1585 +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_1_bsdf_1_usda-bd800d4fcb330be2-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_1_bsdf_1_usda-bd800d4fcb330be2-1.digest new file mode 100644 index 000000000..a4ed0d53e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_1_bsdf_1_usda-bd800d4fcb330be2-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_0_1_bsdf_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_0_1_bsdf_1.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_1_light_1_usda-a03210c9831fba26-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_1_light_1_usda-a03210c9831fba26-1.digest new file mode 100644 index 000000000..11b6cf455 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_1_light_1_usda-a03210c9831fba26-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_0_1_light_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_0_1_light_1.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_1_power_1_usda-482542fae980bf52-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_1_power_1_usda-482542fae980bf52-1.digest new file mode 100644 index 000000000..9306d61bf --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_1_power_1_usda-482542fae980bf52-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_0_1_power_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_0_1_power_1.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-36e5cb22b2676a41-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-36e5cb22b2676a41-1.digest new file mode 100644 index 000000000..4b5678fc5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-36e5cb22b2676a41-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_0.25_3_bsdf_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_0.25_3_bsdf_1.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-d38160b2be22e70c-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-d38160b2be22e70c-1.digest new file mode 100644 index 000000000..4b5678fc5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-d38160b2be22e70c-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_0.25_3_bsdf_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_0.25_3_bsdf_1.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_2_usda-78a7411a4858bc6b-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_2_usda-78a7411a4858bc6b-1.digest new file mode 100644 index 000000000..3c86e9d7c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_2_usda-78a7411a4858bc6b-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_0.25_3_bsdf_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_0.25_3_bsdf_2.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_3_usda-f81a4b161903a8f2-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_3_usda-f81a4b161903a8f2-1.digest new file mode 100644 index 000000000..0c415cdb6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_3_usda-f81a4b161903a8f2-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_0.25_3_bsdf_3.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_0.25_3_bsdf_3.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_4_usda-87a5b5e826a38a61-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_4_usda-87a5b5e826a38a61-1.digest new file mode 100644 index 000000000..f1bfd3c40 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_4_usda-87a5b5e826a38a61-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_0.25_3_bsdf_4.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_0.25_3_bsdf_4.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-135d2f963daf2551-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-135d2f963daf2551-1.digest new file mode 100644 index 000000000..3710a12b6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-135d2f963daf2551-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_0.25_3_light_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_0.25_3_light_1.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-cf1431b5a2f0391c-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-cf1431b5a2f0391c-1.digest new file mode 100644 index 000000000..3710a12b6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-cf1431b5a2f0391c-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_0.25_3_light_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_0.25_3_light_1.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_2_usda-c1e873bea9886ca9-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_2_usda-c1e873bea9886ca9-1.digest new file mode 100644 index 000000000..493c5d8f3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_2_usda-c1e873bea9886ca9-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_0.25_3_light_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_0.25_3_light_2.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_3_usda-0dc30546dc7303fa-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_3_usda-0dc30546dc7303fa-1.digest new file mode 100644 index 000000000..a5dec518b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_3_usda-0dc30546dc7303fa-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_0.25_3_light_3.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_0.25_3_light_3.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_4_usda-306836af9dcd76c7-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_4_usda-306836af9dcd76c7-1.digest new file mode 100644 index 000000000..e04698482 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_4_usda-306836af9dcd76c7-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_0.25_3_light_4.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_0.25_3_light_4.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-aeace9cae6e95285-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-aeace9cae6e95285-1.digest new file mode 100644 index 000000000..71ee29134 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-aeace9cae6e95285-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_0.25_3_power_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_0.25_3_power_1.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-f2feafce67b9cc18-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-f2feafce67b9cc18-1.digest new file mode 100644 index 000000000..71ee29134 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-f2feafce67b9cc18-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_0.25_3_power_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_0.25_3_power_1.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_2_usda-9558069a3a6cb6c1-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_2_usda-9558069a3a6cb6c1-1.digest new file mode 100644 index 000000000..c55cd1690 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_2_usda-9558069a3a6cb6c1-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_0.25_3_power_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_0.25_3_power_2.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_3_usda-848bb8619ed104b2-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_3_usda-848bb8619ed104b2-1.digest new file mode 100644 index 000000000..e0bcaed9d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_3_usda-848bb8619ed104b2-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_0.25_3_power_3.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_0.25_3_power_3.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_4_usda-13781e826c793feb-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_4_usda-13781e826c793feb-1.digest new file mode 100644 index 000000000..8a4878c71 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_4_usda-13781e826c793feb-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_0.25_3_power_4.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_0.25_3_power_4.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 0.25, specular: 3.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_1_0_bsdf_1_usda-7392b4eece3d4ffa-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_1_0_bsdf_1_usda-7392b4eece3d4ffa-1.digest new file mode 100644 index 000000000..4ed19de1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_1_0_bsdf_1_usda-7392b4eece3d4ffa-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_1_0_bsdf_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_1_0_bsdf_1.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 0.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 0.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_1_0_light_1_usda-e29b88fff3b5eede-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_1_0_light_1_usda-e29b88fff3b5eede-1.digest new file mode 100644 index 000000000..122b4cba8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_1_0_light_1_usda-e29b88fff3b5eede-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_1_0_light_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_1_0_light_1.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 0.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 0.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_1_0_power_1_usda-db7be84c0c913b8a-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_1_0_power_1_usda-db7be84c0c913b8a-1.digest new file mode 100644 index 000000000..4314665b4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_1_0_power_1_usda-db7be84c0c913b8a-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_1_0_power_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_1_0_power_1.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 0.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 0.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_1_1_bsdf_1_usda-1a655ee8a457375b-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_1_1_bsdf_1_usda-1a655ee8a457375b-1.digest new file mode 100644 index 000000000..8a5083b38 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_1_1_bsdf_1_usda-1a655ee8a457375b-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_1_1_bsdf_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_1_1_bsdf_1.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_1_1_light_1_usda-d608d0096c4c9293-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_1_1_light_1_usda-d608d0096c4c9293-1.digest new file mode 100644 index 000000000..190e6c935 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_1_1_light_1_usda-d608d0096c4c9293-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_1_1_light_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_1_1_light_1.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/plastic_1_1_power_1_usda-dad1612ee907e657-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_1_1_power_1_usda-dad1612ee907e657-1.digest new file mode 100644 index 000000000..98e93d50e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_1_1_power_1_usda-dad1612ee907e657-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 5.0, 6.0), lower_left_corner: Vec3A(-2.0000002, -2.9376645, -0.40261602), horizontal: Vec3A(4.0000005, -0.0, 0.0), vertical: Vec3A(0.0, 3.0731347, -2.560439), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76828355, -0.6401097), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 16, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 16 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plastic_1_1_power_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/plastic_1_1_power_1.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ca080854f0bf27b5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ca080854f0bf27b5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance material /World/M: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/precomp_C_usda-ceae07fa5339bc4e-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_C_usda-ceae07fa5339bc4e-1.digest new file mode 100644 index 000000000..ef811dc47 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_C_usda-ceae07fa5339bc4e-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.1, 7.0), lower_left_corner: Vec3A(-4.8542223, -2.660827, -2.6598039), horizontal: Vec3A(9.708445, -0.0, 0.0), vertical: Vec3A(0.0, 5.4310846, -0.57083), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/precomp", name: "renders/precomp.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/key", name: "key", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/fill", name: "fill", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/rim", name: "rim", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/motion", name: "motion", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look", name: "look", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look_final", name: "look_final", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 2, output: 0, components: 3, radiance: false }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/Precomp/look"], display_filters: ["/Render/Precomp/glow", "/Render/Precomp/bloom", "/Render/Precomp/speed"], display: "C" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/precomp_C.usda"], invisible_overrides: Some(0) } +layer: $DIR/precomp_C.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe Some("rim") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe Some("fill") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe Some("key") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 774, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4aada018ed0727e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4aada018ed0727e5 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1552f6dd41ffc0c8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1552f6dd41ffc0c8 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:832c8ed52d67b0f9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:832c8ed52d67b0f9 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6e02baf63b264ec5 camera=2:6e02baf63b264ec5 shadow=2:6e02baf63b264ec5 indirect=2:6e02baf63b264ec5 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.5 motion [Translation(Vec3A(1.3999999, 0.0, 0.0))] pieces all=768:dcf5d265b8c6f519 camera=768:dcf5d265b8c6f519 shadow=768:dcf5d265b8c6f519 indirect=768:dcf5d265b8c6f519 +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.75 motion [] pieces all=768:47a45983717bb5f1 camera=768:47a45983717bb5f1 shadow=768:47a45983717bb5f1 indirect=768:47a45983717bb5f1 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Runner +provenance geometry 5..6: /World/Hero +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3036384043218918496, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/precomp_look_final_usda-46848a8dcf6250e4-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_look_final_usda-46848a8dcf6250e4-1.digest new file mode 100644 index 000000000..e096115be --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_look_final_usda-46848a8dcf6250e4-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.1, 7.0), lower_left_corner: Vec3A(-4.8542223, -2.660827, -2.6598039), horizontal: Vec3A(9.708445, -0.0, 0.0), vertical: Vec3A(0.0, 5.4310846, -0.57083), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/precomp", name: "renders/precomp.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/key", name: "key", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/fill", name: "fill", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/rim", name: "rim", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/motion", name: "motion", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look", name: "look", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look_final", name: "look_final", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 2, output: 0, components: 3, radiance: false }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/Precomp/look"], display_filters: ["/Render/Precomp/glow", "/Render/Precomp/bloom", "/Render/Precomp/speed"], display: "look_final" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/precomp_look_final.usda"], invisible_overrides: Some(0) } +layer: $DIR/precomp_look_final.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe Some("rim") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe Some("fill") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe Some("key") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 774, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4aada018ed0727e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4aada018ed0727e5 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1552f6dd41ffc0c8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1552f6dd41ffc0c8 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:832c8ed52d67b0f9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:832c8ed52d67b0f9 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6e02baf63b264ec5 camera=2:6e02baf63b264ec5 shadow=2:6e02baf63b264ec5 indirect=2:6e02baf63b264ec5 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.5 motion [Translation(Vec3A(1.3999999, 0.0, 0.0))] pieces all=768:dcf5d265b8c6f519 camera=768:dcf5d265b8c6f519 shadow=768:dcf5d265b8c6f519 indirect=768:dcf5d265b8c6f519 +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.75 motion [] pieces all=768:47a45983717bb5f1 camera=768:47a45983717bb5f1 shadow=768:47a45983717bb5f1 indirect=768:47a45983717bb5f1 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Runner +provenance geometry 5..6: /World/Hero +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3036384043218918496, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/precomp_none_usda-749e88768dbe99b1-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_none_usda-749e88768dbe99b1-1.digest new file mode 100644 index 000000000..126fc80bd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_none_usda-749e88768dbe99b1-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.1, 7.0), lower_left_corner: Vec3A(-4.8542223, -2.660827, -2.6598039), horizontal: Vec3A(9.708445, -0.0, 0.0), vertical: Vec3A(0.0, 5.4310846, -0.57083), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/precomp", name: "renders/precomp.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/key", name: "key", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/fill", name: "fill", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/rim", name: "rim", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/motion", name: "motion", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look", name: "look", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look_final", name: "look_final", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 2, output: 0, components: 3, radiance: false }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/Precomp/look"], display_filters: ["/Render/Precomp/glow", "/Render/Precomp/bloom", "/Render/Precomp/speed"], display: "beauty" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/precomp_none.usda"], invisible_overrides: Some(0) } +layer: $DIR/precomp_none.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe Some("rim") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe Some("fill") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe Some("key") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 774, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4aada018ed0727e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4aada018ed0727e5 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1552f6dd41ffc0c8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1552f6dd41ffc0c8 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:832c8ed52d67b0f9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:832c8ed52d67b0f9 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6e02baf63b264ec5 camera=2:6e02baf63b264ec5 shadow=2:6e02baf63b264ec5 indirect=2:6e02baf63b264ec5 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.5 motion [Translation(Vec3A(1.3999999, 0.0, 0.0))] pieces all=768:dcf5d265b8c6f519 camera=768:dcf5d265b8c6f519 shadow=768:dcf5d265b8c6f519 indirect=768:dcf5d265b8c6f519 +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.75 motion [] pieces all=768:47a45983717bb5f1 camera=768:47a45983717bb5f1 shadow=768:47a45983717bb5f1 indirect=768:47a45983717bb5f1 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Runner +provenance geometry 5..6: /World/Hero +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3036384043218918496, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-33f481698c3a3ce7-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_usda-33f481698c3a3ce7-1.digest new file mode 100644 index 000000000..9e1180c5f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-33f481698c3a3ce7-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.1, 7.0), lower_left_corner: Vec3A(-4.8542223, -2.660827, -2.6598039), horizontal: Vec3A(9.708445, -0.0, 0.0), vertical: Vec3A(0.0, 5.4310846, -0.57083), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/precomp", name: "renders/precomp.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/key", name: "key", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/fill", name: "fill", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/rim", name: "rim", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/motion", name: "motion", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look", name: "look", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look_final", name: "look_final", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 2, output: 0, components: 3, radiance: false }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/Precomp/look"], display_filters: ["/Render/Precomp/glow", "/Render/Precomp/bloom", "/Render/Precomp/speed"], display: "look_final" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/precomp.usda"], invisible_overrides: Some(0) } +layer: $DIR/precomp.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe Some("rim") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe Some("fill") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe Some("key") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 774, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4aada018ed0727e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4aada018ed0727e5 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1552f6dd41ffc0c8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1552f6dd41ffc0c8 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:832c8ed52d67b0f9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:832c8ed52d67b0f9 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6e02baf63b264ec5 camera=2:6e02baf63b264ec5 shadow=2:6e02baf63b264ec5 indirect=2:6e02baf63b264ec5 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.5 motion [Translation(Vec3A(1.3999999, 0.0, 0.0))] pieces all=768:dcf5d265b8c6f519 camera=768:dcf5d265b8c6f519 shadow=768:dcf5d265b8c6f519 indirect=768:dcf5d265b8c6f519 +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.75 motion [] pieces all=768:47a45983717bb5f1 camera=768:47a45983717bb5f1 shadow=768:47a45983717bb5f1 indirect=768:47a45983717bb5f1 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Runner +provenance geometry 5..6: /World/Hero +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3036384043218918496, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-4339ddf5a07dea17-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_usda-4339ddf5a07dea17-1.digest new file mode 100644 index 000000000..9e1180c5f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-4339ddf5a07dea17-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.1, 7.0), lower_left_corner: Vec3A(-4.8542223, -2.660827, -2.6598039), horizontal: Vec3A(9.708445, -0.0, 0.0), vertical: Vec3A(0.0, 5.4310846, -0.57083), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/precomp", name: "renders/precomp.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/key", name: "key", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/fill", name: "fill", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/rim", name: "rim", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/motion", name: "motion", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look", name: "look", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look_final", name: "look_final", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 2, output: 0, components: 3, radiance: false }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/Precomp/look"], display_filters: ["/Render/Precomp/glow", "/Render/Precomp/bloom", "/Render/Precomp/speed"], display: "look_final" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/precomp.usda"], invisible_overrides: Some(0) } +layer: $DIR/precomp.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe Some("rim") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe Some("fill") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe Some("key") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 774, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4aada018ed0727e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4aada018ed0727e5 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1552f6dd41ffc0c8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1552f6dd41ffc0c8 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:832c8ed52d67b0f9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:832c8ed52d67b0f9 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6e02baf63b264ec5 camera=2:6e02baf63b264ec5 shadow=2:6e02baf63b264ec5 indirect=2:6e02baf63b264ec5 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.5 motion [Translation(Vec3A(1.3999999, 0.0, 0.0))] pieces all=768:dcf5d265b8c6f519 camera=768:dcf5d265b8c6f519 shadow=768:dcf5d265b8c6f519 indirect=768:dcf5d265b8c6f519 +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.75 motion [] pieces all=768:47a45983717bb5f1 camera=768:47a45983717bb5f1 shadow=768:47a45983717bb5f1 indirect=768:47a45983717bb5f1 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Runner +provenance geometry 5..6: /World/Hero +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3036384043218918496, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-1.digest new file mode 100644 index 000000000..dd4b29bef --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.1, 7.0), lower_left_corner: Vec3A(-4.8542223, -2.660827, -2.6598039), horizontal: Vec3A(9.708445, -0.0, 0.0), vertical: Vec3A(0.0, 5.4310846, -0.57083), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/precomp", name: "renders/precomp.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/key", name: "key", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/fill", name: "fill", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/rim", name: "rim", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/motion", name: "motion", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look", name: "look", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look_final", name: "look_final", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 2, output: 0, components: 3, radiance: false }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/Precomp/look"], display_filters: ["/Render/Precomp/glow", "/Render/Precomp/bloom", "/Render/Precomp/speed"], display: "look_final" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/precomp.usda"], invisible_overrides: Some(0) } +layer: $DIR/precomp.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe Some("rim") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe Some("fill") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe Some("key") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 774, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4aada018ed0727e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4aada018ed0727e5 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1552f6dd41ffc0c8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1552f6dd41ffc0c8 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:832c8ed52d67b0f9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:832c8ed52d67b0f9 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6e02baf63b264ec5 camera=2:6e02baf63b264ec5 shadow=2:6e02baf63b264ec5 indirect=2:6e02baf63b264ec5 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.5 motion [Translation(Vec3A(1.3999999, 0.0, 0.0))] pieces all=768:dcf5d265b8c6f519 camera=768:dcf5d265b8c6f519 shadow=768:dcf5d265b8c6f519 indirect=768:dcf5d265b8c6f519 +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.75 motion [] pieces all=768:47a45983717bb5f1 camera=768:47a45983717bb5f1 shadow=768:47a45983717bb5f1 indirect=768:47a45983717bb5f1 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Runner +provenance geometry 5..6: /World/Hero +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3036384043218918496, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-2.digest b/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-2.digest new file mode 100644 index 000000000..dd4b29bef --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-2.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.1, 7.0), lower_left_corner: Vec3A(-4.8542223, -2.660827, -2.6598039), horizontal: Vec3A(9.708445, -0.0, 0.0), vertical: Vec3A(0.0, 5.4310846, -0.57083), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/precomp", name: "renders/precomp.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/key", name: "key", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/fill", name: "fill", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/rim", name: "rim", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/motion", name: "motion", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look", name: "look", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look_final", name: "look_final", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 2, output: 0, components: 3, radiance: false }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/Precomp/look"], display_filters: ["/Render/Precomp/glow", "/Render/Precomp/bloom", "/Render/Precomp/speed"], display: "look_final" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/precomp.usda"], invisible_overrides: Some(0) } +layer: $DIR/precomp.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe Some("rim") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe Some("fill") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe Some("key") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 774, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4aada018ed0727e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4aada018ed0727e5 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1552f6dd41ffc0c8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1552f6dd41ffc0c8 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:832c8ed52d67b0f9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:832c8ed52d67b0f9 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6e02baf63b264ec5 camera=2:6e02baf63b264ec5 shadow=2:6e02baf63b264ec5 indirect=2:6e02baf63b264ec5 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.5 motion [Translation(Vec3A(1.3999999, 0.0, 0.0))] pieces all=768:dcf5d265b8c6f519 camera=768:dcf5d265b8c6f519 shadow=768:dcf5d265b8c6f519 indirect=768:dcf5d265b8c6f519 +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.75 motion [] pieces all=768:47a45983717bb5f1 camera=768:47a45983717bb5f1 shadow=768:47a45983717bb5f1 indirect=768:47a45983717bb5f1 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Runner +provenance geometry 5..6: /World/Hero +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3036384043218918496, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-9c591dbe4a6a2374-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_usda-9c591dbe4a6a2374-1.digest new file mode 100644 index 000000000..dd4b29bef --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-9c591dbe4a6a2374-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.1, 7.0), lower_left_corner: Vec3A(-4.8542223, -2.660827, -2.6598039), horizontal: Vec3A(9.708445, -0.0, 0.0), vertical: Vec3A(0.0, 5.4310846, -0.57083), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/precomp", name: "renders/precomp.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/key", name: "key", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/fill", name: "fill", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/rim", name: "rim", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/motion", name: "motion", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look", name: "look", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look_final", name: "look_final", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 2, output: 0, components: 3, radiance: false }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/Precomp/look"], display_filters: ["/Render/Precomp/glow", "/Render/Precomp/bloom", "/Render/Precomp/speed"], display: "look_final" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/precomp.usda"], invisible_overrides: Some(0) } +layer: $DIR/precomp.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe Some("rim") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe Some("fill") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe Some("key") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 774, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4aada018ed0727e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4aada018ed0727e5 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1552f6dd41ffc0c8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1552f6dd41ffc0c8 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:832c8ed52d67b0f9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:832c8ed52d67b0f9 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6e02baf63b264ec5 camera=2:6e02baf63b264ec5 shadow=2:6e02baf63b264ec5 indirect=2:6e02baf63b264ec5 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.5 motion [Translation(Vec3A(1.3999999, 0.0, 0.0))] pieces all=768:dcf5d265b8c6f519 camera=768:dcf5d265b8c6f519 shadow=768:dcf5d265b8c6f519 indirect=768:dcf5d265b8c6f519 +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.75 motion [] pieces all=768:47a45983717bb5f1 camera=768:47a45983717bb5f1 shadow=768:47a45983717bb5f1 indirect=768:47a45983717bb5f1 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Runner +provenance geometry 5..6: /World/Hero +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3036384043218918496, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-d9d1e77cdf9ce71d-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_usda-d9d1e77cdf9ce71d-1.digest new file mode 100644 index 000000000..9e1180c5f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-d9d1e77cdf9ce71d-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.1, 7.0), lower_left_corner: Vec3A(-4.8542223, -2.660827, -2.6598039), horizontal: Vec3A(9.708445, -0.0, 0.0), vertical: Vec3A(0.0, 5.4310846, -0.57083), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/precomp", name: "renders/precomp.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/key", name: "key", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/fill", name: "fill", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/rim", name: "rim", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/motion", name: "motion", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look", name: "look", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look_final", name: "look_final", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 2, output: 0, components: 3, radiance: false }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/Precomp/look"], display_filters: ["/Render/Precomp/glow", "/Render/Precomp/bloom", "/Render/Precomp/speed"], display: "look_final" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/precomp.usda"], invisible_overrides: Some(0) } +layer: $DIR/precomp.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe Some("rim") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe Some("fill") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe Some("key") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 774, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4aada018ed0727e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4aada018ed0727e5 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1552f6dd41ffc0c8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1552f6dd41ffc0c8 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:832c8ed52d67b0f9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:832c8ed52d67b0f9 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6e02baf63b264ec5 camera=2:6e02baf63b264ec5 shadow=2:6e02baf63b264ec5 indirect=2:6e02baf63b264ec5 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.5 motion [Translation(Vec3A(1.3999999, 0.0, 0.0))] pieces all=768:dcf5d265b8c6f519 camera=768:dcf5d265b8c6f519 shadow=768:dcf5d265b8c6f519 indirect=768:dcf5d265b8c6f519 +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.75 motion [] pieces all=768:47a45983717bb5f1 camera=768:47a45983717bb5f1 shadow=768:47a45983717bb5f1 indirect=768:47a45983717bb5f1 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Runner +provenance geometry 5..6: /World/Hero +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3036384043218918496, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-e1a87b662c5109e8-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_usda-e1a87b662c5109e8-1.digest new file mode 100644 index 000000000..9e1180c5f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-e1a87b662c5109e8-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.1, 7.0), lower_left_corner: Vec3A(-4.8542223, -2.660827, -2.6598039), horizontal: Vec3A(9.708445, -0.0, 0.0), vertical: Vec3A(0.0, 5.4310846, -0.57083), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/precomp", name: "renders/precomp.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/key", name: "key", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/fill", name: "fill", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/rim", name: "rim", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/motion", name: "motion", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look", name: "look", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look_final", name: "look_final", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 2, output: 0, components: 3, radiance: false }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/Precomp/look"], display_filters: ["/Render/Precomp/glow", "/Render/Precomp/bloom", "/Render/Precomp/speed"], display: "look_final" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/precomp.usda"], invisible_overrides: Some(0) } +layer: $DIR/precomp.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe Some("rim") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe Some("fill") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe Some("key") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 774, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4aada018ed0727e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4aada018ed0727e5 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1552f6dd41ffc0c8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1552f6dd41ffc0c8 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:832c8ed52d67b0f9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:832c8ed52d67b0f9 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6e02baf63b264ec5 camera=2:6e02baf63b264ec5 shadow=2:6e02baf63b264ec5 indirect=2:6e02baf63b264ec5 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.5 motion [Translation(Vec3A(1.3999999, 0.0, 0.0))] pieces all=768:dcf5d265b8c6f519 camera=768:dcf5d265b8c6f519 shadow=768:dcf5d265b8c6f519 indirect=768:dcf5d265b8c6f519 +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.75 motion [] pieces all=768:47a45983717bb5f1 camera=768:47a45983717bb5f1 shadow=768:47a45983717bb5f1 indirect=768:47a45983717bb5f1 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Runner +provenance geometry 5..6: /World/Hero +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3036384043218918496, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-e28059e8e7dd2fb9-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_usda-e28059e8e7dd2fb9-1.digest new file mode 100644 index 000000000..dd4b29bef --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-e28059e8e7dd2fb9-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.1, 7.0), lower_left_corner: Vec3A(-4.8542223, -2.660827, -2.6598039), horizontal: Vec3A(9.708445, -0.0, 0.0), vertical: Vec3A(0.0, 5.4310846, -0.57083), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/precomp", name: "renders/precomp.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/key", name: "key", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/fill", name: "fill", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/rim", name: "rim", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/motion", name: "motion", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look", name: "look", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/look_final", name: "look_final", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 2, output: 0, components: 3, radiance: false }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/Precomp/look"], display_filters: ["/Render/Precomp/glow", "/Render/Precomp/bloom", "/Render/Precomp/speed"], display: "look_final" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/precomp.usda"], invisible_overrides: Some(0) } +layer: $DIR/precomp.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe Some("rim") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Fill") lpe Some("fill") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Key") lpe Some("key") pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 774, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4aada018ed0727e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4aada018ed0727e5 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1552f6dd41ffc0c8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1552f6dd41ffc0c8 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:832c8ed52d67b0f9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:832c8ed52d67b0f9 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6e02baf63b264ec5 camera=2:6e02baf63b264ec5 shadow=2:6e02baf63b264ec5 indirect=2:6e02baf63b264ec5 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.5 motion [Translation(Vec3A(1.3999999, 0.0, 0.0))] pieces all=768:dcf5d265b8c6f519 camera=768:dcf5d265b8c6f519 shadow=768:dcf5d265b8c6f519 indirect=768:dcf5d265b8c6f519 +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 0.75 motion [] pieces all=768:47a45983717bb5f1 camera=768:47a45983717bb5f1 shadow=768:47a45983717bb5f1 indirect=768:47a45983717bb5f1 +provenance light /World/Fill: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Key: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Fill +provenance geometry 2..3: /World/Key +provenance geometry 3..4: /World/Floor +provenance geometry 4..5: /World/Runner +provenance geometry 5..6: /World/Hero +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: true } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3036384043218918496, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/preview_plain_usda-56c5917475bdaa40-1.digest b/crates/crust-core/tests/data/import_baselines/preview_plain_usda-56c5917475bdaa40-1.digest new file mode 100644 index 000000000..14d856836 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/preview_plain_usda-56c5917475bdaa40-1.digest @@ -0,0 +1,20 @@ +time: None +working space: ACEScg +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/preview_plain.usda"], invisible_overrides: Some(0) } +layer: $DIR/preview_plain.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(5)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/preview_tagged_usda-21171eef0f915c9d-1.digest b/crates/crust-core/tests/data/import_baselines/preview_tagged_usda-21171eef0f915c9d-1.digest new file mode 100644 index 000000000..5f82bb1ba --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/preview_tagged_usda-21171eef0f915c9d-1.digest @@ -0,0 +1,20 @@ +time: None +working space: ACEScg +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/preview_tagged.usda"], invisible_overrides: Some(0) } +layer: $DIR/preview_tagged.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(5)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/preview_usda-6fa33b5d399ba28d-1.digest b/crates/crust-core/tests/data/import_baselines/preview_usda-6fa33b5d399ba28d-1.digest new file mode 100644 index 000000000..a8b5c3fab --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/preview_usda-6fa33b5d399ba28d-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/preview.usda"], invisible_overrides: Some(0) } +layer: $DIR/preview.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-1ceba2b5cd7da4fe-1.digest b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-1ceba2b5cd7da4fe-1.digest new file mode 100644 index 000000000..417b3dcbc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-1ceba2b5cd7da4fe-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.4, 5.0), lower_left_corner: Vec3A(-5.6632595, -3.7950878, -4.119156), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.231942, -1.3246402), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9781476, -0.20791169), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/primvars", name: "renders/primvar_aovs.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/uv2", name: "uv2", channel_prefix: None, source: Primvar(PrimvarSource { index: 1, components: 2, role: TexCoord }), components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Cd", name: "Cd", channel_prefix: None, source: Primvar(PrimvarSource { index: 2, components: 3, role: Color }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/primvar_aovs.usda"], invisible_overrides: Some(0) } +layer: $DIR/primvar_aovs.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 196, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 196, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:65a58828d040eedc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:65a58828d040eedc +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8e63325f2f248d9 camera=2:e8e63325f2f248d9 shadow=2:e8e63325f2f248d9 indirect=2:e8e63325f2f248d9 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=192:06e7ab8333d1cd5d camera=192:06e7ab8333d1cd5d shadow=192:06e7ab8333d1cd5d indirect=192:06e7ab8333d1cd5d +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Cube +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15437267913824250035, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11794230771889940430, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("uv2", 2), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-1.digest b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-1.digest new file mode 100644 index 000000000..c6fc7670a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.4, 5.0), lower_left_corner: Vec3A(-5.6632595, -3.7950878, -4.119156), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.231942, -1.3246402), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9781476, -0.20791169), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/primvars", name: "renders/primvar_aovs.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/uv2", name: "uv2", channel_prefix: None, source: Primvar(PrimvarSource { index: 1, components: 2, role: TexCoord }), components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Cd", name: "Cd", channel_prefix: None, source: Primvar(PrimvarSource { index: 2, components: 3, role: Color }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/primvar_aovs.usda"], invisible_overrides: Some(0) } +layer: $DIR/primvar_aovs.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 196, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 196, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:65a58828d040eedc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:65a58828d040eedc +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8e63325f2f248d9 camera=2:e8e63325f2f248d9 shadow=2:e8e63325f2f248d9 indirect=2:e8e63325f2f248d9 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=192:06e7ab8333d1cd5d camera=192:06e7ab8333d1cd5d shadow=192:06e7ab8333d1cd5d indirect=192:06e7ab8333d1cd5d +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Cube +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15437267913824250035, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11794230771889940430, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("uv2", 2), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-2.digest b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-2.digest new file mode 100644 index 000000000..c6fc7670a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-2.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.4, 5.0), lower_left_corner: Vec3A(-5.6632595, -3.7950878, -4.119156), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.231942, -1.3246402), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9781476, -0.20791169), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/primvars", name: "renders/primvar_aovs.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/uv2", name: "uv2", channel_prefix: None, source: Primvar(PrimvarSource { index: 1, components: 2, role: TexCoord }), components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Cd", name: "Cd", channel_prefix: None, source: Primvar(PrimvarSource { index: 2, components: 3, role: Color }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/primvar_aovs.usda"], invisible_overrides: Some(0) } +layer: $DIR/primvar_aovs.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 196, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 196, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:65a58828d040eedc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:65a58828d040eedc +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8e63325f2f248d9 camera=2:e8e63325f2f248d9 shadow=2:e8e63325f2f248d9 indirect=2:e8e63325f2f248d9 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=192:06e7ab8333d1cd5d camera=192:06e7ab8333d1cd5d shadow=192:06e7ab8333d1cd5d indirect=192:06e7ab8333d1cd5d +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Cube +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15437267913824250035, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11794230771889940430, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("uv2", 2), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-e0e162475fa824e5-1.digest b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-e0e162475fa824e5-1.digest new file mode 100644 index 000000000..c6fc7670a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-e0e162475fa824e5-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.4, 5.0), lower_left_corner: Vec3A(-5.6632595, -3.7950878, -4.119156), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.231942, -1.3246402), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9781476, -0.20791169), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/primvars", name: "renders/primvar_aovs.exr", vars: [AovVar { prim_path: "/Render/Products/Vars/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/uv2", name: "uv2", channel_prefix: None, source: Primvar(PrimvarSource { index: 1, components: 2, role: TexCoord }), components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Products/Vars/Cd", name: "Cd", channel_prefix: None, source: Primvar(PrimvarSource { index: 2, components: 3, role: Color }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/primvar_aovs.usda"], invisible_overrides: Some(0) } +layer: $DIR/primvar_aovs.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 196, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 196, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:65a58828d040eedc camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:65a58828d040eedc +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8e63325f2f248d9 camera=2:e8e63325f2f248d9 shadow=2:e8e63325f2f248d9 indirect=2:e8e63325f2f248d9 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=192:06e7ab8333d1cd5d camera=192:06e7ab8333d1cd5d shadow=192:06e7ab8333d1cd5d indirect=192:06e7ab8333d1cd5d +provenance light /World/KeyLight: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Cube +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15437267913824250035, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11794230771889940430, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("uv2", 2), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/primvar_multisampled_usda-774c86244886ea5e-1.digest b/crates/crust-core/tests/data/import_baselines/primvar_multisampled_usda-774c86244886ea5e-1.digest new file mode 100644 index 000000000..ef7280f64 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/primvar_multisampled_usda-774c86244886ea5e-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Filtered, clear: -1.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/primvar_multisampled.usda"], invisible_overrides: Some(0) } +layer: $DIR/primvar_multisampled.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/primvar_vars_usda-f6787f7fdf1eebf3-1.digest b/crates/crust-core/tests/data/import_baselines/primvar_vars_usda-f6787f7fdf1eebf3-1.digest new file mode 100644 index 000000000..c23ee9edf --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/primvar_vars_usda-f6787f7fdf1eebf3-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 5.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -5.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/rest2", name: "rest2", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/uv2", name: "uv2", channel_prefix: None, source: Primvar(PrimvarSource { index: 1, components: 2, role: TexCoord }), components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Cd", name: "Cd", channel_prefix: None, source: Primvar(PrimvarSource { index: 2, components: 3, role: Color }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/objectId", name: "objectId", channel_prefix: None, source: Primvar(PrimvarSource { index: 3, components: 1, role: Integer }), components: 1, precision: Uint, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/primvar_vars.usda"], invisible_overrides: Some(0) } +layer: $DIR/primvar_vars.usda +warning: Warning { code: AovPrimvarNoName, kind: Skipped, count: 1, prims: ["/Render/nameless"], message: "/Render/nameless: sourceType \"primvar\" needs a sourceName naming the primvar; no channel written" } +warning: Warning { code: AovPrimvarFourComponents, kind: Skipped, count: 1, prims: ["/Render/rgba"], message: "/Render/rgba: primvar \"displayColor\" as \"color4f\": four-component primvar vars are not supported yet; no channel written" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("uv2", 2), ("displayColor", 3), ("objectId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/procedural_par_square_usda-6cb0d1de356675bd-1.digest b/crates/crust-core/tests/data/import_baselines/procedural_par_square_usda-6cb0d1de356675bd-1.digest new file mode 100644 index 000000000..1ea73e70a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/procedural_par_square_usda-6cb0d1de356675bd-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/procedural_par_square.usda"], invisible_overrides: Some(0) } +layer: $DIR/procedural_par_square.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/procedural_par_wide_usda-e65d9f21a141c052-1.digest b/crates/crust-core/tests/data/import_baselines/procedural_par_wide_usda-e65d9f21a141c052-1.digest new file mode 100644 index 000000000..f90d448da --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/procedural_par_wide_usda-e65d9f21a141c052-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/procedural_par_wide.usda"], invisible_overrides: Some(0) } +layer: $DIR/procedural_par_wide.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +warning: Warning { code: CameraProceduralPixelAspect, kind: Approximated, count: 1, prims: [], message: "pixelAspectRatio = 2 is not honoured by the procedural camera of a stage with no UsdGeomCamera; it renders square pixels" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/products_usda-e7ced79f762e48ff-1.digest b/crates/crust-core/tests/data/import_baselines/products_usda-e7ced79f762e48ff-1.digest new file mode 100644 index 000000000..a63135f55 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/products_usda-e7ced79f762e48ff-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/beauty", name: "beauty.exr", vars: [AovVar { prim_path: "/Render/color", name: "color", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/products.usda"], invisible_overrides: Some(0) } +layer: $DIR/products.usda +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 1, prims: ["/Render/bogus"], message: "/Render/bogus: unknown raw source \"noSuchSource\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +warning: Warning { code: LpeInvalid, kind: Skipped, count: 1, prims: ["/Render/badLpe"], message: "/Render/badLpe: light path expression \"C<<<\": column 3: '<' is not a event type; no channel written" } +warning: Warning { code: AovUnsupportedSource, kind: Skipped, count: 1, prims: ["/Render/intrinsic"], message: "/Render/intrinsic: sourceType \"intrinsic\" is unimplemented in UsdRender itself; no channel written" } +warning: Warning { code: AovPrimvarNoName, kind: Skipped, count: 1, prims: ["/Render/nameless"], message: "/Render/nameless: sourceType \"primvar\" needs a sourceName naming the primvar; no channel written" } +warning: Warning { code: ProductNotARenderProduct, kind: Skipped, count: 1, prims: ["/Render/notAProduct"], message: "/Render/settings.products targets /Render/notAProduct, which is not a RenderProduct; skipped" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/prune_usda-3bf02286156e9774-1.digest b/crates/crust-core/tests/data/import_baselines/prune_usda-3bf02286156e9774-1.digest new file mode 100644 index 000000000..60e6bb0de --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/prune_usda-3bf02286156e9774-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/invisible", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/prune.usda"], invisible_overrides: Some(0) } +layer: $DIR/prune.usda +warning: Warning { code: RenderPassCollectionNotRead, kind: Skipped, count: 1, prims: ["/Render/Passes/invisible"], message: "/Render/Passes/invisible: collection:renderVisibility restricts what renders, which crust does not read — rendered as if it were unauthored" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance geometry 0..1: /World/Set +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/invisible"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/prune_usda-d1a6b2f2900a3fc1-1.digest b/crates/crust-core/tests/data/import_baselines/prune_usda-d1a6b2f2900a3fc1-1.digest new file mode 100644 index 000000000..3a95631e2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/prune_usda-d1a6b2f2900a3fc1-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/quiet", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/prune.usda"], invisible_overrides: Some(0) } +layer: $DIR/prune.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance geometry 0..1: /World/Set +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/quiet"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/prune_usda-f5ce85341275f544-1.digest b/crates/crust-core/tests/data/import_baselines/prune_usda-f5ce85341275f544-1.digest new file mode 100644 index 000000000..e18ca8fcc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/prune_usda-f5ce85341275f544-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/pruning", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/prune.usda"], invisible_overrides: Some(0) } +layer: $DIR/prune.usda +warning: Warning { code: RenderPassCollectionNotRead, kind: Skipped, count: 1, prims: ["/Render/Passes/pruning"], message: "/Render/Passes/pruning: collection:prune restricts what renders, which crust does not read — rendered as if it were unauthored" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance geometry 0..1: /World/Set +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pruning"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/ptex_phase_usda-9d5b92d8c597babb-1.digest b/crates/crust-core/tests/data/import_baselines/ptex_phase_usda-9d5b92d8c597babb-1.digest new file mode 100644 index 000000000..cc944eb2f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ptex_phase_usda-9d5b92d8c597babb-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/ptex_phase.usda"], invisible_overrides: Some(0) } +layer: $DIR/ptex_phase.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: Some(1), curve: None, primvars: Some([]) } class 65535 holdout false transparent false map Some(0) uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02ff87c392969355 camera=2:02ff87c392969355 shadow=2:02ff87c392969355 indirect=2:02ff87c392969355 +provenance material /World/Looks/Rock: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3224020731942780983, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-c2d1b0153068d224-1.digest b/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-c2d1b0153068d224-1.digest new file mode 100644 index 000000000..a09c88e46 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-c2d1b0153068d224-1.digest @@ -0,0 +1,28 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 7.0), lower_left_corner: Vec3A(-5.6632595, -3.1855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 3, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/ptex_quads.usda"], invisible_overrides: Some(0) } +layer: $DIR/ptex_quads.usda +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: Some(2), curve: None, primvars: Some([]) } class 65535 holdout false transparent false map Some(0) uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:b08498737c0af092 camera=4:b08498737c0af092 shadow=4:b08498737c0af092 indirect=4:b08498737c0af092 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: Some(4), curve: None, primvars: Some([]) } class 65535 holdout false transparent false map Some(1) uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=8:56f6581b05494da9 camera=8:56f6581b05494da9 shadow=8:56f6581b05494da9 indirect=8:56f6581b05494da9 +provenance material /World/Looks/ColourPtex: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/TiledPtex: MaterialOrigin { slots: [0], displaced: false } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Tiled +provenance geometry 1..2: /World/Colour +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17735927661718226118, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12903772945727330830, n_points: 9, n_indices: 16, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-1.digest b/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-1.digest new file mode 100644 index 000000000..7ffd8e2e8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 7.0), lower_left_corner: Vec3A(-5.6632595, -3.1855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 3, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/ptex_quads.usda"], invisible_overrides: Some(0) } +layer: $DIR/ptex_quads.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 2, prims: [], message: "Asset loader does not decode Ptex: $DIR/textures/quad_tiled.ptx ignored — the surface falls back to its constant baseColor." } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:b08498737c0af092 camera=4:b08498737c0af092 shadow=4:b08498737c0af092 indirect=4:b08498737c0af092 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=8:56f6581b05494da9 camera=8:56f6581b05494da9 shadow=8:56f6581b05494da9 indirect=8:56f6581b05494da9 +provenance material /World/Looks/ColourPtex: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/TiledPtex: MaterialOrigin { slots: [0], displaced: false } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Tiled +provenance geometry 1..2: /World/Colour +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17735927661718226118, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12903772945727330830, n_points: 9, n_indices: 16, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-2.digest b/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-2.digest new file mode 100644 index 000000000..7ffd8e2e8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-2.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 7.0), lower_left_corner: Vec3A(-5.6632595, -3.1855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 3, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/ptex_quads.usda"], invisible_overrides: Some(0) } +layer: $DIR/ptex_quads.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 2, prims: [], message: "Asset loader does not decode Ptex: $DIR/textures/quad_tiled.ptx ignored — the surface falls back to its constant baseColor." } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:b08498737c0af092 camera=4:b08498737c0af092 shadow=4:b08498737c0af092 indirect=4:b08498737c0af092 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=8:56f6581b05494da9 camera=8:56f6581b05494da9 shadow=8:56f6581b05494da9 indirect=8:56f6581b05494da9 +provenance material /World/Looks/ColourPtex: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/TiledPtex: MaterialOrigin { slots: [0], displaced: false } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Tiled +provenance geometry 1..2: /World/Colour +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17735927661718226118, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12903772945727330830, n_points: 9, n_indices: 16, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-1.digest b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-1.digest new file mode 100644 index 000000000..d572d3924 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-1.digest @@ -0,0 +1,37 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 9.0), lower_left_corner: Vec3A(-4.3656254, -1.9874965, -0.6885319), horizontal: Vec3A(8.731251, -0.0, 0.0), vertical: Vec3A(0.0, 4.8844237, -0.5133736), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 11.787], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/purpose_bindings.usda"], invisible_overrides: Some(0) } +layer: $DIR/purpose_bindings.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 14, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 38, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d39ea1d8f1160585 camera=12:d39ea1d8f1160585 shadow=12:d39ea1d8f1160585 indirect=12:d39ea1d8f1160585 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:49382ab6090bd205 camera=12:49382ab6090bd205 shadow=12:49382ab6090bd205 indirect=12:49382ab6090bd205 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b7134b56e9f18a65 camera=12:b7134b56e9f18a65 shadow=12:b7134b56e9f18a65 indirect=12:b7134b56e9f18a65 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +provenance material /World/Plain/MATERIAL/full: MaterialOrigin { slots: [2], displaced: false } +provenance material read: ("/World/_Asset/MATERIAL/full", "/__Prototype_0/MATERIAL/full") +provenance material read: ("/World/_Asset/MATERIAL/full/surface", "/__Prototype_0/MATERIAL/full") +provenance light /World/Sky: LightOrigin { index: 1, geoms: 0..0 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/TowerA +provenance geometry 1..2: /World/TowerB +provenance geometry 2..3: /World/Plain/GEO/block +provenance geometry 3..4: /World/Ground +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-2.digest b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-2.digest new file mode 100644 index 000000000..d572d3924 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-2.digest @@ -0,0 +1,37 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 9.0), lower_left_corner: Vec3A(-4.3656254, -1.9874965, -0.6885319), horizontal: Vec3A(8.731251, -0.0, 0.0), vertical: Vec3A(0.0, 4.8844237, -0.5133736), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 11.787], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/purpose_bindings.usda"], invisible_overrides: Some(0) } +layer: $DIR/purpose_bindings.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 14, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 38, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d39ea1d8f1160585 camera=12:d39ea1d8f1160585 shadow=12:d39ea1d8f1160585 indirect=12:d39ea1d8f1160585 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:49382ab6090bd205 camera=12:49382ab6090bd205 shadow=12:49382ab6090bd205 indirect=12:49382ab6090bd205 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b7134b56e9f18a65 camera=12:b7134b56e9f18a65 shadow=12:b7134b56e9f18a65 indirect=12:b7134b56e9f18a65 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +provenance material /World/Plain/MATERIAL/full: MaterialOrigin { slots: [2], displaced: false } +provenance material read: ("/World/_Asset/MATERIAL/full", "/__Prototype_0/MATERIAL/full") +provenance material read: ("/World/_Asset/MATERIAL/full/surface", "/__Prototype_0/MATERIAL/full") +provenance light /World/Sky: LightOrigin { index: 1, geoms: 0..0 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/TowerA +provenance geometry 1..2: /World/TowerB +provenance geometry 2..3: /World/Plain/GEO/block +provenance geometry 3..4: /World/Ground +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-856ac5cdf233a681-1.digest b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-856ac5cdf233a681-1.digest new file mode 100644 index 000000000..398f50115 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-856ac5cdf233a681-1.digest @@ -0,0 +1,37 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 9.0), lower_left_corner: Vec3A(-4.3656254, -1.9874965, -0.6885319), horizontal: Vec3A(8.731251, -0.0, 0.0), vertical: Vec3A(0.0, 4.8844237, -0.5133736), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 11.787], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/purpose_bindings.usda"], invisible_overrides: Some(0) } +layer: $DIR/purpose_bindings.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 14, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 38, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d39ea1d8f1160585 camera=12:d39ea1d8f1160585 shadow=12:d39ea1d8f1160585 indirect=12:d39ea1d8f1160585 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:49382ab6090bd205 camera=12:49382ab6090bd205 shadow=12:49382ab6090bd205 indirect=12:49382ab6090bd205 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b7134b56e9f18a65 camera=12:b7134b56e9f18a65 shadow=12:b7134b56e9f18a65 indirect=12:b7134b56e9f18a65 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +provenance material /World/Plain/MATERIAL/full: MaterialOrigin { slots: [2], displaced: false } +provenance material read: ("/World/_Asset/MATERIAL/full", "/__Prototype_0/MATERIAL/full") +provenance material read: ("/World/_Asset/MATERIAL/full/surface", "/__Prototype_0/MATERIAL/full") +provenance light /World/Sky: LightOrigin { index: 1, geoms: 0..0 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/TowerA +provenance geometry 1..2: /World/TowerB +provenance geometry 2..3: /World/Plain/GEO/block +provenance geometry 3..4: /World/Ground +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/purpose_usda-bf0c2e782a7f7633-1.digest b/crates/crust-core/tests/data/import_baselines/purpose_usda-bf0c2e782a7f7633-1.digest new file mode 100644 index 000000000..c3c3110cd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/purpose_usda-bf0c2e782a7f7633-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/purpose.usda"], invisible_overrides: Some(0) } +layer: $DIR/purpose.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02ff87c392969355 camera=2:02ff87c392969355 shadow=2:02ff87c392969355 indirect=2:02ff87c392969355 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02ff87c392969355 camera=2:02ff87c392969355 shadow=2:02ff87c392969355 indirect=2:02ff87c392969355 +provenance geometry 0..1: /W/GEO/R +provenance geometry 1..2: /W/Plain/D +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3224020731942780983, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-3eb2626e4111c003-1.digest b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-3eb2626e4111c003-1.digest new file mode 100644 index 000000000..5c2402574 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-3eb2626e4111c003-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(1.0, 2.2, 2.6), lower_left_corner: Vec3A(-5.371167, -7.4816084, -2.3302393), horizontal: Vec3A(12.742334, -0.0, 0.0), vertical: Vec3A(0.0, 6.5074635, -5.4604106), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76604444, -0.64278764), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 4, width: 240, height: 160, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 160 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/pxr_displace.usda"], invisible_overrides: Some(0) } +layer: $DIR/pxr_displace.usda +warning: Warning { code: MeshDisplacedAtCage, kind: Approximated, count: 1, prims: ["/World/Quads"], message: "Mesh at /World/Quads is displaced at its cage resolution, so only cage vertices move — raise --subdiv-level or set --subdiv-edge-length to dice it finer (further occurrences are counted in the import's warnings)" } +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:ad7188ebc088231b camera=4:ad7188ebc088231b shadow=4:ad7188ebc088231b indirect=4:ad7188ebc088231b +provenance material /World/Rock: MaterialOrigin { slots: [0], displaced: true } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Quads +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18140786555293703923, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-744b2066d6ee31b4-1.digest b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-744b2066d6ee31b4-1.digest new file mode 100644 index 000000000..972e3fb5b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-744b2066d6ee31b4-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(1.0, 2.2, 2.6), lower_left_corner: Vec3A(-5.371167, -7.4816084, -2.3302393), horizontal: Vec3A(12.742334, -0.0, 0.0), vertical: Vec3A(0.0, 6.5074635, -5.4604106), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76604444, -0.64278764), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 4, width: 240, height: 160, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 160 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/pxr_displace.usda"], invisible_overrides: Some(0) } +layer: $DIR/pxr_displace.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 256, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 256, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=256:0baee751feb1cdc5 camera=256:0baee751feb1cdc5 shadow=256:0baee751feb1cdc5 indirect=256:0baee751feb1cdc5 +provenance material /World/Rock: MaterialOrigin { slots: [0], displaced: true } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Quads +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8923026245133849666, n_points: 153, n_indices: 512, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-1.digest b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-1.digest new file mode 100644 index 000000000..c7eba3b49 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(1.0, 2.2, 2.6), lower_left_corner: Vec3A(-5.371167, -7.4816084, -2.3302393), horizontal: Vec3A(12.742334, -0.0, 0.0), vertical: Vec3A(0.0, 6.5074635, -5.4604106), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76604444, -0.64278764), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 4, width: 240, height: 160, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 160 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/pxr_displace.usda"], invisible_overrides: Some(0) } +layer: $DIR/pxr_displace.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 2, prims: [], message: "Asset loader does not decode Ptex: $DIR/textures/quad_f32.ptx ignored — the surface falls back to its constant baseColor." } +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:1c1a4717f2bf9d55 camera=4:1c1a4717f2bf9d55 shadow=4:1c1a4717f2bf9d55 indirect=4:1c1a4717f2bf9d55 +provenance material /World/Rock: MaterialOrigin { slots: [0], displaced: false } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Quads +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18140786555293703923, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-2.digest b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-2.digest new file mode 100644 index 000000000..c7eba3b49 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-2.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(1.0, 2.2, 2.6), lower_left_corner: Vec3A(-5.371167, -7.4816084, -2.3302393), horizontal: Vec3A(12.742334, -0.0, 0.0), vertical: Vec3A(0.0, 6.5074635, -5.4604106), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.76604444, -0.64278764), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 4, width: 240, height: 160, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 160 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/pxr_displace.usda"], invisible_overrides: Some(0) } +layer: $DIR/pxr_displace.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 2, prims: [], message: "Asset loader does not decode Ptex: $DIR/textures/quad_f32.ptx ignored — the surface falls back to its constant baseColor." } +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:1c1a4717f2bf9d55 camera=4:1c1a4717f2bf9d55 shadow=4:1c1a4717f2bf9d55 indirect=4:1c1a4717f2bf9d55 +provenance material /World/Rock: MaterialOrigin { slots: [0], displaced: false } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/Quads +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18140786555293703923, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/quad_usda-8a80e703a52aec63-1.digest b/crates/crust-core/tests/data/import_baselines/quad_usda-8a80e703a52aec63-1.digest new file mode 100644 index 000000000..40167ee44 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/quad_usda-8a80e703a52aec63-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/quad.usda"], invisible_overrides: Some(0) } +layer: $DIR/quad.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32f1a52c797bfee5 camera=2:32f1a52c797bfee5 shadow=2:32f1a52c797bfee5 indirect=2:32f1a52c797bfee5 +provenance geometry 0..1: /World/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/quiet_curves_usda-c001d1e165c273d4-1.digest b/crates/crust-core/tests/data/import_baselines/quiet_curves_usda-c001d1e165c273d4-1.digest new file mode 100644 index 000000000..889e3648a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/quiet_curves_usda-c001d1e165c273d4-1.digest @@ -0,0 +1,18 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/quiet_curves.usda"], invisible_overrides: Some(0) } +layer: $DIR/quiet_curves.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=1:598f37c01518952d camera=1:598f37c01518952d shadow=1:598f37c01518952d indirect=1:598f37c01518952d +provenance geometry 0..1: /World/Hair +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/quiet_light_usda-c8a2428bb59d472f-1.digest b/crates/crust-core/tests/data/import_baselines/quiet_light_usda-c8a2428bb59d472f-1.digest new file mode 100644 index 000000000..da542404a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/quiet_light_usda-c8a2428bb59d472f-1.digest @@ -0,0 +1,20 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/quiet_light.usda"], invisible_overrides: Some(0) } +layer: $DIR/quiet_light.usda +lights: 1 +light 0: area name Some("/World/Lamp") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:182863594c30eabb camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:182863594c30eabb +provenance light /World/Lamp: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Lamp +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/quiet_prototype_usda-4ee6edc155c4ce34-1.digest b/crates/crust-core/tests/data/import_baselines/quiet_prototype_usda-4ee6edc155c4ce34-1.digest new file mode 100644 index 000000000..465aa126a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/quiet_prototype_usda-4ee6edc155c4ce34-1.digest @@ -0,0 +1,20 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/quiet_prototype.usda"], invisible_overrides: Some(0) } +layer: $DIR/quiet_prototype.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8f5d9187c4202473 camera=2:8f5d9187c4202473 shadow=2:8f5d9187c4202473 indirect=2:8f5d9187c4202473 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Copy +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/quiet_volume_usda-5e752c5254e3ed36-1.digest b/crates/crust-core/tests/data/import_baselines/quiet_volume_usda-5e752c5254e3ed36-1.digest new file mode 100644 index 000000000..ccd56b25f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/quiet_volume_usda-5e752c5254e3ed36-1.digest @@ -0,0 +1,17 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/quiet_volume.usda"], invisible_overrides: Some(0) } +layer: $DIR/quiet_volume.usda +lights: 0 +volumes: 1 +volume 0: sigma_s Vec3A(0.1, 0.1, 0.1) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/range_far_usda-4ecb448a88a6c818-1.digest b/crates/crust-core/tests/data/import_baselines/range_far_usda-4ecb448a88a6c818-1.digest new file mode 100644 index 000000000..dcb71bfb7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/range_far_usda-4ecb448a88a6c818-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 5.0), lower_left_corner: Vec3A(-0.27183646, -0.15290801, -5.0), horizontal: Vec3A(0.5436729, 0.0, 0.0), vertical: Vec3A(0.0, 0.30581602, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 4.0)), far: Some(Vec4(0.0, 0.0, 1.0, -3.0)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 500.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/range_far.usda"], invisible_overrides: Some(0) } +layer: $DIR/range_far.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d5fa2ac5108a1585 camera=1:d5fa2ac5108a1585 shadow=1:d5fa2ac5108a1585 indirect=1:d5fa2ac5108a1585 +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/range_usda-bc6d3542e7333f02-1.digest b/crates/crust-core/tests/data/import_baselines/range_usda-bc6d3542e7333f02-1.digest new file mode 100644 index 000000000..a86d370fa --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/range_usda-bc6d3542e7333f02-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 5.0), lower_left_corner: Vec3A(-0.27183646, -0.15290801, -5.0), horizontal: Vec3A(0.5436729, 0.0, 0.0), vertical: Vec3A(0.0, 0.30581602, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 1.0)), far: Some(Vec4(0.0, 0.0, 1.0, 995.0)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 500.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/range.usda"], invisible_overrides: Some(0) } +layer: $DIR/range.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d5fa2ac5108a1585 camera=1:d5fa2ac5108a1585 shadow=1:d5fa2ac5108a1585 indirect=1:d5fa2ac5108a1585 +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/raw_dome_usda-e8a6497f6f3c05ee-1.digest b/crates/crust-core/tests/data/import_baselines/raw_dome_usda-e8a6497f6f3c05ee-1.digest new file mode 100644 index 000000000..037f2e59c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/raw_dome_usda-e8a6497f6f3c05ee-1.digest @@ -0,0 +1,19 @@ +time: None +working space: ACEScg +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/raw_dome.usda"], invisible_overrides: Some(0) } +layer: $DIR/raw_dome.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/W/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(5)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/raw_light_usda-ea76f3df9a669477-1.digest b/crates/crust-core/tests/data/import_baselines/raw_light_usda-ea76f3df9a669477-1.digest new file mode 100644 index 000000000..db52e58f2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/raw_light_usda-ea76f3df9a669477-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/rawLight", name: "rawLight", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C[LO]"), raw: true, variance: false }, AovVar { prim_path: "/Render/RawGI", name: "RawGI", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.+[LO]"), raw: true, variance: false }, AovVar { prim_path: "/Render/RawTotalLighting", name: "RawTotalLighting", channel_prefix: None, source: Lpe, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*[LO]"), raw: true, variance: false }, AovVar { prim_path: "/Render/filter", name: "filter", channel_prefix: None, source: DiffuseFilter, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/vray_filter", name: "vray_filter", channel_prefix: None, source: DiffuseFilter, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/albedo", name: "albedo", channel_prefix: None, source: Albedo, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/key_raw", name: "key_raw", channel_prefix: None, source: Lpe, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: Some("C.*"), raw: true, variance: false }, AovVar { prim_path: "/Render/raw_on_depth", name: "raw_on_depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/raw_light.usda"], invisible_overrides: Some(0) } +layer: $DIR/raw_light.usda +warning: Warning { code: AovInvalidRaw, kind: Skipped, count: 2, prims: ["/Render/not_diffuse", "/Render/bare_label"], message: "/Render/not_diffuse: crust:aov:raw needs an expression whose every path starts with a diffuse reflection (C…); \"C.*[LO]\" does not, so no channel written" } +warning: Warning { code: AovRawIgnored, kind: Approximated, count: 1, prims: ["/Render/raw_on_depth"], message: "/Render/raw_on_depth: crust:aov:raw applies to light path expressions (sourceType \"lpe\"); ignored on \"depth\"" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/rect_light_far_usda-89364d5e280ec883-1.digest b/crates/crust-core/tests/data/import_baselines/rect_light_far_usda-89364d5e280ec883-1.digest new file mode 100644 index 000000000..2377d5ced --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rect_light_far_usda-89364d5e280ec883-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/rect_light_far.usda"], invisible_overrides: Some(0) } +layer: $DIR/rect_light_far.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:98baf1312be377e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:98baf1312be377e5 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Ground +provenance geometry 1..2: /World/Sun +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/rect_light_near_usda-e8eb7549c9231ec8-1.digest b/crates/crust-core/tests/data/import_baselines/rect_light_near_usda-e8eb7549c9231ec8-1.digest new file mode 100644 index 000000000..2cdfe035f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rect_light_near_usda-e8eb7549c9231ec8-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/rect_light_near.usda"], invisible_overrides: Some(0) } +layer: $DIR/rect_light_near.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b86ce6863be508d9 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:b86ce6863be508d9 +provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Ground +provenance geometry 1..2: /World/Sun +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/rect_light_usda-eadf17e73fc59819-1.digest b/crates/crust-core/tests/data/import_baselines/rect_light_usda-eadf17e73fc59819-1.digest new file mode 100644 index 000000000..286ea2858 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rect_light_usda-eadf17e73fc59819-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/rect_light.usda"], invisible_overrides: Some(0) } +layer: $DIR/rect_light.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/R") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0a1d3e3cce0c1565 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:0a1d3e3cce0c1565 +provenance light /World/R: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/R +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/rect_texture_usda-fa043cce9d6338f4-1.digest b/crates/crust-core/tests/data/import_baselines/rect_texture_usda-fa043cce9d6338f4-1.digest new file mode 100644 index 000000000..943c12120 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rect_texture_usda-fa043cce9d6338f4-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/rect_texture.usda"], invisible_overrides: Some(0) } +layer: $DIR/rect_texture.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/Card") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7b1777b3ac1753e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:7b1777b3ac1753e5 +provenance light /Card: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /Card +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-1.digest b/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-1.digest new file mode 100644 index 000000000..c1c21e2ef --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-4.365625, -3.1656249, -4.0), horizontal: Vec3A(8.73125, 0.0, 0.0), vertical: Vec3A(0.0, 8.73125, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 8, max_depth: 4, width: 64, height: 64, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 64 }, min_samples_per_pixel: 4, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/rectlight.usda"], invisible_overrides: Some(0) } +layer: $DIR/rectlight.usda +lights: 1 +light 0: area name Some("/World/KeyLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-2.digest b/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-2.digest new file mode 100644 index 000000000..c1c21e2ef --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-2.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-4.365625, -3.1656249, -4.0), horizontal: Vec3A(8.73125, 0.0, 0.0), vertical: Vec3A(0.0, 8.73125, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 8, max_depth: 4, width: 64, height: 64, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 64 }, min_samples_per_pixel: 4, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/rectlight.usda"], invisible_overrides: Some(0) } +layer: $DIR/rectlight.usda +lights: 1 +light 0: area name Some("/World/KeyLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/rectlight_usda-5482f82d359615b0-1.digest b/crates/crust-core/tests/data/import_baselines/rectlight_usda-5482f82d359615b0-1.digest new file mode 100644 index 000000000..cbddaee27 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rectlight_usda-5482f82d359615b0-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-4.365625, -3.1656249, -4.0), horizontal: Vec3A(8.73125, 0.0, 0.0), vertical: Vec3A(0.0, 8.73125, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 8, max_depth: 4, width: 64, height: 64, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 64 }, min_samples_per_pixel: 4, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/rectlight.usda"], invisible_overrides: Some(0) } +layer: $DIR/rectlight.usda +lights: 1 +light 0: area name Some("/World/KeyLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/rectlight_usda-e2a69198ab36729f-1.digest b/crates/crust-core/tests/data/import_baselines/rectlight_usda-e2a69198ab36729f-1.digest new file mode 100644 index 000000000..c1c21e2ef --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rectlight_usda-e2a69198ab36729f-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.2, 6.0), lower_left_corner: Vec3A(-4.365625, -3.1656249, -4.0), horizontal: Vec3A(8.73125, 0.0, 0.0), vertical: Vec3A(0.0, 8.73125, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 8, max_depth: 4, width: 64, height: 64, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 64 }, min_samples_per_pixel: 4, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/rectlight.usda"], invisible_overrides: Some(0) } +layer: $DIR/rectlight.usda +lights: 1 +light 0: area name Some("/World/KeyLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e8a5ea9ee1d32838 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:e8a5ea9ee1d32838 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ee76fd7ed45c4a85 camera=1:ee76fd7ed45c4a85 shadow=1:ee76fd7ed45c4a85 indirect=1:ee76fd7ed45c4a85 +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Ball +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/refusals_usda-e2a11260371695e9-1.digest b/crates/crust-core/tests/data/import_baselines/refusals_usda-e2a11260371695e9-1.digest new file mode 100644 index 000000000..0ea5ac57f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/refusals_usda-e2a11260371695e9-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/flat", name: "flat.exr", vars: [AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/refusals.usda"], invisible_overrides: Some(0) } +layer: $DIR/refusals.usda +warning: Warning { code: ProductUnsupportedType, kind: Skipped, count: 1, prims: ["/Render/deep"], message: "/Render/deep: productType \"deepRaster\" is not supported (only \"raster\"); no file is written for it" } +warning: Warning { code: AovUnsupportedSource, kind: Skipped, count: 2, prims: ["/Render/intrinsic", "/Render/later"], message: "/Render/intrinsic: sourceType \"intrinsic\" is unimplemented in UsdRender itself; no channel written" } +warning: Warning { code: AovUnknownSource, kind: Skipped, count: 1, prims: ["/Render/unknown"], message: "/Render/unknown: unknown raw source \"diffuse_direct\"; no channel written (crust's AOV names are listed in the user documentation, usd/aovs)" } +warning: Warning { code: LpeInvalid, kind: Skipped, count: 1, prims: ["/Render/lpe"], message: "/Render/lpe: light path expression \"C?L\": column 6: '?' is not part of the OSL LPE grammar; use {0,1}; no channel written" } +warning: Warning { code: AovTypeMismatch, kind: Skipped, count: 2, prims: ["/Render/int_color", "/Render/float_normal"], message: "/Render/int_color: color cannot be written as \"int\"; no channel written" } +warning: Warning { code: AovNotARenderVar, kind: Skipped, count: 1, prims: ["/Render/notavar"], message: "orderedVars targets /Render/notavar, which is not a RenderVar; skipped" } +warning: Warning { code: ProductNotARenderProduct, kind: Skipped, count: 1, prims: ["/Render/notaproduct"], message: "/Render/settings.products targets /Render/notaproduct, which is not a RenderProduct; skipped" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/refused_usda-0be9300cea6f944b-1.digest b/crates/crust-core/tests/data/import_baselines/refused_usda-0be9300cea6f944b-1.digest new file mode 100644 index 000000000..9130fadbe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/refused_usda-0be9300cea6f944b-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/refused.usda"], invisible_overrides: Some(0) } +layer: $DIR/refused.usda +warning: Warning { code: CameraInvalidExposure, kind: Refused, count: 1, prims: ["/cam"], message: "/cam: the exposure attributes give a scale of inf — the image is not scaled" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-1.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-1.digest new file mode 100644 index 000000000..fdb5a79da --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/props", name: "props.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_passes.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_passes.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-2.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-2.digest new file mode 100644 index 000000000..fdb5a79da --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-2.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/props", name: "props.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_passes.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_passes.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-3.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-3.digest new file mode 100644 index 000000000..fdb5a79da --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-3.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/props", name: "props.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_passes.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_passes.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-1.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-1.digest new file mode 100644 index 000000000..cd02f7adc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/charSettings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/char", name: "char.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/char", holdouts: 3, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_passes.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_passes.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-2.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-2.digest new file mode 100644 index 000000000..cd02f7adc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-2.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/charSettings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/char", name: "char.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/char", holdouts: 3, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_passes.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_passes.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-2eed0231ac063823-1.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-2eed0231ac063823-1.digest new file mode 100644 index 000000000..7b303ccbd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-2eed0231ac063823-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/props", name: "props.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_passes.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_passes.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-1.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-1.digest new file mode 100644 index 000000000..cd64e1d81 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/props", name: "props.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/props", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_passes.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_passes.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/props"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-2.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-2.digest new file mode 100644 index 000000000..cd64e1d81 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-2.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/props", name: "props.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/props", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_passes.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_passes.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/props"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-c03e7c6702e31ad3-1.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-c03e7c6702e31ad3-1.digest new file mode 100644 index 000000000..abecfe7d1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-c03e7c6702e31ad3-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/charSettings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/char", name: "char.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/char", holdouts: 3, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_passes.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_passes.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-1.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-1.digest new file mode 100644 index 000000000..fdb5a79da --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/props", name: "props.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_passes.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_passes.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-2.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-2.digest new file mode 100644 index 000000000..fdb5a79da --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-2.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/props", name: "props.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_passes.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_passes.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-f98e72ee422221b6-1.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-f98e72ee422221b6-1.digest new file mode 100644 index 000000000..7b303ccbd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-f98e72ee422221b6-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.6, 7.0), lower_left_corner: Vec3A(-4.530607, -2.3153963, -2.5480032), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.0473304, -0.7093561), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 160, height: 90, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 90 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/Products/props", name: "props.exr", vars: [AovVar { prim_path: "/Render/Vars/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_passes.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_passes.usda +lights: 2 +light 0: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 14, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3d65c4a843c183d8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3d65c4a843c183d8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0fb1fc996bb64f06 camera=1:0fb1fc996bb64f06 shadow=1:0fb1fc996bb64f06 indirect=1:0fb1fc996bb64f06 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:1b27d3862a39596d camera=12:1b27d3862a39596d shadow=12:1b27d3862a39596d indirect=12:1b27d3862a39596d +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9366fea1438aeb8c camera=1:9366fea1438aeb8c shadow=1:9366fea1438aeb8c indirect=1:9366fea1438aeb8c +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 1, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Props/MirrorBall +provenance geometry 2..3: /World/Props/Crate +provenance geometry 3..4: /World/Chars/Hero +provenance geometry 4..5: /World/Set/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523204089106361411, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/render_source_camera_usda-d46ae988f6d9241c-1.digest b/crates/crust-core/tests/data/import_baselines/render_source_camera_usda-d46ae988f6d9241c-1.digest new file mode 100644 index 000000000..e8291f86a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_source_camera_usda-d46ae988f6d9241c-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/CharCam") +camera: Camera { origin: Vec3A(1.0, 0.0, 10.0), lower_left_corner: Vec3A(-1.0954998, -2.0954998, 0.0), horizontal: Vec3A(4.1909995, 0.0, 0.0), vertical: Vec3A(0.0, 4.1909995, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/char", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_source_camera.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_source_camera.usda +warning: Warning { code: RenderPassRenderSourceInvalid, kind: Refused, count: 1, prims: ["/Render/Passes/char"], message: "/Render/Passes/char: renderSource targets /World/CharCam, which is not a RenderSettings prim — reading the stage's render settings" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/CharCam"), cameras: ["/World/CharCam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/CharCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/render_source_usda-131b801caa122c43-1.digest b/crates/crust-core/tests/data/import_baselines/render_source_usda-131b801caa122c43-1.digest new file mode 100644 index 000000000..27fd37381 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_source_usda-131b801caa122c43-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/CharCam") +camera: Camera { origin: Vec3A(1.0, 0.0, 10.0), lower_left_corner: Vec3A(-1.0954998, -2.0954998, 0.0), horizontal: Vec3A(4.1909995, 0.0, 0.0), vertical: Vec3A(0.0, 4.1909995, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_source.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_source.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/CharCam"), cameras: ["/World/CharCam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/CharCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/render_source_usda-749a95594e279116-1.digest b/crates/crust-core/tests/data/import_baselines/render_source_usda-749a95594e279116-1.digest new file mode 100644 index 000000000..eda6b67e8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_source_usda-749a95594e279116-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/CharCam") +camera: Camera { origin: Vec3A(1.0, 0.0, 10.0), lower_left_corner: Vec3A(-1.0954998, -2.0954998, 0.0), horizontal: Vec3A(4.1909995, 0.0, 0.0), vertical: Vec3A(0.0, 4.1909995, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/plain", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_source.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_source.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/plain"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/CharCam"), cameras: ["/World/CharCam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/CharCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/render_source_usda-b15267a29d9e4616-1.digest b/crates/crust-core/tests/data/import_baselines/render_source_usda-b15267a29d9e4616-1.digest new file mode 100644 index 000000000..d84fc0adf --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_source_usda-b15267a29d9e4616-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/CharCam") +camera: Camera { origin: Vec3A(1.0, 0.0, 10.0), lower_left_corner: Vec3A(-5.1163206, -1.5290802, 0.0), horizontal: Vec3A(12.232641, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/charSettings") +settings: RenderSettings { samples_per_pixel: 7, max_depth: 32, width: 16, height: 4, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 4 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/charProduct", name: "char.exr", vars: [AovVar { prim_path: "/Render/color", name: "color", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/char", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_source.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_source.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/CharCam"), cameras: ["/World/CharCam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/CharCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/reset_disk_usda-6e0b5adab74a3b7a-1.digest b/crates/crust-core/tests/data/import_baselines/reset_disk_usda-6e0b5adab74a3b7a-1.digest new file mode 100644 index 000000000..8d4340b60 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/reset_disk_usda-6e0b5adab74a3b7a-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/reset_disk.usda"], invisible_overrides: Some(0) } +layer: $DIR/reset_disk.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/W/D") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 1, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 1, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7631040c30c8e685 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:7631040c30c8e685 +provenance light /W/D: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /W/D +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/resolution_negative_usda-0d18504e846cea31-1.digest b/crates/crust-core/tests/data/import_baselines/resolution_negative_usda-0d18504e846cea31-1.digest new file mode 100644 index 000000000..8671f8053 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/resolution_negative_usda-0d18504e846cea31-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/resolution_negative.usda"], invisible_overrides: Some(0) } +layer: $DIR/resolution_negative.usda +warning: Warning { code: SettingsInvalidValue, kind: Refused, count: 1, prims: ["/Render/settings"], message: "resolution = (-640, 360) is not a positive size — using (640, 360)" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/resolution_zero_usda-e3f58678deb9aa30-1.digest b/crates/crust-core/tests/data/import_baselines/resolution_zero_usda-e3f58678deb9aa30-1.digest new file mode 100644 index 000000000..302753b32 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/resolution_zero_usda-e3f58678deb9aa30-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/resolution_zero.usda"], invisible_overrides: Some(0) } +layer: $DIR/resolution_zero.usda +warning: Warning { code: SettingsInvalidValue, kind: Refused, count: 1, prims: ["/Render/settings"], message: "resolution = (640, 0) is not a positive size — using (640, 360)" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/rest_usda-feaaa720bb9a30d2-1.digest b/crates/crust-core/tests/data/import_baselines/rest_usda-feaaa720bb9a30d2-1.digest new file mode 100644 index 000000000..72eba83a4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rest_usda-feaaa720bb9a30d2-1.digest @@ -0,0 +1,22 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/rest2", name: "rest2", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/rest.usda"], invisible_overrides: Some(0) } +layer: $DIR/rest.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:81a82f46abb10d85 camera=2:81a82f46abb10d85 shadow=2:81a82f46abb10d85 indirect=2:81a82f46abb10d85 +provenance light /World/dome: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/move/mesh +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11801363609627443368, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-00dd7b68b86c7168-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-00dd7b68b86c7168-1.digest new file mode 100644 index 000000000..d81abd188 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-00dd7b68b86c7168-1.digest @@ -0,0 +1,48 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 7 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 1594, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:6ba7fa1f4b7d63b1 camera=12:6ba7fa1f4b7d63b1 shadow=12:6ba7fa1f4b7d63b1 indirect=12:6ba7fa1f4b7d63b1 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5b0a0b61c94f9d1 camera=12:c5b0a0b61c94f9d1 shadow=12:c5b0a0b61c94f9d1 indirect=12:c5b0a0b61c94f9d1 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 6: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [2, 3, 4, 5, 6], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 7..7 } +provenance geometry 0..1: /scene/B +provenance geometry 1..2: /scene/A +provenance geometry 2..3: /scene/pSphere2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pCube2 +provenance geometry 5..6: /scene/pSphere1 +provenance geometry 6..7: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 4, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2751766912162545003, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 1 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-00e8d0d9a2f465b9-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-00e8d0d9a2f465b9-1.digest new file mode 100644 index 000000000..63b50c452 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-00e8d0d9a2f465b9-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-1ddeac0a2964315c-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-1ddeac0a2964315c-1.digest new file mode 100644 index 000000000..438e5eaa6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-1ddeac0a2964315c-1.digest @@ -0,0 +1,43 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 2 +light 0: distant name Some("/scene/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/scene/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance light /scene/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-2f86c31117cc8b58-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-2f86c31117cc8b58-1.digest new file mode 100644 index 000000000..438e5eaa6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-2f86c31117cc8b58-1.digest @@ -0,0 +1,43 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 2 +light 0: distant name Some("/scene/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/scene/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 1, geoms: 5..5 } +provenance light /scene/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-43c385d7a2a21d1e-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-43c385d7a2a21d1e-1.digest new file mode 100644 index 000000000..aa01fa438 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-43c385d7a2a21d1e-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.26566464 motion [] pieces all=760:7c05a8f71e76f3a1 camera=760:7c05a8f71e76f3a1 shadow=760:7c05a8f71e76f3a1 indirect=760:7c05a8f71e76f3a1 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-4aa136053cd56402-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-4aa136053cd56402-1.digest new file mode 100644 index 000000000..32bce2848 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-4aa136053cd56402-1.digest @@ -0,0 +1,41 @@ +time: Some(10.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 10, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:fd14628a4ad8ed19 camera=12:fd14628a4ad8ed19 shadow=12:fd14628a4ad8ed19 indirect=12:fd14628a4ad8ed19 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-4b8c79cf557cf378-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-4b8c79cf557cf378-1.digest new file mode 100644 index 000000000..1830f419a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-4b8c79cf557cf378-1.digest @@ -0,0 +1,48 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 7 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 1594, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:a58c5d6bf990dde9 camera=12:a58c5d6bf990dde9 shadow=12:a58c5d6bf990dde9 indirect=12:a58c5d6bf990dde9 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:36dc3e9001cbda9d camera=12:36dc3e9001cbda9d shadow=12:36dc3e9001cbda9d indirect=12:36dc3e9001cbda9d +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 6: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [2, 3, 4, 5, 6], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 7..7 } +provenance geometry 0..1: /scene/B +provenance geometry 1..2: /scene/A +provenance geometry 2..3: /scene/pSphere2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pCube2 +provenance geometry 5..6: /scene/pSphere1 +provenance geometry 6..7: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 4, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11423571544592140440, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 1 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-5042b0d1011805d6-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-5042b0d1011805d6-1.digest new file mode 100644 index 000000000..32bce2848 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-5042b0d1011805d6-1.digest @@ -0,0 +1,41 @@ +time: Some(10.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 10, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:fd14628a4ad8ed19 camera=12:fd14628a4ad8ed19 shadow=12:fd14628a4ad8ed19 indirect=12:fd14628a4ad8ed19 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-5c84bdb62972ba25-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-5c84bdb62972ba25-1.digest new file mode 100644 index 000000000..cc206651c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-5c84bdb62972ba25-1.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$DIR/other.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/other.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-63552b8e06717f62-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-63552b8e06717f62-1.digest new file mode 100644 index 000000000..65b44a5b2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-63552b8e06717f62-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-642eeb8c5780c872-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-642eeb8c5780c872-1.digest new file mode 100644 index 000000000..0503a337d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-642eeb8c5780c872-1.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 2342, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2342, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:952714bb7184a49d camera=760:952714bb7184a49d shadow=760:952714bb7184a49d indirect=760:952714bb7184a49d +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 504541619698256588, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-65bf0b61fd007f62-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-65bf0b61fd007f62-1.digest new file mode 100644 index 000000000..63b50c452 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-65bf0b61fd007f62-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-67d463deb3cd2295-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-67d463deb3cd2295-1.digest new file mode 100644 index 000000000..a608161f0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-67d463deb3cd2295-1.digest @@ -0,0 +1,40 @@ +time: None +working space: ACEScg +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(5)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-7781d1893e2e23fd-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-7781d1893e2e23fd-1.digest new file mode 100644 index 000000000..63b50c452 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-7781d1893e2e23fd-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-7eba3de4e6efbf15-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-7eba3de4e6efbf15-1.digest new file mode 100644 index 000000000..670efac80 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-7eba3de4e6efbf15-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/look/deep/look.usda"], invisible_overrides: Some(0) } +layer: $DIR/look/deep/look.usda +layer: $DIR/root.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: Some("perfuv"), face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02ff87c392969355 camera=2:02ff87c392969355 shadow=2:02ff87c392969355 indirect=2:02ff87c392969355 +provenance material /W/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /W/Geo/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16252826071643471966, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-8099cbe59e22c4ff-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-8099cbe59e22c4ff-1.digest new file mode 100644 index 000000000..9ee8f3b9e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-8099cbe59e22c4ff-1.digest @@ -0,0 +1,41 @@ +time: Some(1.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 1, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(1.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-834306f0b405a977-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-834306f0b405a977-1.digest new file mode 100644 index 000000000..32bce2848 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-834306f0b405a977-1.digest @@ -0,0 +1,41 @@ +time: Some(10.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 10, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:fd14628a4ad8ed19 camera=12:fd14628a4ad8ed19 shadow=12:fd14628a4ad8ed19 indirect=12:fd14628a4ad8ed19 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-8c6dbffe8bcc7f5d-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-8c6dbffe8bcc7f5d-1.digest new file mode 100644 index 000000000..5c08ae390 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-8c6dbffe8bcc7f5d-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 2, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-921d5e21a6ec411f-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-921d5e21a6ec411f-1.digest new file mode 100644 index 000000000..4de6787b4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-921d5e21a6ec411f-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:3222c11184d4e6b9 camera=800:3222c11184d4e6b9 shadow=800:3222c11184d4e6b9 indirect=800:3222c11184d4e6b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11377722458698790882, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-9d7d0e6b748bbe2f-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-9d7d0e6b748bbe2f-1.digest new file mode 100644 index 000000000..e77370a5d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-9d7d0e6b748bbe2f-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/root.usda"], invisible_overrides: Some(0) } +layer: $DIR/asset.usdz +layer: $DIR/root.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-a0c411ed1048de1a-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-a0c411ed1048de1a-1.digest new file mode 100644 index 000000000..1f4ed031c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-a0c411ed1048de1a-1.digest @@ -0,0 +1,50 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 7 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 1594, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:65349399268647f1 camera=12:65349399268647f1 shadow=12:65349399268647f1 indirect=12:65349399268647f1 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:5f7d37de81118c7d camera=12:5f7d37de81118c7d shadow=12:5f7d37de81118c7d indirect=12:5f7d37de81118c7d +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 6: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [2, 3, 4, 5, 6], displaced: false } +provenance arc source: /scene/Grp +provenance arc source: /scene/Grp/M +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 7..7 } +provenance geometry 0..1: /scene/Copy/M +provenance geometry 1..2: /scene/Grp/M +provenance geometry 2..3: /scene/pSphere2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pCube2 +provenance geometry 5..6: /scene/pSphere1 +provenance geometry 6..7: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 4, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1847950969294950925, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 1 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-a95c3cfeafbe744e-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-a95c3cfeafbe744e-1.digest new file mode 100644 index 000000000..8c8cbe8da --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-a95c3cfeafbe744e-1.digest @@ -0,0 +1,47 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 8 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } top level, PrimitiveBreakdown { triangles: 1594, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:34896e31fe85f1fd camera=12:34896e31fe85f1fd shadow=12:34896e31fe85f1fd indirect=12:34896e31fe85f1fd +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:21529f349a41184d camera=12:21529f349a41184d shadow=12:21529f349a41184d indirect=12:21529f349a41184d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:c5dda2fcb9a778e9 camera=12:c5dda2fcb9a778e9 shadow=12:c5dda2fcb9a778e9 indirect=12:c5dda2fcb9a778e9 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 6: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 7: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [3, 4, 5, 6, 7], displaced: false } +provenance arc source: /scene/Scatter/Protos/Box +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 8..8 } +provenance geometry 0..3: /scene/Scatter +provenance geometry 3..4: /scene/pSphere2 +provenance geometry 4..5: /scene/pTorus1 +provenance geometry 5..6: /scene/pCube2 +provenance geometry 6..7: /scene/pSphere1 +provenance geometry 7..8: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17025983899874518787, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 1 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-aa094b9d362ee4b9-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-aa094b9d362ee4b9-1.digest new file mode 100644 index 000000000..cc206651c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-aa094b9d362ee4b9-1.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$DIR/other.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/other.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-bedb2af78f4c965d-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-bedb2af78f4c965d-1.digest new file mode 100644 index 000000000..bf8f3cf83 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-bedb2af78f4c965d-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/sub.usda"], invisible_overrides: Some(0) } +layer: $DIR/pay.usda +layer: $DIR/ref.usda +layer: $DIR/root.usda +layer: $DIR/sub.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-bfc3cfdc3fb023a6-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-bfc3cfdc3fb023a6-1.digest new file mode 100644 index 000000000..1d125a7e9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-bfc3cfdc3fb023a6-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:cd2903935bc86775 camera=800:cd2903935bc86775 shadow=800:cd2903935bc86775 indirect=800:cd2903935bc86775 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-c51fa0d84e7325f7-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-c51fa0d84e7325f7-1.digest new file mode 100644 index 000000000..cc206651c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-c51fa0d84e7325f7-1.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$DIR/other.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/other.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-1.digest new file mode 100644 index 000000000..d4ff73f96 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-1.digest @@ -0,0 +1,32 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-8.49489, -4.247445, -4.0), horizontal: Vec3A(16.98978, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 1, max_depth: 32, width: 48, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda"], invisible_overrides: Some(0) } +layer: $DIR/root.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:a99fe0878a488eb7 camera=2:a99fe0878a488eb7 shadow=2:a99fe0878a488eb7 indirect=2:a99fe0878a488eb7 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5ca79067d50d064e camera=2:5ca79067d50d064e shadow=2:5ca79067d50d064e indirect=2:5ca79067d50d064e +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e2657f4075f21b26 camera=2:e2657f4075f21b26 shadow=2:e2657f4075f21b26 indirect=2:e2657f4075f21b26 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8663619c85c630b8 camera=2:8663619c85c630b8 shadow=2:8663619c85c630b8 indirect=2:8663619c85c630b8 +provenance material /World/Looks/Red: MaterialOrigin { slots: [3], displaced: false } +provenance arc source: /Proto +provenance arc source: /World/Scatter/Protos/Box +provenance light /World/Sun: LightOrigin { index: 0, geoms: 4..4 } +provenance geometry 0..1: /World/Inst +provenance geometry 1..3: /World/Scatter +provenance geometry 3..4: /World/Card +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17555877814860148657, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2452712229199093531, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-2.digest b/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-2.digest new file mode 100644 index 000000000..d4ff73f96 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-2.digest @@ -0,0 +1,32 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-8.49489, -4.247445, -4.0), horizontal: Vec3A(16.98978, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 1, max_depth: 32, width: 48, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda"], invisible_overrides: Some(0) } +layer: $DIR/root.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:a99fe0878a488eb7 camera=2:a99fe0878a488eb7 shadow=2:a99fe0878a488eb7 indirect=2:a99fe0878a488eb7 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5ca79067d50d064e camera=2:5ca79067d50d064e shadow=2:5ca79067d50d064e indirect=2:5ca79067d50d064e +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e2657f4075f21b26 camera=2:e2657f4075f21b26 shadow=2:e2657f4075f21b26 indirect=2:e2657f4075f21b26 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8663619c85c630b8 camera=2:8663619c85c630b8 shadow=2:8663619c85c630b8 indirect=2:8663619c85c630b8 +provenance material /World/Looks/Red: MaterialOrigin { slots: [3], displaced: false } +provenance arc source: /Proto +provenance arc source: /World/Scatter/Protos/Box +provenance light /World/Sun: LightOrigin { index: 0, geoms: 4..4 } +provenance geometry 0..1: /World/Inst +provenance geometry 1..3: /World/Scatter +provenance geometry 3..4: /World/Card +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17555877814860148657, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2452712229199093531, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-c78a3b1a4bb10072-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-c78a3b1a4bb10072-1.digest new file mode 100644 index 000000000..c5dc184a5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-c78a3b1a4bb10072-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4096, max_depth: 32, width: 160, height: 120, region: PixelRect { x0: 0, y0: 0, x1: 160, y1: 120 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-cc0a74d0f1a22c6a-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-cc0a74d0f1a22c6a-1.digest new file mode 100644 index 000000000..48d0d71ab --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-cc0a74d0f1a22c6a-1.digest @@ -0,0 +1,49 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 7 geometries, PrimitiveBreakdown { triangles: 846, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1606, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:a58c5d6bf990dde9 camera=12:a58c5d6bf990dde9 shadow=12:a58c5d6bf990dde9 indirect=12:a58c5d6bf990dde9 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:5f7d37de81118c7d camera=12:5f7d37de81118c7d shadow=12:5f7d37de81118c7d indirect=12:5f7d37de81118c7d +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 6: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [2, 3, 4, 5, 6], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 7..7 } +provenance geometry 0..1: /scene/B +provenance geometry 1..2: /scene/A +provenance geometry 2..3: /scene/pSphere2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pCube2 +provenance geometry 5..6: /scene/pSphere1 +provenance geometry 6..7: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11423571544592140440, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1847950969294950925, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 1 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-ccefc9342ef07f81-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-ccefc9342ef07f81-1.digest new file mode 100644 index 000000000..5fdc2efd4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-ccefc9342ef07f81-1.digest @@ -0,0 +1,45 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 2 +light 0: area name Some("/scene/Panel") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/scene/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 824, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1584, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8b827cafedeeb944 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:8b827cafedeeb944 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance light /scene/Panel: LightOrigin { index: 0, geoms: 0..1 } +provenance light /scene/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance geometry 0..1: /scene/Panel +provenance geometry 1..2: /scene/pSphere2 +provenance geometry 2..3: /scene/pTorus1 +provenance geometry 3..4: /scene/pCube2 +provenance geometry 4..5: /scene/pSphere1 +provenance geometry 5..6: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-ce726227b7d02261-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-ce726227b7d02261-1.digest new file mode 100644 index 000000000..d963a51b4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-ce726227b7d02261-1.digest @@ -0,0 +1,47 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 8 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } top level, PrimitiveBreakdown { triangles: 1594, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:adee7bdbd37e18ad camera=12:adee7bdbd37e18ad shadow=12:adee7bdbd37e18ad indirect=12:adee7bdbd37e18ad +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:50aba61af8f5acc5 camera=12:50aba61af8f5acc5 shadow=12:50aba61af8f5acc5 indirect=12:50aba61af8f5acc5 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:852a2d73a873d8f5 camera=12:852a2d73a873d8f5 shadow=12:852a2d73a873d8f5 indirect=12:852a2d73a873d8f5 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 6: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 7: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [3, 4, 5, 6, 7], displaced: false } +provenance arc source: /scene/Scatter/Protos/Box +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 8..8 } +provenance geometry 0..3: /scene/Scatter +provenance geometry 3..4: /scene/pSphere2 +provenance geometry 4..5: /scene/pTorus1 +provenance geometry 5..6: /scene/pCube2 +provenance geometry 6..7: /scene/pSphere1 +provenance geometry 7..8: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17025983899874518787, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 1 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-cef90a6ad595b1b4-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-cef90a6ad595b1b4-1.digest new file mode 100644 index 000000000..bf8f3cf83 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-cef90a6ad595b1b4-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/sub.usda"], invisible_overrides: Some(0) } +layer: $DIR/pay.usda +layer: $DIR/ref.usda +layer: $DIR/root.usda +layer: $DIR/sub.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-d2c312942e13c754-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-d2c312942e13c754-1.digest new file mode 100644 index 000000000..cce554510 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-d2c312942e13c754-1.digest @@ -0,0 +1,45 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 2 +light 0: area name Some("/scene/Panel") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/scene/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 824, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1584, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c41da9ceb80ae169 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:c41da9ceb80ae169 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance light /scene/Panel: LightOrigin { index: 0, geoms: 0..1 } +provenance light /scene/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance geometry 0..1: /scene/Panel +provenance geometry 1..2: /scene/pSphere2 +provenance geometry 2..3: /scene/pTorus1 +provenance geometry 3..4: /scene/pCube2 +provenance geometry 4..5: /scene/pSphere1 +provenance geometry 5..6: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-dcc0d192c2504171-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-dcc0d192c2504171-1.digest new file mode 100644 index 000000000..cc206651c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-dcc0d192c2504171-1.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$DIR/other.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/other.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-df9ad38a08c60f60-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-df9ad38a08c60f60-1.digest new file mode 100644 index 000000000..0084ab48e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-df9ad38a08c60f60-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:e8801979fbe3b955 camera=12:e8801979fbe3b955 shadow=12:e8801979fbe3b955 indirect=12:e8801979fbe3b955 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-e227181a4d86cdde-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-e227181a4d86cdde-1.digest new file mode 100644 index 000000000..9a234e048 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-e227181a4d86cdde-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 2.0913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -2.9086516, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:6b4a5d9241117a39 camera=760:6b4a5d9241117a39 shadow=760:6b4a5d9241117a39 indirect=760:6b4a5d9241117a39 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:e75647e574205a7d camera=800:e75647e574205a7d shadow=800:e75647e574205a7d indirect=800:e75647e574205a7d +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9ae67e62deb62dc9 camera=12:9ae67e62deb62dc9 shadow=12:9ae67e62deb62dc9 indirect=12:9ae67e62deb62dc9 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:6ff244b5342180d1 camera=760:6ff244b5342180d1 shadow=760:6ff244b5342180d1 indirect=760:6ff244b5342180d1 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:c557d1e5d41f00cf camera=10:c557d1e5d41f00cf shadow=10:c557d1e5d41f00cf indirect=10:c557d1e5d41f00cf +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-1.digest new file mode 100644 index 000000000..d4ff73f96 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-1.digest @@ -0,0 +1,32 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-8.49489, -4.247445, -4.0), horizontal: Vec3A(16.98978, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 1, max_depth: 32, width: 48, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda"], invisible_overrides: Some(0) } +layer: $DIR/root.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:a99fe0878a488eb7 camera=2:a99fe0878a488eb7 shadow=2:a99fe0878a488eb7 indirect=2:a99fe0878a488eb7 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5ca79067d50d064e camera=2:5ca79067d50d064e shadow=2:5ca79067d50d064e indirect=2:5ca79067d50d064e +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e2657f4075f21b26 camera=2:e2657f4075f21b26 shadow=2:e2657f4075f21b26 indirect=2:e2657f4075f21b26 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8663619c85c630b8 camera=2:8663619c85c630b8 shadow=2:8663619c85c630b8 indirect=2:8663619c85c630b8 +provenance material /World/Looks/Red: MaterialOrigin { slots: [3], displaced: false } +provenance arc source: /Proto +provenance arc source: /World/Scatter/Protos/Box +provenance light /World/Sun: LightOrigin { index: 0, geoms: 4..4 } +provenance geometry 0..1: /World/Inst +provenance geometry 1..3: /World/Scatter +provenance geometry 3..4: /World/Card +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17555877814860148657, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2452712229199093531, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-2.digest b/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-2.digest new file mode 100644 index 000000000..d4ff73f96 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-2.digest @@ -0,0 +1,32 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 6.0), lower_left_corner: Vec3A(-8.49489, -4.247445, -4.0), horizontal: Vec3A(16.98978, 0.0, 0.0), vertical: Vec3A(0.0, 8.49489, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 1, max_depth: 32, width: 48, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda"], invisible_overrides: Some(0) } +layer: $DIR/root.usda +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:a99fe0878a488eb7 camera=2:a99fe0878a488eb7 shadow=2:a99fe0878a488eb7 indirect=2:a99fe0878a488eb7 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:5ca79067d50d064e camera=2:5ca79067d50d064e shadow=2:5ca79067d50d064e indirect=2:5ca79067d50d064e +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e2657f4075f21b26 camera=2:e2657f4075f21b26 shadow=2:e2657f4075f21b26 indirect=2:e2657f4075f21b26 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8663619c85c630b8 camera=2:8663619c85c630b8 shadow=2:8663619c85c630b8 indirect=2:8663619c85c630b8 +provenance material /World/Looks/Red: MaterialOrigin { slots: [3], displaced: false } +provenance arc source: /Proto +provenance arc source: /World/Scatter/Protos/Box +provenance light /World/Sun: LightOrigin { index: 0, geoms: 4..4 } +provenance geometry 0..1: /World/Inst +provenance geometry 1..3: /World/Scatter +provenance geometry 3..4: /World/Card +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17555877814860148657, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2452712229199093531, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-f4c8b443da714046-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-f4c8b443da714046-1.digest new file mode 100644 index 000000000..9d3014615 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-f4c8b443da714046-1.digest @@ -0,0 +1,50 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 7 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 1594, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:4d23b606772ca0b5 camera=12:4d23b606772ca0b5 shadow=12:4d23b606772ca0b5 indirect=12:4d23b606772ca0b5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:8f1854675a016051 camera=12:8f1854675a016051 shadow=12:8f1854675a016051 indirect=12:8f1854675a016051 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 6: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [2, 3, 4, 5, 6], displaced: false } +provenance arc source: /scene/Grp +provenance arc source: /scene/Grp/M +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 7..7 } +provenance geometry 0..1: /scene/Copy/M +provenance geometry 1..2: /scene/Grp/M +provenance geometry 2..3: /scene/pSphere2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pCube2 +provenance geometry 5..6: /scene/pSphere1 +provenance geometry 6..7: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 4, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1847950969294950925, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 1 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-f7df8a9705f0748f-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-f7df8a9705f0748f-1.digest new file mode 100644 index 000000000..22363bca3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-f7df8a9705f0748f-1.digest @@ -0,0 +1,45 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-6.659224, -3.0086517, -0.98669434), horizontal: Vec3A(13.333317, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 4, max_depth: 32, width: 24, height: 18, region: PixelRect { x0: 0, y0: 0, x1: 24, y1: 18 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda", "$DIR/graph.usda", "$ROOT/samples/cornellbox.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/cornellbox.usda +layer: $DIR/graph.usda +layer: $DIR/root.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 2 +light 0: area name Some("/scene/Panel") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/scene/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 824, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1584, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:85b09e755747ebad camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:85b09e755747ebad +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance light /scene/Panel: LightOrigin { index: 0, geoms: 0..1 } +provenance light /scene/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance geometry 0..1: /scene/Panel +provenance geometry 1..2: /scene/pSphere2 +provenance geometry 2..3: /scene/pTorus1 +provenance geometry 3..4: /scene/pCube2 +provenance geometry 4..5: /scene/pSphere1 +provenance geometry 5..6: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/rotate_parent_usda-a0cc7d7c189a5bba-1.digest b/crates/crust-core/tests/data/import_baselines/rotate_parent_usda-a0cc7d7c189a5bba-1.digest new file mode 100644 index 000000000..7f48d83e8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rotate_parent_usda-a0cc7d7c189a5bba-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/rotate_parent.usda"], invisible_overrides: Some(0) } +layer: $DIR/rotate_parent.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..1: /World/A/B/S +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/s_usda-0006d97926014c1b-1.digest b/crates/crust-core/tests/data/import_baselines/s_usda-0006d97926014c1b-1.digest new file mode 100644 index 000000000..00c1d91e8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/s_usda-0006d97926014c1b-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/s.usda"], invisible_overrides: Some(0) } +layer: $DIR/s.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "Asset loader does not decode UV textures: $DIR/not_shipped..exr ignored — the input falls back to its constant value." } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02ff87c392969355 camera=2:02ff87c392969355 shadow=2:02ff87c392969355 indirect=2:02ff87c392969355 +provenance material /W/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /W/Geo/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3224020731942780983, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sampler_default_usda-6c4e4e80bde0b7e5-1.digest b/crates/crust-core/tests/data/import_baselines/sampler_default_usda-6c4e4e80bde0b7e5-1.digest new file mode 100644 index 000000000..3595dbe40 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sampler_default_usda-6c4e4e80bde0b7e5-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/sampler_default.usda"], invisible_overrides: Some(0) } +layer: $DIR/sampler_default.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sampler_halton_usda-bcb88dc4e7395359-1.digest b/crates/crust-core/tests/data/import_baselines/sampler_halton_usda-bcb88dc4e7395359-1.digest new file mode 100644 index 000000000..ead10d85f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sampler_halton_usda-bcb88dc4e7395359-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/sampler_halton.usda"], invisible_overrides: Some(0) } +layer: $DIR/sampler_halton.usda +warning: Warning { code: SettingsInvalidValue, kind: Refused, count: 1, prims: ["/Render/settings"], message: "crust:sampler: unknown sampler \"halton\" (expected sobol | sobolBn | lattice | latticeBn | pmj | pmjBn) — using sobol" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sampler_lattice_usda-83017538d7bb844b-1.digest b/crates/crust-core/tests/data/import_baselines/sampler_lattice_usda-83017538d7bb844b-1.digest new file mode 100644 index 000000000..838095db4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sampler_lattice_usda-83017538d7bb844b-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Lattice, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/sampler_lattice.usda"], invisible_overrides: Some(0) } +layer: $DIR/sampler_lattice.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/scaled_sphere_light_usda-2dabd5a9f4c0f98e-1.digest b/crates/crust-core/tests/data/import_baselines/scaled_sphere_light_usda-2dabd5a9f4c0f98e-1.digest new file mode 100644 index 000000000..19463a642 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/scaled_sphere_light_usda-2dabd5a9f4c0f98e-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/scaled_sphere_light.usda"], invisible_overrides: Some(0) } +layer: $DIR/scaled_sphere_light.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/S") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d5fa2ac5108a1585 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d5fa2ac5108a1585 +provenance light /World/S: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/S +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/scaled_usda-308f36ce00bb3ea8-1.digest b/crates/crust-core/tests/data/import_baselines/scaled_usda-308f36ce00bb3ea8-1.digest new file mode 100644 index 000000000..f2dda9f77 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/scaled_usda-308f36ce00bb3ea8-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/scaled.usda"], invisible_overrides: Some(0) } +layer: $DIR/scaled.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 2.0 motion [] pieces all=8:bd280ba9c62c0355 camera=8:bd280ba9c62c0355 shadow=8:bd280ba9c62c0355 indirect=8:bd280ba9c62c0355 +provenance material /World/Up: MaterialOrigin { slots: [0], displaced: true } +provenance geometry 0..1: /World/Big/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 485570829870313581, n_points: 9, n_indices: 16, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/scatter_usda-08c435043fb988f9-1.digest b/crates/crust-core/tests/data/import_baselines/scatter_usda-08c435043fb988f9-1.digest new file mode 100644 index 000000000..627707c8c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/scatter_usda-08c435043fb988f9-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/scatter.usda"], invisible_overrides: Some(0) } +layer: $DIR/scatter.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:0f5ba97034b3f4a5 camera=4:0f5ba97034b3f4a5 shadow=4:0f5ba97034b3f4a5 indirect=4:0f5ba97034b3f4a5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:36a2c3ef014eeb52 camera=2:36a2c3ef014eeb52 shadow=2:36a2c3ef014eeb52 indirect=2:36a2c3ef014eeb52 +provenance geometry 0..1: /World/steps/geo +provenance geometry 1..2: /World/pair/geo +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 998895739184434894, n_points: 6, n_indices: 6, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/scatter_usda-e62e321631ee4219-1.digest b/crates/crust-core/tests/data/import_baselines/scatter_usda-e62e321631ee4219-1.digest new file mode 100644 index 000000000..627707c8c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/scatter_usda-e62e321631ee4219-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/scatter.usda"], invisible_overrides: Some(0) } +layer: $DIR/scatter.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:0f5ba97034b3f4a5 camera=4:0f5ba97034b3f4a5 shadow=4:0f5ba97034b3f4a5 indirect=4:0f5ba97034b3f4a5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:36a2c3ef014eeb52 camera=2:36a2c3ef014eeb52 shadow=2:36a2c3ef014eeb52 indirect=2:36a2c3ef014eeb52 +provenance geometry 0..1: /World/steps/geo +provenance geometry 1..2: /World/pair/geo +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9519870911682368984, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 998895739184434894, n_points: 6, n_indices: 6, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/scope_color_space_usda-acd6f59e656731c0-1.digest b/crates/crust-core/tests/data/import_baselines/scope_color_space_usda-acd6f59e656731c0-1.digest new file mode 100644 index 000000000..e256dda09 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/scope_color_space_usda-acd6f59e656731c0-1.digest @@ -0,0 +1,22 @@ +time: None +working space: ACEScg +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/scope_color_space.usda"], invisible_overrides: Some(0) } +layer: $DIR/scope_color_space.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02ff87c392969355 camera=2:02ff87c392969355 shadow=2:02ff87c392969355 indirect=2:02ff87c392969355 +provenance material /W/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /W/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17822791014403781691, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(5)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/settings_usda-58e4038727242b7e-1.digest b/crates/crust-core/tests/data/import_baselines/settings_usda-58e4038727242b7e-1.digest new file mode 100644 index 000000000..5e8f9a9ac --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/settings_usda-58e4038727242b7e-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1024, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/settings.usda"], invisible_overrides: Some(0) } +layer: $DIR/settings.usda +warning: Warning { code: SettingsInvalidValue, kind: Refused, count: 2, prims: ["/Render/settings"], message: "crust:minSamplesPerPixel = -4 is negative — using 32" } +warning: Warning { code: SettingsLightSamplesClamped, kind: Approximated, count: 1, prims: ["/Render/settings"], message: "crust:lightSamples = 1000000 is above 1024 — taking 1024" } +warning: Warning { code: ColorWorkingSpaceRefused, kind: Refused, count: 1, prims: ["/Render/settings"], message: "/Render/settings: renderingColorSpace refused (working colour space `not_a_space` is not defined by the OCIO config ocio://cg-config-v4.0.0_aces-v2.0_ocio-v2.5); rendering in lin_rec709" } +warning: Warning { code: CameraNotACamera, kind: Refused, count: 1, prims: ["/World/Nope"], message: "RenderSettings.camera targets /World/Nope, which is not a camera on this stage — rendering through /World/cam instead" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/settings_usda-8c1bce0acc8c2aa3-1.digest b/crates/crust-core/tests/data/import_baselines/settings_usda-8c1bce0acc8c2aa3-1.digest new file mode 100644 index 000000000..40865be21 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/settings_usda-8c1bce0acc8c2aa3-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 7, max_depth: 3, width: 32, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 16 }, min_samples_per_pixel: 2, variance_threshold: 0.1, adaptive_neighbour_tolerance: 1.0, frame: 4, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Gaussian { radius: 2.5 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 4, light_samples_indirect: 2, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/settings.usda"], invisible_overrides: Some(0) } +layer: $DIR/settings.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shadow_ball_blocked_usda-7a4aa722cf803335-1.digest b/crates/crust-core/tests/data/import_baselines/shadow_ball_blocked_usda-7a4aa722cf803335-1.digest new file mode 100644 index 000000000..53547eccf --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shadow_ball_blocked_usda-7a4aa722cf803335-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 6.0, 0.0), lower_left_corner: Vec3A(-1.0000001, -4.0, 1.0000001), horizontal: Vec3A(2.0000002, -0.0, 0.0), vertical: Vec3A(0.0, 4.4408926e-16, -2.0000002), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 2.220446e-16, -1.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 1, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 100.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/shadow_ball_blocked.usda"], invisible_overrides: Some(0) } +layer: $DIR/shadow_ball_blocked.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6c746fb49db56631 camera=0:cbf29ce484222325 shadow=1:6c746fb49db56631 indirect=1:6c746fb49db56631 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:83ed806e4a8ba125 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:83ed806e4a8ba125 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shadow_ball_excluded_usda-97e5af329ccc1a04-1.digest b/crates/crust-core/tests/data/import_baselines/shadow_ball_excluded_usda-97e5af329ccc1a04-1.digest new file mode 100644 index 000000000..ea859a313 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shadow_ball_excluded_usda-97e5af329ccc1a04-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 6.0, 0.0), lower_left_corner: Vec3A(-1.0000001, -4.0, 1.0000001), horizontal: Vec3A(2.0000002, -0.0, 0.0), vertical: Vec3A(0.0, 4.4408926e-16, -2.0000002), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 2.220446e-16, -1.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 1, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 100.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/shadow_ball_excluded.usda"], invisible_overrides: Some(0) } +layer: $DIR/shadow_ball_excluded.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6c746fb49db56631 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:6c746fb49db56631 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:83ed806e4a8ba125 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:83ed806e4a8ba125 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance light /World/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/Blocker +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Floor +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shadow_fog_blocked_usda-02a2d7c4f4baa106-1.digest b/crates/crust-core/tests/data/import_baselines/shadow_fog_blocked_usda-02a2d7c4f4baa106-1.digest new file mode 100644 index 000000000..0ad018472 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shadow_fog_blocked_usda-02a2d7c4f4baa106-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 6.0, 0.0), lower_left_corner: Vec3A(-1.0000001, -4.0, 1.0000001), horizontal: Vec3A(2.0000002, -0.0, 0.0), vertical: Vec3A(0.0, 4.4408926e-16, -2.0000002), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 2.220446e-16, -1.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 1, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 100.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/shadow_fog_blocked.usda"], invisible_overrides: Some(0) } +layer: $DIR/shadow_fog_blocked.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.0, 0.0, 0.0) sigma_a Vec3A(3.0, 3.0, 3.0) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:83ed806e4a8ba125 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:83ed806e4a8ba125 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: ["/World/Blocker"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shadow_fog_excluded_usda-0f89cfc00df34be3-1.digest b/crates/crust-core/tests/data/import_baselines/shadow_fog_excluded_usda-0f89cfc00df34be3-1.digest new file mode 100644 index 000000000..bdc81847f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shadow_fog_excluded_usda-0f89cfc00df34be3-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 6.0, 0.0), lower_left_corner: Vec3A(-1.0000001, -4.0, 1.0000001), horizontal: Vec3A(2.0000002, -0.0, 0.0), vertical: Vec3A(0.0, 4.4408926e-16, -2.0000002), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 2.220446e-16, -1.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 1, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 100.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/shadow_fog_excluded.usda"], invisible_overrides: Some(0) } +layer: $DIR/shadow_fog_excluded.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.0, 0.0, 0.0) sigma_a Vec3A(3.0, 3.0, 3.0) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(13) class 65535 homogeneous true +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:83ed806e4a8ba125 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:83ed806e4a8ba125 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: ["/World/Blocker"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shadow_open_usda-43f52a9430038a59-1.digest b/crates/crust-core/tests/data/import_baselines/shadow_open_usda-43f52a9430038a59-1.digest new file mode 100644 index 000000000..70fa1ce87 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shadow_open_usda-43f52a9430038a59-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 6.0, 0.0), lower_left_corner: Vec3A(-1.0000001, -4.0, 1.0000001), horizontal: Vec3A(2.0000002, -0.0, 0.0), vertical: Vec3A(0.0, 4.4408926e-16, -2.0000002), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 2.220446e-16, -1.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 1, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 16, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: None, light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 100.0, aperture: [20.0, 20.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/shadow_open.usda"], invisible_overrides: Some(0) } +layer: $DIR/shadow_open.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:83ed806e4a8ba125 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:83ed806e4a8ba125 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shaped_rect_usda-2479a47c7797a66c-1.digest b/crates/crust-core/tests/data/import_baselines/shaped_rect_usda-2479a47c7797a66c-1.digest new file mode 100644 index 000000000..f3e052ea0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shaped_rect_usda-2479a47c7797a66c-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/shaped_rect.usda"], invisible_overrides: Some(0) } +layer: $DIR/shaped_rect.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/Spot") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f0d197772686bde5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:f0d197772686bde5 +provenance light /World/Spot: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Spot +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shaping_absent_usda-59ac6c6c6ed71036-1.digest b/crates/crust-core/tests/data/import_baselines/shaping_absent_usda-59ac6c6c6ed71036-1.digest new file mode 100644 index 000000000..9699807f0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shaping_absent_usda-59ac6c6c6ed71036-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/shaping_absent.usda"], invisible_overrides: Some(0) } +layer: $DIR/shaping_absent.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/S") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:984632b55acb5495 +provenance light /World/S: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/S +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shaping_applied_usda-b1b65b90122da6f7-1.digest b/crates/crust-core/tests/data/import_baselines/shaping_applied_usda-b1b65b90122da6f7-1.digest new file mode 100644 index 000000000..8ee2c306f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shaping_applied_usda-b1b65b90122da6f7-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/shaping_applied.usda"], invisible_overrides: Some(0) } +layer: $DIR/shaping_applied.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/S") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:984632b55acb5495 +provenance light /World/S: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/S +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shared_points_usda-b97fa4512d46ed74-1.digest b/crates/crust-core/tests/data/import_baselines/shared_points_usda-b97fa4512d46ed74-1.digest new file mode 100644 index 000000000..77cb0cbe7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shared_points_usda-b97fa4512d46ed74-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/shared_points.usda"], invisible_overrides: Some(0) } +layer: $DIR/shared_points.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:4ee6c265190d0ff4 camera=2:4ee6c265190d0ff4 shadow=2:4ee6c265190d0ff4 indirect=2:4ee6c265190d0ff4 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(1), false)) swapped false curves false scale 1.0 motion [] pieces all=2:0318e20df8c6e33c camera=2:0318e20df8c6e33c shadow=2:0318e20df8c6e33c indirect=2:0318e20df8c6e33c +provenance light /World/dome: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/b/m +provenance geometry 1..2: /World/a/m +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5795678210013101378, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16911893879792146658, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shared_usda-9209cd8eb954e389-1.digest b/crates/crust-core/tests/data/import_baselines/shared_usda-9209cd8eb954e389-1.digest new file mode 100644 index 000000000..2d2bf6288 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shared_usda-9209cd8eb954e389-1.digest @@ -0,0 +1,33 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/shared.usda"], invisible_overrides: Some(0) } +layer: $DIR/shared.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:658935472ec9d838 camera=2:658935472ec9d838 shadow=2:658935472ec9d838 indirect=2:658935472ec9d838 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:71682785a2d90a85 camera=2:71682785a2d90a85 shadow=2:71682785a2d90a85 indirect=2:71682785a2d90a85 +geom 2: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e52d9a39978026c5 camera=2:e52d9a39978026c5 shadow=2:e52d9a39978026c5 indirect=2:e52d9a39978026c5 +provenance material /B/Looks/Inner: MaterialOrigin { slots: [1], displaced: false } +provenance material /Looks/Red: MaterialOrigin { slots: [0, 2], displaced: false } +provenance material read: ("/Shared/Tint", "/B/Looks/Inner") +provenance material read: ("/Shared/Tint", "/Looks/Red") +provenance geometry 0..1: /A/Quad +provenance geometry 1..2: /B/Quad +provenance geometry 2..3: /C/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5062424276489054560, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9056688765093257811, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 204846636954257726, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shared_usda-b9af19ac4c829153-1.digest b/crates/crust-core/tests/data/import_baselines/shared_usda-b9af19ac4c829153-1.digest new file mode 100644 index 000000000..616204e39 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shared_usda-b9af19ac4c829153-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/shared.usda"], invisible_overrides: Some(0) } +layer: $DIR/shared.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=8:057df717bb31d5a5 camera=8:057df717bb31d5a5 shadow=8:057df717bb31d5a5 indirect=8:057df717bb31d5a5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=8:781080fc8e9e0af5 camera=8:781080fc8e9e0af5 shadow=8:781080fc8e9e0af5 indirect=8:781080fc8e9e0af5 +provenance material /World/Up: MaterialOrigin { slots: [0, 1], displaced: true } +provenance geometry 0..1: /World/Moved/B +provenance geometry 1..2: /World/A +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 485570829870313581, n_points: 9, n_indices: 16, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: true } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sharp_usda-9bf0a09f5df9236e-1.digest b/crates/crust-core/tests/data/import_baselines/sharp_usda-9bf0a09f5df9236e-1.digest new file mode 100644 index 000000000..5fcd56ee0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sharp_usda-9bf0a09f5df9236e-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/sharp.usda"], invisible_overrides: Some(0) } +layer: $DIR/sharp.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.2, 0.0, 0.0))] pieces all=1:6246e4b1bcdf2dac camera=1:6246e4b1bcdf2dac shadow=1:6246e4b1bcdf2dac indirect=1:6246e4b1bcdf2dac +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Mover +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-13a3dd4f11de39b9-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-13a3dd4f11de39b9-1.digest new file mode 100644 index 000000000..403cb21e4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-13a3dd4f11de39b9-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/shot_lookdev.usda", "$TMP/crust_mcp_cli/anchoring/shots/a/shot.usda"], invisible_overrides: Some(0) } +layer: $TMP/crust_mcp_cli/anchoring/shots/a/shot.usda +layer: $DIR/shot_lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-27651d6a015b04ab-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-27651d6a015b04ab-1.digest new file mode 100644 index 000000000..c38143345 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-27651d6a015b04ab-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/shot_lookdev.usda", "$DIR/shot.usda"], invisible_overrides: Some(0) } +layer: $DIR/shot.usda +layer: $DIR/shot_lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +warning: Warning { code: LightDegenerateShape, kind: Skipped, count: 1, prims: ["/scene/card"], message: "RectLight at /scene/card: width 0 × height 1 must be finite and positive — skipped" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-369c0d66f45d39b9-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-369c0d66f45d39b9-1.digest new file mode 100644 index 000000000..77e506249 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-369c0d66f45d39b9-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/shot_lookdev.usda", "$DIR/shot.usda"], invisible_overrides: Some(0) } +layer: $DIR/shot.usda +layer: $DIR/shot_lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-6f33035f56110470-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-6f33035f56110470-1.digest new file mode 100644 index 000000000..403cb21e4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-6f33035f56110470-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/shot_lookdev.usda", "$TMP/crust_mcp_cli/anchoring/shots/a/shot.usda"], invisible_overrides: Some(0) } +layer: $TMP/crust_mcp_cli/anchoring/shots/a/shot.usda +layer: $DIR/shot_lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-7003167a7a70688d-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-7003167a7a70688d-1.digest new file mode 100644 index 000000000..c58105f1a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-7003167a7a70688d-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/shot_lookdev.usda", "$DIR/shot.usda"], invisible_overrides: Some(0) } +layer: $DIR/shot.usda +layer: $DIR/shot_lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-b26fdb3392c1eac3-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-b26fdb3392c1eac3-1.digest new file mode 100644 index 000000000..07b2289a9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-b26fdb3392c1eac3-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/shot_lookdev.usda", "$TMP/crust_mcp_cli/resume/shot.usda"], invisible_overrides: Some(0) } +layer: $TMP/crust_mcp_cli/resume/shot.usda +layer: $DIR/shot_lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-bc9d89b7ffc91e9b-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-bc9d89b7ffc91e9b-1.digest new file mode 100644 index 000000000..158da9b00 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-bc9d89b7ffc91e9b-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/shot_lookdev.usda", "$DIR/shot.usda"], invisible_overrides: Some(0) } +layer: $DIR/shot.usda +layer: $DIR/shot_lookdev.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:984632b55acb5495 +provenance light /World/key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /World/ball +provenance geometry 1..2: /World/key +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-cac7cb8da11a9b99-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-cac7cb8da11a9b99-1.digest new file mode 100644 index 000000000..5cf127fd6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-cac7cb8da11a9b99-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/shot_lookdev.usda", "$DIR/shot.usda"], invisible_overrides: Some(0) } +layer: $DIR/shot.usda +layer: $DIR/shot_lookdev.usda +warning: Warning { code: LightUnsupportedTextureFormat, kind: Skipped, count: 1, prims: ["/scene/Sky"], message: "DomeLight at /scene/Sky: texture:format \"angular\" is not supported (only latlong) — falling back to the uniform colour" } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e785595b364179c9-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e785595b364179c9-1.digest new file mode 100644 index 000000000..c58105f1a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e785595b364179c9-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/shot_lookdev.usda", "$DIR/shot.usda"], invisible_overrides: Some(0) } +layer: $DIR/shot.usda +layer: $DIR/shot_lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e82a725344733609-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e82a725344733609-1.digest new file mode 100644 index 000000000..72fe88c08 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e82a725344733609-1.digest @@ -0,0 +1,41 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/shot_lookdev.usda", "$TMP/crust_mcp_cli/anchoring/shots/a/shot.usda"], invisible_overrides: Some(0) } +layer: $TMP/crust_mcp_cli/anchoring/shots/a/shot.usda +layer: $DIR/shot_lookdev.usda +warning: Warning { code: LightMapUnreadable, kind: Skipped, count: 1, prims: ["/scene/Sky"], message: "could not decode EXR $DIR/../shots/a/tex/none.exr: No such file or directory (os error 2) — the dome renders without its map" } +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-eaf3eeced61f0581-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-eaf3eeced61f0581-1.digest new file mode 100644 index 000000000..07b2289a9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-eaf3eeced61f0581-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/shot_lookdev.usda", "$TMP/crust_mcp_cli/resume/shot.usda"], invisible_overrides: Some(0) } +layer: $TMP/crust_mcp_cli/resume/shot.usda +layer: $DIR/shot_lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-f697274eb781e181-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-f697274eb781e181-1.digest new file mode 100644 index 000000000..77e506249 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-f697274eb781e181-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/shot_lookdev.usda", "$DIR/shot.usda"], invisible_overrides: Some(0) } +layer: $DIR/shot.usda +layer: $DIR/shot_lookdev.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/shot_usda-bc277892832ac542-1.digest b/crates/crust-core/tests/data/import_baselines/shot_usda-bc277892832ac542-1.digest new file mode 100644 index 000000000..65f0c17dc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_usda-bc277892832ac542-1.digest @@ -0,0 +1,31 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/shot.usda"], invisible_overrides: Some(0) } +layer: $DIR/asset.usda +layer: $DIR/shot.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.8171206 motion [] pieces all=2:51d9a9efe33ff102 camera=2:51d9a9efe33ff102 shadow=2:51d9a9efe33ff102 indirect=2:51d9a9efe33ff102 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.8171206 motion [] pieces all=2:902cbcd96e2107e1 camera=2:902cbcd96e2107e1 shadow=2:902cbcd96e2107e1 indirect=2:902cbcd96e2107e1 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8b0b9cb6f9c627e5 camera=2:8b0b9cb6f9c627e5 shadow=2:8b0b9cb6f9c627e5 indirect=2:8b0b9cb6f9c627e5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.8171206 motion [] pieces all=2:469bb250cbd951b5 camera=2:469bb250cbd951b5 shadow=2:469bb250cbd951b5 indirect=2:469bb250cbd951b5 +provenance geometry 0..1: /World/rock/geo +provenance geometry 1..2: /World/pivoted/geo +provenance geometry 2..3: /World/reset/geo +provenance geometry 3..4: /World/scope/geo +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16322876491246643540, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 4, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sibling_usda-ec40564c6bb9a56d-1.digest b/crates/crust-core/tests/data/import_baselines/sibling_usda-ec40564c6bb9a56d-1.digest new file mode 100644 index 000000000..8bb2e12d8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sibling_usda-ec40564c6bb9a56d-1.digest @@ -0,0 +1,36 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/sibling.usda"], invisible_overrides: Some(0) } +layer: $DIR/sibling.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/Looks/Missing"], message: "Material at /Looks/Missing not resolvable — using default grey OpenPBR" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:658935472ec9d838 camera=2:658935472ec9d838 shadow=2:658935472ec9d838 indirect=2:658935472ec9d838 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:71682785a2d90a85 camera=2:71682785a2d90a85 shadow=2:71682785a2d90a85 indirect=2:71682785a2d90a85 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e52d9a39978026c5 camera=2:e52d9a39978026c5 shadow=2:e52d9a39978026c5 indirect=2:e52d9a39978026c5 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7f0030950a4845b8 camera=2:7f0030950a4845b8 shadow=2:7f0030950a4845b8 indirect=2:7f0030950a4845b8 +provenance material /Looks/Missing: MaterialOrigin { slots: [3], displaced: false } +provenance material /Looks/Red: MaterialOrigin { slots: [0, 1, 2], displaced: false } +provenance geometry 0..1: /A/Quad +provenance geometry 1..2: /B/Quad +provenance geometry 2..3: /C/Quad +provenance geometry 3..4: /D/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5062424276489054560, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9056688765093257811, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 204846636954257726, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10907505002769619754, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/single_usda-472ac6d4e19ff814-1.digest b/crates/crust-core/tests/data/import_baselines/single_usda-472ac6d4e19ff814-1.digest new file mode 100644 index 000000000..dd1d8c3bb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/single_usda-472ac6d4e19ff814-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/W/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/single.usda"], invisible_overrides: Some(0) } +layer: $DIR/single.usda +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1200, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=432:acd7359f035cf995 camera=432:acd7359f035cf995 shadow=432:acd7359f035cf995 indirect=432:acd7359f035cf995 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:bb9aeaae01563c51 camera=768:bb9aeaae01563c51 shadow=768:bb9aeaae01563c51 indirect=768:bb9aeaae01563c51 +provenance geometry 0..1: /B +provenance geometry 1..2: /A +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11483454623663573887, n_points: 218, n_indices: 1296, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13487480004083563611, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/W/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/smoke_grid_usda-64f278d7126815e0-1.digest b/crates/crust-core/tests/data/import_baselines/smoke_grid_usda-64f278d7126815e0-1.digest new file mode 100644 index 000000000..a2632cdaa --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/smoke_grid_usda-64f278d7126815e0-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/smoke_grid.usda"], invisible_overrides: Some(0) } +layer: $DIR/smoke_grid.usda +warning: Warning { code: VolumeInvalidGrid, kind: Skipped, count: 1, prims: ["/World/BadGrid"], message: "Volume at /World/BadGrid: gridDims 2x2x2 does not match gridData length 3 — skipped" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 2 +volume 0: sigma_s Vec3A(0.5, 0.5, 0.5) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous false +volume 1: sigma_s Vec3A(0.5, 0.5, 0.5) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous false +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: ["/World/Grid", "/World/Smoke"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/smoke_usda-8b219b9873531af2-1.digest b/crates/crust-core/tests/data/import_baselines/smoke_usda-8b219b9873531af2-1.digest new file mode 100644 index 000000000..263b479b1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/smoke_usda-8b219b9873531af2-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 8.5), lower_left_corner: Vec3A(-5.6632595, -1.1855836, -1.5), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 16, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/smoke.usda"], invisible_overrides: Some(0) } +layer: $DIR/smoke.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 3 +volume 0: sigma_s Vec3A(4.2, 4.2, 4.2) sigma_a Vec3A(0.3, 0.3, 0.3) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous false +volume 1: sigma_s Vec3A(0.2, 0.2, 0.2) sigma_a Vec3A(2.4, 1.4, 0.6) g 0.0 emission Vec3A(6.0, 2.2, 0.5) mask RayMask(4294967295) class 65535 homogeneous true +volume 2: sigma_s Vec3A(9.6, 9.6, 9.6) sigma_a Vec3A(0.96, 0.96, 0.96) g 0.2 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous false +world: 2 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:147964f7c513cf55 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:147964f7c513cf55 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=10:5e739a86b9f39f85 camera=10:5e739a86b9f39f85 shadow=10:5e739a86b9f39f85 indirect=10:5e739a86b9f39f85 +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Room +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: ["/World/GridPuff", "/World/Ember", "/World/Smoke"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/smoke_usda-c485b4550b7ac78b-1.digest b/crates/crust-core/tests/data/import_baselines/smoke_usda-c485b4550b7ac78b-1.digest new file mode 100644 index 000000000..284fb7c61 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/smoke_usda-c485b4550b7ac78b-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 8.5), lower_left_corner: Vec3A(-5.6632595, -1.1855836, -1.5), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 16, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/smoke.usda"], invisible_overrides: Some(0) } +layer: $DIR/smoke.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 3 +volume 0: sigma_s Vec3A(4.2, 4.2, 4.2) sigma_a Vec3A(0.3, 0.3, 0.3) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous false +volume 1: sigma_s Vec3A(0.2, 0.2, 0.2) sigma_a Vec3A(2.4, 1.4, 0.6) g 0.0 emission Vec3A(6.0, 2.2, 0.5) mask RayMask(4294967295) class 65535 homogeneous true +volume 2: sigma_s Vec3A(9.6, 9.6, 9.6) sigma_a Vec3A(0.96, 0.96, 0.96) g 0.2 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous false +world: 2 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:147964f7c513cf55 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:147964f7c513cf55 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=10:5e739a86b9f39f85 camera=10:5e739a86b9f39f85 shadow=10:5e739a86b9f39f85 indirect=10:5e739a86b9f39f85 +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Room +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: ["/World/GridPuff", "/World/Ember", "/World/Smoke"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-1.digest b/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-1.digest new file mode 100644 index 000000000..284fb7c61 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 8.5), lower_left_corner: Vec3A(-5.6632595, -1.1855836, -1.5), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 16, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/smoke.usda"], invisible_overrides: Some(0) } +layer: $DIR/smoke.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 3 +volume 0: sigma_s Vec3A(4.2, 4.2, 4.2) sigma_a Vec3A(0.3, 0.3, 0.3) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous false +volume 1: sigma_s Vec3A(0.2, 0.2, 0.2) sigma_a Vec3A(2.4, 1.4, 0.6) g 0.0 emission Vec3A(6.0, 2.2, 0.5) mask RayMask(4294967295) class 65535 homogeneous true +volume 2: sigma_s Vec3A(9.6, 9.6, 9.6) sigma_a Vec3A(0.96, 0.96, 0.96) g 0.2 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous false +world: 2 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:147964f7c513cf55 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:147964f7c513cf55 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=10:5e739a86b9f39f85 camera=10:5e739a86b9f39f85 shadow=10:5e739a86b9f39f85 indirect=10:5e739a86b9f39f85 +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Room +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: ["/World/GridPuff", "/World/Ember", "/World/Smoke"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-2.digest b/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-2.digest new file mode 100644 index 000000000..284fb7c61 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-2.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.0, 8.5), lower_left_corner: Vec3A(-5.6632595, -1.1855836, -1.5), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 16, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/smoke.usda"], invisible_overrides: Some(0) } +layer: $DIR/smoke.usda +lights: 1 +light 0: area name Some("/World/CeilingLight") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 3 +volume 0: sigma_s Vec3A(4.2, 4.2, 4.2) sigma_a Vec3A(0.3, 0.3, 0.3) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous false +volume 1: sigma_s Vec3A(0.2, 0.2, 0.2) sigma_a Vec3A(2.4, 1.4, 0.6) g 0.0 emission Vec3A(6.0, 2.2, 0.5) mask RayMask(4294967295) class 65535 homogeneous true +volume 2: sigma_s Vec3A(9.6, 9.6, 9.6) sigma_a Vec3A(0.96, 0.96, 0.96) g 0.2 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous false +world: 2 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:147964f7c513cf55 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:147964f7c513cf55 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=10:5e739a86b9f39f85 camera=10:5e739a86b9f39f85 shadow=10:5e739a86b9f39f85 indirect=10:5e739a86b9f39f85 +provenance light /World/CeilingLight: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/CeilingLight +provenance geometry 1..2: /World/Room +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: ["/World/GridPuff", "/World/Ember", "/World/Smoke"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/snapshot_usda-48d0c43b60eb99bd-1.digest b/crates/crust-core/tests/data/import_baselines/snapshot_usda-48d0c43b60eb99bd-1.digest new file mode 100644 index 000000000..7405d63b9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/snapshot_usda-48d0c43b60eb99bd-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/look_out", name: "look_out", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/final", name: "final", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 0, output: 0, components: 3, radiance: false }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/look"], display_filters: ["/Render/soft"], display: "final" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/snapshot.usda"], invisible_overrides: Some(0) } +layer: $DIR/snapshot.usda +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sphere_and_mesh_usda-0e0815d93400ffb5-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_and_mesh_usda-0e0815d93400ffb5-1.digest new file mode 100644 index 000000000..e53119b3c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_and_mesh_usda-0e0815d93400ffb5-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/sphere_and_mesh.usda"], invisible_overrides: Some(0) } +layer: $DIR/sphere_and_mesh.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d9d066c6f09ee5 camera=2:58d9d066c6f09ee5 shadow=2:58d9d066c6f09ee5 indirect=2:58d9d066c6f09ee5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Rock: MaterialOrigin { slots: [0, 1], displaced: false } +provenance geometry 0..1: /World/Ground +provenance geometry 1..2: /World/Ball +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17961869511521861346, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sphere_both_usda-e02008707f44acbc-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_both_usda-e02008707f44acbc-1.digest new file mode 100644 index 000000000..0c7bfd988 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_both_usda-e02008707f44acbc-1.digest @@ -0,0 +1,19 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: true, layer_stack: ["$DIR/sphere_both.usda"], invisible_overrides: Some(0) } +layer: $DIR/sphere_both.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.0, 1.0, 0.0))] pieces all=1:f548d1d419575bc7 camera=1:f548d1d419575bc7 shadow=1:f548d1d419575bc7 indirect=1:f548d1d419575bc7 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Ball +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sphere_crust_wins_usda-cfeb9931008a7ea6-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_crust_wins_usda-cfeb9931008a7ea6-1.digest new file mode 100644 index 000000000..930f2f66f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_crust_wins_usda-cfeb9931008a7ea6-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/sphere_crust_wins.usda"], invisible_overrides: Some(0) } +layer: $DIR/sphere_crust_wins.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/L") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:984632b55acb5495 +provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/L +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sphere_defaults_usda-8b8f061019318106-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_defaults_usda-8b8f061019318106-1.digest new file mode 100644 index 000000000..9b41be34e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_defaults_usda-8b8f061019318106-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/sphere_defaults.usda"], invisible_overrides: Some(0) } +layer: $DIR/sphere_defaults.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:a0735df9763d8e75 camera=1:a0735df9763d8e75 shadow=1:a0735df9763d8e75 indirect=1:a0735df9763d8e75 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/Small +provenance geometry 1..2: /World/Unit +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sphere_light_usda-4886e72703716517-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_light_usda-4886e72703716517-1.digest new file mode 100644 index 000000000..fce15095d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_light_usda-4886e72703716517-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/sphere_light.usda"], invisible_overrides: Some(0) } +layer: $DIR/sphere_light.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/L") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1c540e668befdb85 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1c540e668befdb85 +provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/L +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sphere_nonuniform_scale_usda-4a3711274af76a73-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_nonuniform_scale_usda-4a3711274af76a73-1.digest new file mode 100644 index 000000000..7ca371e2c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_nonuniform_scale_usda-4a3711274af76a73-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/sphere_nonuniform_scale.usda"], invisible_overrides: Some(0) } +layer: $DIR/sphere_nonuniform_scale.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f2da8586d1815e85 camera=1:f2da8586d1815e85 shadow=1:f2da8586d1815e85 indirect=1:f2da8586d1815e85 +provenance geometry 0..1: /Root/egg +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sphere_only_usda-71bd2f6a8198f0b8-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_only_usda-71bd2f6a8198f0b8-1.digest new file mode 100644 index 000000000..2da1aaa20 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_only_usda-71bd2f6a8198f0b8-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/sphere_only.usda"], invisible_overrides: Some(0) } +layer: $DIR/sphere_only.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Rock: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sphere_ri_camera_usda-47b1274be8232510-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_ri_camera_usda-47b1274be8232510-1.digest new file mode 100644 index 000000000..9fe7ea6e1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_ri_camera_usda-47b1274be8232510-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/sphere_ri_camera.usda"], invisible_overrides: Some(0) } +layer: $DIR/sphere_ri_camera.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/L") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/L +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sphere_tiny_scale_usda-7eb2c16e3f3404d7-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_tiny_scale_usda-7eb2c16e3f3404d7-1.digest new file mode 100644 index 000000000..006e787dc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_tiny_scale_usda-7eb2c16e3f3404d7-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/sphere_tiny_scale.usda"], invisible_overrides: Some(0) } +layer: $DIR/sphere_tiny_scale.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /small +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sphere_track_usda-9c13bacd8c4d2d91-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_track_usda-9c13bacd8c4d2d91-1.digest new file mode 100644 index 000000000..cdc72370c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_track_usda-9c13bacd8c4d2d91-1.digest @@ -0,0 +1,19 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: true, layer_stack: ["$DIR/sphere_track.usda"], invisible_overrides: Some(0) } +layer: $DIR/sphere_track.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.0, 0.0, 0.0))] pieces all=1:f548d1d419575bc7 camera=1:f548d1d419575bc7 shadow=1:f548d1d419575bc7 indirect=1:f548d1d419575bc7 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Ball +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sphere_uniform_scale_usda-afcce7d5fa243629-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_uniform_scale_usda-afcce7d5fa243629-1.digest new file mode 100644 index 000000000..036f6e908 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_uniform_scale_usda-afcce7d5fa243629-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/sphere_uniform_scale.usda"], invisible_overrides: Some(0) } +layer: $DIR/sphere_uniform_scale.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:03b8bf86038c34c8 camera=1:03b8bf86038c34c8 shadow=1:03b8bf86038c34c8 indirect=1:03b8bf86038c34c8 +provenance geometry 0..1: /Root/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sphere_usda-8366b90874a02778-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_usda-8366b90874a02778-1.digest new file mode 100644 index 000000000..85e7c5f83 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_usda-8366b90874a02778-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/sphere.usda"], invisible_overrides: Some(0) } +layer: $DIR/sphere.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:389cec510e31c898 camera=1:389cec510e31c898 shadow=1:389cec510e31c898 indirect=1:389cec510e31c898 +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sphere_zero_scale_usda-ac3436d07948ddb2-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_zero_scale_usda-ac3436d07948ddb2-1.digest new file mode 100644 index 000000000..31a5dcf34 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_zero_scale_usda-ac3436d07948ddb2-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/sphere_zero_scale.usda"], invisible_overrides: Some(0) } +layer: $DIR/sphere_zero_scale.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/squashed_cylinder_usda-6bfde315320c4111-1.digest b/crates/crust-core/tests/data/import_baselines/squashed_cylinder_usda-6bfde315320c4111-1.digest new file mode 100644 index 000000000..cd0e45058 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/squashed_cylinder_usda-6bfde315320c4111-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/squashed_cylinder.usda"], invisible_overrides: Some(0) } +layer: $DIR/squashed_cylinder.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/C") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 1, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ae8fed03934f1395 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:ae8fed03934f1395 +provenance light /World/C: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/squashed_disk_usda-e4a3093a38518998-1.digest b/crates/crust-core/tests/data/import_baselines/squashed_disk_usda-e4a3093a38518998-1.digest new file mode 100644 index 000000000..12812a94b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/squashed_disk_usda-e4a3093a38518998-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/squashed_disk.usda"], invisible_overrides: Some(0) } +layer: $DIR/squashed_disk.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/D") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 1, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:3658b162d64e08b2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:3658b162d64e08b2 +provenance light /World/D: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/D +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/squashed_sphere_usda-7bcbaa3c83aaf92c-1.digest b/crates/crust-core/tests/data/import_baselines/squashed_sphere_usda-7bcbaa3c83aaf92c-1.digest new file mode 100644 index 000000000..55425bd6b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/squashed_sphere_usda-7bcbaa3c83aaf92c-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/squashed_sphere.usda"], invisible_overrides: Some(0) } +layer: $DIR/squashed_sphere.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/S") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:70b08571f53e3fdd camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:70b08571f53e3fdd +provenance light /World/S: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/S +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stack_0_usda-2dad0f5ec97c10b8-1.digest b/crates/crust-core/tests/data/import_baselines/stack_0_usda-2dad0f5ec97c10b8-1.digest new file mode 100644 index 000000000..e054f2229 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stack_0_usda-2dad0f5ec97c10b8-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stack_0.usda"], invisible_overrides: Some(0) } +layer: $DIR/stack_0.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1c540e668befdb85 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1c540e668befdb85 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +provenance material /World/Looks/White: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Geo/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 943668004453080986, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stack_150_usda-9fc28daf7efcde9e-1.digest b/crates/crust-core/tests/data/import_baselines/stack_150_usda-9fc28daf7efcde9e-1.digest new file mode 100644 index 000000000..0e351edb3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stack_150_usda-9fc28daf7efcde9e-1.digest @@ -0,0 +1,31 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stack_150.usda"], invisible_overrides: Some(0) } +layer: $DIR/stack_150.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 1802, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1802, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1c540e668befdb85 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1c540e668befdb85 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: true, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1800:c6e045d95ed082cd camera=1800:c6e045d95ed082cd shadow=1800:c6e045d95ed082cd indirect=1800:c6e045d95ed082cd +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +provenance material /World/Looks/Fog: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/White: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Geo/Slabs +provenance geometry 2..3: /World/Geo/Floor +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3578796968587099115, n_points: 1200, n_indices: 3600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 943668004453080986, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-0695b3612208bcf5-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-0695b3612208bcf5-1.digest new file mode 100644 index 000000000..4cbbf7669 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-0695b3612208bcf5-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17893806835409548195, n_points: 8, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-08451a086997d754-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-08451a086997d754-1.digest new file mode 100644 index 000000000..1714b3491 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-08451a086997d754-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 10000, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=10000:6298817ba0f095a8 camera=10000:6298817ba0f095a8 shadow=10000:6298817ba0f095a8 indirect=10000:6298817ba0f095a8 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-08f2605aa76f8c5a-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-08f2605aa76f8c5a-1.digest new file mode 100644 index 000000000..44e0add59 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-08f2605aa76f8c5a-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: MeshUnsupportedPrimvar, kind: Skipped, count: 1, prims: ["/World/Q"], message: "/World/Q: primvars:label is a float[] (indices out of its values' range) — the material reads its geompropvalue's default there" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["label"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-0a9a4fefc79d0b59-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-0a9a4fefc79d0b59-1.digest new file mode 100644 index 000000000..5c8037b0f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-0a9a4fefc79d0b59-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["pair"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-0dae1afcf6927089-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-0dae1afcf6927089-1.digest new file mode 100644 index 000000000..c49107686 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-0dae1afcf6927089-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["face", "all", "corner"]) } class 65535 holdout false transparent false map None uv None shading Some(0) strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11885302575749807255, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-137bf5b9bbcbaa09-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-137bf5b9bbcbaa09-1.digest new file mode 100644 index 000000000..5ecae5cfa --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-137bf5b9bbcbaa09-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Scatter +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-15ab0320e4168a3a-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-15ab0320e4168a3a-1.digest new file mode 100644 index 000000000..61789cce9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-15ab0320e4168a3a-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:b0d89b46648f4a35 camera=4:b0d89b46648f4a35 shadow=4:b0d89b46648f4a35 indirect=4:b0d89b46648f4a35 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5991654631882484761, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-1780ae5d9b4706f3-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-1780ae5d9b4706f3-1.digest new file mode 100644 index 000000000..f8f8a10bc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-1780ae5d9b4706f3-1.digest @@ -0,0 +1,17 @@ +time: Some(2.5) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-3.0581603, -1.5290802, -10.0), horizontal: Vec3A(6.1163206, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 16, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 2, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/main", name: "main.exr", vars: [], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: AovUnsupportedSource, kind: Skipped, count: 1, prims: ["/Render/intrinsic"], message: "/Render/intrinsic: sourceType \"intrinsic\" is unimplemented in UsdRender itself; no channel written" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(2.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-18576b421133666c-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-18576b421133666c-1.digest new file mode 100644 index 000000000..1bea48397 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-18576b421133666c-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 1, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 1, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:ccb219b666f710a8 camera=1:ccb219b666f710a8 shadow=1:ccb219b666f710a8 indirect=1:ccb219b666f710a8 +geom 1: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=1:6efdf1d486c2c255 camera=1:6efdf1d486c2c255 shadow=1:6efdf1d486c2c255 indirect=1:6efdf1d486c2c255 +provenance material /World/Plain: MaterialOrigin { slots: [0, 1], displaced: false } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Curve +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16540775001122682633, n_points: 3, n_indices: 3, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-18d4c3c27061d1e0-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-18d4c3c27061d1e0-1.digest new file mode 100644 index 000000000..5c8037b0f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-18d4c3c27061d1e0-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["pair"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-19c958e4224602c7-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-19c958e4224602c7-1.digest new file mode 100644 index 000000000..d45ac36d1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-19c958e4224602c7-1.digest @@ -0,0 +1,16 @@ +time: Some(2.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-3.0581603, -1.5290802, -10.0), horizontal: Vec3A(6.1163206, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 32, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 16 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 2, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/main", name: "$SHOT/beauty.$F4.exr", vars: [AovVar { prim_path: "/Render/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(2.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-1ad9de82b394044d-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-1ad9de82b394044d-1.digest new file mode 100644 index 000000000..2e9f61d1e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-1ad9de82b394044d-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2599211 motion [] pieces all=4:207520f9ebf77205 camera=4:207520f9ebf77205 shadow=4:207520f9ebf77205 indirect=4:207520f9ebf77205 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17893806835409548195, n_points: 8, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-22dd31756ff245fc-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-22dd31756ff245fc-1.digest new file mode 100644 index 000000000..f2fcfa009 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-22dd31756ff245fc-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam2") +camera: Camera { origin: Vec3A(1.8, 1.2, 5.0), lower_left_corner: Vec3A(-4.3453856, -2.354873, -3.223331), horizontal: Vec3A(6.9992666, 0.0, -2.0070076), vertical: Vec3A(-0.16759291, 4.3262835, -0.5844659), u: Vec3A(0.9612617, 0.0, -0.2756374), v: Vec3A(-0.038361315, 0.9902681, -0.13378179), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 40, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 40, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/beauty", name: "beauty.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 35.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda", "$DIR/ipr.usda", "$DIR/cooked.usda"], invisible_overrides: Some(0) } +layer: $DIR/cooked.usda +layer: $DIR/ipr.usda +layer: $DIR/stage.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam2"), cameras: ["/World/cam2", "/World/cam1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-22e94b531779cff1-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-22e94b531779cff1-1.digest new file mode 100644 index 000000000..973433ad9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-22e94b531779cff1-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["tint"]) } class 65535 holdout false transparent false map None uv None shading Some(0) strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 219912570367011913, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-24ad7c66559e9c80-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-24ad7c66559e9c80-1.digest new file mode 100644 index 000000000..0f239f177 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-24ad7c66559e9c80-1.digest @@ -0,0 +1,33 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 128, height: 72, region: PixelRect { x0: 0, y0: 0, x1: 128, y1: 72 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/comp", name: "mv.exr", vars: [AovVar { prim_path: "/Render/comp/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/comp/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/comp/forward", name: "forward", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: true, layer_stack: ["$DIR/stage.usda", "$ROOT/samples/animation.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/animation.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:04a229f6b721d5f0 camera=2:04a229f6b721d5f0 shadow=2:04a229f6b721d5f0 indirect=2:04a229f6b721d5f0 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.44444445, 0.0, 0.0))] pieces all=1:eca0c2f96d67613b camera=1:eca0c2f96d67613b shadow=1:eca0c2f96d67613b indirect=1:eca0c2f96d67613b +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 4..4 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Card +provenance geometry 3..4: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16680805309457723353, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-26105365b1fd8dbc-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-26105365b1fd8dbc-1.digest new file mode 100644 index 000000000..23b7fe6ab --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-26105365b1fd8dbc-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:bdb3aa09e1ce3bf5 camera=2:bdb3aa09e1ce3bf5 shadow=2:bdb3aa09e1ce3bf5 indirect=2:bdb3aa09e1ce3bf5 +geom 1: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:17b9a0f8cfff9585 camera=1:17b9a0f8cfff9585 shadow=1:17b9a0f8cfff9585 indirect=1:17b9a0f8cfff9585 +provenance material /World/Looks/M: MaterialOrigin { slots: [0, 1], displaced: false } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/C +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13176316567238695505, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-2912eb63656b3371-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-2912eb63656b3371-1.digest new file mode 100644 index 000000000..7bdd863c1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-2912eb63656b3371-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading Some(0) strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15182453685671876355, n_points: 8, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-2c5736e1f1ba1f8d-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-2c5736e1f1ba1f8d-1.digest new file mode 100644 index 000000000..b500e0b1c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-2c5736e1f1ba1f8d-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d46e920fbc035ae5 camera=1:d46e920fbc035ae5 shadow=1:d46e920fbc035ae5 indirect=1:d46e920fbc035ae5 +geom 1: material #1 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Looks/A: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/B: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Geo/ball_B +provenance geometry 1..2: /World/Geo/ball_A +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-2c8067fb553f81df-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-2c8067fb553f81df-1.digest new file mode 100644 index 000000000..2aca7fafd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-2c8067fb553f81df-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((true, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:7a8114182eb4444e camera=1:7a8114182eb4444e shadow=1:7a8114182eb4444e indirect=1:7a8114182eb4444e +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-2ce486f3dc966042-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-2ce486f3dc966042-1.digest new file mode 100644 index 000000000..722eb69e0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-2ce486f3dc966042-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-2ffe73dbb471510a-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-2ffe73dbb471510a-1.digest new file mode 100644 index 000000000..bc78b8b0d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-2ffe73dbb471510a-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["p0"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-323a3e02a1f4d7b0-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-323a3e02a1f4d7b0-1.digest new file mode 100644 index 000000000..a496001af --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-323a3e02a1f4d7b0-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-340b07ebab8f9091-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-340b07ebab8f9091-1.digest new file mode 100644 index 000000000..e885d368b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-340b07ebab8f9091-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["tint"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-3622e7d90bc81d34-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-3622e7d90bc81d34-1.digest new file mode 100644 index 000000000..5c7cd7210 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-3622e7d90bc81d34-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-1.digest new file mode 100644 index 000000000..d61b00bc5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 3, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["strandId"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=3:1fef49a575dc157a camera=3:1fef49a575dc157a shadow=3:1fef49a575dc157a indirect=3:1fef49a575dc157a +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-2.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-2.digest new file mode 100644 index 000000000..68f331683 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-2.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 3, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=3:1fef49a575dc157a camera=3:1fef49a575dc157a shadow=3:1fef49a575dc157a indirect=3:1fef49a575dc157a +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-37a86d28c7d197ed-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-37a86d28c7d197ed-1.digest new file mode 100644 index 000000000..1785bb79e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-37a86d28c7d197ed-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: MeshUnsupportedPrimvar, kind: Skipped, count: 1, prims: ["/World/Q"], message: "/World/Q: primvars:label is a float[] (authored empty) — the material reads its geompropvalue's default there" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["label"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-3c67a25a0a341efb-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-3c67a25a0a341efb-1.digest new file mode 100644 index 000000000..071c34090 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-3c67a25a0a341efb-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: TextureTxStale, kind: Approximated, count: 1, prims: [], message: "$DIR/srgb_canon.png: 1 .tx tile(s) whose modification time is not their source's, used anyway — rerun with --auto-tx to reconvert" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-3effc82524d047c7-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-3effc82524d047c7-1.digest new file mode 100644 index 000000000..1a6feb768 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-3effc82524d047c7-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6908817154990386932, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-3f9cd9ed5581414a-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-3f9cd9ed5581414a-1.digest new file mode 100644 index 000000000..7188d92c2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-3f9cd9ed5581414a-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15189769101381604747, n_points: 8, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-1.digest new file mode 100644 index 000000000..3a156327d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 2, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:c162abc6e963ca71 camera=1:c162abc6e963ca71 shadow=1:c162abc6e963ca71 indirect=1:c162abc6e963ca71 +geom 1: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(1) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0, 1], displaced: false } +provenance geometry 0..1: /World/B +provenance geometry 1..2: /World/A +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-2.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-2.digest new file mode 100644 index 000000000..3a156327d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-2.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 2, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:c162abc6e963ca71 camera=1:c162abc6e963ca71 shadow=1:c162abc6e963ca71 indirect=1:c162abc6e963ca71 +geom 1: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(1) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0, 1], displaced: false } +provenance geometry 0..1: /World/B +provenance geometry 1..2: /World/A +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-48e70f6118b1f181-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-48e70f6118b1f181-1.digest new file mode 100644 index 000000000..7bfdfa42d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-48e70f6118b1f181-1.digest @@ -0,0 +1,16 @@ +time: Some(5.5) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-3.0581603, -1.5290802, -10.0), horizontal: Vec3A(6.1163206, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 32, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 16 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/main", name: "renders/beauty.$F4.exr", vars: [AovVar { prim_path: "/Render/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }, AovProduct { prim_path: "/Render/udim", name: "renders/raw..exr", vars: [AovVar { prim_path: "/Render/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }, AovProduct { prim_path: "/Render/again", name: "renders/beauty.0005.exr", vars: [AovVar { prim_path: "/Render/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-49f9cb3e8a3fb9fb-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-49f9cb3e8a3fb9fb-1.digest new file mode 100644 index 000000000..a373c7d4e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-49f9cb3e8a3fb9fb-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 1, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:01ad48faca6d45bb camera=1:01ad48faca6d45bb shadow=1:01ad48faca6d45bb indirect=1:01ad48faca6d45bb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/N +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-4a064c9610d45212-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-4a064c9610d45212-1.digest new file mode 100644 index 000000000..a496001af --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-4a064c9610d45212-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-4f30830cd0cff6cf-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-4f30830cd0cff6cf-1.digest new file mode 100644 index 000000000..4cbbf7669 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-4f30830cd0cff6cf-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17893806835409548195, n_points: 8, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-520aa0db2cddfe4a-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-520aa0db2cddfe4a-1.digest new file mode 100644 index 000000000..9968d39c4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-520aa0db2cddfe4a-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:641133ab27378425 camera=2:641133ab27378425 shadow=2:641133ab27378425 indirect=2:641133ab27378425 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6920314679913877878, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [NodeDef { name: "studio_mix", node: "studio_mix", inputs: [DefInput { name: "fg_color", type_name: "color3", value: Some(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 3 }), text: Some("0, 0, 0") }, DefInput { name: "bg_color", type_name: "color3", value: Some(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 3 }), text: Some("0, 0, 0") }, DefInput { name: "amount", type_name: "float", value: Some(Val { v: [0.5, 0.5, 0.5, 0.5], arity: 1 }), text: Some("0.5") }], outputs: [DefOutput { name: "blended", type_name: "color3" }], inherit: None, version: None, default_version: false }], by_name: {"studio_mix": 0}, impls: {"studio_mix": Implementation { name: "NG_studio_mix", nodedef: "studio_mix", nodes: [Node { category: "mix", name: "mix", type_name: "color3", inputs: [Input { name: "bg", type_name: "color3", source: Value(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 1 }), colorspace: None, text: None, interface: Some("bg_color") }, Input { name: "fg", type_name: "color3", source: Value(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 1 }), colorspace: None, text: None, interface: Some("fg_color") }, Input { name: "mix", type_name: "float", source: Value(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 1 }), colorspace: None, text: None, interface: Some("amount") }], graph: Some("NG_studio_mix"), version: None, colorspace: None }], outputs: [ImplOutput { name: "blended", type_name: "color3", node: "mix", output: None }] }}, files: ["$DIR/lib/blend.mtlx"] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-54895eac26b3d68b-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-54895eac26b3d68b-1.digest new file mode 100644 index 000000000..8692b1fd4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-54895eac26b3d68b-1.digest @@ -0,0 +1,16 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-3.0581603, -1.5290802, -10.0), horizontal: Vec3A(6.1163206, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 32, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 16 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/main", name: "renders/beauty.$F4.exr", vars: [AovVar { prim_path: "/Render/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }, AovProduct { prim_path: "/Render/udim", name: "renders/raw..exr", vars: [AovVar { prim_path: "/Render/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }, AovProduct { prim_path: "/Render/again", name: "renders/beauty.0005.exr", vars: [AovVar { prim_path: "/Render/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-5842de9c4816f088-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-5842de9c4816f088-1.digest new file mode 100644 index 000000000..edf1266ed --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-5842de9c4816f088-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CurvesUnsupportedPrimvar, kind: Skipped, count: 1, prims: ["/World/C"], message: "/World/C: primvars:label has 3 values where its Vertex interpolation needs 2 — the material reads its default there" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["label"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-591315737502029a-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-591315737502029a-1.digest new file mode 100644 index 000000000..45f4d4534 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-591315737502029a-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading Some(0) strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7300176459579144609, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-592ba3007488df6d-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-592ba3007488df6d-1.digest new file mode 100644 index 000000000..8904ead37 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-592ba3007488df6d-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CurvesReservedPrimvar, kind: Skipped, count: 1, prims: ["/World/C"], message: "/World/C: /World/C.primvars:curve:v is under primvars:curve:, the namespace of the curve properties — the material reads curve:v, curve:index and curve:random, not these" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:7a8114182eb4444e camera=1:7a8114182eb4444e shadow=1:7a8114182eb4444e indirect=1:7a8114182eb4444e +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-59354f1aad350085-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-59354f1aad350085-1.digest new file mode 100644 index 000000000..17b594ef9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-59354f1aad350085-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-3.0581603, -1.5290802, -10.0), horizontal: Vec3A(6.1163206, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 32, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 16 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/main", name: "main.exr", vars: [AovVar { prim_path: "/Render/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/albedo", name: "albedo", channel_prefix: None, source: Albedo, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/normal", name: "normal", channel_prefix: None, source: Normal, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }, AovProduct { prim_path: "/Render/extra", name: "extra.exr", vars: [AovVar { prim_path: "/Render/albedo", name: "albedo", channel_prefix: None, source: Albedo, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-5b237a71fd087753-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-5b237a71fd087753-1.digest new file mode 100644 index 000000000..a1ca19fec --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-5b237a71fd087753-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["displayColor"]) } class 65535 holdout false transparent false map None uv None shading Some(0) strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13252484707536945916, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-5cc80e16451809c9-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-5cc80e16451809c9-1.digest new file mode 100644 index 000000000..4cbbf7669 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-5cc80e16451809c9-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17893806835409548195, n_points: 8, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-5dc19c72025a0150-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-5dc19c72025a0150-1.digest new file mode 100644 index 000000000..bc78b8b0d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-5dc19c72025a0150-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["p0"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-5f7140cec32f4f07-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-5f7140cec32f4f07-1.digest new file mode 100644 index 000000000..4cbbf7669 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-5f7140cec32f4f07-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17893806835409548195, n_points: 8, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-604932e0d3e70494-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-604932e0d3e70494-1.digest new file mode 100644 index 000000000..f04409e7c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-604932e0d3e70494-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-64b7039b1d43e540-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-64b7039b1d43e540-1.digest new file mode 100644 index 000000000..bcdcab8ff --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-64b7039b1d43e540-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Uniform, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-65ee13ae526ffeea-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-65ee13ae526ffeea-1.digest new file mode 100644 index 000000000..2aca7fafd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-65ee13ae526ffeea-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((true, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:7a8114182eb4444e camera=1:7a8114182eb4444e shadow=1:7a8114182eb4444e indirect=1:7a8114182eb4444e +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-67247fa59107a671-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-67247fa59107a671-1.digest new file mode 100644 index 000000000..722eb69e0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-67247fa59107a671-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-6bf959c4a9ccd0b3-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-6bf959c4a9ccd0b3-1.digest new file mode 100644 index 000000000..a8f8e7159 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-6bf959c4a9ccd0b3-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["flat", "face"]) } class 65535 holdout false transparent false map None uv None shading Some(0) strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8067649529554663034, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-6d5fe86af042b6e1-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-6d5fe86af042b6e1-1.digest new file mode 100644 index 000000000..1a4743c58 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-6d5fe86af042b6e1-1.digest @@ -0,0 +1,28 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading Some(0) strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:0db020eefb0d3b85 camera=4:0db020eefb0d3b85 shadow=4:0db020eefb0d3b85 indirect=4:0db020eefb0d3b85 +geom 1: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading Some(0) strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:e621daa7ecf9bc75 camera=4:e621daa7ecf9bc75 shadow=4:e621daa7ecf9bc75 indirect=4:e621daa7ecf9bc75 +geom 2: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading Some(0) strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:1d8e2216cd700db5 camera=4:1d8e2216cd700db5 shadow=4:1d8e2216cd700db5 indirect=4:1d8e2216cd700db5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0, 1, 2], displaced: false } +provenance geometry 0..1: /World/Mirrored +provenance geometry 1..2: /World/A +provenance geometry 2..3: /World/B +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7300176459579144609, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 3, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-71054a8e0c511721-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-71054a8e0c511721-1.digest new file mode 100644 index 000000000..7829195fd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-71054a8e0c511721-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-3.0581603, -1.5290802, -10.0), horizontal: Vec3A(6.1163206, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 32, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 16 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/main", name: "main.exr", vars: [AovVar { prim_path: "/Render/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }, AovProduct { prim_path: "/Render/unnamed", name: "", vars: [AovVar { prim_path: "/Render/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }, AovProduct { prim_path: "/Render/again", name: "main.exr", vars: [AovVar { prim_path: "/Render/color", name: "color", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-7c770edd10f5907e-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-7c770edd10f5907e-1.digest new file mode 100644 index 000000000..65151c3c5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-7c770edd10f5907e-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((true, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=1:7a8114182eb4444e camera=1:7a8114182eb4444e shadow=1:7a8114182eb4444e indirect=1:7a8114182eb4444e +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8088e3bfe6185392-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-8088e3bfe6185392-1.digest new file mode 100644 index 000000000..6d951b352 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8088e3bfe6185392-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16264184265957527656, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-80aabe25c21585c0-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-80aabe25c21585c0-1.digest new file mode 100644 index 000000000..c2ac93213 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-80aabe25c21585c0-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:cc10802e6b403ef5 camera=4:cc10802e6b403ef5 shadow=4:cc10802e6b403ef5 indirect=4:cc10802e6b403ef5 +geom 1: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0, 1], displaced: false } +provenance geometry 0..1: /World/C +provenance geometry 1..2: /World/U +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1288948547248249470, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17893806835409548195, n_points: 8, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-1.digest new file mode 100644 index 000000000..5c7ffd68f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 3, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["strandId"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=3:d547abbd49b2a5fa camera=3:d547abbd49b2a5fa shadow=3:d547abbd49b2a5fa indirect=3:d547abbd49b2a5fa +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-2.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-2.digest new file mode 100644 index 000000000..120ac5a3b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-2.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 3, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=3:d547abbd49b2a5fa camera=3:d547abbd49b2a5fa shadow=3:d547abbd49b2a5fa indirect=3:d547abbd49b2a5fa +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-82a10c399a16cdfe-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-82a10c399a16cdfe-1.digest new file mode 100644 index 000000000..33e984f63 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-82a10c399a16cdfe-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: LightDegenerateShape, kind: Skipped, count: 2, prims: ["/World/b", "/World/a"], message: "RectLight at /World/b: width 0 × height 1 must be finite and positive — skipped" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8330e4bc297d2c11-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-8330e4bc297d2c11-1.digest new file mode 100644 index 000000000..ebde4b868 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8330e4bc297d2c11-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 9, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=9:7a09773c32617eb9 camera=9:7a09773c32617eb9 shadow=9:7a09773c32617eb9 indirect=9:7a09773c32617eb9 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-888072d0abcb4b7c-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-888072d0abcb4b7c-1.digest new file mode 100644 index 000000000..ad9ab90a5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-888072d0abcb4b7c-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 4, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["w"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=4:181bf424aa0de76e camera=4:181bf424aa0de76e shadow=4:181bf424aa0de76e indirect=4:181bf424aa0de76e +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8a23f56494af42b0-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-8a23f56494af42b0-1.digest new file mode 100644 index 000000000..f13781b9c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8a23f56494af42b0-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: true, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["Alpha"]) } class 65535 holdout false transparent false map None uv None shading Some(0) strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11829234476885859690, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8b53eb2ddb581089-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-8b53eb2ddb581089-1.digest new file mode 100644 index 000000000..60e224af6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8b53eb2ddb581089-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((true, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:dc4d947457595750 camera=1:dc4d947457595750 shadow=1:dc4d947457595750 indirect=1:dc4d947457595750 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8bc1102225447b76-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-8bc1102225447b76-1.digest new file mode 100644 index 000000000..3cedd13ab --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8bc1102225447b76-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam1") +camera: Camera { origin: Vec3A(0.0, 0.6, 6.0), lower_left_corner: Vec3A(-5.3093057, -2.5855837, -4.0), horizontal: Vec3A(10.618611, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 40, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 40, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/beauty", name: "beauty.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda", "$DIR/ipr.usda", "$DIR/cooked.usda"], invisible_overrides: Some(0) } +layer: $DIR/cooked.usda +layer: $DIR/ipr.usda +layer: $DIR/stage.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:0e0a4667da70ad35 camera=2:0e0a4667da70ad35 shadow=2:0e0a4667da70ad35 indirect=2:0e0a4667da70ad35 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6787da8eacebee45 camera=2:6787da8eacebee45 shadow=2:6787da8eacebee45 indirect=2:6787da8eacebee45 +provenance light /World/Sky: LightOrigin { index: 1, geoms: 2..2 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358658470076285213, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam1"), cameras: ["/World/cam2", "/World/cam1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8bcafd97dd44d415-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-8bcafd97dd44d415-1.digest new file mode 100644 index 000000000..ef84b3da8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8bcafd97dd44d415-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 3, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["hairColor"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=3:1fef49a575dc157a camera=3:1fef49a575dc157a shadow=3:1fef49a575dc157a indirect=3:1fef49a575dc157a +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8c1801ab78070f29-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-8c1801ab78070f29-1.digest new file mode 100644 index 000000000..c9b2a967c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8c1801ab78070f29-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: MeshUnsupportedPrimvar, kind: Skipped, count: 1, prims: ["/World/Q"], message: "/World/Q: primvars:label is a string (no numeric value of one to three components per element) — the material reads its geompropvalue's default there" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["label"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8cceeaf3cdd2ee51-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-8cceeaf3cdd2ee51-1.digest new file mode 100644 index 000000000..e885d368b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8cceeaf3cdd2ee51-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["tint"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-91c6c701cea6760c-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-91c6c701cea6760c-1.digest new file mode 100644 index 000000000..109e88201 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-91c6c701cea6760c-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CurvesUnsupportedPrimvar, kind: Skipped, count: 1, prims: ["/World/C"], message: "/World/C: primvars:label is faceVarying, which curves do not read — the material reads its default there" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["label"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-93b962ab026b22b8-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-93b962ab026b22b8-1.digest new file mode 100644 index 000000000..5c8037b0f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-93b962ab026b22b8-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["pair"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-976234e8d4ff9d44-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-976234e8d4ff9d44-1.digest new file mode 100644 index 000000000..c1e4cb09e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-976234e8d4ff9d44-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["pair"]) } class 65535 holdout false transparent false map None uv None shading Some(0) strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7931273347235586577, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-9a4d212002571295-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-9a4d212002571295-1.digest new file mode 100644 index 000000000..2aca7fafd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-9a4d212002571295-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((true, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:7a8114182eb4444e camera=1:7a8114182eb4444e shadow=1:7a8114182eb4444e indirect=1:7a8114182eb4444e +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-9af3795f55319fa5-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-9af3795f55319fa5-1.digest new file mode 100644 index 000000000..07ddbc52b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-9af3795f55319fa5-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: MeshUnsupportedPrimvar, kind: Skipped, count: 1, prims: ["/World/Can"], message: "/World/Can: primvars:other is Uniform, and an implicit shape reads only constant primvars — the material reads its geompropvalue's default there" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 204, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 204, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["tint", "other"]) } class 65535 holdout false transparent false map None uv None shading Some(0) strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 1: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["tint", "other"]) } class 65535 holdout false transparent false map None uv None shading Some(1) strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:e83b27b6cb99b825 camera=12:e83b27b6cb99b825 shadow=12:e83b27b6cb99b825 indirect=12:e83b27b6cb99b825 +geom 2: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["tint", "other"]) } class 65535 holdout false transparent false map None uv None shading Some(2) strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:e09abb0ee844faa9 camera=192:e09abb0ee844faa9 shadow=192:e09abb0ee844faa9 indirect=192:e09abb0ee844faa9 +provenance material /World/Looks/M: MaterialOrigin { slots: [0, 1, 2], displaced: false } +provenance geometry 0..1: /World/Ball +provenance geometry 1..2: /World/Box +provenance geometry 2..3: /World/Can +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2154192007262944964, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 110596993976722767, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-9f427c13a5c51892-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-9f427c13a5c51892-1.digest new file mode 100644 index 000000000..2e76de88f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-9f427c13a5c51892-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: MtlxIncomplete, kind: Approximated, count: 1, prims: ["/World/Looks/M"], message: "Material /World/Looks/M: MaterialX network not fully translated — /World/Looks/M/Blend: not a MaterialX shader (studio_mix) — its input falls back to the default" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:641133ab27378425 camera=2:641133ab27378425 shadow=2:641133ab27378425 indirect=2:641133ab27378425 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6920314679913877878, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-a366debd179e59ca-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-a366debd179e59ca-1.digest new file mode 100644 index 000000000..0f0b684f8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-a366debd179e59ca-1.digest @@ -0,0 +1,21 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-5.6632595, -3.1855836, -2.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 32, width: 128, height: 72, region: PixelRect { x0: 0, y0: 0, x1: 128, y1: 72 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/comp", name: "mv.exr", vars: [AovVar { prim_path: "/Render/comp/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/comp/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/comp/forward", name: "forward", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda", "$DIR_base/spin.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +layer: $DIR_base/spin.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Affine([Affine3A { matrix3: Mat3A { x_axis: Vec3A(0.76604444, 0.64278764, 0.0), y_axis: Vec3A(-0.64278764, 0.76604444, 0.0), z_axis: Vec3A(0.0, 0.0, 1.0) }, translation: Vec3A(0.0, 0.0, 0.0) }, Affine3A { matrix3: Mat3A { x_axis: Vec3A(0.6427876, 0.7660445, 0.0), y_axis: Vec3A(-0.7660445, 0.6427876, 0.0), z_axis: Vec3A(0.0, 0.0, 1.0) }, translation: Vec3A(0.0, 0.0, 0.0) }])] pieces all=12:783937e14106bdd5 camera=12:783937e14106bdd5 shadow=12:783937e14106bdd5 indirect=12:783937e14106bdd5 +provenance geometry 0..1: /World/Spin +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8921584896192100385, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-a5b1d711f3b9ea59-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-a5b1d711f3b9ea59-1.digest new file mode 100644 index 000000000..391f940b3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-a5b1d711f3b9ea59-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 4, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["ramp"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=4:181bf424aa0de76e camera=4:181bf424aa0de76e shadow=4:181bf424aa0de76e indirect=4:181bf424aa0de76e +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-a74b5f3cf6bce97e-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-a74b5f3cf6bce97e-1.digest new file mode 100644 index 000000000..f74ccbb8b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-a74b5f3cf6bce97e-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["density"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-a7f91b5a6640999a-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-a7f91b5a6640999a-1.digest new file mode 100644 index 000000000..d68013fba --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-a7f91b5a6640999a-1.digest @@ -0,0 +1,32 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: MeshInvalidNormals, kind: Skipped, count: 4, prims: ["/World/EmptyPrimvar", "/World/Float3Primvar", "/World/ColorPrimvar", "/World/EmptyNormals"], message: "/World/EmptyPrimvar: primvars:normals is a normal3f[] (authored empty) — the mesh renders faceted" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +geom 1: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:cc10802e6b403ef5 camera=4:cc10802e6b403ef5 shadow=4:cc10802e6b403ef5 indirect=4:cc10802e6b403ef5 +geom 2: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:e457f36d535b70f5 camera=4:e457f36d535b70f5 shadow=4:e457f36d535b70f5 indirect=4:e457f36d535b70f5 +geom 3: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:2f2a1ebfe7211835 camera=4:2f2a1ebfe7211835 shadow=4:2f2a1ebfe7211835 indirect=4:2f2a1ebfe7211835 +provenance material /World/Looks/M: MaterialOrigin { slots: [0, 1, 2, 3], displaced: false } +provenance geometry 0..1: /World/EmptyPrimvar +provenance geometry 1..2: /World/Float3Primvar +provenance geometry 2..3: /World/ColorPrimvar +provenance geometry 3..4: /World/EmptyNormals +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 4, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-a87fd805403755dc-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-a87fd805403755dc-1.digest new file mode 100644 index 000000000..615a04460 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-a87fd805403755dc-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: TextureUdimTileMissing, kind: Skipped, count: 1, prims: [], message: "could not decode $DIR/albedo.1002.png: Format error decoding Png: Invalid PNG signature. — skipping that UDIM tile" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Looks/Tiled: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Geo/ball_Tiled +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-abb589be134471f7-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-abb589be134471f7-1.digest new file mode 100644 index 000000000..2aca7fafd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-abb589be134471f7-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((true, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:7a8114182eb4444e camera=1:7a8114182eb4444e shadow=1:7a8114182eb4444e indirect=1:7a8114182eb4444e +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-abeca91af484e4eb-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-abeca91af484e4eb-1.digest new file mode 100644 index 000000000..e885d368b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-abeca91af484e4eb-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["tint"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-b0726246200d796c-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-b0726246200d796c-1.digest new file mode 100644 index 000000000..0a4cd1531 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-b0726246200d796c-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CurvesUnsupportedPrimvar, kind: Skipped, count: 1, prims: ["/World/C"], message: "/World/C: primvars:label is a matrix4d, which curves do not read (float, float2, float3, color3f, int) — the material reads its default there" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["label"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-b091ac35593cb491-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-b091ac35593cb491-1.digest new file mode 100644 index 000000000..657b502d6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-b091ac35593cb491-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: TextureUnreadable, kind: Skipped, count: 3, prims: ["/World/Looks/C", "/World/Looks/B", "/World/Looks/A"], message: "could not read $DIR/missing_albedo.png: No such file or directory (os error 2) — the input reads its fallback" } +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 0, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:60208aa8cac759e5 camera=1:60208aa8cac759e5 shadow=1:60208aa8cac759e5 indirect=1:60208aa8cac759e5 +geom 1: material #1 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d46e920fbc035ae5 camera=1:d46e920fbc035ae5 shadow=1:d46e920fbc035ae5 indirect=1:d46e920fbc035ae5 +geom 2: material #2 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Looks/A: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/B: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/C: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Geo/ball_C +provenance geometry 1..2: /World/Geo/ball_B +provenance geometry 2..3: /World/Geo/ball_A +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-b8974322f9c3c9a8-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-b8974322f9c3c9a8-1.digest new file mode 100644 index 000000000..f02fa1b22 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-b8974322f9c3c9a8-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +geom 1: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:cc10802e6b403ef5 camera=4:cc10802e6b403ef5 shadow=4:cc10802e6b403ef5 indirect=4:cc10802e6b403ef5 +geom 2: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:e457f36d535b70f5 camera=4:e457f36d535b70f5 shadow=4:e457f36d535b70f5 indirect=4:e457f36d535b70f5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0, 1, 2], displaced: false } +provenance geometry 0..1: /World/A +provenance geometry 1..2: /World/B +provenance geometry 2..3: /World/C +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17893806835409548195, n_points: 8, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13698019543451785888, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-bb51bbccac634602-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-bb51bbccac634602-1.digest new file mode 100644 index 000000000..3f1fff87b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-bb51bbccac634602-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-bc2640abb95a8689-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-bc2640abb95a8689-1.digest new file mode 100644 index 000000000..a15681c65 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-bc2640abb95a8689-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8386128300084420682, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-bdce5005dd991897-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-bdce5005dd991897-1.digest new file mode 100644 index 000000000..9901d00bd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-bdce5005dd991897-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: MeshUnsupportedPrimvar, kind: Skipped, count: 1, prims: ["/World/Q"], message: "/World/Q: primvars:label is a float[] (indices that are not an int[]) — the material reads its geompropvalue's default there" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["label"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-c3555672a13627c7-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-c3555672a13627c7-1.digest new file mode 100644 index 000000000..66120b55d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-c3555672a13627c7-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 6, cubic_curve_spans: 0, instances: 4 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=2:4efa2966eb9e8422 camera=2:4efa2966eb9e8422 shadow=2:4efa2966eb9e8422 indirect=2:4efa2966eb9e8422 +geom 1: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(1) aov None swapped false curves true scale 1.0 motion [] pieces all=2:415633d4ba8f2959 camera=2:415633d4ba8f2959 shadow=2:415633d4ba8f2959 indirect=2:415633d4ba8f2959 +geom 2: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(2) aov None swapped false curves true scale 1.0 motion [] pieces all=2:302b81f02f4f6445 camera=2:302b81f02f4f6445 shadow=2:302b81f02f4f6445 indirect=2:302b81f02f4f6445 +geom 3: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(2) aov None swapped false curves true scale 0.99999994 motion [] pieces all=2:9dc64ea1912070c2 camera=2:9dc64ea1912070c2 shadow=2:9dc64ea1912070c2 indirect=2:9dc64ea1912070c2 +provenance material /World/Looks/M: MaterialOrigin { slots: [0, 1, 2, 3], displaced: false } +provenance geometry 0..1: /World/Protos/P/Clump +provenance geometry 1..2: /World/Native +provenance geometry 2..4: /World/Scatter +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-c469a696e567b939-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-c469a696e567b939-1.digest new file mode 100644 index 000000000..5d0820a82 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-c469a696e567b939-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((true, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-c7b4569174f0eec0-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-c7b4569174f0eec0-1.digest new file mode 100644 index 000000000..722eb69e0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-c7b4569174f0eec0-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-cd83faa181eb1fd7-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-cd83faa181eb1fd7-1.digest new file mode 100644 index 000000000..de1df83f8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-cd83faa181eb1fd7-1.digest @@ -0,0 +1,33 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 128, height: 72, region: PixelRect { x0: 0, y0: 0, x1: 128, y1: 72 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/comp", name: "mv.exr", vars: [AovVar { prim_path: "/Render/comp/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/comp/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/comp/forward", name: "forward", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda", "$ROOT/samples/animation.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/animation.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:04a229f6b721d5f0 camera=2:04a229f6b721d5f0 shadow=2:04a229f6b721d5f0 indirect=2:04a229f6b721d5f0 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.44444445, 0.0, 0.0))] pieces all=1:eca0c2f96d67613b camera=1:eca0c2f96d67613b shadow=1:eca0c2f96d67613b indirect=1:eca0c2f96d67613b +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 4..4 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Card +provenance geometry 3..4: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16680805309457723353, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-cf6459f3f81ccc47-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-cf6459f3f81ccc47-1.digest new file mode 100644 index 000000000..33e984f63 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-cf6459f3f81ccc47-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: LightDegenerateShape, kind: Skipped, count: 2, prims: ["/World/b", "/World/a"], message: "RectLight at /World/b: width 0 × height 1 must be finite and positive — skipped" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-cf8a4ab339090107-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-cf8a4ab339090107-1.digest new file mode 100644 index 000000000..f7bc0e95f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-cf8a4ab339090107-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 2, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["tint"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=2:8dfd25c608412a7e camera=2:8dfd25c608412a7e shadow=2:8dfd25c608412a7e indirect=2:8dfd25c608412a7e +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-d2ee2497345d697d-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-d2ee2497345d697d-1.digest new file mode 100644 index 000000000..6d32a6e00 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-d2ee2497345d697d-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: MeshInvalidNormals, kind: Skipped, count: 2, prims: ["/World/Flat", "/World/Short"], message: "/World/Flat: primvars:normals is a float[] (not a normal3f[], normal3d[] or normal3h[]) — the mesh renders faceted" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:cc10802e6b403ef5 camera=4:cc10802e6b403ef5 shadow=4:cc10802e6b403ef5 indirect=4:cc10802e6b403ef5 +geom 1: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0, 1], displaced: false } +provenance geometry 0..1: /World/Flat +provenance geometry 1..2: /World/Short +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-d72f3f29bbbe2aac-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-d72f3f29bbbe2aac-1.digest new file mode 100644 index 000000000..32363368b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-d72f3f29bbbe2aac-1.digest @@ -0,0 +1,20 @@ +time: Some(1.0) +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 1, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 3, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=3:1fef49a575dc157a camera=3:1fef49a575dc157a shadow=3:1fef49a575dc157a indirect=3:1fef49a575dc157a +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(1.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-db5313ef5e73713b-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-db5313ef5e73713b-1.digest new file mode 100644 index 000000000..bbb9d0a6c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-db5313ef5e73713b-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 4, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=4:054f551c11432051 camera=4:054f551c11432051 shadow=4:054f551c11432051 indirect=4:054f551c11432051 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-dbe57a2b9b304f79-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-dbe57a2b9b304f79-1.digest new file mode 100644 index 000000000..8403d084b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-dbe57a2b9b304f79-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 5 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +geom 1: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:c162abc6e963ca71 camera=1:c162abc6e963ca71 shadow=1:c162abc6e963ca71 indirect=1:c162abc6e963ca71 +geom 2: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:cf44472ae23e8cde camera=1:cf44472ae23e8cde shadow=1:cf44472ae23e8cde indirect=1:cf44472ae23e8cde +geom 3: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:f2a9e8084f2836c7 camera=1:f2a9e8084f2836c7 shadow=1:f2a9e8084f2836c7 indirect=1:f2a9e8084f2836c7 +geom 4: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:fe7bef2391208aa9 camera=1:fe7bef2391208aa9 shadow=1:fe7bef2391208aa9 indirect=1:fe7bef2391208aa9 +provenance material /World/Looks/M: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance geometry 0..5: /World/Scatter +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-dc3f3fbeccf7b47a-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-dc3f3fbeccf7b47a-1.digest new file mode 100644 index 000000000..e885d368b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-dc3f3fbeccf7b47a-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["tint"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-df6e87952da2ef59-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-df6e87952da2ef59-1.digest new file mode 100644 index 000000000..e885d368b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-df6e87952da2ef59-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["tint"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-dfcbe85c1522e1a0-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-dfcbe85c1522e1a0-1.digest new file mode 100644 index 000000000..722eb69e0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-dfcbe85c1522e1a0-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-e0281d61316ee28c-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-e0281d61316ee28c-1.digest new file mode 100644 index 000000000..160d565a2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-e0281d61316ee28c-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: MeshUnsupportedPrimvar, kind: Skipped, count: 1, prims: ["/World/Q"], message: "/World/Q: primvars:label is a float[] (2 entries where its Vertex interpolation needs 6) — the material reads its geompropvalue's default there" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["label"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-e190342a381695b4-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-e190342a381695b4-1.digest new file mode 100644 index 000000000..5d0820a82 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-e190342a381695b4-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((true, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-e4221ab681d9d69c-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-e4221ab681d9d69c-1.digest new file mode 100644 index 000000000..60cf68d82 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-e4221ab681d9d69c-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["missing"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-e515f767109d59fd-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-e515f767109d59fd-1.digest new file mode 100644 index 000000000..59c72ee74 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-e515f767109d59fd-1.digest @@ -0,0 +1,20 @@ +time: Some(2.0) +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 2, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 3, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=3:b246b80dcbd366b3 camera=3:b246b80dcbd366b3 shadow=3:b246b80dcbd366b3 indirect=3:b246b80dcbd366b3 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(2.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-e6a49698324053cb-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-e6a49698324053cb-1.digest new file mode 100644 index 000000000..5a1921b88 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-e6a49698324053cb-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraNotACamera, kind: Refused, count: 1, prims: ["/World/notACamera"], message: "RenderSettings.camera targets /World/notACamera, which is not a camera on this stage — rendering through /World/cam instead" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-e725f8fd7bc55370-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-e725f8fd7bc55370-1.digest new file mode 100644 index 000000000..65151c3c5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-e725f8fd7bc55370-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((true, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=1:7a8114182eb4444e camera=1:7a8114182eb4444e shadow=1:7a8114182eb4444e indirect=1:7a8114182eb4444e +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-eae49fc2a8ca60e5-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-eae49fc2a8ca60e5-1.digest new file mode 100644 index 000000000..e73628800 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-eae49fc2a8ca60e5-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["tint"]) } class 65535 holdout false transparent false map None uv None shading Some(0) strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7397703893271868288, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-eb49e61d600c4d7e-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-eb49e61d600c4d7e-1.digest new file mode 100644 index 000000000..73100cc90 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-eb49e61d600c4d7e-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-ebf6853a9256b461-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-ebf6853a9256b461-1.digest new file mode 100644 index 000000000..5d0820a82 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-ebf6853a9256b461-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((true, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-ef8a900692712be4-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-ef8a900692712be4-1.digest new file mode 100644 index 000000000..33e984f63 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-ef8a900692712be4-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: LightDegenerateShape, kind: Skipped, count: 2, prims: ["/World/b", "/World/a"], message: "RectLight at /World/b: width 0 × height 1 must be finite and positive — skipped" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-f1cbf14d6569cda8-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-f1cbf14d6569cda8-1.digest new file mode 100644 index 000000000..081a0e684 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-f1cbf14d6569cda8-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 2, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=2:1778ed3b2c04ba78 camera=2:1778ed3b2c04ba78 shadow=2:1778ed3b2c04ba78 indirect=2:1778ed3b2c04ba78 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/N +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-f3300bdef5e06140-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-f3300bdef5e06140-1.digest new file mode 100644 index 000000000..a27e08972 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-f3300bdef5e06140-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-f33567936d2468ed-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-f33567936d2468ed-1.digest new file mode 100644 index 000000000..219747f90 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-f33567936d2468ed-1.digest @@ -0,0 +1,33 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 7.0), lower_left_corner: Vec3A(-5.6632595, -1.6855836, -3.0), horizontal: Vec3A(11.326519, 0.0, 0.0), vertical: Vec3A(0.0, 6.371167, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 4, width: 128, height: 72, region: PixelRect { x0: 0, y0: 0, x1: 128, y1: 72 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/comp", name: "mv.exr", vars: [AovVar { prim_path: "/Render/comp/C", name: "C", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/comp/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/comp/forward", name: "forward", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stage.usda", "$ROOT/samples/animation.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/animation.usda +layer: $DIR/stage.usda +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9de8214b59f6ec57 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:9de8214b59f6ec57 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:be0b97004c4d3e85 camera=2:be0b97004c4d3e85 shadow=2:be0b97004c4d3e85 indirect=2:be0b97004c4d3e85 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:04a229f6b721d5f0 camera=2:04a229f6b721d5f0 shadow=2:04a229f6b721d5f0 indirect=2:04a229f6b721d5f0 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.22222222, 0.0, 0.0))] pieces all=1:eca0c2f96d67613b camera=1:eca0c2f96d67613b shadow=1:eca0c2f96d67613b indirect=1:eca0c2f96d67613b +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 4..4 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Card +provenance geometry 3..4: /World/Mover +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16680805309457723353, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4602678819172646912], interval: Some([4617315517961601024, 4617878467915022336]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-fbc457cd2253b427-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-fbc457cd2253b427-1.digest new file mode 100644 index 000000000..8d6da04c0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-fbc457cd2253b427-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 4, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=4:181bf424aa0de76e camera=4:181bf424aa0de76e shadow=4:181bf424aa0de76e indirect=4:181bf424aa0de76e +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-fec7a3f24112f4ad-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-fec7a3f24112f4ad-1.digest new file mode 100644 index 000000000..70d698b97 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-fec7a3f24112f4ad-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CurvesUnsupportedPrimvar, kind: Skipped, count: 1, prims: ["/World/C"], message: "/World/C: primvars:label is a string, which curves do not read (float, float2, float3, color3f, int) — the material reads its default there" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, true, ["label"])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:ba28ac43777139fb camera=1:ba28ac43777139fb shadow=1:ba28ac43777139fb indirect=1:ba28ac43777139fb +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-ffdbda6eb16c3b7d-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-ffdbda6eb16c3b7d-1.digest new file mode 100644 index 000000000..45f4d4534 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-ffdbda6eb16c3b7d-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stage.usda"], invisible_overrides: Some(0) } +layer: $DIR/stage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: true, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some(["ramp"]) } class 65535 holdout false transparent false map None uv None shading Some(0) strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f842628536678af5 camera=4:f842628536678af5 shadow=4:f842628536678af5 indirect=4:f842628536678af5 +provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Q +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7300176459579144609, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/static_vectors_usda-fae85e3b03a2883e-1.digest b/crates/crust-core/tests/data/import_baselines/static_vectors_usda-fae85e3b03a2883e-1.digest new file mode 100644 index 000000000..8684d3620 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/static_vectors_usda-fae85e3b03a2883e-1.digest @@ -0,0 +1,20 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/comp", name: "static.exr", vars: [AovVar { prim_path: "/Render/comp/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/comp/forward", name: "forward", channel_prefix: None, source: MotionVector, components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/static_vectors.usda", "$DIR/static_vectors_base.usda"], invisible_overrides: Some(0) } +layer: $DIR/static_vectors.usda +layer: $DIR/static_vectors_base.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.0, 0.0, 0.0))] pieces all=1:f548d1d419575bc7 camera=1:f548d1d419575bc7 shadow=1:f548d1d419575bc7 indirect=1:f548d1d419575bc7 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Ball +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/static_with_usda-9af9d7b39f92f260-1.digest b/crates/crust-core/tests/data/import_baselines/static_with_usda-9af9d7b39f92f260-1.digest new file mode 100644 index 000000000..185b63b53 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/static_with_usda-9af9d7b39f92f260-1.digest @@ -0,0 +1,21 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: true, layer_stack: ["$DIR/static_with.usda"], invisible_overrides: Some(0) } +layer: $DIR/static_with.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8f5d9187c4202473 camera=2:8f5d9187c4202473 shadow=2:8f5d9187c4202473 indirect=2:8f5d9187c4202473 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Card +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/static_without_usda-cd73d9530ee2de09-1.digest b/crates/crust-core/tests/data/import_baselines/static_without_usda-cd73d9530ee2de09-1.digest new file mode 100644 index 000000000..8a708f792 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/static_without_usda-cd73d9530ee2de09-1.digest @@ -0,0 +1,21 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/static_without.usda"], invisible_overrides: Some(0) } +layer: $DIR/static_without.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8f5d9187c4202473 camera=2:8f5d9187c4202473 shadow=2:8f5d9187c4202473 indirect=2:8f5d9187c4202473 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Card +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stats_usda-00e508bd2c5eb608-1.digest b/crates/crust-core/tests/data/import_baselines/stats_usda-00e508bd2c5eb608-1.digest new file mode 100644 index 000000000..73b68364e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stats_usda-00e508bd2c5eb608-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/stats.usda"], invisible_overrides: Some(0) } +layer: $DIR/stats.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/L") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 0, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1c540e668befdb85 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:1c540e668befdb85 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d46e920fbc035ae5 camera=1:d46e920fbc035ae5 shadow=1:d46e920fbc035ae5 indirect=1:d46e920fbc035ae5 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/L +provenance geometry 1..2: /World/B +provenance geometry 2..3: /World/A +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/stops_usda-f48d13a255e8b51e-1.digest b/crates/crust-core/tests/data/import_baselines/stops_usda-f48d13a255e8b51e-1.digest new file mode 100644 index 000000000..df6cbe018 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stops_usda-f48d13a255e8b51e-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 4.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/stops.usda"], invisible_overrides: Some(0) } +layer: $DIR/stops.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/strategy_balance_usda-bdbde883917b565d-1.digest b/crates/crust-core/tests/data/import_baselines/strategy_balance_usda-bdbde883917b565d-1.digest new file mode 100644 index 000000000..bfbc2a9ec --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/strategy_balance_usda-bdbde883917b565d-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/strategy_balance.usda"], invisible_overrides: Some(0) } +layer: $DIR/strategy_balance.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/strategy_bogus_usda-ab14768d89b4fe10-1.digest b/crates/crust-core/tests/data/import_baselines/strategy_bogus_usda-ab14768d89b4fe10-1.digest new file mode 100644 index 000000000..d2f80ab14 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/strategy_bogus_usda-ab14768d89b4fe10-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/strategy_bogus.usda"], invisible_overrides: Some(0) } +layer: $DIR/strategy_bogus.usda +warning: Warning { code: SettingsInvalidValue, kind: Refused, count: 1, prims: ["/Render/settings"], message: "crust:samplingStrategy: unknown sampling strategy \"banana\" (expected power | balance | light | bsdf) — using power MIS" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/strategy_bsdf_usda-f7c53ec9f704be37-1.digest b/crates/crust-core/tests/data/import_baselines/strategy_bsdf_usda-f7c53ec9f704be37-1.digest new file mode 100644 index 000000000..93846ffc7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/strategy_bsdf_usda-f7c53ec9f704be37-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BsdfOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/strategy_bsdf.usda"], invisible_overrides: Some(0) } +layer: $DIR/strategy_bsdf.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/strategy_light_usda-ec65e0dfb065b1f1-1.digest b/crates/crust-core/tests/data/import_baselines/strategy_light_usda-ec65e0dfb065b1f1-1.digest new file mode 100644 index 000000000..c602b6590 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/strategy_light_usda-ec65e0dfb065b1f1-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: LightOnly, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/strategy_light.usda"], invisible_overrides: Some(0) } +layer: $DIR/strategy_light.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/strategy_power_usda-03788414ab51c35f-1.digest b/crates/crust-core/tests/data/import_baselines/strategy_power_usda-03788414ab51c35f-1.digest new file mode 100644 index 000000000..7618b76f0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/strategy_power_usda-03788414ab51c35f-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/strategy_power.usda"], invisible_overrides: Some(0) } +layer: $DIR/strategy_power.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/streamed_usda-08988239fcd84b0c-1.digest b/crates/crust-core/tests/data/import_baselines/streamed_usda-08988239fcd84b0c-1.digest new file mode 100644 index 000000000..5b824d211 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/streamed_usda-08988239fcd84b0c-1.digest @@ -0,0 +1,28 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/streamed.usda"], invisible_overrides: Some(0) } +layer: $DIR/streamed.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 0, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:9d94b40ec65de025 camera=1:9d94b40ec65de025 shadow=1:9d94b40ec65de025 indirect=1:9d94b40ec65de025 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1be64b9e0ddad3f8 camera=1:1be64b9e0ddad3f8 shadow=1:1be64b9e0ddad3f8 indirect=1:1be64b9e0ddad3f8 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d46e920fbc035ae5 camera=1:d46e920fbc035ae5 shadow=1:d46e920fbc035ae5 indirect=1:d46e920fbc035ae5 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b9b61d00035a45 camera=1:c0b9b61d00035a45 shadow=1:c0b9b61d00035a45 indirect=1:c0b9b61d00035a45 +provenance material /World/Looks/M: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance geometry 0..1: /World/S0 +provenance geometry 1..2: /World/S1 +provenance geometry 2..3: /World/S2 +provenance geometry 3..4: /World/S3 +provenance geometry 4..5: /World/S4 +provenance spheres: [0, 1, 2, 3, 4] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/streamed_usda-274e7e68b089c3ac-1.digest b/crates/crust-core/tests/data/import_baselines/streamed_usda-274e7e68b089c3ac-1.digest new file mode 100644 index 000000000..136b80c0d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/streamed_usda-274e7e68b089c3ac-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/W/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/streamed.usda"], invisible_overrides: Some(0) } +layer: $DIR/streamed.usda +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1200, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:bb9aeaae01563c51 camera=768:bb9aeaae01563c51 shadow=768:bb9aeaae01563c51 indirect=768:bb9aeaae01563c51 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=432:acd7359f035cf995 camera=432:acd7359f035cf995 shadow=432:acd7359f035cf995 indirect=432:acd7359f035cf995 +provenance geometry 0..1: /A +provenance geometry 1..2: /B +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13487480004083563611, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11483454623663573887, n_points: 218, n_indices: 1296, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/W/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/string_id_usda-4ef78239c4d0e1cc-1.digest b/crates/crust-core/tests/data/import_baselines/string_id_usda-4ef78239c4d0e1cc-1.digest new file mode 100644 index 000000000..2db79b291 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/string_id_usda-4ef78239c4d0e1cc-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/string_id.usda"], invisible_overrides: Some(0) } +layer: $DIR/string_id.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=8:781080fc8e9e0af5 camera=8:781080fc8e9e0af5 shadow=8:781080fc8e9e0af5 indirect=8:781080fc8e9e0af5 +provenance material /World/Rock: MaterialOrigin { slots: [0], displaced: true } +provenance geometry 0..1: /World/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 485570829870313581, n_points: 9, n_indices: 16, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/string_usda-edd62f0c52a0bd52-1.digest b/crates/crust-core/tests/data/import_baselines/string_usda-edd62f0c52a0bd52-1.digest new file mode 100644 index 000000000..6fdfcbce5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/string_usda-edd62f0c52a0bd52-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/label", name: "label", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/string.usda"], invisible_overrides: Some(0) } +layer: $DIR/string.usda +warning: Warning { code: PrimvarMismatch, kind: Skipped, count: 1, prims: ["/World/mesh"], message: "/Render/label asks for primvar \"label\" as 1 component(s), but /World/mesh authors it as string (no numeric value of one to three components per element); that prim reads the clear value" } +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32f1a52c797bfee5 camera=2:32f1a52c797bfee5 shadow=2:32f1a52c797bfee5 indirect=2:32f1a52c797bfee5 +provenance light /World/dome: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/mesh +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16756132900457544540, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("label", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/strip_cracks_usda-5cdf0130b2848b76-1.digest b/crates/crust-core/tests/data/import_baselines/strip_cracks_usda-5cdf0130b2848b76-1.digest new file mode 100644 index 000000000..6878dc86e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/strip_cracks_usda-5cdf0130b2848b76-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/strip_cracks.usda"], invisible_overrides: Some(0) } +layer: $DIR/strip_cracks.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 112291, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 112291, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=112291:7ea7c978acd3a676 camera=112291:7ea7c978acd3a676 shadow=112291:7ea7c978acd3a676 indirect=112291:7ea7c978acd3a676 +provenance geometry 0..1: /W/Strip +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13966500460057317815, n_points: 59340, n_indices: 336873, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/strip_usda-a747742859825b3a-1.digest b/crates/crust-core/tests/data/import_baselines/strip_usda-a747742859825b3a-1.digest new file mode 100644 index 000000000..6353d0da7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/strip_usda-a747742859825b3a-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/strip.usda"], invisible_overrides: Some(0) } +layer: $DIR/strip.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 126691, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 126691, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=126691:41bb67776dc8d7b3 camera=126691:41bb67776dc8d7b3 shadow=126691:41bb67776dc8d7b3 indirect=126691:41bb67776dc8d7b3 +provenance geometry 0..1: /W/Strip +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5200819178695756285, n_points: 68340, n_indices: 380073, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_0_usda-6db126ded01c4707-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_0_usda-6db126ded01c4707-1.digest new file mode 100644 index 000000000..ccaea2ea2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_0_usda-6db126ded01c4707-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_0.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_0.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:722462f98b2cf305 camera=12:722462f98b2cf305 shadow=12:722462f98b2cf305 indirect=12:722462f98b2cf305 +provenance geometry 0..1: /World/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_1_usda-bde0e042f33df4a5-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_1_usda-bde0e042f33df4a5-1.digest new file mode 100644 index 000000000..5f13588e9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_1_usda-bde0e042f33df4a5-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_1.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 48, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 48, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:5716bd3df4bea055 camera=48:5716bd3df4bea055 shadow=48:5716bd3df4bea055 indirect=48:5716bd3df4bea055 +provenance geometry 0..1: /World/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7668848715455400612, n_points: 26, n_indices: 96, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_2_usda-47f822571f7427d3-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_2_usda-47f822571f7427d3-1.digest new file mode 100644 index 000000000..1485c0bcc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_2_usda-47f822571f7427d3-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_2.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 192, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:e64844954f934f25 camera=192:e64844954f934f25 shadow=192:e64844954f934f25 indirect=192:e64844954f934f25 +provenance geometry 0..1: /World/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5789864894772039601, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_bilinear_usda-287ba8f91aef206f-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_bilinear_usda-287ba8f91aef206f-1.digest new file mode 100644 index 000000000..f5c98b679 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_bilinear_usda-287ba8f91aef206f-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_bilinear.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_bilinear.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 48, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 48, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:851d83468f6410a5 camera=48:851d83468f6410a5 shadow=48:851d83468f6410a5 indirect=48:851d83468f6410a5 +provenance geometry 0..1: /World/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13808998999592966347, n_points: 26, n_indices: 96, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_cage_usda-17f666e1e5c6d08f-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_cage_usda-17f666e1e5c6d08f-1.digest new file mode 100644 index 000000000..e2033479e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_cage_usda-17f666e1e5c6d08f-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_cage.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_cage.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:722462f98b2cf305 camera=12:722462f98b2cf305 shadow=12:722462f98b2cf305 indirect=12:722462f98b2cf305 +provenance geometry 0..1: /World/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_clamped_usda-01685ab19e968980-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_clamped_usda-01685ab19e968980-1.digest new file mode 100644 index 000000000..2f65aa7f9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_clamped_usda-01685ab19e968980-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_clamped.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_clamped.usda +warning: Warning { code: SubdivLevelClamped, kind: Approximated, count: 1, prims: [], message: "Subdivision level 40 from crust:subdivisionLevel clamped to 6" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 49152, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 49152, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=49152:5f7ae9b0032fd5dd camera=49152:5f7ae9b0032fd5dd shadow=49152:5f7ae9b0032fd5dd indirect=49152:5f7ae9b0032fd5dd +provenance geometry 0..1: /World/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1422250545753333406, n_points: 24578, n_indices: 98304, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_default_usda-be76976c79a95643-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_default_usda-be76976c79a95643-1.digest new file mode 100644 index 000000000..c2db1368d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_default_usda-be76976c79a95643-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_default.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_default.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:722462f98b2cf305 camera=12:722462f98b2cf305 shadow=12:722462f98b2cf305 indirect=12:722462f98b2cf305 +provenance geometry 0..1: /World/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_key_faceted_first_usda-510113487f701e14-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_key_faceted_first_usda-510113487f701e14-1.digest new file mode 100644 index 000000000..ac157416b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_key_faceted_first_usda-510113487f701e14-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_key_faceted_first.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_key_faceted_first.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 24, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 24, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:ad19041182dcd9a5 camera=12:ad19041182dcd9a5 shadow=12:ad19041182dcd9a5 indirect=12:ad19041182dcd9a5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:8f6a449f0679f4a5 camera=12:8f6a449f0679f4a5 shadow=12:8f6a449f0679f4a5 indirect=12:8f6a449f0679f4a5 +provenance material /World/Looks/Grey: MaterialOrigin { slots: [0, 1], displaced: false } +provenance geometry 0..1: /World/Smooth +provenance geometry 1..2: /World/Faceted +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_key_smooth_first_usda-9375effdf17e1f42-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_key_smooth_first_usda-9375effdf17e1f42-1.digest new file mode 100644 index 000000000..923ae977d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_key_smooth_first_usda-9375effdf17e1f42-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_key_smooth_first.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_key_smooth_first.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 24, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 24, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:8f6a449f0679f4a5 camera=12:8f6a449f0679f4a5 shadow=12:8f6a449f0679f4a5 indirect=12:8f6a449f0679f4a5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:ad19041182dcd9a5 camera=12:ad19041182dcd9a5 shadow=12:ad19041182dcd9a5 indirect=12:ad19041182dcd9a5 +provenance material /World/Looks/Grey: MaterialOrigin { slots: [0, 1], displaced: false } +provenance geometry 0..1: /World/Faceted +provenance geometry 1..2: /World/Smooth +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_legacy_usda-e769c33757ced97c-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_legacy_usda-e769c33757ced97c-1.digest new file mode 100644 index 000000000..a2e56bdf3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_legacy_usda-e769c33757ced97c-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_legacy.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_legacy.usda +warning: Warning { code: SubdivLegacyLevel, kind: Skipped, count: 1, prims: ["/World/Cube"], message: "Mesh at /World/Cube: the per-prim crust:subdivisionLevel is no longer read — a mesh is subdivided when it authors subdivisionScheme, to the level set by crust:subdivisionLevel on the RenderSettings prim or --subdiv-level (further occurrences are counted in the import's warnings)" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:722462f98b2cf305 camera=12:722462f98b2cf305 shadow=12:722462f98b2cf305 indirect=12:722462f98b2cf305 +provenance geometry 0..1: /World/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_level0_usda-436132ac852dd08e-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_level0_usda-436132ac852dd08e-1.digest new file mode 100644 index 000000000..fc3f6f7b7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_level0_usda-436132ac852dd08e-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_level0.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_level0.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:722462f98b2cf305 camera=12:722462f98b2cf305 shadow=12:722462f98b2cf305 indirect=12:722462f98b2cf305 +provenance geometry 0..1: /World/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_loop_quads_usda-1e8f941ca190d506-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_loop_quads_usda-1e8f941ca190d506-1.digest new file mode 100644 index 000000000..3f0af0e46 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_loop_quads_usda-1e8f941ca190d506-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_loop_quads.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_loop_quads.usda +warning: Warning { code: SubdivLoopNeedsTriangles, kind: Approximated, count: 1, prims: ["/World/Cube"], message: "Mesh at /World/Cube: subdivisionScheme = loop needs an all-triangle mesh — rendering the base cage" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:722462f98b2cf305 camera=12:722462f98b2cf305 shadow=12:722462f98b2cf305 indirect=12:722462f98b2cf305 +provenance geometry 0..1: /World/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_none_faceted_usda-7ad44c4961677420-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_none_faceted_usda-7ad44c4961677420-1.digest new file mode 100644 index 000000000..9b7d8dcfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_none_faceted_usda-7ad44c4961677420-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_none_faceted.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_none_faceted.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:722462f98b2cf305 camera=12:722462f98b2cf305 shadow=12:722462f98b2cf305 indirect=12:722462f98b2cf305 +provenance geometry 0..1: /World/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-38f763827a18343d-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-38f763827a18343d-1.digest new file mode 100644 index 000000000..ed1fdb3b1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-38f763827a18343d-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_none.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_none.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:722462f98b2cf305 camera=12:722462f98b2cf305 shadow=12:722462f98b2cf305 indirect=12:722462f98b2cf305 +provenance geometry 0..1: /World/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-aea9b45539bdf216-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-aea9b45539bdf216-1.digest new file mode 100644 index 000000000..21bcb367a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-aea9b45539bdf216-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_none.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_none.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:a8f4b3e2f9e3d205 camera=12:a8f4b3e2f9e3d205 shadow=12:a8f4b3e2f9e3d205 indirect=12:a8f4b3e2f9e3d205 +provenance geometry 0..1: /W/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16234188082663099353, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-347cb15990d5b2db-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-347cb15990d5b2db-1.digest new file mode 100644 index 000000000..85a341368 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-347cb15990d5b2db-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_override.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_override.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 768, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 768, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:323308a3061f196d camera=768:323308a3061f196d shadow=768:323308a3061f196d indirect=768:323308a3061f196d +provenance geometry 0..1: /World/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6811870252920726220, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-4180b38ea57c9096-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-4180b38ea57c9096-1.digest new file mode 100644 index 000000000..77b28caa5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-4180b38ea57c9096-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_override.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_override.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:722462f98b2cf305 camera=12:722462f98b2cf305 shadow=12:722462f98b2cf305 indirect=12:722462f98b2cf305 +provenance geometry 0..1: /World/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-633f8e7fec39c727-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-633f8e7fec39c727-1.digest new file mode 100644 index 000000000..f9d959a0e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-633f8e7fec39c727-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_override.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_override.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 48, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 48, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:5716bd3df4bea055 camera=48:5716bd3df4bea055 shadow=48:5716bd3df4bea055 indirect=48:5716bd3df4bea055 +provenance geometry 0..1: /World/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7668848715455400612, n_points: 26, n_indices: 96, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rest_15_usda-dcdc5eeb73b7d3e8-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_rest_15_usda-dcdc5eeb73b7d3e8-1.digest new file mode 100644 index 000000000..1029ad2da --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rest_15_usda-dcdc5eeb73b7d3e8-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/subdiv_rest_15.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_rest_15.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 768, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 768, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=768:1448a6168e2b11fd camera=768:1448a6168e2b11fd shadow=768:1448a6168e2b11fd indirect=768:1448a6168e2b11fd +provenance light /World/dome: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 890298128050539104, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rest_8_usda-c9f6f9ef6bd5e50d-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_rest_8_usda-c9f6f9ef6bd5e50d-1.digest new file mode 100644 index 000000000..8a25c5e97 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rest_8_usda-c9f6f9ef6bd5e50d-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/subdiv_rest_8.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_rest_8.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 762, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 762, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=762:ce10b44f81e44647 camera=762:ce10b44f81e44647 shadow=762:ce10b44f81e44647 indirect=762:ce10b44f81e44647 +provenance light /World/dome: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12027994692895467752, n_points: 383, n_indices: 2286, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 1092616192, 1122308082, 0, 0, 1092616192, 3212836864, 0, 3193345093, 1065353216, 0, 3193345093, 0, 3212836864, 3189829428, 0, 1065353216, 3189829428, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rule_all_usda-7c4745bac0fe1ad7-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_rule_all_usda-7c4745bac0fe1ad7-1.digest new file mode 100644 index 000000000..8aa128e1f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rule_all_usda-7c4745bac0fe1ad7-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_rule_all.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_rule_all.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=32:98445e4ef6263805 camera=32:98445e4ef6263805 shadow=32:98445e4ef6263805 indirect=32:98445e4ef6263805 +provenance material /World/Looks/Mtl: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10574267906873308772, n_points: 25, n_indices: 64, n_uvs: Some(25), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rule_boundaries_usda-3c0d79de547dbc49-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_rule_boundaries_usda-3c0d79de547dbc49-1.digest new file mode 100644 index 000000000..b323245f3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rule_boundaries_usda-3c0d79de547dbc49-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_rule_boundaries.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_rule_boundaries.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=32:98445e4ef6263805 camera=32:98445e4ef6263805 shadow=32:98445e4ef6263805 indirect=32:98445e4ef6263805 +provenance material /World/Looks/Mtl: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10124617692305081626, n_points: 25, n_indices: 64, n_uvs: Some(25), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersOnly_usda-3a7940237cbe0a3d-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersOnly_usda-3a7940237cbe0a3d-1.digest new file mode 100644 index 000000000..d0ce793a0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersOnly_usda-3a7940237cbe0a3d-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_rule_cornersOnly.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_rule_cornersOnly.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=32:98445e4ef6263805 camera=32:98445e4ef6263805 shadow=32:98445e4ef6263805 indirect=32:98445e4ef6263805 +provenance material /World/Looks/Mtl: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10124617692305081626, n_points: 25, n_indices: 64, n_uvs: Some(25), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus1_usda-10da8f737cfaea1d-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus1_usda-10da8f737cfaea1d-1.digest new file mode 100644 index 000000000..188a79f7f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus1_usda-10da8f737cfaea1d-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_rule_cornersPlus1.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_rule_cornersPlus1.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=32:98445e4ef6263805 camera=32:98445e4ef6263805 shadow=32:98445e4ef6263805 indirect=32:98445e4ef6263805 +provenance material /World/Looks/Mtl: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10124617692305081626, n_points: 25, n_indices: 64, n_uvs: Some(25), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus2_usda-7ab350be92df8201-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus2_usda-7ab350be92df8201-1.digest new file mode 100644 index 000000000..ceae1d08c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus2_usda-7ab350be92df8201-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_rule_cornersPlus2.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_rule_cornersPlus2.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=32:98445e4ef6263805 camera=32:98445e4ef6263805 shadow=32:98445e4ef6263805 indirect=32:98445e4ef6263805 +provenance material /World/Looks/Mtl: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10124617692305081626, n_points: 25, n_indices: 64, n_uvs: Some(25), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rule_none_usda-86622a148177c839-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_rule_none_usda-86622a148177c839-1.digest new file mode 100644 index 000000000..4506987f8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rule_none_usda-86622a148177c839-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_rule_none.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_rule_none.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=32:98445e4ef6263805 camera=32:98445e4ef6263805 shadow=32:98445e4ef6263805 indirect=32:98445e4ef6263805 +provenance material /World/Looks/Mtl: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10124617692305081626, n_points: 25, n_indices: 64, n_uvs: Some(25), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_smooth_usda-ecacf29cbe8c3a69-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_smooth_usda-ecacf29cbe8c3a69-1.digest new file mode 100644 index 000000000..8e85eea80 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_smooth_usda-ecacf29cbe8c3a69-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_smooth.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_smooth.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 768, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 768, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:323308a3061f196d camera=768:323308a3061f196d shadow=768:323308a3061f196d indirect=768:323308a3061f196d +provenance geometry 0..1: /World/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6811870252920726220, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_streamed_usda-6897e2d021bbe857-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_streamed_usda-6897e2d021bbe857-1.digest new file mode 100644 index 000000000..857667263 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_streamed_usda-6897e2d021bbe857-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_streamed.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_streamed.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 48, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:5716bd3df4bea055 camera=48:5716bd3df4bea055 shadow=48:5716bd3df4bea055 indirect=48:5716bd3df4bea055 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:ce4166a9a1b841e5 camera=48:ce4166a9a1b841e5 shadow=48:ce4166a9a1b841e5 indirect=48:ce4166a9a1b841e5 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:ce3f589a90debe65 camera=48:ce3f589a90debe65 shadow=48:ce3f589a90debe65 indirect=48:ce3f589a90debe65 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:7904d0733a1a8e65 camera=48:7904d0733a1a8e65 shadow=48:7904d0733a1a8e65 indirect=48:7904d0733a1a8e65 +provenance geometry 0..1: /World/Cube0 +provenance geometry 1..2: /World/Cube1 +provenance geometry 2..3: /World/Cube2 +provenance geometry 3..4: /World/Cube3 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7668848715455400612, n_points: 26, n_indices: 96, n_uvs: None, smooth: true, material: 0 }), placements: 4, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_unauthored_usda-1f8d567cba520aee-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_unauthored_usda-1f8d567cba520aee-1.digest new file mode 100644 index 000000000..e68e4bd8b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_unauthored_usda-1f8d567cba520aee-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_unauthored.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_unauthored.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 768, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 768, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:323308a3061f196d camera=768:323308a3061f196d shadow=768:323308a3061f196d indirect=768:323308a3061f196d +provenance geometry 0..1: /World/Cube +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6811870252920726220, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_uv_fv_usda-5e00e8c1f3e1cc34-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_uv_fv_usda-5e00e8c1f3e1cc34-1.digest new file mode 100644 index 000000000..063236219 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_uv_fv_usda-5e00e8c1f3e1cc34-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_uv_fv.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_uv_fv.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=8:4cf8106e75555fa5 camera=8:4cf8106e75555fa5 shadow=8:4cf8106e75555fa5 indirect=8:4cf8106e75555fa5 +provenance material /World/Looks/Mtl: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11244973979129046869, n_points: 9, n_indices: 16, n_uvs: Some(9), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_uv_vertex_usda-b6cc7115ae3418dd-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_uv_vertex_usda-b6cc7115ae3418dd-1.digest new file mode 100644 index 000000000..5e5d15d34 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_uv_vertex_usda-b6cc7115ae3418dd-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/subdiv_uv_vertex.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdiv_uv_vertex.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=8:4cf8106e75555fa5 camera=8:4cf8106e75555fa5 shadow=8:4cf8106e75555fa5 indirect=8:4cf8106e75555fa5 +provenance material /World/Looks/Mtl: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10103364612324037507, n_points: 9, n_indices: 16, n_uvs: Some(9), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-4b5883574262488d-1.digest b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-4b5883574262488d-1.digest new file mode 100644 index 000000000..56da3fce8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-4b5883574262488d-1.digest @@ -0,0 +1,45 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 0.0), lower_left_corner: Vec3A(-2.0955, -0.6787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdivision_adaptive.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 254, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1022, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:c6523960f6a63cbd camera=48:c6523960f6a63cbd shadow=48:c6523960f6a63cbd indirect=48:c6523960f6a63cbd +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:fba6e41b7614f3a5 camera=192:fba6e41b7614f3a5 shadow=192:fba6e41b7614f3a5 indirect=192:fba6e41b7614f3a5 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:599da110e719724d camera=768:599da110e719724d shadow=768:599da110e719724d indirect=768:599da110e719724d +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:e38e45049fa014e1 camera=768:e38e45049fa014e1 shadow=768:e38e45049fa014e1 indirect=768:e38e45049fa014e1 +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 4, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9125125757038733368, n_points: 26, n_indices: 144, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6639708518727051630, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10122139134762046380, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 1 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1144971934, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-8765a889a888ae6b-1.digest b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-8765a889a888ae6b-1.digest new file mode 100644 index 000000000..56da3fce8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-8765a889a888ae6b-1.digest @@ -0,0 +1,45 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 0.0), lower_left_corner: Vec3A(-2.0955, -0.6787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdivision_adaptive.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 254, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1022, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:c6523960f6a63cbd camera=48:c6523960f6a63cbd shadow=48:c6523960f6a63cbd indirect=48:c6523960f6a63cbd +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:fba6e41b7614f3a5 camera=192:fba6e41b7614f3a5 shadow=192:fba6e41b7614f3a5 indirect=192:fba6e41b7614f3a5 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:599da110e719724d camera=768:599da110e719724d shadow=768:599da110e719724d indirect=768:599da110e719724d +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:e38e45049fa014e1 camera=768:e38e45049fa014e1 shadow=768:e38e45049fa014e1 indirect=768:e38e45049fa014e1 +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 4, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9125125757038733368, n_points: 26, n_indices: 144, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6639708518727051630, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10122139134762046380, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 1 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1144971934, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-95a3e0a9db67a1fb-1.digest b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-95a3e0a9db67a1fb-1.digest new file mode 100644 index 000000000..b85abf0fb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-95a3e0a9db67a1fb-1.digest @@ -0,0 +1,44 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 0.0), lower_left_corner: Vec3A(-2.0955, -0.6787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdivision_adaptive.usda +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 254, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1022, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:c6523960f6a63cbd camera=48:c6523960f6a63cbd shadow=48:c6523960f6a63cbd indirect=48:c6523960f6a63cbd +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:fba6e41b7614f3a5 camera=192:fba6e41b7614f3a5 shadow=192:fba6e41b7614f3a5 indirect=192:fba6e41b7614f3a5 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:599da110e719724d camera=768:599da110e719724d shadow=768:599da110e719724d indirect=768:599da110e719724d +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:e38e45049fa014e1 camera=768:e38e45049fa014e1 shadow=768:e38e45049fa014e1 indirect=768:e38e45049fa014e1 +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 4, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9125125757038733368, n_points: 26, n_indices: 144, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6639708518727051630, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10122139134762046380, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 1 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1144971934, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-1.digest b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-1.digest new file mode 100644 index 000000000..56da3fce8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-1.digest @@ -0,0 +1,45 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 0.0), lower_left_corner: Vec3A(-2.0955, -0.6787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdivision_adaptive.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 254, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1022, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:c6523960f6a63cbd camera=48:c6523960f6a63cbd shadow=48:c6523960f6a63cbd indirect=48:c6523960f6a63cbd +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:fba6e41b7614f3a5 camera=192:fba6e41b7614f3a5 shadow=192:fba6e41b7614f3a5 indirect=192:fba6e41b7614f3a5 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:599da110e719724d camera=768:599da110e719724d shadow=768:599da110e719724d indirect=768:599da110e719724d +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:e38e45049fa014e1 camera=768:e38e45049fa014e1 shadow=768:e38e45049fa014e1 indirect=768:e38e45049fa014e1 +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 4, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9125125757038733368, n_points: 26, n_indices: 144, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6639708518727051630, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10122139134762046380, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 1 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1144971934, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-2.digest b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-2.digest new file mode 100644 index 000000000..56da3fce8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-2.digest @@ -0,0 +1,45 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.5, 0.0), lower_left_corner: Vec3A(-2.0955, -0.6787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/subdivision_adaptive.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdivision_adaptive.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 254, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1022, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4d8d0a8634ac849c camera=2:4d8d0a8634ac849c shadow=2:4d8d0a8634ac849c indirect=2:4d8d0a8634ac849c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:9b9b8ee224ae5549 camera=12:9b9b8ee224ae5549 shadow=12:9b9b8ee224ae5549 indirect=12:9b9b8ee224ae5549 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:c6523960f6a63cbd camera=48:c6523960f6a63cbd shadow=48:c6523960f6a63cbd indirect=48:c6523960f6a63cbd +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:fba6e41b7614f3a5 camera=192:fba6e41b7614f3a5 shadow=192:fba6e41b7614f3a5 indirect=192:fba6e41b7614f3a5 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:599da110e719724d camera=768:599da110e719724d shadow=768:599da110e719724d indirect=768:599da110e719724d +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=768:e38e45049fa014e1 camera=768:e38e45049fa014e1 shadow=768:e38e45049fa014e1 indirect=768:e38e45049fa014e1 +provenance material /World/Materials/clay: MaterialOrigin { slots: [1, 2, 3, 4, 5], displaced: false } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 6..6 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Cube5 +provenance geometry 2..3: /World/Cube4 +provenance geometry 3..4: /World/Cube3 +provenance geometry 4..5: /World/Cube2 +provenance geometry 5..6: /World/Cube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 4, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2079923942787246473, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9125125757038733368, n_points: 26, n_indices: 144, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6639708518727051630, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10122139134762046380, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 1 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1144971934, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_usda-093423ee46de2ab4-1.digest b/crates/crust-core/tests/data/import_baselines/subdivision_usda-093423ee46de2ab4-1.digest new file mode 100644 index 000000000..b7ec2b8b2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdivision_usda-093423ee46de2ab4-1.digest @@ -0,0 +1,56 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.5, 17.0), lower_left_corner: Vec3A(-7.551013, -2.4193983, 7.8894835), horizontal: Vec3A(15.102026, -0.0, 0.0), vertical: Vec3A(0.0, 8.365833, -1.4751221), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/subdivision.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdivision.usda +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 8 geometries, PrimitiveBreakdown { triangles: 976, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 976, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1f6ce7ff10fbd00c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1f6ce7ff10fbd00c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9ea5922e2246c6c5 camera=2:9ea5922e2246c6c5 shadow=2:9ea5922e2246c6c5 indirect=2:9ea5922e2246c6c5 +geom 2: material #2 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:7840fe2c141dfc8d camera=192:7840fe2c141dfc8d shadow=192:7840fe2c141dfc8d indirect=192:7840fe2c141dfc8d +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:a769be906b64daa5 camera=192:a769be906b64daa5 shadow=192:a769be906b64daa5 indirect=192:a769be906b64daa5 +geom 4: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:71d1eafb60fc6cb1 camera=192:71d1eafb60fc6cb1 shadow=192:71d1eafb60fc6cb1 indirect=192:71d1eafb60fc6cb1 +geom 5: material #5 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:0e16ab2cc684f225 camera=192:0e16ab2cc684f225 shadow=192:0e16ab2cc684f225 indirect=192:0e16ab2cc684f225 +geom 6: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:83e01b8ae3269cc5 camera=12:83e01b8ae3269cc5 shadow=12:83e01b8ae3269cc5 indirect=12:83e01b8ae3269cc5 +geom 7: material #7 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:8e974c5245414bcd camera=192:8e974c5245414bcd shadow=192:8e974c5245414bcd indirect=192:8e974c5245414bcd +provenance material /World/Materials/amber: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/blue: MaterialOrigin { slots: [7], displaced: false } +provenance material /World/Materials/checker: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/green: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Materials/red: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/teal: MaterialOrigin { slots: [6], displaced: false } +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 8..8 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/CubeTextured +provenance geometry 3..4: /World/CubeCreased +provenance geometry 4..5: /World/CubeCatmullClark +provenance geometry 5..6: /World/CubeBilinear +provenance geometry 6..7: /World/CubeNone +provenance geometry 7..8: /World/CubeCage +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 6, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11663793508701957868, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3674895141745399482, n_points: 98, n_indices: 384, n_uvs: Some(150), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3479353540423503200, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9922834378028892030, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3479353540423503200, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 4 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16234188082663099353, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 5 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9922834378028892030, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 6 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-1.digest b/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-1.digest new file mode 100644 index 000000000..8696e4a5f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-1.digest @@ -0,0 +1,57 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.5, 17.0), lower_left_corner: Vec3A(-7.551013, -2.4193983, 7.8894835), horizontal: Vec3A(15.102026, -0.0, 0.0), vertical: Vec3A(0.0, 8.365833, -1.4751221), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/subdivision.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdivision.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 2, prims: [], message: "Asset loader does not decode UV textures: $DIR/textures/usdpreview_albedo.exr ignored — the input falls back to its constant value." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 8 geometries, PrimitiveBreakdown { triangles: 976, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 976, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1f6ce7ff10fbd00c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1f6ce7ff10fbd00c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9ea5922e2246c6c5 camera=2:9ea5922e2246c6c5 shadow=2:9ea5922e2246c6c5 indirect=2:9ea5922e2246c6c5 +geom 2: material #2 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:7840fe2c141dfc8d camera=192:7840fe2c141dfc8d shadow=192:7840fe2c141dfc8d indirect=192:7840fe2c141dfc8d +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:a769be906b64daa5 camera=192:a769be906b64daa5 shadow=192:a769be906b64daa5 indirect=192:a769be906b64daa5 +geom 4: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:71d1eafb60fc6cb1 camera=192:71d1eafb60fc6cb1 shadow=192:71d1eafb60fc6cb1 indirect=192:71d1eafb60fc6cb1 +geom 5: material #5 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:0e16ab2cc684f225 camera=192:0e16ab2cc684f225 shadow=192:0e16ab2cc684f225 indirect=192:0e16ab2cc684f225 +geom 6: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:83e01b8ae3269cc5 camera=12:83e01b8ae3269cc5 shadow=12:83e01b8ae3269cc5 indirect=12:83e01b8ae3269cc5 +geom 7: material #7 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:8e974c5245414bcd camera=192:8e974c5245414bcd shadow=192:8e974c5245414bcd indirect=192:8e974c5245414bcd +provenance material /World/Materials/amber: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/blue: MaterialOrigin { slots: [7], displaced: false } +provenance material /World/Materials/checker: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/green: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Materials/red: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/teal: MaterialOrigin { slots: [6], displaced: false } +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 8..8 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/CubeTextured +provenance geometry 3..4: /World/CubeCreased +provenance geometry 4..5: /World/CubeCatmullClark +provenance geometry 5..6: /World/CubeBilinear +provenance geometry 6..7: /World/CubeNone +provenance geometry 7..8: /World/CubeCage +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 6, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11663793508701957868, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3674895141745399482, n_points: 98, n_indices: 384, n_uvs: Some(150), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3479353540423503200, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9922834378028892030, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3479353540423503200, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 4 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16234188082663099353, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 5 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9922834378028892030, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 6 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-2.digest b/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-2.digest new file mode 100644 index 000000000..8696e4a5f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-2.digest @@ -0,0 +1,57 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.5, 17.0), lower_left_corner: Vec3A(-7.551013, -2.4193983, 7.8894835), horizontal: Vec3A(15.102026, -0.0, 0.0), vertical: Vec3A(0.0, 8.365833, -1.4751221), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/subdivision.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdivision.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 2, prims: [], message: "Asset loader does not decode UV textures: $DIR/textures/usdpreview_albedo.exr ignored — the input falls back to its constant value." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 8 geometries, PrimitiveBreakdown { triangles: 976, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 976, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1f6ce7ff10fbd00c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1f6ce7ff10fbd00c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9ea5922e2246c6c5 camera=2:9ea5922e2246c6c5 shadow=2:9ea5922e2246c6c5 indirect=2:9ea5922e2246c6c5 +geom 2: material #2 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:7840fe2c141dfc8d camera=192:7840fe2c141dfc8d shadow=192:7840fe2c141dfc8d indirect=192:7840fe2c141dfc8d +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:a769be906b64daa5 camera=192:a769be906b64daa5 shadow=192:a769be906b64daa5 indirect=192:a769be906b64daa5 +geom 4: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:71d1eafb60fc6cb1 camera=192:71d1eafb60fc6cb1 shadow=192:71d1eafb60fc6cb1 indirect=192:71d1eafb60fc6cb1 +geom 5: material #5 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:0e16ab2cc684f225 camera=192:0e16ab2cc684f225 shadow=192:0e16ab2cc684f225 indirect=192:0e16ab2cc684f225 +geom 6: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:83e01b8ae3269cc5 camera=12:83e01b8ae3269cc5 shadow=12:83e01b8ae3269cc5 indirect=12:83e01b8ae3269cc5 +geom 7: material #7 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:8e974c5245414bcd camera=192:8e974c5245414bcd shadow=192:8e974c5245414bcd indirect=192:8e974c5245414bcd +provenance material /World/Materials/amber: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/blue: MaterialOrigin { slots: [7], displaced: false } +provenance material /World/Materials/checker: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/green: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Materials/red: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/teal: MaterialOrigin { slots: [6], displaced: false } +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 8..8 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/CubeTextured +provenance geometry 3..4: /World/CubeCreased +provenance geometry 4..5: /World/CubeCatmullClark +provenance geometry 5..6: /World/CubeBilinear +provenance geometry 6..7: /World/CubeNone +provenance geometry 7..8: /World/CubeCage +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 6, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11663793508701957868, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3674895141745399482, n_points: 98, n_indices: 384, n_uvs: Some(150), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3479353540423503200, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9922834378028892030, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3479353540423503200, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 4 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16234188082663099353, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 5 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9922834378028892030, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 6 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_usda-c1e09f9374aaab81-1.digest b/crates/crust-core/tests/data/import_baselines/subdivision_usda-c1e09f9374aaab81-1.digest new file mode 100644 index 000000000..8696e4a5f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdivision_usda-c1e09f9374aaab81-1.digest @@ -0,0 +1,57 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.5, 17.0), lower_left_corner: Vec3A(-7.551013, -2.4193983, 7.8894835), horizontal: Vec3A(15.102026, -0.0, 0.0), vertical: Vec3A(0.0, 8.365833, -1.4751221), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 4, width: 320, height: 180, region: PixelRect { x0: 0, y0: 0, x1: 320, y1: 180 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 18.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/subdivision.usda"], invisible_overrides: Some(0) } +layer: $DIR/subdivision.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 2, prims: [], message: "Asset loader does not decode UV textures: $DIR/textures/usdpreview_albedo.exr ignored — the input falls back to its constant value." } +lights: 2 +light 0: area name Some("/World/KeyLight") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 8 geometries, PrimitiveBreakdown { triangles: 976, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 976, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1f6ce7ff10fbd00c camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1f6ce7ff10fbd00c +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9ea5922e2246c6c5 camera=2:9ea5922e2246c6c5 shadow=2:9ea5922e2246c6c5 indirect=2:9ea5922e2246c6c5 +geom 2: material #2 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:7840fe2c141dfc8d camera=192:7840fe2c141dfc8d shadow=192:7840fe2c141dfc8d indirect=192:7840fe2c141dfc8d +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:a769be906b64daa5 camera=192:a769be906b64daa5 shadow=192:a769be906b64daa5 indirect=192:a769be906b64daa5 +geom 4: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:71d1eafb60fc6cb1 camera=192:71d1eafb60fc6cb1 shadow=192:71d1eafb60fc6cb1 indirect=192:71d1eafb60fc6cb1 +geom 5: material #5 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:0e16ab2cc684f225 camera=192:0e16ab2cc684f225 shadow=192:0e16ab2cc684f225 indirect=192:0e16ab2cc684f225 +geom 6: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:83e01b8ae3269cc5 camera=12:83e01b8ae3269cc5 shadow=12:83e01b8ae3269cc5 indirect=12:83e01b8ae3269cc5 +geom 7: material #7 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:8e974c5245414bcd camera=192:8e974c5245414bcd shadow=192:8e974c5245414bcd indirect=192:8e974c5245414bcd +provenance material /World/Materials/amber: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/blue: MaterialOrigin { slots: [7], displaced: false } +provenance material /World/Materials/checker: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/green: MaterialOrigin { slots: [5], displaced: false } +provenance material /World/Materials/red: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/teal: MaterialOrigin { slots: [6], displaced: false } +provenance light /World/KeyLight: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 8..8 } +provenance geometry 0..1: /World/KeyLight +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/CubeTextured +provenance geometry 3..4: /World/CubeCreased +provenance geometry 4..5: /World/CubeCatmullClark +provenance geometry 5..6: /World/CubeBilinear +provenance geometry 6..7: /World/CubeNone +provenance geometry 7..8: /World/CubeCage +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 6, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11663793508701957868, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3674895141745399482, n_points: 98, n_indices: 384, n_uvs: Some(150), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3479353540423503200, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9922834378028892030, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3479353540423503200, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 4 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16234188082663099353, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 5 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9922834378028892030, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 6 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sun_delta_usda-ea8cdfc115606b89-1.digest b/crates/crust-core/tests/data/import_baselines/sun_delta_usda-ea8cdfc115606b89-1.digest new file mode 100644 index 000000000..29c343157 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sun_delta_usda-ea8cdfc115606b89-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/sun_delta.usda"], invisible_overrides: Some(0) } +layer: $DIR/sun_delta.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sun_lux_usda-f3cb39d866e6c449-1.digest b/crates/crust-core/tests/data/import_baselines/sun_lux_usda-f3cb39d866e6c449-1.digest new file mode 100644 index 000000000..680f6a404 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sun_lux_usda-f3cb39d866e6c449-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/sun_lux.usda"], invisible_overrides: Some(0) } +layer: $DIR/sun_lux.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sun_narrow_usda-cc46151e1eb78ebf-1.digest b/crates/crust-core/tests/data/import_baselines/sun_narrow_usda-cc46151e1eb78ebf-1.digest new file mode 100644 index 000000000..0c49e7495 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sun_narrow_usda-cc46151e1eb78ebf-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/sun_narrow.usda"], invisible_overrides: Some(0) } +layer: $DIR/sun_narrow.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/sun_nits_usda-8ccba3be0d36785e-1.digest b/crates/crust-core/tests/data/import_baselines/sun_nits_usda-8ccba3be0d36785e-1.digest new file mode 100644 index 000000000..2c8564ac8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sun_nits_usda-8ccba3be0d36785e-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/sun_nits.usda"], invisible_overrides: Some(0) } +layer: $DIR/sun_nits.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: distant name Some("/World/Sun") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/supported_types_usda-5cac3f5a887f68e8-1.digest b/crates/crust-core/tests/data/import_baselines/supported_types_usda-5cac3f5a887f68e8-1.digest new file mode 100644 index 000000000..b59cae91e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/supported_types_usda-5cac3f5a887f68e8-1.digest @@ -0,0 +1,55 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/supported_types.usda"], invisible_overrides: Some(0) } +layer: $DIR/supported_types.usda +lights: 2 +light 0: area name Some("/World/lamp") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: distant name Some("/World/sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 1 +volume 0: sigma_s Vec3A(0.5, 0.5, 0.5) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 10 geometries, PrimitiveBreakdown { triangles: 159, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 2655, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:13c54b934599bf61 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:13c54b934599bf61 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d3f93325e3445105 camera=12:d3f93325e3445105 shadow=12:d3f93325e3445105 indirect=12:d3f93325e3445105 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1ce8f33592c1cce5 camera=2:1ce8f33592c1cce5 shadow=2:1ce8f33592c1cce5 indirect=2:1ce8f33592c1cce5 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:417dbfabd3a17585 camera=192:417dbfabd3a17585 shadow=192:417dbfabd3a17585 indirect=192:417dbfabd3a17585 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:417dbfabd3a17585 camera=192:417dbfabd3a17585 shadow=192:417dbfabd3a17585 indirect=192:417dbfabd3a17585 +geom 5: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=144:cb5c3b5933666a1f camera=144:cb5c3b5933666a1f shadow=144:cb5c3b5933666a1f indirect=144:cb5c3b5933666a1f +geom 6: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2304:ed03a97ba251327d camera=2304:ed03a97ba251327d shadow=2304:ed03a97ba251327d indirect=2304:ed03a97ba251327d +geom 7: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2304:ed03a97ba251327d camera=2304:ed03a97ba251327d shadow=2304:ed03a97ba251327d indirect=2304:ed03a97ba251327d +geom 8: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1d3535e07c06fa35 camera=1:1d3535e07c06fa35 shadow=1:1d3535e07c06fa35 indirect=1:1d3535e07c06fa35 +geom 9: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance light /World/lamp: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/sun: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/lamp +provenance geometry 1..2: /World/cube +provenance geometry 2..3: /World/plane +provenance geometry 3..4: /World/cylinder +provenance geometry 4..5: /World/cylinder1 +provenance geometry 5..6: /World/cone +provenance geometry 6..7: /World/capsule +provenance geometry 7..8: /World/capsule1 +provenance geometry 8..9: /World/mesh +provenance geometry 9..10: /World/sphere +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 4, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 4, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9204403525635746283, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4144177092627173538, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6877125351767401758, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17337873428103508369, n_points: 145, n_indices: 336, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5116155558073966183, n_points: 1154, n_indices: 4704, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 819217792897349932, n_points: 3, n_indices: 3, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [9] +provenance volumes: ["/World/fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/synonym_a_usda-c8543088a0bca8e3-1.digest b/crates/crust-core/tests/data/import_baselines/synonym_a_usda-c8543088a0bca8e3-1.digest new file mode 100644 index 000000000..c5c1d669f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/synonym_a_usda-c8543088a0bca8e3-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/synonym_a.usda"], invisible_overrides: Some(0) } +layer: $DIR/synonym_a.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.2, 0.0, 0.0))] pieces all=1:6246e4b1bcdf2dac camera=1:6246e4b1bcdf2dac shadow=1:6246e4b1bcdf2dac indirect=1:6246e4b1bcdf2dac +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Mover +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/synonym_b_usda-5b26c8cc28a6baa8-1.digest b/crates/crust-core/tests/data/import_baselines/synonym_b_usda-5b26c8cc28a6baa8-1.digest new file mode 100644 index 000000000..594d64fc7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/synonym_b_usda-5b26c8cc28a6baa8-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: false, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/synonym_b.usda"], invisible_overrides: Some(0) } +layer: $DIR/synonym_b.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(1.2, 0.0, 0.0))] pieces all=1:6246e4b1bcdf2dac camera=1:6246e4b1bcdf2dac shadow=1:6246e4b1bcdf2dac indirect=1:6246e4b1bcdf2dac +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Mover +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/textured_usda-addde73d309fca5e-1.digest b/crates/crust-core/tests/data/import_baselines/textured_usda-addde73d309fca5e-1.digest new file mode 100644 index 000000000..61ce01d70 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/textured_usda-addde73d309fca5e-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/textured.usda"], invisible_overrides: Some(0) } +layer: $DIR/textured.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 32, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=32:ac771f7e6a6314dd camera=32:ac771f7e6a6314dd shadow=32:ac771f7e6a6314dd indirect=32:ac771f7e6a6314dd +provenance material /World/Height: MaterialOrigin { slots: [0], displaced: true } +provenance geometry 0..1: /World/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5577808108587403347, n_points: 25, n_indices: 64, n_uvs: Some(25), smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/thin_window_usda-61e111e4ca995610-1.digest b/crates/crust-core/tests/data/import_baselines/thin_window_usda-61e111e4ca995610-1.digest new file mode 100644 index 000000000..b76701734 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/thin_window_usda-61e111e4ca995610-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 1.3, 5.0), lower_left_corner: Vec3A(-7.5000005, -6.0845304, -2.9540281), horizontal: Vec3A(15.000001, -0.0, 0.0), vertical: Vec3A(0.0, 7.9286575, -2.8857954), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9396926, -0.34202015), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/thin_window.usda"], invisible_overrides: Some(0) } +layer: $DIR/thin_window.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:49b0a8af4f524a43 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:49b0a8af4f524a43 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: true, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:025b586767a82275 camera=2:025b586767a82275 shadow=2:025b586767a82275 indirect=2:025b586767a82275 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: true, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8c8b5f7964604bf5 camera=2:8c8b5f7964604bf5 shadow=2:8c8b5f7964604bf5 indirect=2:8c8b5f7964604bf5 +provenance material /World/Looks/Floor: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Pane: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/Window: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Window +provenance geometry 3..4: /World/Pane +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9621829451479420765, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12790827634220154733, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/thin_window_usda-9e0a6257872a8f5f-1.digest b/crates/crust-core/tests/data/import_baselines/thin_window_usda-9e0a6257872a8f5f-1.digest new file mode 100644 index 000000000..465bc7ab6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/thin_window_usda-9e0a6257872a8f5f-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 1.3, 5.0), lower_left_corner: Vec3A(-7.5000005, -6.0845304, -2.9540281), horizontal: Vec3A(15.000001, -0.0, 0.0), vertical: Vec3A(0.0, 7.9286575, -2.8857954), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9396926, -0.34202015), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/thin_window.usda"], invisible_overrides: Some(0) } +layer: $DIR/thin_window.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:49b0a8af4f524a43 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:49b0a8af4f524a43 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: true, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:025b586767a82275 camera=2:025b586767a82275 shadow=2:025b586767a82275 indirect=2:025b586767a82275 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: true, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8c8b5f7964604bf5 camera=2:8c8b5f7964604bf5 shadow=2:8c8b5f7964604bf5 indirect=2:8c8b5f7964604bf5 +provenance material /World/Looks/Floor: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Pane: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/Window: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Window +provenance geometry 3..4: /World/Pane +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9621829451479420765, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12790827634220154733, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-1.digest b/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-1.digest new file mode 100644 index 000000000..b76701734 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 1.3, 5.0), lower_left_corner: Vec3A(-7.5000005, -6.0845304, -2.9540281), horizontal: Vec3A(15.000001, -0.0, 0.0), vertical: Vec3A(0.0, 7.9286575, -2.8857954), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9396926, -0.34202015), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/thin_window.usda"], invisible_overrides: Some(0) } +layer: $DIR/thin_window.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:49b0a8af4f524a43 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:49b0a8af4f524a43 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: true, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:025b586767a82275 camera=2:025b586767a82275 shadow=2:025b586767a82275 indirect=2:025b586767a82275 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: true, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8c8b5f7964604bf5 camera=2:8c8b5f7964604bf5 shadow=2:8c8b5f7964604bf5 indirect=2:8c8b5f7964604bf5 +provenance material /World/Looks/Floor: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Pane: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/Window: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Window +provenance geometry 3..4: /World/Pane +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9621829451479420765, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12790827634220154733, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-2.digest b/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-2.digest new file mode 100644 index 000000000..b76701734 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-2.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, 1.3, 5.0), lower_left_corner: Vec3A(-7.5000005, -6.0845304, -2.9540281), horizontal: Vec3A(15.000001, -0.0, 0.0), vertical: Vec3A(0.0, 7.9286575, -2.8857954), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9396926, -0.34202015), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/thin_window.usda"], invisible_overrides: Some(0) } +layer: $DIR/thin_window.usda +lights: 1 +light 0: area name Some("/World/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:49b0a8af4f524a43 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:49b0a8af4f524a43 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "MaterialX", cutout: false, straight: true, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:025b586767a82275 camera=2:025b586767a82275 shadow=2:025b586767a82275 indirect=2:025b586767a82275 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: true, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:8c8b5f7964604bf5 camera=2:8c8b5f7964604bf5 shadow=2:8c8b5f7964604bf5 indirect=2:8c8b5f7964604bf5 +provenance material /World/Looks/Floor: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Pane: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/Window: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Window +provenance geometry 3..4: /World/Pane +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9621829451479420765, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12790827634220154733, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/tiles_usda-63de672cd360cf69-1.digest b/crates/crust-core/tests/data/import_baselines/tiles_usda-63de672cd360cf69-1.digest new file mode 100644 index 000000000..9d4a865b8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/tiles_usda-63de672cd360cf69-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Cd", name: "Cd", channel_prefix: None, source: Primvar(PrimvarSource { index: 1, components: 3, role: Color }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/tiles.usda"], invisible_overrides: Some(0) } +layer: $DIR/tiles.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:25db25008e735125 camera=2:25db25008e735125 shadow=2:25db25008e735125 indirect=2:25db25008e735125 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(1), false)) swapped false curves false scale 1.0 motion [] pieces all=2:20ce8af92139f69f camera=2:20ce8af92139f69f shadow=2:20ce8af92139f69f indirect=2:20ce8af92139f69f +provenance light /World/dome: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/back +provenance geometry 1..2: /World/front +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7627698346972322759, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15030511554815353325, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/time_sampled_1_usda-ee3787d0222ab673-1.digest b/crates/crust-core/tests/data/import_baselines/time_sampled_1_usda-ee3787d0222ab673-1.digest new file mode 100644 index 000000000..046d36e90 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/time_sampled_1_usda-ee3787d0222ab673-1.digest @@ -0,0 +1,18 @@ +time: Some(1.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 1, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/shot", name: "shot.0001.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/time_sampled_1.usda"], invisible_overrides: Some(0) } +layer: $DIR/time_sampled_1.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(1.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/time_sampled_2_usda-4dad1e9703710b97-1.digest b/crates/crust-core/tests/data/import_baselines/time_sampled_2_usda-4dad1e9703710b97-1.digest new file mode 100644 index 000000000..9aff0dbfb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/time_sampled_2_usda-4dad1e9703710b97-1.digest @@ -0,0 +1,18 @@ +time: Some(2.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 2, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/shot", name: "shot.0002.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/time_sampled_2.usda"], invisible_overrides: Some(0) } +layer: $DIR/time_sampled_2.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(2.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/time_usda-a4ea088a5cd5b4c7-1.digest b/crates/crust-core/tests/data/import_baselines/time_usda-a4ea088a5cd5b4c7-1.digest new file mode 100644 index 000000000..608ec969c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/time_usda-a4ea088a5cd5b4c7-1.digest @@ -0,0 +1,17 @@ +time: Some(42.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 42, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/time.usda"], invisible_overrides: Some(0) } +layer: $DIR/time.usda +warning: Warning { code: TimeOutsideRange, kind: Approximated, count: 1, prims: [], message: "Frame 42 is outside the stage's time range [1, 10]; animated attributes hold their nearest time sample" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(42.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/tolerance_default_usda-3a112890c553cc1b-1.digest b/crates/crust-core/tests/data/import_baselines/tolerance_default_usda-3a112890c553cc1b-1.digest new file mode 100644 index 000000000..2b548e07d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/tolerance_default_usda-3a112890c553cc1b-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 7, max_depth: 3, width: 32, height: 16, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 16 }, min_samples_per_pixel: 2, variance_threshold: 0.1, adaptive_neighbour_tolerance: 1.0, frame: 4, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Gaussian { radius: 2.5 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 4, light_samples_indirect: 2, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/tolerance_default.usda"], invisible_overrides: Some(0) } +layer: $DIR/tolerance_default.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/tolerance_nan_usda-22547c2684ba9e8c-1.digest b/crates/crust-core/tests/data/import_baselines/tolerance_nan_usda-22547c2684ba9e8c-1.digest new file mode 100644 index 000000000..99cbb97de --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/tolerance_nan_usda-22547c2684ba9e8c-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/tolerance_nan.usda"], invisible_overrides: Some(0) } +layer: $DIR/tolerance_nan.usda +warning: Warning { code: SettingsInvalidValue, kind: Refused, count: 1, prims: ["/Render/settings"], message: "crust:adaptiveNeighbourTolerance = NaN is not finite — using 1" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/tolerance_off_usda-f5f012b4db29329d-1.digest b/crates/crust-core/tests/data/import_baselines/tolerance_off_usda-f5f012b4db29329d-1.digest new file mode 100644 index 000000000..4e037be9f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/tolerance_off_usda-f5f012b4db29329d-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: -1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/tolerance_off.usda"], invisible_overrides: Some(0) } +layer: $DIR/tolerance_off.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/translate_scale_usda-f3698f1a1411c8b2-1.digest b/crates/crust-core/tests/data/import_baselines/translate_scale_usda-f3698f1a1411c8b2-1.digest new file mode 100644 index 000000000..6eab9f935 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/translate_scale_usda-f3698f1a1411c8b2-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/translate_scale.usda"], invisible_overrides: Some(0) } +layer: $DIR/translate_scale.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 2.0 motion [] pieces all=2:014f7263e760b405 camera=2:014f7263e760b405 shadow=2:014f7263e760b405 indirect=2:014f7263e760b405 +provenance geometry 0..1: /World/A/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/translatex_curves_usda-65ef3846123d9b35-1.digest b/crates/crust-core/tests/data/import_baselines/translatex_curves_usda-65ef3846123d9b35-1.digest new file mode 100644 index 000000000..9914f66f0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/translatex_curves_usda-65ef3846123d9b35-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/translatex_curves.usda"], invisible_overrides: Some(0) } +layer: $DIR/translatex_curves.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=1:54eca4df97173997 camera=1:54eca4df97173997 shadow=1:54eca4df97173997 indirect=1:54eca4df97173997 +provenance geometry 0..1: /W/C +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/translatex_disk_usda-9d38522639915278-1.digest b/crates/crust-core/tests/data/import_baselines/translatex_disk_usda-9d38522639915278-1.digest new file mode 100644 index 000000000..2e0cb051f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/translatex_disk_usda-9d38522639915278-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/translatex_disk.usda"], invisible_overrides: Some(0) } +layer: $DIR/translatex_disk.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/W/D") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 1, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 1, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e39c0b05fb39fbb2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e39c0b05fb39fbb2 +provenance light /W/D: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /W/D +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/tuft_shadow_usda-1baacafb4242e12e-1.digest b/crates/crust-core/tests/data/import_baselines/tuft_shadow_usda-1baacafb4242e12e-1.digest new file mode 100644 index 000000000..8b411d078 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/tuft_shadow_usda-1baacafb4242e12e-1.digest @@ -0,0 +1,28 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/tuft_shadow.usda"], invisible_overrides: Some(0) } +layer: $DIR/tuft_shadow.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/Top") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 3, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves true scale 1.0 motion [] pieces all=3:34486483e0680ea8 camera=3:34486483e0680ea8 shadow=3:34486483e0680ea8 indirect=3:34486483e0680ea8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:fce6de5b675a55c5 camera=2:fce6de5b675a55c5 shadow=2:fce6de5b675a55c5 indirect=2:fce6de5b675a55c5 +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:e939c6ba7277c7b1 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:e939c6ba7277c7b1 +provenance material /World/Looks/mtlx_hair_clear: MaterialOrigin { slots: [0], displaced: false } +provenance light /World/Top: LightOrigin { index: 0, geoms: 2..3 } +provenance geometry 0..1: /World/Tuft +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Top +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/twice_a_usda-0f943c80bd7e2c65-1.digest b/crates/crust-core/tests/data/import_baselines/twice_a_usda-0f943c80bd7e2c65-1.digest new file mode 100644 index 000000000..d927ec68d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/twice_a_usda-0f943c80bd7e2c65-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/twice_a.usda"], invisible_overrides: Some(0) } +layer: $DIR/twice_a.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:40a1409b067b13e5 camera=2:40a1409b067b13e5 shadow=2:40a1409b067b13e5 indirect=2:40a1409b067b13e5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0e5e0fe2df6a1be5 camera=1:0e5e0fe2df6a1be5 shadow=1:0e5e0fe2df6a1be5 indirect=1:0e5e0fe2df6a1be5 +provenance geometry 0..1: /World/Q +provenance geometry 1..2: /World/A +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2488158973558984587, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/twice_b_usda-b96b0ece9c5875aa-1.digest b/crates/crust-core/tests/data/import_baselines/twice_b_usda-b96b0ece9c5875aa-1.digest new file mode 100644 index 000000000..19d7a84a0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/twice_b_usda-b96b0ece9c5875aa-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/twice_b.usda"], invisible_overrides: Some(0) } +layer: $DIR/twice_b.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:40a1409b067b13e5 camera=2:40a1409b067b13e5 shadow=2:40a1409b067b13e5 indirect=2:40a1409b067b13e5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0e5e0fe2df6a1be5 camera=1:0e5e0fe2df6a1be5 shadow=1:0e5e0fe2df6a1be5 indirect=1:0e5e0fe2df6a1be5 +provenance geometry 0..1: /World/Q +provenance geometry 1..2: /World/A +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2488158973558984587, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/two_cameras_broken_first_usda-3cb7946e1e445b8e-1.digest b/crates/crust-core/tests/data/import_baselines/two_cameras_broken_first_usda-3cb7946e1e445b8e-1.digest new file mode 100644 index 000000000..95c6e21ce --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/two_cameras_broken_first_usda-3cb7946e1e445b8e-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/shot") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 4.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/two_cameras_broken_first.usda"], invisible_overrides: Some(0) } +layer: $DIR/two_cameras_broken_first.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/shot"), cameras: ["/shot", "/broken"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/shot"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/two_cameras_shot_first_usda-a7d808f7cd7c7a83-1.digest b/crates/crust-core/tests/data/import_baselines/two_cameras_shot_first_usda-a7d808f7cd7c7a83-1.digest new file mode 100644 index 000000000..ed8f899bf --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/two_cameras_shot_first_usda-a7d808f7cd7c7a83-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/shot") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 4.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/two_cameras_shot_first.usda"], invisible_overrides: Some(0) } +layer: $DIR/two_cameras_shot_first.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/shot"), cameras: ["/broken", "/shot"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/shot"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/two_instancers_usda-287c7bdad0690e3b-1.digest b/crates/crust-core/tests/data/import_baselines/two_instancers_usda-287c7bdad0690e3b-1.digest new file mode 100644 index 000000000..8ce2f8077 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/two_instancers_usda-287c7bdad0690e3b-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0955, -1.1787187, -10.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 2.3574374, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 11.787188], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/two_instancers.usda"], invisible_overrides: Some(0) } +layer: $DIR/two_instancers.usda +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 12, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:79242cac1c06bed5 camera=12:79242cac1c06bed5 shadow=12:79242cac1c06bed5 indirect=12:79242cac1c06bed5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:30eed4ffaf7e9cd5 camera=12:30eed4ffaf7e9cd5 shadow=12:30eed4ffaf7e9cd5 indirect=12:30eed4ffaf7e9cd5 +provenance geometry 0..1: /W/Group/Right +provenance geometry 1..2: /W/Group/Left +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unauthored_usda-1a04ae4ebcf35cb8-1.digest b/crates/crust-core/tests/data/import_baselines/unauthored_usda-1a04ae4ebcf35cb8-1.digest new file mode 100644 index 000000000..6c8f0aa14 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unauthored_usda-1a04ae4ebcf35cb8-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 5.0), lower_left_corner: Vec3A(-0.27183646, -0.15290801, -5.0), horizontal: Vec3A(0.5436729, 0.0, 0.0), vertical: Vec3A(0.0, 0.30581602, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 500.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/unauthored.usda"], invisible_overrides: Some(0) } +layer: $DIR/unauthored.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d5fa2ac5108a1585 camera=1:d5fa2ac5108a1585 shadow=1:d5fa2ac5108a1585 indirect=1:d5fa2ac5108a1585 +provenance geometry 0..1: /World/Ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unauthored_usda-9a9d89c801b1b740-1.digest b/crates/crust-core/tests/data/import_baselines/unauthored_usda-9a9d89c801b1b740-1.digest new file mode 100644 index 000000000..3494bdd2c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unauthored_usda-9a9d89c801b1b740-1.digest @@ -0,0 +1,30 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.3, 8.5), lower_left_corner: Vec3A(-4.4023113, -1.5620966, -1.0554943), horizontal: Vec3A(8.804623, -0.0, 0.0), vertical: Vec3A(0.0, 4.9407306, -0.6943745), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 32, max_depth: 8, width: 240, height: 136, region: PixelRect { x0: 0, y0: 0, x1: 240, y1: 136 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 28.0, aperture: [20.955, 13.97], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/unauthored.usda", "$ROOT/samples/dome_backdrop.usda"], invisible_overrides: Some(0) } +layer: $ROOT/samples/dome_backdrop.usda +layer: $DIR/unauthored.usda +lights: 1 +light 0: dome name Some("/World/Hdri") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:571f57a6ae5dd002 camera=1:571f57a6ae5dd002 shadow=1:571f57a6ae5dd002 indirect=1:571f57a6ae5dd002 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:bb4ca329e9417ce2 camera=1:bb4ca329e9417ce2 shadow=1:bb4ca329e9417ce2 indirect=1:bb4ca329e9417ce2 +provenance material /World/Looks/Clay: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Looks/Mirror: MaterialOrigin { slots: [2], displaced: false } +provenance light /World/Hdri: LightOrigin { index: 0, geoms: 3..3 } +provenance geometry 0..1: /World/Floor +provenance geometry 1..2: /World/Matte +provenance geometry 2..3: /World/Mirror +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unbindable_usda-a5d47f8d674e7ddd-1.digest b/crates/crust-core/tests/data/import_baselines/unbindable_usda-a5d47f8d674e7ddd-1.digest new file mode 100644 index 000000000..d019a9cfc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unbindable_usda-a5d47f8d674e7ddd-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/g"], display_filters: [], display: "beauty" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/unbindable.usda"], invisible_overrides: Some(0) } +layer: $DIR/unbindable.usda +warning: Warning { code: PrecompUnbindableInput, kind: Refused, count: 1, prims: ["/Render/g"], message: "/Render/g: input \"variance\" reads /Render/variance, which has no per-sample value; it reads its default" } +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unbound_usda-19c17e4f548a50df-1.digest b/crates/crust-core/tests/data/import_baselines/unbound_usda-19c17e4f548a50df-1.digest new file mode 100644 index 000000000..a076fc99e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unbound_usda-19c17e4f548a50df-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/unbound.usda"], invisible_overrides: Some(0) } +layer: $DIR/unbound.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/World/Weird"], message: "Unrecognized shader id 'SomeUnknownShader' at /World/Weird — using default grey OpenPBR" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d46e920fbc035ae5 camera=1:d46e920fbc035ae5 shadow=1:d46e920fbc035ae5 indirect=1:d46e920fbc035ae5 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Weird: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Bound +provenance geometry 1..2: /World/Plain +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unbound_usda-4ae577ca0b682f0f-1.digest b/crates/crust-core/tests/data/import_baselines/unbound_usda-4ae577ca0b682f0f-1.digest new file mode 100644 index 000000000..556603b07 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unbound_usda-4ae577ca0b682f0f-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/g_out", name: "g_out", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 1, radiance: false }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/g"], display_filters: [], display: "beauty" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/unbound.usda"], invisible_overrides: Some(0) } +layer: $DIR/unbound.usda +warning: Warning { code: PrecompUnboundInput, kind: Refused, count: 1, prims: ["/Render/g"], message: "/Render/g: input \"nothing\" names no RenderVar of the render; it reads its default" } +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-2c90ea028524eadd-1.digest b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-2c90ea028524eadd-1.digest new file mode 100644 index 000000000..7f31ad80e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-2c90ea028524eadd-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/id", name: "id", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/uniform_cages.usda"], invisible_overrides: Some(0) } +layer: $DIR/uniform_cages.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 128, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 128, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=128:92e706974a651d05 camera=128:92e706974a651d05 shadow=128:92e706974a651d05 indirect=128:92e706974a651d05 +provenance light /World/dome: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/octa +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4839734000856103295, n_points: 66, n_indices: 384, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("faceId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-b6490d10d0de391f-1.digest b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-b6490d10d0de391f-1.digest new file mode 100644 index 000000000..b4ad91390 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-b6490d10d0de391f-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/id", name: "id", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/uniform_cages.usda"], invisible_overrides: Some(0) } +layer: $DIR/uniform_cages.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 96, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 96, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=96:d2e5727b31e4eaa5 camera=96:d2e5727b31e4eaa5 shadow=96:d2e5727b31e4eaa5 indirect=96:d2e5727b31e4eaa5 +provenance light /World/dome: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/mixed +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15495891107158519071, n_points: 65, n_indices: 192, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("faceId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d12f6f58167b27f9-1.digest b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d12f6f58167b27f9-1.digest new file mode 100644 index 000000000..c95ccde8f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d12f6f58167b27f9-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/id", name: "id", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/uniform_cages.usda"], invisible_overrides: Some(0) } +layer: $DIR/uniform_cages.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 216, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 216, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=216:5bd77612007ad9b8 camera=216:5bd77612007ad9b8 shadow=216:5bd77612007ad9b8 indirect=216:5bd77612007ad9b8 +provenance light /World/dome: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/mixed +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17661192499183501319, n_points: 131, n_indices: 648, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 1092616192, 1122308082, 0, 0, 1092616192, 3212836864, 0, 3193345093, 1065353216, 0, 3193345093, 0, 3212836864, 3189829428, 0, 1065353216, 3189829428, 0, 0, 3212836864, 1082130432, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("faceId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d982dbb48b0da21b-1.digest b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d982dbb48b0da21b-1.digest new file mode 100644 index 000000000..8c3e6433e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d982dbb48b0da21b-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/id", name: "id", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/uniform_cages.usda"], invisible_overrides: Some(0) } +layer: $DIR/uniform_cages.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 512, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 512, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=512:66924c114fcb9c75 camera=512:66924c114fcb9c75 shadow=512:66924c114fcb9c75 indirect=512:66924c114fcb9c75 +provenance light /World/dome: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/octa +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4772320826425062510, n_points: 258, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 1092616192, 1122308082, 0, 0, 1092616192, 3212836864, 0, 3193345093, 1065353216, 0, 3193345093, 0, 3212836864, 3189829428, 0, 1065353216, 3189829428, 0, 0, 3212836864, 1082130432, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("faceId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/uniform_colour_usda-6a475987121a1476-1.digest b/crates/crust-core/tests/data/import_baselines/uniform_colour_usda-6a475987121a1476-1.digest new file mode 100644 index 000000000..1f0d7d720 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/uniform_colour_usda-6a475987121a1476-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Cd", name: "Cd", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Color }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/uniform_colour.usda"], invisible_overrides: Some(0) } +layer: $DIR/uniform_colour.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=4:4a0c58876aa29995 camera=4:4a0c58876aa29995 shadow=4:4a0c58876aa29995 indirect=4:4a0c58876aa29995 +provenance light /World/dome: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/mesh +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5760922452270159177, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unit_tiny_lens_usda-aa2efc45eecd1493-1.digest b/crates/crust-core/tests/data/import_baselines/unit_tiny_lens_usda-aa2efc45eecd1493-1.digest new file mode 100644 index 000000000..f46f57fc6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unit_tiny_lens_usda-aa2efc45eecd1493-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 1.25, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 10.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/unit_tiny_lens.usda"], invisible_overrides: Some(0) } +layer: $DIR/unit_tiny_lens.usda +warning: Warning { code: CameraInvalidMetersPerUnit, kind: Refused, count: 1, prims: [], message: "/World/Cam: the stage's metersPerUnit = 0.000000000000000000000000000000000000000001 is not a length the lens can use; it reads it as 0.01 (a centimetre)" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unit_volume_usda-693980b7090e37bf-1.digest b/crates/crust-core/tests/data/import_baselines/unit_volume_usda-693980b7090e37bf-1.digest new file mode 100644 index 000000000..a0be8c73e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unit_volume_usda-693980b7090e37bf-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/unit_volume.usda"], invisible_overrides: Some(0) } +layer: $DIR/unit_volume.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 1 +volume 0: sigma_s Vec3A(0.5, 0.5, 0.5) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unit_zero_lens_usda-d1f56221f44bb692-1.digest b/crates/crust-core/tests/data/import_baselines/unit_zero_lens_usda-d1f56221f44bb692-1.digest new file mode 100644 index 000000000..972053b2b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unit_zero_lens_usda-d1f56221f44bb692-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 1.25, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 2.0, focus_distance: 10.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/unit_zero_lens.usda"], invisible_overrides: Some(0) } +layer: $DIR/unit_zero_lens.usda +warning: Warning { code: CameraInvalidMetersPerUnit, kind: Refused, count: 1, prims: [], message: "/World/Cam: the stage's metersPerUnit = 0 is not a length the lens can use; it reads it as 0.01 (a centimetre)" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unit_zero_named_usda-9847ffecfd9df22b-1.digest b/crates/crust-core/tests/data/import_baselines/unit_zero_named_usda-9847ffecfd9df22b-1.digest new file mode 100644 index 000000000..b2823dd36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unit_zero_named_usda-9847ffecfd9df22b-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Named") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.625, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 4.0, focus_distance: 10.0 }), depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/unit_zero_named.usda"], invisible_overrides: Some(0) } +layer: $DIR/unit_zero_named.usda +warning: Warning { code: CameraInvalidMetersPerUnit, kind: Refused, count: 1, prims: [], message: "/World/Named: the stage's metersPerUnit = 0 is not a length the lens can use; it reads it as 0.01 (a centimetre)" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Named"), cameras: ["/World/Named", "/World/First"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Named"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unit_zero_pinhole_usda-af47867eeabcfd70-1.digest b/crates/crust-core/tests/data/import_baselines/unit_zero_pinhole_usda-af47867eeabcfd70-1.digest new file mode 100644 index 000000000..374bc512c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unit_zero_pinhole_usda-af47867eeabcfd70-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/unit_zero_pinhole.usda"], invisible_overrides: Some(0) } +layer: $DIR/unit_zero_pinhole.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unknown_display_usda-e75f3f3b8d756ec8-1.digest b/crates/crust-core/tests/data/import_baselines/unknown_display_usda-e75f3f3b8d756ec8-1.digest new file mode 100644 index 000000000..a4ace10e4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unknown_display_usda-e75f3f3b8d756ec8-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: [], display_filters: [], display: "beauty" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/unknown_display.usda"], invisible_overrides: Some(0) } +layer: $DIR/unknown_display.usda +warning: Warning { code: PrecompUnknownDisplay, kind: Refused, count: 1, prims: ["/Render/settings"], message: "/Render/settings: crust:display = \"nope\" names no RenderVar of the render; the beauty is shown" } +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unknown_filter_usda-ed678783aa9ef74d-1.digest b/crates/crust-core/tests/data/import_baselines/unknown_filter_usda-ed678783aa9ef74d-1.digest new file mode 100644 index 000000000..43e6beb72 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unknown_filter_usda-ed678783aa9ef74d-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/unknown_filter.usda"], invisible_overrides: Some(0) } +layer: $DIR/unknown_filter.usda +warning: Warning { code: PrecompUnknownFilter, kind: Skipped, count: 1, prims: ["/Render/look_out"], message: "/Render/look_out: crust:filter targets /Render/look, which is in neither crust:sampleFilters nor crust:displayFilters; no channel written" } +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unknown_op_usda-954c2bfc62b12357-1.digest b/crates/crust-core/tests/data/import_baselines/unknown_op_usda-954c2bfc62b12357-1.digest new file mode 100644 index 000000000..84ffb738e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unknown_op_usda-954c2bfc62b12357-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/look_out", name: "look_out", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/glare_out", name: "glare_out", channel_prefix: None, source: Filter(FilterSource { display: true, filter: 0, output: 0, components: 3, radiance: false }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/look"], display_filters: ["/Render/glare"], display: "beauty" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/unknown_op.usda"], invisible_overrides: Some(0) } +layer: $DIR/unknown_op.usda +warning: Warning { code: PrecompUnknownOperation, kind: Skipped, count: 1, prims: ["/Render/glare"], message: "/Render/glare: info:id \"crust:glare\" is not a display operation (crust:convolve, crust:blur, crust:vectorBlur, crust:merge, crust:grade); the filter passes its input through" } +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unknown_type_usda-d0386e0b10524625-1.digest b/crates/crust-core/tests/data/import_baselines/unknown_type_usda-d0386e0b10524625-1.digest new file mode 100644 index 000000000..0f5f14a88 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unknown_type_usda-d0386e0b10524625-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/unknown_type.usda"], invisible_overrides: Some(0) } +layer: $DIR/unknown_type.usda +warning: Warning { code: XformUnknownType, kind: Skipped, count: 1, prims: ["/World/rig"], message: "/World/rig: its type StudioRig is not one the schema registry knows, so it is not Xformable and its xformOps are ignored (further occurrences are counted in the import's warnings)" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/rig/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unnamed_usda-ed6b84994bc45537-1.digest b/crates/crust-core/tests/data/import_baselines/unnamed_usda-ed6b84994bc45537-1.digest new file mode 100644 index 000000000..108f6f23e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unnamed_usda-ed6b84994bc45537-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/cams/Hidden/witness") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/unnamed.usda"], invisible_overrides: Some(0) } +layer: $DIR/unnamed.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cams/Hidden/witness"), cameras: ["/cams/Hidden/witness", "/cams/shot", "/cams/layout"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cams/Hidden/witness"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unresolvable_winner_usda-514f97ffe2814294-1.digest b/crates/crust-core/tests/data/import_baselines/unresolvable_winner_usda-514f97ffe2814294-1.digest new file mode 100644 index 000000000..e92271c99 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unresolvable_winner_usda-514f97ffe2814294-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/unresolvable_winner.usda"], invisible_overrides: Some(0) } +layer: $DIR/unresolvable_winner.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 2, prims: ["/World/Gone", "/World/Missing"], message: "Material at /World/Gone not resolvable — using default grey OpenPBR" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance material /World/Gone: MaterialOrigin { slots: [0], displaced: false } +provenance material /World/Missing: MaterialOrigin { slots: [1], displaced: false } +provenance geometry 0..1: /World/Coll/b +provenance geometry 1..2: /World/Strong/a +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unsupported_in_prototype_usda-d2aca9633823884e-1.digest b/crates/crust-core/tests/data/import_baselines/unsupported_in_prototype_usda-d2aca9633823884e-1.digest new file mode 100644 index 000000000..463d746ba --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unsupported_in_prototype_usda-d2aca9633823884e-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/unsupported_in_prototype.usda"], invisible_overrides: Some(0) } +layer: $DIR/unsupported_in_prototype.usda +warning: Warning { code: InstancingEmptyPrototype, kind: Skipped, count: 1, prims: ["/World/scatter/Protos/Dust"], message: "Prototype /World/scatter/Protos/Dust contributed no geometry" } +warning: Warning { code: GeomUnsupportedType, kind: Skipped, count: 1, prims: ["/World/scatter/Protos/Dust/grains"], message: "1 Points prim render nothing: crust does not read the Points type (the first at /World/scatter/Protos/Dust/grains)" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unsupported_type_one_usda-61236dabf0bd2054-1.digest b/crates/crust-core/tests/data/import_baselines/unsupported_type_one_usda-61236dabf0bd2054-1.digest new file mode 100644 index 000000000..9319fe0d7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unsupported_type_one_usda-61236dabf0bd2054-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/unsupported_type_one.usda"], invisible_overrides: Some(0) } +layer: $DIR/unsupported_type_one.usda +warning: Warning { code: GeomUnsupportedType, kind: Skipped, count: 1, prims: ["/World/sheet"], message: "1 NurbsPatch prim render nothing: crust does not read the NurbsPatch type (the first at /World/sheet)" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unsupported_types_usda-4026b0fff876b77b-1.digest b/crates/crust-core/tests/data/import_baselines/unsupported_types_usda-4026b0fff876b77b-1.digest new file mode 100644 index 000000000..6b8a8b2e2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unsupported_types_usda-4026b0fff876b77b-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/unsupported_types.usda"], invisible_overrides: Some(0) } +layer: $DIR/unsupported_types.usda +warning: Warning { code: GeomUnsupportedType, kind: Skipped, count: 2, prims: ["/World/dust1", "/World/sheet"], message: "3 Points prims render nothing: crust does not read the Points type (the first at /World/dust1)" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unsupported_usda-25a7c1709e68a39b-1.digest b/crates/crust-core/tests/data/import_baselines/unsupported_usda-25a7c1709e68a39b-1.digest new file mode 100644 index 000000000..688e5a614 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unsupported_usda-25a7c1709e68a39b-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/g_out", name: "g_out", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/g"], display_filters: [], display: "beauty" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/unsupported.usda"], invisible_overrides: Some(0) } +layer: $DIR/unsupported.usda +warning: Warning { code: PrecompUnsupportedNode, kind: Skipped, count: 1, prims: ["/Render/g"], message: "/Render/g: a sample filter cannot evaluate this graph (/Render/g/tex (image): reads the shading point or a texture); its outputs read their clear value" } +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/unusable_texture_usda-0a21b6baa96879e3-1.digest b/crates/crust-core/tests/data/import_baselines/unusable_texture_usda-0a21b6baa96879e3-1.digest new file mode 100644 index 000000000..bf4601cee --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unusable_texture_usda-0a21b6baa96879e3-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/unusable_texture.usda"], invisible_overrides: Some(0) } +layer: $DIR/unusable_texture.usda +warning: Warning { code: PreviewTextureWithoutFile, kind: Skipped, count: 1, prims: ["/World/Fallback/Map"], message: "UsdUVTexture /World/Fallback/Map: no inputs:file — displacement keeps its constant" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=8:d7d5715877f61cf5 camera=8:d7d5715877f61cf5 shadow=8:d7d5715877f61cf5 indirect=8:d7d5715877f61cf5 +provenance material /World/Fallback: MaterialOrigin { slots: [0], displaced: true } +provenance geometry 0..1: /World/Ground +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 485570829870313581, n_points: 9, n_indices: 16, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/usdlux_usda-0d6669b552eae2be-1.digest b/crates/crust-core/tests/data/import_baselines/usdlux_usda-0d6669b552eae2be-1.digest new file mode 100644 index 000000000..73caf8813 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/usdlux_usda-0d6669b552eae2be-1.digest @@ -0,0 +1,56 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.4, 9.5), lower_left_corner: Vec3A(-7.5000005, -3.169425, 0.18445492), horizontal: Vec3A(15.000001, -0.0, 0.0), vertical: Vec3A(0.0, 8.355388, -1.1742734), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 256, max_depth: 6, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/usdlux.usda"], invisible_overrides: Some(0) } +layer: $DIR/usdlux.usda +lights: 7 +light 0: dome name Some("/World/Fill") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/WindowCard") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Ellipsoid") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/IesFixture") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 4: area name Some("/World/Spot") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 5: area name Some("/World/CoolTube") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 6: area name Some("/World/WarmDisk") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 11 geometries, PrimitiveBreakdown { triangles: 8, spheres: 4, disks: 1, cylinders: 1, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 8, spheres: 5, disks: 1, cylinders: 1, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:3dbc69f15b1ac77d camera=2:3dbc69f15b1ac77d shadow=2:3dbc69f15b1ac77d indirect=2:3dbc69f15b1ac77d +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:edbf703ad643543d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:edbf703ad643543d +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2df0f9dd89eeee0f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2df0f9dd89eeee0f +geom 3: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4f58e5897b156a45 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4f58e5897b156a45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6e3deb80ada04f92 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:6e3deb80ada04f92 +geom 5: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:251665dcff744d36 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:251665dcff744d36 +geom 6: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5a9c9481f8865ae2 camera=1:5a9c9481f8865ae2 shadow=1:5a9c9481f8865ae2 indirect=1:5a9c9481f8865ae2 +geom 7: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b28b0932afc7774d camera=1:b28b0932afc7774d shadow=1:b28b0932afc7774d indirect=1:b28b0932afc7774d +geom 8: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:4a7da724207a40a6 camera=1:4a7da724207a40a6 shadow=1:4a7da724207a40a6 indirect=1:4a7da724207a40a6 +geom 9: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:89df991028a13015 camera=2:89df991028a13015 shadow=2:89df991028a13015 indirect=2:89df991028a13015 +geom 10: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b4a7d808553c2cb2 camera=2:b4a7d808553c2cb2 shadow=2:b4a7d808553c2cb2 indirect=2:b4a7d808553c2cb2 +provenance light /World/CoolTube: LightOrigin { index: 5, geoms: 4..5 } +provenance light /World/Ellipsoid: LightOrigin { index: 2, geoms: 1..2 } +provenance light /World/Fill: LightOrigin { index: 0, geoms: 0..0 } +provenance light /World/IesFixture: LightOrigin { index: 3, geoms: 2..3 } +provenance light /World/Spot: LightOrigin { index: 4, geoms: 3..4 } +provenance light /World/WarmDisk: LightOrigin { index: 6, geoms: 5..6 } +provenance light /World/WindowCard: LightOrigin { index: 1, geoms: 0..1 } +provenance geometry 0..1: /World/WindowCard +provenance geometry 1..2: /World/Ellipsoid +provenance geometry 2..3: /World/IesFixture +provenance geometry 3..4: /World/Spot +provenance geometry 4..5: /World/CoolTube +provenance geometry 5..6: /World/WarmDisk +provenance geometry 6..7: /World/BallRight +provenance geometry 7..8: /World/BallCenter +provenance geometry 8..9: /World/BallLeft +provenance geometry 9..10: /World/BackWall +provenance geometry 10..11: /World/Floor +provenance mesh: MeshOrigin { geom_id: 9, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14805932933694298385, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8254717367002287235, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [6, 7, 8] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-1.digest b/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-1.digest new file mode 100644 index 000000000..6584be317 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-1.digest @@ -0,0 +1,57 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.4, 9.5), lower_left_corner: Vec3A(-7.5000005, -3.169425, 0.18445492), horizontal: Vec3A(15.000001, -0.0, 0.0), vertical: Vec3A(0.0, 8.355388, -1.1742734), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 256, max_depth: 6, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/usdlux.usda"], invisible_overrides: Some(0) } +layer: $DIR/usdlux.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 2, prims: [], message: "Asset loader does not decode light textures: $DIR/textures/window_card.exr ignored — the light emits its uniform colour." } +lights: 7 +light 0: dome name Some("/World/Fill") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/WindowCard") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Ellipsoid") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/IesFixture") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 4: area name Some("/World/Spot") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 5: area name Some("/World/CoolTube") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 6: area name Some("/World/WarmDisk") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 11 geometries, PrimitiveBreakdown { triangles: 8, spheres: 4, disks: 1, cylinders: 1, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 8, spheres: 5, disks: 1, cylinders: 1, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:3dbc69f15b1ac77d camera=2:3dbc69f15b1ac77d shadow=2:3dbc69f15b1ac77d indirect=2:3dbc69f15b1ac77d +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:edbf703ad643543d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:edbf703ad643543d +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2df0f9dd89eeee0f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2df0f9dd89eeee0f +geom 3: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4f58e5897b156a45 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4f58e5897b156a45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6e3deb80ada04f92 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:6e3deb80ada04f92 +geom 5: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:251665dcff744d36 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:251665dcff744d36 +geom 6: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5a9c9481f8865ae2 camera=1:5a9c9481f8865ae2 shadow=1:5a9c9481f8865ae2 indirect=1:5a9c9481f8865ae2 +geom 7: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b28b0932afc7774d camera=1:b28b0932afc7774d shadow=1:b28b0932afc7774d indirect=1:b28b0932afc7774d +geom 8: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:4a7da724207a40a6 camera=1:4a7da724207a40a6 shadow=1:4a7da724207a40a6 indirect=1:4a7da724207a40a6 +geom 9: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:89df991028a13015 camera=2:89df991028a13015 shadow=2:89df991028a13015 indirect=2:89df991028a13015 +geom 10: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b4a7d808553c2cb2 camera=2:b4a7d808553c2cb2 shadow=2:b4a7d808553c2cb2 indirect=2:b4a7d808553c2cb2 +provenance light /World/CoolTube: LightOrigin { index: 5, geoms: 4..5 } +provenance light /World/Ellipsoid: LightOrigin { index: 2, geoms: 1..2 } +provenance light /World/Fill: LightOrigin { index: 0, geoms: 0..0 } +provenance light /World/IesFixture: LightOrigin { index: 3, geoms: 2..3 } +provenance light /World/Spot: LightOrigin { index: 4, geoms: 3..4 } +provenance light /World/WarmDisk: LightOrigin { index: 6, geoms: 5..6 } +provenance light /World/WindowCard: LightOrigin { index: 1, geoms: 0..1 } +provenance geometry 0..1: /World/WindowCard +provenance geometry 1..2: /World/Ellipsoid +provenance geometry 2..3: /World/IesFixture +provenance geometry 3..4: /World/Spot +provenance geometry 4..5: /World/CoolTube +provenance geometry 5..6: /World/WarmDisk +provenance geometry 6..7: /World/BallRight +provenance geometry 7..8: /World/BallCenter +provenance geometry 8..9: /World/BallLeft +provenance geometry 9..10: /World/BackWall +provenance geometry 10..11: /World/Floor +provenance mesh: MeshOrigin { geom_id: 9, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14805932933694298385, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8254717367002287235, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [6, 7, 8] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-2.digest b/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-2.digest new file mode 100644 index 000000000..6584be317 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-2.digest @@ -0,0 +1,57 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 2.4, 9.5), lower_left_corner: Vec3A(-7.5000005, -3.169425, 0.18445492), horizontal: Vec3A(15.000001, -0.0, 0.0), vertical: Vec3A(0.0, 8.355388, -1.1742734), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 256, max_depth: 6, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/usdlux.usda"], invisible_overrides: Some(0) } +layer: $DIR/usdlux.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 2, prims: [], message: "Asset loader does not decode light textures: $DIR/textures/window_card.exr ignored — the light emits its uniform colour." } +lights: 7 +light 0: dome name Some("/World/Fill") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/WindowCard") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Ellipsoid") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/IesFixture") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 4: area name Some("/World/Spot") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 5: area name Some("/World/CoolTube") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 6: area name Some("/World/WarmDisk") lpe None pmf 0.14285715 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 11 geometries, PrimitiveBreakdown { triangles: 8, spheres: 4, disks: 1, cylinders: 1, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 8, spheres: 5, disks: 1, cylinders: 1, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:3dbc69f15b1ac77d camera=2:3dbc69f15b1ac77d shadow=2:3dbc69f15b1ac77d indirect=2:3dbc69f15b1ac77d +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:edbf703ad643543d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:edbf703ad643543d +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:2df0f9dd89eeee0f camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:2df0f9dd89eeee0f +geom 3: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4f58e5897b156a45 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4f58e5897b156a45 +geom 4: material #4 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:6e3deb80ada04f92 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:6e3deb80ada04f92 +geom 5: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:251665dcff744d36 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:251665dcff744d36 +geom 6: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:5a9c9481f8865ae2 camera=1:5a9c9481f8865ae2 shadow=1:5a9c9481f8865ae2 indirect=1:5a9c9481f8865ae2 +geom 7: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:b28b0932afc7774d camera=1:b28b0932afc7774d shadow=1:b28b0932afc7774d indirect=1:b28b0932afc7774d +geom 8: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:4a7da724207a40a6 camera=1:4a7da724207a40a6 shadow=1:4a7da724207a40a6 indirect=1:4a7da724207a40a6 +geom 9: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:89df991028a13015 camera=2:89df991028a13015 shadow=2:89df991028a13015 indirect=2:89df991028a13015 +geom 10: material #6 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b4a7d808553c2cb2 camera=2:b4a7d808553c2cb2 shadow=2:b4a7d808553c2cb2 indirect=2:b4a7d808553c2cb2 +provenance light /World/CoolTube: LightOrigin { index: 5, geoms: 4..5 } +provenance light /World/Ellipsoid: LightOrigin { index: 2, geoms: 1..2 } +provenance light /World/Fill: LightOrigin { index: 0, geoms: 0..0 } +provenance light /World/IesFixture: LightOrigin { index: 3, geoms: 2..3 } +provenance light /World/Spot: LightOrigin { index: 4, geoms: 3..4 } +provenance light /World/WarmDisk: LightOrigin { index: 6, geoms: 5..6 } +provenance light /World/WindowCard: LightOrigin { index: 1, geoms: 0..1 } +provenance geometry 0..1: /World/WindowCard +provenance geometry 1..2: /World/Ellipsoid +provenance geometry 2..3: /World/IesFixture +provenance geometry 3..4: /World/Spot +provenance geometry 4..5: /World/CoolTube +provenance geometry 5..6: /World/WarmDisk +provenance geometry 6..7: /World/BallRight +provenance geometry 7..8: /World/BallCenter +provenance geometry 8..9: /World/BallLeft +provenance geometry 9..10: /World/BackWall +provenance geometry 10..11: /World/Floor +provenance mesh: MeshOrigin { geom_id: 9, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14805932933694298385, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8254717367002287235, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [6, 7, 8] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-36a3119df926a1de-1.digest b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-36a3119df926a1de-1.digest new file mode 100644 index 000000000..6e30ddcc7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-36a3119df926a1de-1.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, -0.1, 7.0), lower_left_corner: Vec3A(-2.5200002, -1.5175003, 0.0), horizontal: Vec3A(5.0400004, 0.0, 0.0), vertical: Vec3A(0.0, 2.8350005, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 7.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/usdpreview_textured.usda"], invisible_overrides: Some(0) } +layer: $DIR/usdpreview_textured.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d922ac2ec48f4f97 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d922ac2ec48f4f97 +geom 1: material #1 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:23063c3980664227 camera=2:23063c3980664227 shadow=2:23063c3980664227 indirect=2:23063c3980664227 +geom 2: material #2 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:380b2e0280de83db camera=2:380b2e0280de83db shadow=2:380b2e0280de83db indirect=2:380b2e0280de83db +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:14161eeed09e7034 camera=2:14161eeed09e7034 shadow=2:14161eeed09e7034 indirect=2:14161eeed09e7034 +geom 4: material #4 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(3) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:08414313d8d6e290 camera=2:08414313d8d6e290 shadow=2:08414313d8d6e290 indirect=2:08414313d8d6e290 +provenance material /World/Looks/ExrAuto: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/MaskedMetal: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/NormalMapped: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/UdimSrgb: MaterialOrigin { slots: [4], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/NormalQuad +provenance geometry 2..3: /World/MetalQuad +provenance geometry 3..4: /World/ExrQuad +provenance geometry 4..5: /World/UdimQuad +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9086379455125602793, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10115957615497089662, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10519275802662681676, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11939811521305294379, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-7e17862f6c19bca4-1.digest b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-7e17862f6c19bca4-1.digest new file mode 100644 index 000000000..c9f90fb79 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-7e17862f6c19bca4-1.digest @@ -0,0 +1,42 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, -0.1, 7.0), lower_left_corner: Vec3A(-2.5200002, -1.5175003, 0.0), horizontal: Vec3A(5.0400004, 0.0, 0.0), vertical: Vec3A(0.0, 2.8350005, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 7.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/usdpreview_textured.usda"], invisible_overrides: Some(0) } +layer: $DIR/usdpreview_textured.usda +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d922ac2ec48f4f97 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d922ac2ec48f4f97 +geom 1: material #1 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:23063c3980664227 camera=2:23063c3980664227 shadow=2:23063c3980664227 indirect=2:23063c3980664227 +geom 2: material #2 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:380b2e0280de83db camera=2:380b2e0280de83db shadow=2:380b2e0280de83db indirect=2:380b2e0280de83db +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:14161eeed09e7034 camera=2:14161eeed09e7034 shadow=2:14161eeed09e7034 indirect=2:14161eeed09e7034 +geom 4: material #4 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(3) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:08414313d8d6e290 camera=2:08414313d8d6e290 shadow=2:08414313d8d6e290 indirect=2:08414313d8d6e290 +provenance material /World/Looks/ExrAuto: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/MaskedMetal: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/NormalMapped: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/UdimSrgb: MaterialOrigin { slots: [4], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/NormalQuad +provenance geometry 2..3: /World/MetalQuad +provenance geometry 3..4: /World/ExrQuad +provenance geometry 4..5: /World/UdimQuad +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9086379455125602793, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10115957615497089662, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10519275802662681676, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11939811521305294379, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-1.digest b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-1.digest new file mode 100644 index 000000000..d558ec3ad --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-1.digest @@ -0,0 +1,43 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, -0.1, 7.0), lower_left_corner: Vec3A(-2.5200002, -1.5175003, 0.0), horizontal: Vec3A(5.0400004, 0.0, 0.0), vertical: Vec3A(0.0, 2.8350005, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 7.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/usdpreview_textured.usda"], invisible_overrides: Some(0) } +layer: $DIR/usdpreview_textured.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 5, prims: [], message: "Asset loader does not decode UV textures: $DIR/textures/mtlx_normal..png ignored — the input falls back to its constant value." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d922ac2ec48f4f97 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d922ac2ec48f4f97 +geom 1: material #1 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:23063c3980664227 camera=2:23063c3980664227 shadow=2:23063c3980664227 indirect=2:23063c3980664227 +geom 2: material #2 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:380b2e0280de83db camera=2:380b2e0280de83db shadow=2:380b2e0280de83db indirect=2:380b2e0280de83db +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:14161eeed09e7034 camera=2:14161eeed09e7034 shadow=2:14161eeed09e7034 indirect=2:14161eeed09e7034 +geom 4: material #4 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(3) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:08414313d8d6e290 camera=2:08414313d8d6e290 shadow=2:08414313d8d6e290 indirect=2:08414313d8d6e290 +provenance material /World/Looks/ExrAuto: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/MaskedMetal: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/NormalMapped: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/UdimSrgb: MaterialOrigin { slots: [4], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/NormalQuad +provenance geometry 2..3: /World/MetalQuad +provenance geometry 3..4: /World/ExrQuad +provenance geometry 4..5: /World/UdimQuad +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9086379455125602793, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10115957615497089662, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10519275802662681676, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11939811521305294379, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-2.digest b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-2.digest new file mode 100644 index 000000000..d558ec3ad --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-2.digest @@ -0,0 +1,43 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.0, -0.1, 7.0), lower_left_corner: Vec3A(-2.5200002, -1.5175003, 0.0), horizontal: Vec3A(5.0400004, 0.0, 0.0), vertical: Vec3A(0.0, 2.8350005, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 64, max_depth: 8, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 7.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/usdpreview_textured.usda"], invisible_overrides: Some(0) } +layer: $DIR/usdpreview_textured.usda +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 5, prims: [], message: "Asset loader does not decode UV textures: $DIR/textures/mtlx_normal..png ignored — the input falls back to its constant value." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d922ac2ec48f4f97 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d922ac2ec48f4f97 +geom 1: material #1 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:23063c3980664227 camera=2:23063c3980664227 shadow=2:23063c3980664227 indirect=2:23063c3980664227 +geom 2: material #2 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:380b2e0280de83db camera=2:380b2e0280de83db shadow=2:380b2e0280de83db indirect=2:380b2e0280de83db +geom 3: material #3 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:14161eeed09e7034 camera=2:14161eeed09e7034 shadow=2:14161eeed09e7034 indirect=2:14161eeed09e7034 +geom 4: material #4 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(3) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:08414313d8d6e290 camera=2:08414313d8d6e290 shadow=2:08414313d8d6e290 indirect=2:08414313d8d6e290 +provenance material /World/Looks/ExrAuto: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Looks/MaskedMetal: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Looks/NormalMapped: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/UdimSrgb: MaterialOrigin { slots: [4], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 1..1 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/NormalQuad +provenance geometry 2..3: /World/MetalQuad +provenance geometry 3..4: /World/ExrQuad +provenance geometry 4..5: /World/UdimQuad +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9086379455125602793, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10115957615497089662, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10519275802662681676, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11939811521305294379, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/uv2_usda-a9136787dec77f95-1.digest b/crates/crust-core/tests/data/import_baselines/uv2_usda-a9136787dec77f95-1.digest new file mode 100644 index 000000000..ccc598eec --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/uv2_usda-a9136787dec77f95-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/uv2", name: "uv2", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 2, role: TexCoord }), components: 2, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/uv2.usda"], invisible_overrides: Some(0) } +layer: $DIR/uv2.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=4:4a0c58876aa29995 camera=4:4a0c58876aa29995 shadow=4:4a0c58876aa29995 indirect=4:4a0c58876aa29995 +provenance light /World/dome: LightOrigin { index: 0, geoms: 1..1 } +provenance geometry 0..1: /World/mesh +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13769581966721318563, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("uv2", 2)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/uv_dedup_same_usda-9ef71121455e022c-1.digest b/crates/crust-core/tests/data/import_baselines/uv_dedup_same_usda-9ef71121455e022c-1.digest new file mode 100644 index 000000000..dd6009b64 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/uv_dedup_same_usda-9ef71121455e022c-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/uv_dedup_same.usda"], invisible_overrides: Some(0) } +layer: $DIR/uv_dedup_same.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f351a5c2dfca1185 camera=2:f351a5c2dfca1185 shadow=2:f351a5c2dfca1185 indirect=2:f351a5c2dfca1185 +geom 1: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b90e40d4201e3f85 camera=2:b90e40d4201e3f85 shadow=2:b90e40d4201e3f85 indirect=2:b90e40d4201e3f85 +provenance material /W/Looks/Mtl: MaterialOrigin { slots: [0, 1], displaced: false } +provenance geometry 0..1: /W/B +provenance geometry 1..2: /W/A +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11383868175397459472, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/uv_dedup_usda-3e327caf2288bcc5-1.digest b/crates/crust-core/tests/data/import_baselines/uv_dedup_usda-3e327caf2288bcc5-1.digest new file mode 100644 index 000000000..a379b5bc2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/uv_dedup_usda-3e327caf2288bcc5-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/uv_dedup.usda"], invisible_overrides: Some(0) } +layer: $DIR/uv_dedup.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f351a5c2dfca1185 camera=2:f351a5c2dfca1185 shadow=2:f351a5c2dfca1185 indirect=2:f351a5c2dfca1185 +geom 1: material #0 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:b90e40d4201e3f85 camera=2:b90e40d4201e3f85 shadow=2:b90e40d4201e3f85 indirect=2:b90e40d4201e3f85 +provenance material /W/Looks/Mtl: MaterialOrigin { slots: [0, 1], displaced: false } +provenance geometry 0..1: /W/B +provenance geometry 1..2: /W/A +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5692795894678414049, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11383868175397459472, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/var_authored_usda-30d82aafae5b77cb-1.digest b/crates/crust-core/tests/data/import_baselines/var_authored_usda-30d82aafae5b77cb-1.digest new file mode 100644 index 000000000..cb12c1f96 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/var_authored_usda-30d82aafae5b77cb-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 10.0), lower_left_corner: Vec3A(-2.0955, -1.5716249, 0.0), horizontal: Vec3A(4.191, 0.0, 0.0), vertical: Vec3A(0.0, 3.1432498, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 48, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 48, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/P", name: "P", channel_prefix: None, source: P, components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Pref", name: "Pref", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 3, role: Vector }), components: 3, precision: Float, accumulation: Closest, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/Cd", name: "Cd", channel_prefix: None, source: Primvar(PrimvarSource { index: 1, components: 3, role: Color }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/var_authored.usda"], invisible_overrides: Some(0) } +layer: $DIR/var_authored.usda +lights: 1 +light 0: dome name Some("/World/dome") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 1, cubic_curve_spans: 0, instances: 1 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: Some((false, false, [])), primvars: None } class 65535 holdout false transparent false map None uv None shading None strands Some(0) aov None swapped false curves true scale 1.0 motion [] pieces all=1:a8881b13d8325a63 camera=1:a8881b13d8325a63 shadow=1:a8881b13d8325a63 indirect=1:a8881b13d8325a63 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(1), false)) swapped false curves false scale 1.0 motion [] pieces all=2:32f1a52c797bfee5 camera=2:32f1a52c797bfee5 shadow=2:32f1a52c797bfee5 indirect=2:32f1a52c797bfee5 +provenance light /World/dome: LightOrigin { index: 0, geoms: 2..2 } +provenance geometry 0..1: /World/hair +provenance geometry 1..2: /World/mesh +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14779366758744255248, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-1.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-1.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-2.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-2.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-2.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-324cce08805da6ff-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-324cce08805da6ff-1.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-324cce08805da6ff-1.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-1.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-1.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-2.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-2.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-2.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3d8992b3ea4a144d-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3d8992b3ea4a144d-1.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3d8992b3ea4a144d-1.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3fdc201d13c79fac-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3fdc201d13c79fac-1.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3fdc201d13c79fac-1.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-1.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-1.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-2.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-2.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-2.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-3.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-3.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-3.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-4.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-4.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-4.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-1.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-1.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-2.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-2.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-2.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-3.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-3.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-3.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-4.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-4.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-4.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-1.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-1.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-10.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-10.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-10.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-11.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-11.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-11.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-12.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-12.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-12.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-13.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-13.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-13.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-14.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-14.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-14.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-15.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-15.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-15.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-16.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-16.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-16.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-17.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-17.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-17.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-18.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-18.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-18.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-19.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-19.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-19.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-2.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-2.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-2.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-20.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-20.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-20.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-21.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-21.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-21.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-22.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-22.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-22.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-23.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-23.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-23.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-24.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-24.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-24.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-25.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-25.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-25.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-3.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-3.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-3.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-4.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-4.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-4.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-5.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-5.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-5.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-6.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-6.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-6.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-7.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-7.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-7.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-8.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-8.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-8.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-9.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-9.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-9.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-7b2ec235dd7d06ba-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-7b2ec235dd7d06ba-1.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-7b2ec235dd7d06ba-1.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-1.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-1.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-10.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-10.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-10.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-11.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-11.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-11.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-2.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-2.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-2.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-3.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-3.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-3.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-4.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-4.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-4.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-5.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-5.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-5.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-6.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-6.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-6.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-7.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-7.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-7.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-8.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-8.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-8.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-9.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-9.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-9.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-918cd4cfc31f23ae-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-918cd4cfc31f23ae-1.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-918cd4cfc31f23ae-1.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-1.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-1.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-2.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-2.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-2.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-3.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-3.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-3.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-1.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-1.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-2.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-2.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-2.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-3.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-3.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-3.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-eeb660d07679d619-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-eeb660d07679d619-1.digest new file mode 100644 index 000000000..8f6248de6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-eeb660d07679d619-1.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-f7c825bf3b0bac82-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-f7c825bf3b0bac82-1.digest new file mode 100644 index 000000000..b00dc4322 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-f7c825bf3b0bac82-1.digest @@ -0,0 +1,61 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 4.0, 12.0), lower_left_corner: Vec3A(-8.494889, -2.4422622, 2.981679), horizontal: Vec3A(16.989779, -0.0, 0.0), vertical: Vec3A(0.0, 9.411561, -1.6595122), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.98480767, -0.17364816), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 8, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.0, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: BalanceMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 16.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/veach_mis.usda"], invisible_overrides: Some(0) } +layer: $DIR/veach_mis.usda +lights: 4 +light 0: area name Some("/World/LightBig") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/LightMedium") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/LightSmall") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/LightTiny") lpe None pmf 0.25 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 10 geometries, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 12, spheres: 4, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:68d4160149942562 camera=2:68d4160149942562 shadow=2:68d4160149942562 indirect=2:68d4160149942562 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:c752315e4cdb3b45 camera=2:c752315e4cdb3b45 shadow=2:c752315e4cdb3b45 indirect=2:c752315e4cdb3b45 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:faaee6e5a0219d28 camera=2:faaee6e5a0219d28 shadow=2:faaee6e5a0219d28 indirect=2:faaee6e5a0219d28 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55522c246731933e camera=2:55522c246731933e shadow=2:55522c246731933e indirect=2:55522c246731933e +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6a1c895a634c0162 camera=2:6a1c895a634c0162 shadow=2:6a1c895a634c0162 indirect=2:6a1c895a634c0162 +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d7e184c050c2f9e4 camera=2:d7e184c050c2f9e4 shadow=2:d7e184c050c2f9e4 indirect=2:d7e184c050c2f9e4 +geom 6: material #5 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:0072c0dd41a28391 camera=1:0072c0dd41a28391 shadow=1:0072c0dd41a28391 indirect=1:0072c0dd41a28391 +geom 7: material #6 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:25d33e066e9377ce camera=1:25d33e066e9377ce shadow=1:25d33e066e9377ce indirect=1:25d33e066e9377ce +geom 8: material #7 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:946393500a4eba02 camera=1:946393500a4eba02 shadow=1:946393500a4eba02 indirect=1:946393500a4eba02 +geom 9: material #8 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c0b8734402fc2ca3 camera=1:c0b8734402fc2ca3 shadow=1:c0b8734402fc2ca3 indirect=1:c0b8734402fc2ca3 +provenance material /World/Materials/Backdrop: MaterialOrigin { slots: [0, 1], displaced: false } +provenance material /World/Materials/PlateRough: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Materials/PlateRoughest: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Materials/PlateSmooth: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Materials/PlateSmoothest: MaterialOrigin { slots: [5], displaced: false } +provenance light /World/LightBig: LightOrigin { index: 0, geoms: 6..7 } +provenance light /World/LightMedium: LightOrigin { index: 1, geoms: 7..8 } +provenance light /World/LightSmall: LightOrigin { index: 2, geoms: 8..9 } +provenance light /World/LightTiny: LightOrigin { index: 3, geoms: 9..10 } +provenance geometry 0..1: /World/BackWall +provenance geometry 1..2: /World/Floor +provenance geometry 2..3: /World/Plate3 +provenance geometry 3..4: /World/Plate2 +provenance geometry 4..5: /World/Plate1 +provenance geometry 5..6: /World/Plate0 +provenance geometry 6..7: /World/LightBig +provenance geometry 7..8: /World/LightMedium +provenance geometry 8..9: /World/LightSmall +provenance geometry 9..10: /World/LightTiny +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 5, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2412432479217055457, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5856995924472605639, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6402661692534233033, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13696518014408431155, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384334289683032877, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/visibility_usda-0f9ed9fc0b62a02c-1.digest b/crates/crust-core/tests/data/import_baselines/visibility_usda-0f9ed9fc0b62a02c-1.digest new file mode 100644 index 000000000..6386c397a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/visibility_usda-0f9ed9fc0b62a02c-1.digest @@ -0,0 +1,27 @@ +time: Some(2.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Hidden/Cam") +camera: Camera { origin: Vec3A(10.0, 0.0, 5.0), lower_left_corner: Vec3A(7.2816353, -1.5290802, -5.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 2, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/visibility.usda"], invisible_overrides: Some(0) } +layer: $DIR/visibility.usda +lights: 1 +light 0: area name Some("/W/Key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02ff87c392969355 camera=2:02ff87c392969355 shadow=2:02ff87c392969355 indirect=2:02ff87c392969355 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:13c54b934599bf61 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:13c54b934599bf61 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6008e2a8e10973d5 camera=2:6008e2a8e10973d5 shadow=2:6008e2a8e10973d5 indirect=2:6008e2a8e10973d5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:da267fdba289dc38 camera=2:da267fdba289dc38 shadow=2:da267fdba289dc38 indirect=2:da267fdba289dc38 +provenance light /W/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /W/Shown/D +provenance geometry 1..2: /W/Key +provenance geometry 2..4: /W/Scatter +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3224020731942780983, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(2.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Hidden/Cam"), cameras: ["/W/Hidden/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Hidden/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/visibility_usda-2bf7c45881effd3f-1.digest b/crates/crust-core/tests/data/import_baselines/visibility_usda-2bf7c45881effd3f-1.digest new file mode 100644 index 000000000..6e61c2403 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/visibility_usda-2bf7c45881effd3f-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Hidden/Cam") +camera: Camera { origin: Vec3A(10.0, 0.0, 5.0), lower_left_corner: Vec3A(7.2816353, -1.5290802, -5.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/visibility.usda"], invisible_overrides: Some(0) } +layer: $DIR/visibility.usda +lights: 2 +light 0: area name Some("/W/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: distant name Some("/W/Blink") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02ff87c392969355 camera=2:02ff87c392969355 shadow=2:02ff87c392969355 indirect=2:02ff87c392969355 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:13c54b934599bf61 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:13c54b934599bf61 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6008e2a8e10973d5 camera=2:6008e2a8e10973d5 shadow=2:6008e2a8e10973d5 indirect=2:6008e2a8e10973d5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:da267fdba289dc38 camera=2:da267fdba289dc38 shadow=2:da267fdba289dc38 indirect=2:da267fdba289dc38 +provenance light /W/Blink: LightOrigin { index: 1, geoms: 2..2 } +provenance light /W/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /W/Shown/D +provenance geometry 1..2: /W/Key +provenance geometry 2..4: /W/Scatter +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3224020731942780983, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/Hidden/Cam"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Hidden/Cam"), cameras: ["/W/Hidden/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Hidden/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/visibility_usda-d0c678c9c1d6a069-1.digest b/crates/crust-core/tests/data/import_baselines/visibility_usda-d0c678c9c1d6a069-1.digest new file mode 100644 index 000000000..a5ec6cf60 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/visibility_usda-d0c678c9c1d6a069-1.digest @@ -0,0 +1,29 @@ +time: Some(1.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Hidden/Cam") +camera: Camera { origin: Vec3A(10.0, 0.0, 5.0), lower_left_corner: Vec3A(7.2816353, -1.5290802, -5.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 1, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/visibility.usda"], invisible_overrides: Some(0) } +layer: $DIR/visibility.usda +lights: 2 +light 0: area name Some("/W/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: distant name Some("/W/Blink") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02ff87c392969355 camera=2:02ff87c392969355 shadow=2:02ff87c392969355 indirect=2:02ff87c392969355 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:13c54b934599bf61 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:13c54b934599bf61 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6008e2a8e10973d5 camera=2:6008e2a8e10973d5 shadow=2:6008e2a8e10973d5 indirect=2:6008e2a8e10973d5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:da267fdba289dc38 camera=2:da267fdba289dc38 shadow=2:da267fdba289dc38 indirect=2:da267fdba289dc38 +provenance light /W/Blink: LightOrigin { index: 1, geoms: 2..2 } +provenance light /W/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /W/Shown/D +provenance geometry 1..2: /W/Key +provenance geometry 2..4: /W/Scatter +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3224020731942780983, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(1.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Hidden/Cam"), cameras: ["/W/Hidden/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Hidden/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/visibility_usda-f7d5c6c9644dd6bb-1.digest b/crates/crust-core/tests/data/import_baselines/visibility_usda-f7d5c6c9644dd6bb-1.digest new file mode 100644 index 000000000..4c3b99f01 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/visibility_usda-f7d5c6c9644dd6bb-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/W/Hidden/Cam") +camera: Camera { origin: Vec3A(10.0, 0.0, 5.0), lower_left_corner: Vec3A(7.2816353, -1.5290802, -5.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/visibility.usda"], invisible_overrides: Some(0) } +layer: $DIR/visibility.usda +lights: 2 +light 0: area name Some("/W/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: distant name Some("/W/Blink") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02ff87c392969355 camera=2:02ff87c392969355 shadow=2:02ff87c392969355 indirect=2:02ff87c392969355 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:13c54b934599bf61 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:13c54b934599bf61 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6008e2a8e10973d5 camera=2:6008e2a8e10973d5 shadow=2:6008e2a8e10973d5 indirect=2:6008e2a8e10973d5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:da267fdba289dc38 camera=2:da267fdba289dc38 shadow=2:da267fdba289dc38 indirect=2:da267fdba289dc38 +provenance light /W/Blink: LightOrigin { index: 1, geoms: 2..2 } +provenance light /W/Key: LightOrigin { index: 0, geoms: 1..2 } +provenance geometry 0..1: /W/Shown/D +provenance geometry 1..2: /W/Key +provenance geometry 2..4: /W/Scatter +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3224020731942780983, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Hidden/Cam"), cameras: ["/W/Hidden/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Hidden/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/visible_light_usda-c593161971da5ec4-1.digest b/crates/crust-core/tests/data/import_baselines/visible_light_usda-c593161971da5ec4-1.digest new file mode 100644 index 000000000..02f5e0fd8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/visible_light_usda-c593161971da5ec4-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/visible_light.usda"], invisible_overrides: Some(0) } +layer: $DIR/visible_light.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: area name Some("/World/L") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/L +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/volume_in_prototype_usda-d6406b3b1214ee81-1.digest b/crates/crust-core/tests/data/import_baselines/volume_in_prototype_usda-d6406b3b1214ee81-1.digest new file mode 100644 index 000000000..536fbb3c2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/volume_in_prototype_usda-d6406b3b1214ee81-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/volume_in_prototype.usda"], invisible_overrides: Some(0) } +layer: $DIR/volume_in_prototype.usda +warning: Warning { code: VolumeInPrototype, kind: Skipped, count: 3, prims: ["/__Prototype_0/Fog", "/World/Scatter/Protos/Puff"], message: "Volume at /__Prototype_0/Fog is inside a prototype — volumes cannot be instanced, skipped" } +warning: Warning { code: InstancingEmptyPrototype, kind: Skipped, count: 3, prims: ["/__Prototype_0", "/World/Scatter/Protos/Puff"], message: "Prototype /__Prototype_0 contributed no geometry" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/volume_usda-a8034cd85e6f3de3-1.digest b/crates/crust-core/tests/data/import_baselines/volume_usda-a8034cd85e6f3de3-1.digest new file mode 100644 index 000000000..ad1c8ee81 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/volume_usda-a8034cd85e6f3de3-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/hidden", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/volume.usda"], invisible_overrides: Some(0) } +layer: $DIR/volume.usda +warning: Warning { code: RenderPassVolumeIgnored, kind: Skipped, count: 1, prims: ["/World/Fog"], message: "/World/Fog: a volume region outside collection:cameraVisibility of render pass /Render/Passes/hidden, which crust does not apply to volumes — the camera sees it as without the pass" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 1 +volume 0: sigma_s Vec3A(0.5, 0.5, 0.5) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/hidden"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/volume_usda-bac87085eea27fa2-1.digest b/crates/crust-core/tests/data/import_baselines/volume_usda-bac87085eea27fa2-1.digest new file mode 100644 index 000000000..b4ea92e96 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/volume_usda-bac87085eea27fa2-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/volume.usda"], invisible_overrides: Some(0) } +layer: $DIR/volume.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 1 +volume 0: sigma_s Vec3A(0.5, 0.5, 0.5) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/volume_usda-dc3452b116e9581a-1.digest b/crates/crust-core/tests/data/import_baselines/volume_usda-dc3452b116e9581a-1.digest new file mode 100644 index 000000000..936462766 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/volume_usda-dc3452b116e9581a-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/matte", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/volume.usda"], invisible_overrides: Some(0) } +layer: $DIR/volume.usda +warning: Warning { code: RenderPassVolumeIgnored, kind: Skipped, count: 1, prims: ["/World/Fog"], message: "/World/Fog: a volume region in collection:matte of render pass /Render/Passes/matte, which crust does not apply to volumes — the camera sees it as without the pass" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 1 +volume 0: sigma_s Vec3A(0.5, 0.5, 0.5) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/matte"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/wide_ok_usda-07bfe44a3376f28e-1.digest b/crates/crust-core/tests/data/import_baselines/wide_ok_usda-07bfe44a3376f28e-1.digest new file mode 100644 index 000000000..c9a551e1f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/wide_ok_usda-07bfe44a3376f28e-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/look_out", name: "look_out", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/f_out", name: "f_out", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 1, output: 0, components: 2, radiance: true }), components: 2, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/look", "/Render/f"], display_filters: [], display: "beauty" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/wide_ok.usda"], invisible_overrides: Some(0) } +layer: $DIR/wide_ok.usda +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/wide_usda-98ba41961b37bb34-1.digest b/crates/crust-core/tests/data/import_baselines/wide_usda-98ba41961b37bb34-1.digest new file mode 100644 index 000000000..2e21a0137 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/wide_usda-98ba41961b37bb34-1.digest @@ -0,0 +1,27 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-5.0, -3.75, -10.0), horizontal: Vec3A(10.0, 0.0, 0.0), vertical: Vec3A(0.0, 7.5, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 32, height: 24, region: PixelRect { x0: 0, y0: 0, x1: 32, y1: 24 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/C", name: "C", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/matte", name: "matte", channel_prefix: None, source: Primvar(PrimvarSource { index: 0, components: 1, role: Float }), components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth", name: "depth", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Closest, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/depth_filtered", name: "depth_filtered", channel_prefix: None, source: Depth, components: 1, precision: Float, accumulation: Filtered, clear: inf, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/variance", name: "variance", channel_prefix: None, source: Variance, components: 1, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }, AovVar { prim_path: "/Render/look_out", name: "look_out", channel_prefix: None, source: Filter(FilterSource { display: false, filter: 0, output: 0, components: 3, radiance: true }), components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: Some(Precomp { sample_filters: ["/Render/look", "/Render/f"], display_filters: [], display: "beauty" }) } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [24.0, 18.0], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/wide.usda"], invisible_overrides: Some(0) } +layer: $DIR/wide.usda +warning: Warning { code: AovTypeMismatch, kind: Skipped, count: 1, prims: ["/Render/f_out"], message: "/Render/f_out: a filter output cannot be written as \"color4f\" (one to three float or half channels); no channel written" } +lights: 1 +light 0: dome name Some("/World/sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov Some((Some(0), false)) swapped false curves false scale 1.0 motion [] pieces all=2:2a13523c8e09c13d camera=2:2a13523c8e09c13d shadow=2:2a13523c8e09c13d indirect=2:2a13523c8e09c13d +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:31db52e4afd4a225 camera=2:31db52e4afd4a225 shadow=2:31db52e4afd4a225 indirect=2:31db52e4afd4a225 +provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Card +provenance geometry 1..2: /World/Wall +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3430351340666728903, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/window_bottom_quarter_usda-3769adf96d53a2f1-1.digest b/crates/crust-core/tests/data/import_baselines/window_bottom_quarter_usda-3769adf96d53a2f1-1.digest new file mode 100644 index 000000000..e570c1a90 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_bottom_quarter_usda-3769adf96d53a2f1-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0954998, -2.0954998, -10.0), horizontal: Vec3A(4.1909995, 0.0, 0.0), vertical: Vec3A(0.0, 4.1909995, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 100, height: 100, region: PixelRect { x0: 0, y0: 75, x1: 100, y1: 100 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/window_bottom_quarter.usda"], invisible_overrides: Some(0) } +layer: $DIR/window_bottom_quarter.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/window_boundaries_usda-8ec00fd05808f90e-1.digest b/crates/crust-core/tests/data/import_baselines/window_boundaries_usda-8ec00fd05808f90e-1.digest new file mode 100644 index 000000000..4baa72f39 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_boundaries_usda-8ec00fd05808f90e-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-3.0581603, -1.5290802, -10.0), horizontal: Vec3A(6.1163206, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 8, height: 4, region: PixelRect { x0: 2, y0: 1, x1: 6, y1: 3 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/window_boundaries.usda"], invisible_overrides: Some(0) } +layer: $DIR/window_boundaries.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/window_centres_usda-5b25bbbab727a81b-1.digest b/crates/crust-core/tests/data/import_baselines/window_centres_usda-5b25bbbab727a81b-1.digest new file mode 100644 index 000000000..8c8aa78e6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_centres_usda-5b25bbbab727a81b-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-3.0581603, -1.5290802, -10.0), horizontal: Vec3A(6.1163206, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 8, height: 4, region: PixelRect { x0: 2, y0: 0, x1: 3, y1: 4 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/window_centres.usda"], invisible_overrides: Some(0) } +layer: $DIR/window_centres.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/window_default_usda-1d0d1bbb6d0e388d-1.digest b/crates/crust-core/tests/data/import_baselines/window_default_usda-1d0d1bbb6d0e388d-1.digest new file mode 100644 index 000000000..d9e6a6f29 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_default_usda-1d0d1bbb6d0e388d-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/window_default.usda"], invisible_overrides: Some(0) } +layer: $DIR/window_default.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/window_empty_usda-c239bdc771be269c-1.digest b/crates/crust-core/tests/data/import_baselines/window_empty_usda-c239bdc771be269c-1.digest new file mode 100644 index 000000000..b42eb30db --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_empty_usda-c239bdc771be269c-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/window_empty.usda"], invisible_overrides: Some(0) } +layer: $DIR/window_empty.usda +warning: Warning { code: ProductInvalidDataWindow, kind: Refused, count: 1, prims: [], message: "dataWindowNDC = (0.5, 0.5, 0.5, 0.6) selects no pixel of the 640x360 frame; rendering the full frame" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/window_full_vs_unauthored_usda-6f84b7cb89845fa4-1.digest b/crates/crust-core/tests/data/import_baselines/window_full_vs_unauthored_usda-6f84b7cb89845fa4-1.digest new file mode 100644 index 000000000..84acb5aa8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_full_vs_unauthored_usda-6f84b7cb89845fa4-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/a", name: "a.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }, AovProduct { prim_path: "/Render/b", name: "b.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/window_full_vs_unauthored.usda"], invisible_overrides: Some(0) } +layer: $DIR/window_full_vs_unauthored.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/window_honoured_usda-0e440c93c494db71-1.digest b/crates/crust-core/tests/data/import_baselines/window_honoured_usda-0e440c93c494db71-1.digest new file mode 100644 index 000000000..27e8e1c39 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_honoured_usda-0e440c93c494db71-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 36, region: PixelRect { x0: 16, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/window_honoured.usda"], invisible_overrides: Some(0) } +layer: $DIR/window_honoured.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/window_no_products_usda-9317bad8a6d2e63d-1.digest b/crates/crust-core/tests/data/import_baselines/window_no_products_usda-9317bad8a6d2e63d-1.digest new file mode 100644 index 000000000..978bcdab3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_no_products_usda-9317bad8a6d2e63d-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 320, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/window_no_products.usda"], invisible_overrides: Some(0) } +layer: $DIR/window_no_products.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/window_off_frame_usda-0e5c269b6dd24fb6-1.digest b/crates/crust-core/tests/data/import_baselines/window_off_frame_usda-0e5c269b6dd24fb6-1.digest new file mode 100644 index 000000000..fded7eb54 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_off_frame_usda-0e5c269b6dd24fb6-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/window_off_frame.usda"], invisible_overrides: Some(0) } +layer: $DIR/window_off_frame.usda +warning: Warning { code: ProductInvalidDataWindow, kind: Refused, count: 1, prims: [], message: "dataWindowNDC = (1.2, 0, 1.5, 1) selects no pixel of the 640x360 frame; rendering the full frame" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/window_one_pixel_usda-66ddf756a5e443fe-1.digest b/crates/crust-core/tests/data/import_baselines/window_one_pixel_usda-66ddf756a5e443fe-1.digest new file mode 100644 index 000000000..d22fcab3f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_one_pixel_usda-66ddf756a5e443fe-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-3.8227005, -1.5290802, -10.0), horizontal: Vec3A(7.645401, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 10, height: 4, region: PixelRect { x0: 3, y0: 1, x1: 4, y1: 2 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/window_one_pixel.usda"], invisible_overrides: Some(0) } +layer: $DIR/window_one_pixel.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/window_overscan_usda-c27e01fde4009f5e-1.digest b/crates/crust-core/tests/data/import_baselines/window_overscan_usda-c27e01fde4009f5e-1.digest new file mode 100644 index 000000000..8067bd437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_overscan_usda-c27e01fde4009f5e-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/window_overscan.usda"], invisible_overrides: Some(0) } +layer: $DIR/window_overscan.usda +warning: Warning { code: ProductDataWindowClipped, kind: Approximated, count: 1, prims: [], message: "dataWindowNDC = (-0.1, 0, 1.1, 1) reaches outside the frame; overscan is not supported, so it is clipped to it" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/window_product_overrides_usda-bb3b29ebf7dd99a8-1.digest b/crates/crust-core/tests/data/import_baselines/window_product_overrides_usda-bb3b29ebf7dd99a8-1.digest new file mode 100644 index 000000000..80d850173 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_product_overrides_usda-bb3b29ebf7dd99a8-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.0954998, -2.0954998, -10.0), horizontal: Vec3A(4.1909995, 0.0, 0.0), vertical: Vec3A(0.0, 4.1909995, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 100, height: 100, region: PixelRect { x0: 50, y0: 0, x1: 100, y1: 50 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/window_product_overrides.usda"], invisible_overrides: Some(0) } +layer: $DIR/window_product_overrides.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/window_products_differ_usda-78414609fe85fc23-1.digest b/crates/crust-core/tests/data/import_baselines/window_products_differ_usda-78414609fe85fc23-1.digest new file mode 100644 index 000000000..b58d7a3d3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_products_differ_usda-78414609fe85fc23-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/a", name: "a.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }, AovProduct { prim_path: "/Render/b", name: "b.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/window_products_differ.usda"], invisible_overrides: Some(0) } +layer: $DIR/window_products_differ.usda +warning: Warning { code: ProductRegionMismatch, kind: Approximated, count: 1, prims: ["/Render/b"], message: "/Render/b: asks for dataWindowNDC (0.5, 0, 1, 1), but the render's is (0, 0, 1, 1) (the first product's); its file is written with that" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/window_right_half_usda-c5f5b85f1946cb91-1.digest b/crates/crust-core/tests/data/import_baselines/window_right_half_usda-c5f5b85f1946cb91-1.digest new file mode 100644 index 000000000..f39b80e0a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_right_half_usda-c5f5b85f1946cb91-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 320, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/p", name: "p.exr", vars: [AovVar { prim_path: "/Render/beauty", name: "beauty", channel_prefix: None, source: Color, components: 4, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/window_right_half.usda"], invisible_overrides: Some(0) } +layer: $DIR/window_right_half.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/window_unauthored_usda-5d663894090b1282-1.digest b/crates/crust-core/tests/data/import_baselines/window_unauthored_usda-5d663894090b1282-1.digest new file mode 100644 index 000000000..dc6719698 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_unauthored_usda-5d663894090b1282-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/other") +camera: Camera { origin: Vec3A(0.0, 0.0, 0.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -10.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/window_unauthored.usda"], invisible_overrides: Some(0) } +layer: $DIR/window_unauthored.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:fb1e7d48790aec95 camera=1:fb1e7d48790aec95 shadow=1:fb1e7d48790aec95 indirect=1:fb1e7d48790aec95 +provenance geometry 0..1: /World/ball +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/working_acescg_usda-453466808888f80c-1.digest b/crates/crust-core/tests/data/import_baselines/working_acescg_usda-453466808888f80c-1.digest new file mode 100644 index 000000000..500d21278 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/working_acescg_usda-453466808888f80c-1.digest @@ -0,0 +1,25 @@ +time: None +working space: ACEScg +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/working_acescg.usda"], invisible_overrides: Some(0) } +layer: $DIR/working_acescg.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 2 +light 0: area name Some("/World/Tagged") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Plain") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:984632b55acb5495 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:984632b55acb5495 +provenance light /World/Plain: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Tagged: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Tagged +provenance geometry 1..2: /World/Plain +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(5)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/working_default_usda-5aec729f1efbcf98-1.digest b/crates/crust-core/tests/data/import_baselines/working_default_usda-5aec729f1efbcf98-1.digest new file mode 100644 index 000000000..1f338a0f2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/working_default_usda-5aec729f1efbcf98-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/working_default.usda"], invisible_overrides: Some(0) } +layer: $DIR/working_default.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 2 +light 0: area name Some("/World/Tagged") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Plain") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:984632b55acb5495 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:984632b55acb5495 +provenance light /World/Plain: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Tagged: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Tagged +provenance geometry 1..2: /World/Plain +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/working_host_usda-964cb93fefda7817-1.digest b/crates/crust-core/tests/data/import_baselines/working_host_usda-964cb93fefda7817-1.digest new file mode 100644 index 000000000..5ea9c53a1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/working_host_usda-964cb93fefda7817-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.2020 +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/working_host.usda"], invisible_overrides: Some(0) } +layer: $DIR/working_host.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: Some("lin_rec2020"), pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(7)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/working_srgb_usda-8fdff51064dc58c9-1.digest b/crates/crust-core/tests/data/import_baselines/working_srgb_usda-8fdff51064dc58c9-1.digest new file mode 100644 index 000000000..78a129793 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/working_srgb_usda-8fdff51064dc58c9-1.digest @@ -0,0 +1,26 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/working_srgb.usda"], invisible_overrides: Some(0) } +layer: $DIR/working_srgb.usda +warning: Warning { code: ColorWorkingSpaceRefused, kind: Refused, count: 1, prims: ["/Render/settings"], message: "/Render/settings: renderingColorSpace refused (working colour space `srgb_texture` (sRGB Encoded Rec.709 (sRGB)) is not scene-linear); rendering in lin_rec709" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 2 +light 0: area name Some("/World/Tagged") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Plain") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:984632b55acb5495 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:984632b55acb5495 +provenance light /World/Plain: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Tagged: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Tagged +provenance geometry 1..2: /World/Plain +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/x_usda-4b3ed4428fa191c7-1.digest b/crates/crust-core/tests/data/import_baselines/x_usda-4b3ed4428fa191c7-1.digest new file mode 100644 index 000000000..6caf09bfc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/x_usda-4b3ed4428fa191c7-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 32, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/x.usda", "$TMP/crust_mcp_cli/render_final/shots/shot.usda"], invisible_overrides: Some(0) } +layer: $TMP/crust_mcp_cli/render_final/shots/shot.usda +layer: $DIR/x.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/x_usda-4f6345f399f0a5af-1.digest b/crates/crust-core/tests/data/import_baselines/x_usda-4f6345f399f0a5af-1.digest new file mode 100644 index 000000000..6caf09bfc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/x_usda-4f6345f399f0a5af-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 32, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/x.usda", "$TMP/crust_mcp_cli/render_final/shots/shot.usda"], invisible_overrides: Some(0) } +layer: $TMP/crust_mcp_cli/render_final/shots/shot.usda +layer: $DIR/x.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/x_usda-a701d438407a1ca1-1.digest b/crates/crust-core/tests/data/import_baselines/x_usda-a701d438407a1ca1-1.digest new file mode 100644 index 000000000..9db3f58ac --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/x_usda-a701d438407a1ca1-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 32, width: 96, height: 54, region: PixelRect { x0: 0, y0: 0, x1: 96, y1: 54 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/x.usda", "$TMP/crust_mcp_cli/render_final/shots/shot.usda"], invisible_overrides: Some(0) } +layer: $TMP/crust_mcp_cli/render_final/shots/shot.usda +layer: $DIR/x.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 5..5 } +provenance geometry 0..1: /scene/pSphere2 +provenance geometry 1..2: /scene/pTorus1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pSphere1 +provenance geometry 4..5: /scene/pCube1 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/x_usda-d5611726aa414464-1.digest b/crates/crust-core/tests/data/import_baselines/x_usda-d5611726aa414464-1.digest new file mode 100644 index 000000000..0bd67296b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/x_usda-d5611726aa414464-1.digest @@ -0,0 +1,40 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/scene/camera1") +camera: Camera { origin: Vec3A(0.0074343784, 1.9913422, 4.0133057), lower_left_corner: Vec3A(-8.881443, -3.0086517, -0.98669434), horizontal: Vec3A(17.777756, 0.0, 0.0), vertical: Vec3A(0.0, 9.999988, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: Some(Vec4(0.0, 0.0, -1.0, 3.9133058)), far: Some(Vec4(0.0, 0.0, 1.0, 9995.986)), planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 12.700017, aperture: [25.4, 25.4], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 5.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/x.usda", "$TMP/crust_mcp_cli/render_final/shots/shot.usda"], invisible_overrides: Some(0) } +layer: $TMP/crust_mcp_cli/render_final/shots/shot.usda +layer: $DIR/x.usda +warning: Warning { code: MaterialFallbackDefault, kind: Skipped, count: 1, prims: ["/scene/Looks/initialShadingGroup"], message: "Material /scene/Looks/initialShadingGroup has no surface shader — using default grey OpenPBR" } +lights: 1 +light 0: dome name Some("/scene/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 822, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 1582, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 4.0 motion [] pieces all=10:88b22fc3345d5b05 camera=10:88b22fc3345d5b05 shadow=10:88b22fc3345d5b05 indirect=10:88b22fc3345d5b05 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.2 motion [] pieces all=760:c2b60a75c52c78b9 camera=760:c2b60a75c52c78b9 shadow=760:c2b60a75c52c78b9 indirect=760:c2b60a75c52c78b9 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:94a297badef437e1 camera=12:94a297badef437e1 shadow=12:94a297badef437e1 indirect=12:94a297badef437e1 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.25 motion [] pieces all=800:4a8c9f44d777e131 camera=800:4a8c9f44d777e131 shadow=800:4a8c9f44d777e131 indirect=800:4a8c9f44d777e131 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.3585339 motion [] pieces all=760:2344ecf63e12c441 camera=760:2344ecf63e12c441 shadow=760:2344ecf63e12c441 indirect=760:2344ecf63e12c441 +provenance material /scene/Looks/initialShadingGroup: MaterialOrigin { slots: [0, 1, 2, 3, 4], displaced: false } +provenance light /scene/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /scene/pCube1 +provenance geometry 1..2: /scene/pSphere1 +provenance geometry 2..3: /scene/pCube2 +provenance geometry 3..4: /scene/pTorus1 +provenance geometry 4..5: /scene/pSphere2 +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119738035130870988, n_points: 382, n_indices: 1560, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/layering.rs b/crates/crust-core/tests/layering.rs index 6113fad5c..69603adff 100644 --- a/crates/crust-core/tests/layering.rs +++ b/crates/crust-core/tests/layering.rs @@ -54,7 +54,7 @@ const LAYERS: &[(&str, &[&str])] = &[ "volume", ], ), - ("import", &["live", "place", "scene", "world"]), + ("import", &["live", "parity", "place", "scene", "world"]), ( "tools", &["check", "compare", "diagnostic", "inspect", "stamp"], diff --git a/crates/crust-hydra/Cargo.toml b/crates/crust-hydra/Cargo.toml index e80056e4d..afab50824 100644 --- a/crates/crust-hydra/Cargo.toml +++ b/crates/crust-hydra/Cargo.toml @@ -25,3 +25,8 @@ crust-assets = { path = "../crust-assets" } # The session thread keeps the authoring stage the classifier reads. openusd.workspace = true tracing.workspace = true + +[dev-dependencies] +# Every import a test performs is compared with the direct importer's +# baseline (crust-core's test-only `parity` feature). +crust-core = { path = "../crust-core", features = ["parity"] } diff --git a/crates/crust-render/Cargo.toml b/crates/crust-render/Cargo.toml index 402c1ec02..e32d0860d 100644 --- a/crates/crust-render/Cargo.toml +++ b/crates/crust-render/Cargo.toml @@ -91,6 +91,9 @@ base64 = { version = "0.23", optional = true } # (`tex_probe`, `ptex_seams`) — the decoded `PtexColor` deliberately does not # replace those, since they sample without the colour decode. [dev-dependencies] +# Every import a test performs is compared with the direct importer's +# baseline (crust-core's test-only `parity` feature). +crust-core = { path = "../crust-core", features = ["parity"] } openusd.workspace = true openusd-schemas = { workspace = true, features = ["geom"] } ptex.workspace = true diff --git a/crates/crust-render/tests/import_parity.rs b/crates/crust-render/tests/import_parity.rs new file mode 100644 index 000000000..44b2e2b3b --- /dev/null +++ b/crates/crust-render/tests/import_parity.rs @@ -0,0 +1,168 @@ +//! Import parity on the committed samples (the `moho-import` change, spec +//! `import-parity`): each sample's `crust check --json` report, timings +//! excluded, against the baseline recorded from the direct importer. +//! +//! The `crust` process this runs is built with crust-core's `parity` feature +//! (the dev-dependency in `Cargo.toml`), so each check also compares the +//! imported scene's digest with its baseline (`crust_core::parity`), and with +//! `CRUST_PARITY_IMAGES=1` its 16 spp image. `CRUST_RECORD_BASELINES=1` +//! records every baseline instead. + +use std::path::{Path, PathBuf}; +use std::process::Command; + +/// The workspace's `samples/`. +fn samples() -> PathBuf { + Path::new(env!("CARGO_MANIFEST_DIR")) + .join("../../samples") + .canonicalize() + .expect("samples/") +} + +/// Samples that reference files outside the repository, with the file each +/// needs: compared only where that file exists, and listed as skipped +/// otherwise (in CI). They are also the heavy ones (four to ten minutes each +/// unoptimised), so an unoptimised build compares them only with +/// `CRUST_PARITY_EXTERNAL=1`; an optimised one (`cargo test --release`, the +/// image run) always does. +const EXTERNAL: &[(&str, &str)] = &[ + ("materialx_lion.usda", "MaterialXTeapotLion-1.0"), + ("materialx_teapot.usda", "MaterialXTeapotLion-1.0"), + ( + "materialx_showcase.usda", + "/home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0", + ), +]; + +/// Every committed top-level `samples/*.usd*` stage. +fn sample_stages() -> Vec { + let mut stages: Vec = std::fs::read_dir(samples()) + .expect("list samples/") + .filter_map(|e| e.ok().map(|e| e.path())) + .filter(|p| { + p.extension() + .and_then(|e| e.to_str()) + .is_some_and(|e| matches!(e, "usd" | "usda" | "usdc" | "usdz")) + }) + .collect(); + stages.sort(); + stages +} + +/// Where the report baselines live, beside crust-core's digests. +fn baseline_dir() -> PathBuf { + Path::new(env!("CARGO_MANIFEST_DIR")).join("../crust-core/tests/data/import_baselines/check") +} + +/// `crust check --json -` on `stage`, with the import's phases (timings and +/// memory samples) removed and the workspace written as `$ROOT`. +fn report(stage: &Path) -> String { + let out = Command::new(env!("CARGO_BIN_EXE_crust")) + .current_dir(samples()) + .args(["check", "-i"]) + .arg(stage) + .args(["--json", "-", "-l", "error"]) + .output() + .expect("run crust check"); + assert!( + out.status.success(), + "crust check {} failed:\n{}", + stage.display(), + String::from_utf8_lossy(&out.stderr) + ); + let mut json: serde_json::Value = serde_json::from_slice(&out.stdout).unwrap_or_else(|e| { + panic!( + "crust check {} printed no report ({e}):\n{}", + stage.display(), + String::from_utf8_lossy(&out.stdout) + ) + }); + if let Some(report) = json.as_object_mut() { + report.remove("import"); + } + let text = serde_json::to_string_pretty(&json).expect("re-serialize"); + let root = samples() + .parent() + .expect("the workspace") + .display() + .to_string(); + text.replace(&root, "$ROOT") + "\n" +} + +/// The report baseline comparison for one sample: `None` when equal (or +/// recorded), else what differs. +fn compare(stage: &Path, record: bool) -> Option { + let name = stage + .file_name() + .expect("a file") + .to_string_lossy() + .into_owned(); + let dir = baseline_dir(); + let actual = report(stage); + let file = dir.join(format!("{name}.json")); + if record { + std::fs::create_dir_all(&dir).expect("baseline dir"); + std::fs::write(&file, &actual).expect("record the baseline"); + return None; + } + let Ok(expected) = std::fs::read_to_string(&file) else { + return Some(format!( + "{name}: no baseline {} — record it with CRUST_RECORD_BASELINES=1", + file.display() + )); + }; + if expected == actual { + return None; + } + let line = expected + .lines() + .zip(actual.lines()) + .position(|(a, b)| a != b) + .unwrap_or(expected.lines().count().min(actual.lines().count())); + Some(format!( + "{name}: the check report differs from {} at line {}:\n baseline: {}\n import: {}", + file.display(), + line + 1, + expected.lines().nth(line).unwrap_or(""), + actual.lines().nth(line).unwrap_or("") + )) +} + +#[test] +fn every_sample_imports_as_its_baseline() { + let record = std::env::var("CRUST_RECORD_BASELINES").is_ok_and(|v| v == "1"); + let external = cfg!(not(debug_assertions)) + || std::env::var("CRUST_PARITY_EXTERNAL").is_ok_and(|v| v == "1"); + let mut stages = Vec::new(); + for stage in sample_stages() { + let name = stage + .file_name() + .expect("a file") + .to_string_lossy() + .into_owned(); + if let Some((_, needs)) = EXTERNAL.iter().find(|(s, _)| *s == name) { + let needed = samples().join(needs); + if !needed.exists() { + eprintln!("skipped {name}: needs {} (not committed)", needed.display()); + continue; + } + if !external { + eprintln!("skipped {name}: external and heavy, set CRUST_PARITY_EXTERNAL=1"); + continue; + } + } + stages.push(stage); + } + // Each check is its own process: run them side by side. + let failures: Vec = std::thread::scope(|scope| { + let runs: Vec<_> = stages + .iter() + .map(|stage| scope.spawn(move || compare(stage, record))) + .collect(); + runs.into_iter() + .filter_map(|run| run.join().expect("a sample's check panicked")) + .collect() + }); + assert!(failures.is_empty(), "{}", failures.join("\n")); + assert!(stages.len() >= 40, "only {} samples compared", stages.len()); +} diff --git a/openspec/changes/moho-import/specs/import-parity/spec.md b/openspec/changes/moho-import/specs/import-parity/spec.md index 2356d909b..ed5b7d819 100644 --- a/openspec/changes/moho-import/specs/import-parity/spec.md +++ b/openspec/changes/moho-import/specs/import-parity/spec.md @@ -60,9 +60,11 @@ or ignored. ### Requirement: Parity tests on the samples and import fixtures `cargo test` SHALL run the parity check on every committed `samples/*.usd*` scene, -comparing digests, reports and image hashes with the baselines. Every import test -fixture in `crust-core/tests` SHALL be compared with its baseline digest and image -hash. A sample that cannot run in CI SHALL be listed with its reason. +comparing digests and reports with the baselines, and SHALL compare every import an +import test performs (fixtures, CLI tests, live re-imports) with its baseline digest. +With `CRUST_PARITY_IMAGES=1`, meant for `cargo test --release`, it SHALL also compare +each import's 16 spp image hash; an unoptimised build renders too slowly to do so on +every run. A sample that cannot run in CI SHALL be listed with its reason. #### Scenario: The test suite diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 3d5284fa5..289fba6f4 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -50,37 +50,47 @@ baselines recorded from the direct importer before anything migrated (group 2). Recorded before anything migrates, from the direct importer as it is at the start of this group, and kept for the whole change. -- [ ] 2.1 Add a test-only scene digest in crust-core (behind a `parity` feature that only - tests and the parity tooling enable). It records, as stable text: - - geometry in id order (primitive buffers, instance transforms, material identity by - resolved parameters, masks, holdout flags); - - the light list; - - camera, settings and the AOV request; - - warnings in order, and the provenance; +- [x] 2.1 Add a test-only scene digest in crust-core (`src/parity.rs`, behind a `parity` + feature that only tests enable, through dev-dependencies). It records, as stable text + with the stage's directory, the workspace and the temporary directory normalised: + - geometry in id order (every piece a ray of each category sees, hashed bit for bit, + instances through their transforms; the material by sharing order and `Signature`; + light class, holdout and transparent-emitter flags; side tables; scale; motion); + - the light list (kind, name, LPE tag, pmf, shadow mask, link flags, lobe gains) and + the volumes; + - camera, settings, the AOV request and the pass; + - warnings in order, and the provenance (maps sorted); - the scene's layers and `Source`. - Comparing two digests returns a field-by-field diff naming the first difference. - Verify with a unit test where two scenes that differ in one geometry's order report - that geometry id. -- [ ] 2.2 Add `crust-core/tests/import_parity.rs` and its baselines under - `crust-core/tests/data/import_baselines/`. For each committed `samples/*.usd*` (the - Kitchen set variants included; a scene that cannot run in CI is listed with its - reason), it imports the scene and compares, with the recorded baseline: - - the digest; - - the `crust check` report data, timings excluded; - - the 16 spp image (`--indirect-clamp 0`), by a hash of its pixels. - - `CRUST_RECORD_BASELINES=1` rewrites the baselines instead of comparing. Record them - from the direct importer at this commit. Verify that the test lists every sample, and - that a deliberate change to one scene's import fails the test naming the sample and - the first difference. -- [ ] 2.3 Add a helper the existing import tests (`usd_scene.rs`, `light_linking.rs`, - `render_passes.rs`, `mesh_primvars.rs`, `camera_*.rs`, `motion_vector.rs`, ...) call - in place of a bare import. It imports the fixture, and compares its digest and its - 16 spp image hash with the baseline recorded under the test's name (the same - `CRUST_RECORD_BASELINES=1` regenerates them). Convert the files one by one and record - their baselines from the direct importer. Verify by `grep` that no import test in - `crust-core/tests` calls the importer without it, apart from a short, commented list. + A material's parameters and a light's radiance are not in it (neither describes + itself); the 16 spp image covers them. Comparing two digests names the first + differing line. Verify with a unit test where two scenes that differ in one + geometry's order report that geometry id. +- [x] 2.2 Check every import against a baseline. With the `parity` feature, every + successful `load_scene` compares the scene's digest with the baseline under + `crust-core/tests/data/import_baselines/`, keyed by the layers it composed (paths and + text, normalised), the options, the environment switches and the importing test (its + thread's name, or a `crust` process's command line), and panics naming the stage and + the first difference. `CRUST_RECORD_BASELINES=1` records instead; + `CRUST_PARITY_IMAGES=1` also re-imports the stage and compares a hash of its 16 spp + image (indirect clamp off), meant for `cargo test --release`, since an unoptimised + build renders every import of the suite too slowly. Turn the feature on for + crust-core's, crust-render's and crust-hydra's tests, so every import test fixture, + the CLI tests and the live re-imports are all checked without converting call sites, + and record the baselines from the direct importer. Verify that the whole workspace's + tests pass against them, and that a deliberate change to one import fails the test + that imported it, naming the first difference. +- [ ] 2.3 Add `crust-render/tests/import_parity.rs`: for each committed `samples/*.usd*`, + `crust check --json` with the import's phases removed, compared with a baseline under + `import_baselines/check/` (the same `CRUST_RECORD_BASELINES=1` records it), its + digest checked by the `crust` process itself. The samples that need files outside the + repository (`materialx_lion`, `materialx_teapot`, `materialx_showcase`) are listed and + skipped where those files are missing; they take four to ten minutes each + unoptimised, so a debug run compares them only with `CRUST_PARITY_EXTERNAL=1`, and a + release run always does. The samples run side by side. Record the reports, and the image hashes of + the whole suite with `CRUST_RECORD_BASELINES=1 CRUST_PARITY_IMAGES=1 cargo test + --release`, from the direct importer. Verify that the test lists every sample, and + that the release image run passes. - [ ] 2.4 Add `scripts/import_parity.sh record|check [render flags]`. `record` renders the scene `-n` times at `-s 16 --indirect-clamp 0` with `--stats` and keeps the `crust check --json` report (timings removed), the EXR, and the peak memory From d31cacc6627f2a05d8743c8c49d3a1b5c3236663 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 21:03:47 +0100 Subject: [PATCH 11/95] build(deps): bump moho to fc391a5, the merge of scene-index-gaps Moho's main now carries M1 to M7 (light linking after the merge, streaming::unresolved, stage metadata with authored-ness, primOrigin, every pass collection, the merged children order, strategy D) and the light-linking performance fix. The workspace builds against the git rev with no local patch; `cargo tree -i openusd` still shows one package. Task 1.5 done; the design's note on Moho's rev updated. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- Cargo.lock | 2 +- Cargo.toml | 2 +- openspec/changes/moho-import/design.md | 15 ++++++--------- openspec/changes/moho-import/tasks.md | 11 +++++------ 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d974088b9..4b476b3f0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1285,7 +1285,7 @@ dependencies = [ [[package]] name = "moho" version = "0.1.0" -source = "git+https://github.com/doubleailes/Moho?rev=92c8b847822823f796b81b85452c3c400d77e5ec#92c8b847822823f796b81b85452c3c400d77e5ec" +source = "git+https://github.com/doubleailes/Moho?rev=fc391a5ca55b83078a1a157b3f17b793118cd6b9#fc391a5ca55b83078a1a157b3f17b793118cd6b9" dependencies = [ "openusd", "openusd-schemas", diff --git a/Cargo.toml b/Cargo.toml index c7a867d8d..c4e1504a0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -94,7 +94,7 @@ openusd-schemas = { version = "0.8", default-features = false } # openusd in the build. Moho re-exports it (`moho::openusd`), and new index-route # code names openusd through that re-export. Bumped with the openusd rev, in the # order written there. -moho = { git = "https://github.com/doubleailes/Moho", rev = "92c8b847822823f796b81b85452c3c400d77e5ec" } +moho = { git = "https://github.com/doubleailes/Moho", rev = "fc391a5ca55b83078a1a157b3f17b793118cd6b9" } # The hot loops are spread across crates: the integrator in `crust-core` # calls the kernel in `crust-rt`, which calls `glam`'s SIMD vector ops. diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index be0335c5f..6b73f7955 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -60,12 +60,9 @@ strategy (B), a masked stage per chunk, peaks at 1.97 GiB, and strategy (D) does through Moho (`scripts/streaming-spike.sh --with-d`). **Moho's rev.** The plan was written while Moho's gaps M1 to M7 were open. Moho's change -`scene-index-gaps` closes them (Moho-side follow-ups, below), but it is not on Moho's -`main` yet. The workspace pins `moho` at `92c8b84` (Moho's `main`), and the build and -tests run against the `scene-index-gaps` branch through an untracked -`.cargo/config.toml` path patch. **The `moho` rev must be bumped to the merge of -`scene-index-gaps` once it lands on Moho's `main`** (task 1.5); until then a clean -checkout without the patch does not build the index route's uses of M1 to M7. +`scene-index-gaps` closed them and merged into Moho's `main` at `fc391a5` (Moho-side +follow-ups, below); the workspace pins `moho` at that rev, and builds against it as CI +does, with no local patch. **Constraints.** - Moho pins openusd by `rev`. crust-render patches by `branch = "main"`, which locks to @@ -342,9 +339,9 @@ change. ### Moho-side follow-ups (closed in Moho's `scene-index-gaps`) -Planning this change found seven gaps in Moho. Moho's change `scene-index-gaps` closes -all of them, with tests, on its own branch. Crust builds against that branch (Context, -"Moho's rev") and bumps the `moho` rev once it merges. +Planning this change found seven gaps in Moho. Moho's change `scene-index-gaps` closed +all of them, with tests, and merged into Moho's `main` at `fc391a5`, the rev Crust pins +(Context, "Moho's rev"). - **M1. Cross-input light linking.** *Closed:* `moho::chain::input(stage)` is the standard chain without light linking, `moho::chain::merged(merging)` is light linking diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 289fba6f4..ce8801664 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -38,12 +38,11 @@ baselines recorded from the direct importer before anything migrated (group 2). `.cargo/config.toml` is tracked in this repository, so the patch does not go there, and a path patch rewrites `Cargo.lock`'s `moho` entry, which is restored before a commit. Verify with `grep` that `CLAUDE.md` names both revs' rule and the bump order. -- [ ] 1.5 Build against Moho's `scene-index-gaps` (M1 to M7 closed) through that - `--config` path patch, and bump the `moho` rev in `[workspace.dependencies]` to the - merge of `scene-index-gaps` once it lands on Moho's `main`, dropping the local patch. - Verify that `cargo tree -i moho` names the merged rev, and that a clean checkout - builds and passes `import_parity` without the patch. Until the merge this task stays - open, and the design's "Moho's rev" note says so. +- [x] 1.5 Build against Moho's `scene-index-gaps` (M1 to M7 closed), and bump the `moho` + rev in `[workspace.dependencies]` to its merge on Moho's `main` (`fc391a5`), dropping + the local patch. Verify that `cargo tree -i moho` names the merged rev, that + `cargo tree -i openusd` still shows one package, and that the workspace builds and + passes its tests without the patch. ## 2. Baselines from today's importer (design D3, D11, spec `import-parity`) From 0cbce223aa5ac111038eb77688f5aa2f4a413474 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 21:38:54 +0100 Subject: [PATCH 12/95] parity: image baselines from the direct importer, and the image run scripts/parity_images.sh runs the suite optimised with CRUST_PARITY_IMAGES=1: every import is imported again and rendered at 16 spp with the indirect clamp off, and its pixel hash compared with the .image baseline recorded here from the direct importer. With images on, recording writes images only (digests and check reports are compared, never rewritten, since the second import shows in counts). The 25 tests that observe the second import are listed in parity_images.expected. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- crates/crust-core/src/parity.rs | 9 +++- ...tancedMedCity_usd-951317bf2ce0f6ed-1.image | 1 + .../absorber_usda-e5a517b5b36fd7e1-1.image | 1 + ...tive_bounded_usda-871964d811713ece-1.image | 1 + ...ve_unbounded_usda-6ab4975baebe18ef-1.image | 1 + ...rture_height_usda-9d28c7b3a9cad9f9-1.image | 1 + ...erture_width_usda-c50e2f84bef7e6b7-1.image | 1 + ...es_with_spec_usda-985ed763a0957571-1.image | 1 + .../anamorphic_usda-c23c78df222208eb-1.image | 1 + .../ancestor_usda-3171d13289efaaff-1.image | 1 + .../ancestor_usda-74843e3cc431dad3-1.image | 1 + ...d_no_shutter_usda-dc5451565381429f-1.image | 1 + .../animated_usda-84baf2836991de3b-1.image | 1 + .../animated_usda-e242162a2dbef33a-1.image | 1 + .../animation_usda-0b34d79521209b48-1.image | 1 + .../animation_usda-5446fd76cda9ed55-1.image | 1 + .../animation_usda-7b809f697af333f7-1.image | 1 + .../animation_usda-87536adca26db1ce-1.image | 1 + .../animation_usda-a8098f0bc76c3026-1.image | 1 + .../animation_usda-b620cb992a2b7c7d-1.image | 1 + .../animation_usda-b620cb992a2b7c7d-2.image | 1 + .../animation_usda-beee1323479cf47f-1.image | 1 + .../animation_usda-cca20ab6197e3823-1.image | 1 + .../animation_usda-cfe8a27d275b06f7-1.image | 1 + .../animation_usda-d9cfa85be82eff7f-1.image | 1 + .../animation_usda-dc0987b1e9c0a44b-1.image | 1 + .../aov_format_usda-3d1985fd48e4fb2d-1.image | 1 + ...aovs_lookdev_usda-4a2c1502ba0a175e-1.image | 1 + ...aovs_lookdev_usda-5ec9a160b78f998f-1.image | 1 + ...aovs_lookdev_usda-6a98ab5ed25ffa78-1.image | 1 + ...aovs_lookdev_usda-6d6e4a8f31366652-1.image | 1 + ...aovs_lookdev_usda-803d9a5b24ae0e42-1.image | 1 + ...aovs_lookdev_usda-c88cebf77c02e1c8-1.image | 1 + .../aovs_lpe_usda-96034a4139733157-1.image | 1 + .../aovs_lpe_usda-a43dc2277f16c84f-1.image | 1 + .../aovs_lpe_usda-a43dc2277f16c84f-2.image | 1 + .../aovs_usda-8f7e50636c58d0eb-1.image | 1 + .../aovs_usda-8f7e50636c58d0eb-2.image | 1 + .../aovs_usda-90b4ce2557c1c46e-1.image | 1 + .../aovs_usda-cd31a05d6e49ceda-1.image | 1 + .../area_lights_usda-07bd34a97e44c0ab-1.image | 1 + .../area_lights_usda-6989a4d471c724cf-1.image | 1 + ...area_nothing_usda-bf90dbc7327fa98c-1.image | 1 + ...hing_visible_usda-2f4e016170ad5820-1.image | 1 + ...sset_lookdev_usda-3b3a8108b3e9fae9-1.image | 1 + ...sset_lookdev_usda-41ce6942a2d54582-1.image | 1 + ...sset_lookdev_usda-6567e83e5076f9db-1.image | 1 + ...sset_lookdev_usda-9934bec515530278-1.image | 1 + ...sset_lookdev_usda-e4930eb0174b9dd7-1.image | 1 + ...sset_lookdev_usda-e7566c662eda92b2-1.image | 1 + ...sset_lookdev_usda-ec05a5f1f38841c6-1.image | 1 + ...sset_lookdev_usda-f9c370778b865b50-1.image | 1 + ...uthored_only_usda-e3c97926a3d11ac4-1.image | 1 + ...dome_light_1_usda-bda39b6574f6f444-1.image | 1 + ...rop_streamed_usda-5c630271a8fcfd44-1.image | 1 + .../backdrop_usda-2757fcfd84c07e64-1.image | 1 + .../backdrop_usda-3818c88f3ea1e994-1.image | 1 + .../backdrop_usda-e17ddb582cb97b8c-1.image | 1 + ...klit_diffuse_usda-3dfba11cda1cd7c6-1.image | 1 + ...backlit_hair_usda-59f16e3a1a4f9b6d-1.image | 1 + .../bad_length_usda-3ab7b93f882199a8-1.image | 1 + .../bad_volume_usda-00cc0d19953cb7f6-1.image | 1 + .../banded_dome_usda-03eaa43cee7b25ab-1.image | 1 + .../binding_usda-3ec3b212bbee4e90-1.image | 1 + .../black_usda-ca3475f9863dc283-1.image | 1 + ...kbody_acescg_usda-e4fe8984977e4dc5-1.image | 1 + ...blur_default_usda-d0c5474e0dfbe769-1.image | 1 + .../blur_false_usda-8f6712fd58e3e7dd-1.image | 1 + ...rits_synonym_usda-8cbc9a895bc4da45-1.image | 1 + ..._product_off_usda-ad5ae20ae0e9dd8e-1.image | 1 + ...r_product_on_usda-9e081a22d073a61a-1.image | 1 + ...ducts_differ_usda-97d616ea3858dc6c-1.image | 1 + ...ettings_only_usda-57bf8b1f820d60e9-1.image | 1 + ...blur_synonym_usda-5c4201bf40a84766-1.image | 1 + ...lur_warnings_usda-560d69942e1e7771-1.image | 1 + .../blurred_usda-152a0fdff5c8c9a3-1.image | 1 + .../both_usda-4af15817dabdb39f-1.image | 1 + .../boundary_usda-85fcb2406c56d725-1.image | 1 + ...en_materials_usda-040c16d0365cbc63-1.image | 1 + .../broken_mesh_usda-217190c267ddf4a1-1.image | 1 + .../cage_three_usda-65204db7a7ccaed8-1.image | 1 + .../cam__W_B_usda-1827f96f8b5d0db1-1.image | 1 + .../cam__W_B_usda-1827f96f8b5d0db1-2.image | 1 + .../cam__W_B_usda-7a2f1b2d8ea63036-1.image | 1 + .../cam__W_B_usda-7a2f1b2d8ea63036-2.image | 1 + .../cam__W_Nope_usda-a6a9c22824149e8e-1.image | 1 + .../cam__W_Nope_usda-a6a9c22824149e8e-2.image | 1 + .../cam__W_Nope_usda-a6a9c22824149e8e-3.image | 1 + .../cam_narrow_usda-dcae36868790f279-1.image | 1 + .../cam_none_usda-1ef9fbd129b9560a-1.image | 1 + .../cam_none_usda-2cb27e460ee10e43-1.image | 1 + .../cam_wide_usda-098c8afc4872dbb7-1.image | 1 + .../camera_dof_usda-f69bc93db8900a0e-1.image | 1 + ...camera_ortho_usda-21d5879ec7de6dbf-1.image | 1 + ...tion_unknown_usda-8a8cac00719054ad-1.image | 1 + .../camera_rot_usda-c74e88c7205b56e5-1.image | 1 + .../camera_usda-2d8f34945903545d-1.image | 1 + ...a_visibility_usda-0af373522188190d-1.image | 1 + ...a_visibility_usda-5198be21d5bb35d1-1.image | 1 + ...a_zero_focus_usda-ad065540da61feb4-1.image | 1 + .../capped_usda-de82c45ab5a80eb6-1.image | 1 + ...centred_both_usda-06ae7e6ad41f5b45-1.image | 1 + ...entred_frame_usda-200d23d9927b7966-1.image | 1 + ...centred_open_usda-75e668aa9e5ecb2d-1.image | 1 + ...p_constant_0_usda-16acce3a8ae23e69-1.image | 1 + ...p_constant_2_usda-51380ed7a7ea4305-1.image | 1 + ...unauthored_0_usda-a6d6a93dda32caf2-1.image | 1 + ...unauthored_2_usda-bad2637a6a91c73a-1.image | 1 + ...rp_uniform_0_usda-ffe6596ba2b6a108-1.image | 1 + ...rp_uniform_2_usda-815f4bb2830bedd0-1.image | 1 + ...rm_indexed_0_usda-a6e2151559aa05f1-1.image | 1 + ...rm_indexed_2_usda-49181df1e2a2d359-1.image | 1 + .../clean_usda-d4e60f418d0e5485-1.image | 1 + .../clear_usda-487518c3a2bde507-1.image | 1 + .../closest_usda-b1b06704b4564b8c-1.image | 1 + ...or_space_api_usda-7258fb7a16ddde2f-1.image | 1 + ...perature_off_usda-d2963845fd5e72c4-1.image | 1 + ..._temperature_usda-a7d9f5fccba89fff-1.image | 1 + ...sation_alias_usda-ea168514e7b00460-1.image | 1 + ...ensation_off_usda-37a366efa8d50980-1.image | 1 + ...onstant_cage_usda-6838009dc4d51123-1.image | 1 + ...ant_none_off_usda-4da7234b198fc34c-1.image | 1 + ...onstant_none_usda-3f38201b0c964211-1.image | 1 + .../convolve_usda-ae27710a0c217615-1.image | 1 + .../copper_usda-856b7fd7384c75f6-1.image | 1 + ...llbox_guided_usda-1f6a1535ca10a892-1.image | 1 + ...llbox_guided_usda-7da4bd79d2eda8bf-1.image | 1 + ...llbox_guided_usda-7da4bd79d2eda8bf-2.image | 1 + ...llbox_guided_usda-9ca98c606b8b14bb-1.image | 1 + ...llbox_guided_usda-9ca98c606b8b14bb-2.image | 1 + ...llbox_guided_usda-dddcb8fd2ce59c1f-1.image | 1 + ...lbox_lookdev_usda-937b5a30e0d1b2a9-1.image | 1 + ...lbox_lookdev_usda-a0bb21684d68d231-1.image | 1 + ...lbox_lookdev_usda-f5ac4ca7187d0afa-1.image | 1 + .../cornellbox_usda-015a68615622d007-1.image | 1 + .../cornellbox_usda-015a68615622d007-2.image | 1 + .../cornellbox_usda-021e0477d02e8b56-1.image | 1 + .../cornellbox_usda-08de1880a086a764-1.image | 1 + .../cornellbox_usda-0c23ef94659b6f93-1.image | 1 + .../cornellbox_usda-0c23ef94659b6f93-2.image | 1 + .../cornellbox_usda-108152a6f960262b-1.image | 1 + .../cornellbox_usda-108152a6f960262b-2.image | 1 + .../cornellbox_usda-15e73f9974620a1a-1.image | 1 + .../cornellbox_usda-16d2af5b91e595bd-1.image | 1 + .../cornellbox_usda-1aeeae0fba6dbe97-1.image | 1 + .../cornellbox_usda-211d55a31b3d62fa-1.image | 1 + .../cornellbox_usda-211d55a31b3d62fa-2.image | 1 + .../cornellbox_usda-248f67f6240f7680-1.image | 1 + .../cornellbox_usda-254e9b608e6c20f0-1.image | 1 + .../cornellbox_usda-265ef4c54c4d2534-1.image | 1 + .../cornellbox_usda-2711a47b10d83a96-1.image | 1 + .../cornellbox_usda-2772d706794ce66b-1.image | 1 + .../cornellbox_usda-2772d706794ce66b-2.image | 1 + .../cornellbox_usda-2772d706794ce66b-3.image | 1 + .../cornellbox_usda-2772d706794ce66b-4.image | 1 + .../cornellbox_usda-2772d706794ce66b-5.image | 1 + .../cornellbox_usda-2772d706794ce66b-6.image | 1 + .../cornellbox_usda-2cf51e7bf43f4fa8-1.image | 1 + .../cornellbox_usda-2dd566e6043ed6b0-1.image | 1 + .../cornellbox_usda-2dd566e6043ed6b0-2.image | 1 + .../cornellbox_usda-2dd566e6043ed6b0-3.image | 1 + .../cornellbox_usda-3a12e7835578a84e-1.image | 1 + .../cornellbox_usda-3a2af9f3e570b458-1.image | 1 + .../cornellbox_usda-3c316a1edd099ef0-1.image | 1 + .../cornellbox_usda-3c74fafa1c66c123-1.image | 1 + .../cornellbox_usda-3cac72b0550f05b3-1.image | 1 + .../cornellbox_usda-450b164daa4e0f80-1.image | 1 + .../cornellbox_usda-48a104b8a2799466-1.image | 1 + .../cornellbox_usda-518e1fd5063f7227-1.image | 1 + .../cornellbox_usda-563fb301d9f1f469-1.image | 1 + .../cornellbox_usda-563fb301d9f1f469-10.image | 1 + .../cornellbox_usda-563fb301d9f1f469-11.image | 1 + .../cornellbox_usda-563fb301d9f1f469-12.image | 1 + .../cornellbox_usda-563fb301d9f1f469-13.image | 1 + .../cornellbox_usda-563fb301d9f1f469-14.image | 1 + .../cornellbox_usda-563fb301d9f1f469-15.image | 1 + .../cornellbox_usda-563fb301d9f1f469-16.image | 1 + .../cornellbox_usda-563fb301d9f1f469-17.image | 1 + .../cornellbox_usda-563fb301d9f1f469-18.image | 1 + .../cornellbox_usda-563fb301d9f1f469-19.image | 1 + .../cornellbox_usda-563fb301d9f1f469-2.image | 1 + .../cornellbox_usda-563fb301d9f1f469-20.image | 1 + .../cornellbox_usda-563fb301d9f1f469-21.image | 1 + .../cornellbox_usda-563fb301d9f1f469-22.image | 1 + .../cornellbox_usda-563fb301d9f1f469-23.image | 1 + .../cornellbox_usda-563fb301d9f1f469-24.image | 1 + .../cornellbox_usda-563fb301d9f1f469-25.image | 1 + .../cornellbox_usda-563fb301d9f1f469-3.image | 1 + .../cornellbox_usda-563fb301d9f1f469-4.image | 1 + .../cornellbox_usda-563fb301d9f1f469-5.image | 1 + .../cornellbox_usda-563fb301d9f1f469-6.image | 1 + .../cornellbox_usda-563fb301d9f1f469-7.image | 1 + .../cornellbox_usda-563fb301d9f1f469-8.image | 1 + .../cornellbox_usda-563fb301d9f1f469-9.image | 1 + .../cornellbox_usda-5d064faa753e9d7b-1.image | 1 + .../cornellbox_usda-5e1b400d2f0d70bc-1.image | 1 + .../cornellbox_usda-5ff835103ecfad3e-1.image | 1 + .../cornellbox_usda-61a13a775605a0ce-1.image | 1 + .../cornellbox_usda-61e87f520a6a2dff-1.image | 1 + .../cornellbox_usda-63b1f6980e443f71-1.image | 1 + .../cornellbox_usda-67753350f4f997a4-1.image | 1 + .../cornellbox_usda-67d6afd449214b25-1.image | 1 + .../cornellbox_usda-7300aa94ecae6c37-1.image | 1 + .../cornellbox_usda-7478515f32354718-1.image | 1 + .../cornellbox_usda-7ba56e4f79d4195f-1.image | 1 + .../cornellbox_usda-7e55fcb3620f4663-1.image | 1 + .../cornellbox_usda-7f63dd70a33e2183-1.image | 1 + .../cornellbox_usda-816ed2710215c157-1.image | 1 + .../cornellbox_usda-816ed2710215c157-2.image | 1 + .../cornellbox_usda-816ed2710215c157-3.image | 1 + .../cornellbox_usda-816ed2710215c157-4.image | 1 + .../cornellbox_usda-88df24aa0618a335-1.image | 1 + .../cornellbox_usda-88e25ed80282bc79-1.image | 1 + .../cornellbox_usda-88eeabb6ac92eef4-1.image | 1 + .../cornellbox_usda-89c626c1e078ca38-1.image | 1 + .../cornellbox_usda-8d8e99f6790507a9-1.image | 1 + .../cornellbox_usda-8d8e99f6790507a9-2.image | 1 + .../cornellbox_usda-8e692f67a3c276f4-1.image | 1 + .../cornellbox_usda-8ecb1db3e29a9e13-1.image | 1 + .../cornellbox_usda-93e84687c267227a-1.image | 1 + .../cornellbox_usda-9514c8683d2c9e4d-1.image | 1 + .../cornellbox_usda-96761b8033e5fb3c-1.image | 1 + .../cornellbox_usda-987ee05acd715dfa-1.image | 1 + .../cornellbox_usda-99aef82ca410b677-1.image | 1 + .../cornellbox_usda-9a0515f0d918dd40-1.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-1.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-10.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-100.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-101.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-102.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-103.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-104.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-105.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-106.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-107.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-108.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-109.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-11.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-110.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-111.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-112.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-113.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-114.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-115.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-116.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-117.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-118.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-119.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-12.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-120.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-121.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-122.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-123.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-124.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-125.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-126.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-127.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-128.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-129.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-13.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-130.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-131.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-132.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-133.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-134.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-135.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-136.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-137.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-138.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-139.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-14.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-140.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-141.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-142.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-143.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-144.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-145.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-146.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-147.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-148.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-149.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-15.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-150.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-151.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-152.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-153.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-154.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-155.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-156.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-157.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-158.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-159.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-16.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-160.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-161.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-162.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-163.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-164.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-165.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-166.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-167.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-168.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-169.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-17.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-170.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-171.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-172.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-173.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-174.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-175.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-176.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-177.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-178.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-179.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-18.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-180.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-181.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-182.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-183.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-184.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-185.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-186.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-187.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-188.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-189.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-19.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-190.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-191.image | 1 + ...cornellbox_usda-9c84bf52ec0561b1-192.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-2.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-20.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-21.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-22.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-23.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-24.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-25.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-26.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-27.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-28.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-29.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-3.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-30.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-31.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-32.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-33.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-34.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-35.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-36.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-37.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-38.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-39.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-4.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-40.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-41.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-42.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-43.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-44.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-45.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-46.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-47.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-48.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-49.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-5.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-50.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-51.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-52.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-53.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-54.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-55.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-56.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-57.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-58.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-59.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-6.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-60.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-61.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-62.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-63.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-64.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-65.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-66.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-67.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-68.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-69.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-7.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-70.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-71.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-72.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-73.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-74.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-75.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-76.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-77.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-78.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-79.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-8.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-80.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-81.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-82.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-83.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-84.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-85.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-86.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-87.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-88.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-89.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-9.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-90.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-91.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-92.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-93.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-94.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-95.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-96.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-97.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-98.image | 1 + .../cornellbox_usda-9c84bf52ec0561b1-99.image | 1 + .../cornellbox_usda-a06c636245c00028-1.image | 1 + .../cornellbox_usda-a18d02fea0ac9ae3-1.image | 1 + .../cornellbox_usda-a18d02fea0ac9ae3-2.image | 1 + .../cornellbox_usda-a18d02fea0ac9ae3-3.image | 1 + .../cornellbox_usda-a18d02fea0ac9ae3-4.image | 1 + .../cornellbox_usda-a18d02fea0ac9ae3-5.image | 1 + .../cornellbox_usda-a18d02fea0ac9ae3-6.image | 1 + .../cornellbox_usda-a1b6b7b33175c629-1.image | 1 + .../cornellbox_usda-a6c99e7589fd5bbe-1.image | 1 + .../cornellbox_usda-b04eda6325f3cbbf-1.image | 1 + .../cornellbox_usda-b04eda6325f3cbbf-2.image | 1 + .../cornellbox_usda-b04eda6325f3cbbf-3.image | 1 + .../cornellbox_usda-b04eda6325f3cbbf-4.image | 1 + .../cornellbox_usda-b194c866668b8c75-1.image | 1 + .../cornellbox_usda-b32b870ba5ca59f9-1.image | 1 + .../cornellbox_usda-b3d2bc2ed9037c82-1.image | 1 + .../cornellbox_usda-b62de59b31ca0e80-1.image | 1 + .../cornellbox_usda-b6c7e44d8560abd5-1.image | 1 + .../cornellbox_usda-bb1cc653d4ac376a-1.image | 1 + .../cornellbox_usda-bb1cc653d4ac376a-2.image | 1 + .../cornellbox_usda-bb1cc653d4ac376a-3.image | 1 + .../cornellbox_usda-bb1cc653d4ac376a-4.image | 1 + .../cornellbox_usda-bb1cc653d4ac376a-5.image | 1 + .../cornellbox_usda-bba4bdda287871cf-1.image | 1 + .../cornellbox_usda-bba4bdda287871cf-2.image | 1 + .../cornellbox_usda-be34c0d526943796-1.image | 1 + .../cornellbox_usda-cb7b0dee2139a326-1.image | 1 + .../cornellbox_usda-cdab40c0e9cba23f-1.image | 1 + .../cornellbox_usda-cf47b345f0453895-1.image | 1 + .../cornellbox_usda-d3d144cf7b8b758b-1.image | 1 + .../cornellbox_usda-d5734d22b9c37571-1.image | 1 + .../cornellbox_usda-d5734d22b9c37571-2.image | 1 + .../cornellbox_usda-da1f2707813489ef-1.image | 1 + .../cornellbox_usda-df23dfac5ede9611-1.image | 1 + .../cornellbox_usda-df23dfac5ede9611-2.image | 1 + .../cornellbox_usda-df23dfac5ede9611-3.image | 1 + .../cornellbox_usda-e82204be97718dbd-1.image | 1 + .../cornellbox_usda-e82204be97718dbd-2.image | 1 + .../cornellbox_usda-e82204be97718dbd-3.image | 1 + .../cornellbox_usda-e82204be97718dbd-4.image | 1 + .../cornellbox_usda-ec6907d7b5edc24c-1.image | 1 + .../cornellbox_usda-ed05b9821202ec22-1.image | 1 + .../cornellbox_usda-efc8f2e410ea1edf-1.image | 1 + .../cornellbox_usda-f0235d211948c8ae-1.image | 1 + .../cornellbox_usda-f0d9751b5af0e124-1.image | 1 + .../cornellbox_usda-f3f2b534bfcc0db6-1.image | 1 + .../cornellbox_usda-f3f2b534bfcc0db6-2.image | 1 + .../cornellbox_usda-f3f2b534bfcc0db6-3.image | 1 + .../cornellbox_usda-f3f2b534bfcc0db6-4.image | 1 + .../cornellbox_usda-f52f4933a61a7b17-1.image | 1 + .../cornellbox_usda-f72ab0ee474423bf-1.image | 1 + .../cornellbox_usda-f74efd8c1a39793d-1.image | 1 + .../cornellbox_usda-f74efd8c1a39793d-2.image | 1 + .../cornellbox_usda-f74efd8c1a39793d-3.image | 1 + .../cornellbox_usda-f91ae1b4cc3a5130-1.image | 1 + .../cornellbox_usda-f91ae1b4cc3a5130-2.image | 1 + .../cornellbox_usda-f91ae1b4cc3a5130-3.image | 1 + .../cornellbox_usda-f91ae1b4cc3a5130-4.image | 1 + .../cornellbox_usda-fc498f82a9cb979f-1.image | 1 + .../counters_usda-4398822590228cb6-1.image | 1 + .../curves_usda-49b1041fa43b5df8-1.image | 1 + .../curves_usda-68ff2953cfbdeb73-1.image | 1 + .../curves_usda-68ff2953cfbdeb73-2.image | 1 + .../curves_usda-6c82e9cb233e7c1e-1.image | 1 + .../curves_usda-bf538717464b4055-1.image | 1 + .../curves_usda-e59f2a157a03b823-1.image | 1 + .../cycle_usda-6c5127dceb205457-1.image | 1 + .../cyl_far_usda-14bf93b40e3110ed-1.image | 1 + .../cyl_near_usda-8880b5f4401667ce-1.image | 1 + ...proto_nested_usda-337785a80bd25b4b-1.image | 1 + ...l_proto_once_usda-5861fac834a9592e-1.image | 1 + ..._proto_twice_usda-9d0b4387b8ae21e9-1.image | 1 + .../cyl_unnamed_usda-6b8943ce79ec798b-1.image | 1 + ...linder_light_usda-a8869b560165f646-1.image | 1 + .../dangling_usda-33cdcee1c03a3f62-1.image | 1 + ...efault_links_usda-fa4bfc17658672ca-1.image | 1 + ...erate_lights_usda-c119df2817a52e22-1.image | 1 + ...ng_alone_ref_usda-ad2f6d6f9f5a6b34-1.image | 1 + ...dicing_alone_usda-d2a904287b895157-1.image | 1 + .../dicing_near_usda-2b8cc53942e05573-1.image | 1 + ...cing_nothing_usda-02863a7cb9ea2edb-1.image | 1 + ...roduct_diced_usda-bde5502fcf67625f-1.image | 1 + ...duct_ref_cam_usda-206ed631706e669f-1.image | 1 + ...uct_ref_near_usda-a7f21d55b08b22eb-1.image | 1 + ...cing_product_usda-0fe0e77ccc289c1f-1.image | 1 + ...ing_property_usda-541c1a7591a9b5c0-1.image | 1 + .../dicing_ref_usda-450597df8121a96c-1.image | 1 + .../dicing_self_usda-9d54e5a1b138ff5e-1.image | 1 + ...through_near_usda-43e145636209967d-1.image | 1 + ...g_unauthored_usda-d941af55d3f95425-1.image | 1 + ...cing_unnamed_usda-1911d7362c693947-1.image | 1 + ...dicing_xform_usda-fdb39a50b9314e69-1.image | 1 + ...abled_broken_usda-3e31009d90ef26ec-1.image | 1 + .../disk_light_usda-720389dc27e2a4c4-1.image | 1 + ...splaced_rest_usda-d70fe6fb257dd183-1.image | 1 + ...displacement_usda-03e54e80075ba30c-1.image | 1 + ...displacement_usda-180936ed9cbacb0b-1.image | 1 + ...displacement_usda-4db664e792f21a27-1.image | 1 + ...displacement_usda-5e2aa9f4f1dfd37e-1.image | 1 + ...displacement_usda-f5f1d4dfaa9feea3-1.image | 1 + ...displacement_usda-f5f1d4dfaa9feea3-2.image | 1 + ...default_lens_usda-c199c396bb781cc0-1.image | 1 + .../dof_default_usda-57e78e0586982b2f-1.image | 1 + ...led_bad_unit_usda-b76c543fc6398eaa-1.image | 1 + ...dof_disabled_usda-420b407ea5317d3e-1.image | 1 + ...allback_lens_usda-bff40e44436746b1-1.image | 1 + ...back_pinhole_usda-c69160a93b244f8f-1.image | 1 + ..._product_off_usda-ec7655fdc64080b7-1.image | 1 + ...f_product_on_usda-642bf95d97820f23-1.image | 1 + ...f_product_on_usda-9b87c5f936703494-1.image | 1 + ...ducts_differ_usda-a379642f2edc4361-1.image | 1 + ...cts_disagree_usda-8e35ec3ea864f596-1.image | 1 + ...ettings_only_usda-dc3a7d2e89c34444-1.image | 1 + ...ome_backdrop_usda-06f3801d332f35bd-1.image | 1 + ...ome_backdrop_usda-1bbad8f86d8900fb-1.image | 1 + ...ome_backdrop_usda-1bbad8f86d8900fb-2.image | 1 + ...ome_backdrop_usda-2d5a500fad6dcfad-1.image | 1 + ...ome_backdrop_usda-4222ab94f00b4ba4-1.image | 1 + ...ome_backdrop_usda-43c08f98bb3b74e6-1.image | 1 + ...ome_backdrop_usda-7b71c02186033a9a-1.image | 1 + ...ome_backdrop_usda-88f2729f3b3188bb-1.image | 1 + ...ome_backdrop_usda-9d834df56ca3b1ac-1.image | 1 + ...ome_backdrop_usda-af5d67f7909dc65a-1.image | 1 + ...ome_backdrop_usda-b592bc76e2706492-1.image | 1 + ...ome_backdrop_usda-b9dc71e44c528187-1.image | 1 + ...e_camera_off_usda-b5a9eac417c3bdbb-1.image | 1 + ...e_crust_wins_usda-0bfe2eb5bc4f83c5-1.image | 1 + ...dome_default_usda-7c13b46b00b734f8-1.image | 1 + ...exclude_bsdf_usda-fb9c2dcc2b05783e-1.image | 1 + ...xclude_power_usda-a488dc90e33bf33b-1.image | 1 + ...e_scene_z_up_usda-4a3a839d045f42ae-1.image | 1 + ..._0_reference_usda-e3c0f10234d60e6f-1.image | 1 + ...ght_1_pole_y_usda-b39274d8389c93ec-1.image | 1 + ...ght_1_pole_z_usda-3ab2d43568c3a9ca-1.image | 1 + ...ht_1_rotated_usda-96a7a52ba96f792f-1.image | 1 + ..._scene_no_up_usda-db7f3549433e3ca1-1.image | 1 + ...1_scene_y_up_usda-cef3793797de068b-1.image | 1 + ...dome_light_1_usda-771e6d7e193401ac-1.image | 1 + ...light_1_z_up_usda-d2385f77c8ec6eb4-1.image | 1 + .../dome_light_usda-f46a39c15abcc98f-1.image | 1 + ...me_no_assets_usda-b8800e7204db6d4a-1.image | 1 + .../dome_power_usda-abfbd64e964dc44d-1.image | 1 + ...me_ri_camera_usda-acf95ad397fe1930-1.image | 1 + .../domelight_usda-22dcdc7630c52071-1.image | 1 + .../domelight_usda-23290848cbd88d05-1.image | 1 + .../domelight_usda-23290848cbd88d05-2.image | 1 + .../domelight_usda-5a2a25c11957ed70-1.image | 1 + .../domelight_usda-5d8f200125b9fd09-1.image | 1 + .../domelight_usda-7f00a6c7fd4959fa-1.image | 1 + .../drop_usda-214f7b543bee6df1-1.image | 1 + .../drop_usda-4c62c449da4ae2d3-1.image | 1 + .../edge_false_usda-dfb19c6c90615a56-1.image | 1 + .../edge_true_usda-bddf6fe338522a86-1.image | 1 + .../edges_usda-9743a0d0ff86dafe-1.image | 1 + .../edits_usda-077b57f7b0804f19-1.image | 1 + .../edits_usda-085dfd17ac95282d-1.image | 1 + .../edits_usda-188f318a9146ce97-1.image | 1 + .../edits_usda-1966e17597c3de42-1.image | 1 + .../edits_usda-19a787b3bcc74617-1.image | 1 + .../edits_usda-23003ea81a2d2024-1.image | 1 + .../edits_usda-23fb1cff1e547a51-1.image | 1 + .../edits_usda-24cc8ef3649b336a-1.image | 1 + .../edits_usda-30c8f1f2b1117913-1.image | 1 + .../edits_usda-339a76e50715bbe3-1.image | 1 + .../edits_usda-3450a9d6105e89a6-1.image | 1 + .../edits_usda-411d0a61690b9e71-1.image | 1 + .../edits_usda-43a14b5e78154dda-1.image | 1 + .../edits_usda-483e16501c86632a-1.image | 1 + .../edits_usda-4966b50c696e8080-1.image | 1 + .../edits_usda-4cf921963a4325e9-1.image | 1 + .../edits_usda-4d3c65f04d4eaea9-1.image | 1 + .../edits_usda-4dd694c9b20daa77-1.image | 1 + .../edits_usda-516372ff4968411b-1.image | 1 + .../edits_usda-53a62fecc28e0de7-1.image | 1 + .../edits_usda-5521dd197a77f33e-1.image | 1 + .../edits_usda-57fa1e33af4efac6-1.image | 1 + .../edits_usda-5b418d865896d977-1.image | 1 + .../edits_usda-5b418d865896d977-2.image | 1 + .../edits_usda-5f2834619e774ab4-1.image | 1 + .../edits_usda-6019827f6d635824-1.image | 1 + .../edits_usda-65b79e09c14be76d-1.image | 1 + .../edits_usda-662e56b1a93d2d66-1.image | 1 + .../edits_usda-6deff31ef60f6033-1.image | 1 + .../edits_usda-7239cb83230ea59e-1.image | 1 + .../edits_usda-786eedaaaa2108bd-1.image | 1 + .../edits_usda-8f9cca718b125c47-1.image | 1 + .../edits_usda-8f9cca718b125c47-2.image | 1 + .../edits_usda-939ae62aa1013f1f-1.image | 1 + .../edits_usda-9785472850c84b20-1.image | 1 + .../edits_usda-9f3ec2b0f2000d47-1.image | 1 + .../edits_usda-a15a160797d16740-1.image | 1 + .../edits_usda-a15f50a6d270c4d6-1.image | 1 + .../edits_usda-a2d6c26d716466c1-1.image | 1 + .../edits_usda-a693bfb772c311e2-1.image | 1 + .../edits_usda-a9ea182c81eccd64-1.image | 1 + .../edits_usda-aafb5513a53fa62e-1.image | 1 + .../edits_usda-b0da370b544b77b5-1.image | 1 + .../edits_usda-b14405d5563d3059-1.image | 1 + .../edits_usda-b271371e2517722b-1.image | 1 + .../edits_usda-b80eb10c2ba34178-1.image | 1 + .../edits_usda-b8d0f20bfaa82329-1.image | 1 + .../edits_usda-c0b43128dd170a60-1.image | 1 + .../edits_usda-c1012e35073052d4-1.image | 1 + .../edits_usda-c5e06d108f13878a-1.image | 1 + .../edits_usda-c6a1743cb004bfc8-1.image | 1 + .../edits_usda-cfa1cdf26c62d04e-1.image | 1 + .../edits_usda-d51c63f9aa3e9706-1.image | 1 + .../edits_usda-d6c1dd24567db6e1-1.image | 1 + .../edits_usda-dcd2a1d09ecabfda-1.image | 1 + .../edits_usda-e3a820d4d01acabc-1.image | 1 + .../edits_usda-ea33d0579957ea29-1.image | 1 + .../edits_usda-ec4aae2ab8a0f13f-1.image | 1 + .../edits_usda-efadd5d5ae9b33c8-1.image | 1 + .../edits_usda-f437292a1baf4562-1.image | 1 + .../edits_usda-f7edbb7e619c3f5d-1.image | 1 + .../edits_usda-fdfde88486c6dc74-1.image | 1 + ..._source_name_usda-acd517e82c0f53e1-1.image | 1 + .../empty_usda-c1bba32cb87c83e9-1.image | 1 + .../exposure_0_usda-c142af23c7dc6585-1.image | 1 + .../exposure_2_usda-1ae682494eb4e641-1.image | 1 + .../exposure_usda-0139c7326dc66b4b-1.image | 1 + .../expression_usda-843ebd908965795b-1.image | 1 + .../expression_usda-e90ffc3af7a5e58d-1.image | 1 + .../fallback_usda-0dcbe995ba9d33f5-1.image | 1 + .../fallbacks_usda-19de7bd844b31582-1.image | 1 + ...ight_blocked_usda-ad271da815e04f1e-1.image | 1 + ..._light_clear_usda-4072c77a8d9198cd-1.image | 1 + ...light_dimmed_usda-8a326222fcc01e51-1.image | 1 + .../filters_usda-c37f75b53580c4aa-1.image | 1 + .../five_usda-1346633108536d3b-1.image | 1 + .../five_usda-98f6c3806296ddf6-1.image | 1 + .../fog_a_usda-c25ea86ab9b74771-1.image | 1 + .../fog_b_usda-d165df586bcbb934-1.image | 1 + .../fog_bsdf_usda-240806b5ed98a443-1.image | 1 + ...xcluded_bsdf_usda-9ebfc40e02ef831f-1.image | 1 + ...cluded_power_usda-a0c514c4c53c3bc4-1.image | 1 + .../fog_light_usda-ac22cdb8dae42d75-1.image | 1 + ...fog_lit_bsdf_usda-4f776a8e8b44bb17-1.image | 1 + ...og_lit_power_usda-cbade45198a3c38a-1.image | 1 + .../fog_power_usda-c8d64f5dff77f2e7-1.image | 1 + .../fog_usda-219213dd24619244-1.image | 1 + .../fog_usda-4d459b664a7ea673-1.image | 1 + .../fog_usda-4d459b664a7ea673-2.image | 1 + .../fog_usda-509c893b29b09cb4-1.image | 1 + .../fog_usda-54b48891484e98a0-1.image | 1 + .../fog_usda-643d53c126eee84d-1.image | 1 + .../fog_usda-85a4ccafddfcce6b-1.image | 1 + .../fog_usda-85a4ccafddfcce6b-2.image | 1 + .../fog_usda-85a4ccafddfcce6b-3.image | 1 + .../fog_usda-85a4ccafddfcce6b-4.image | 1 + .../fog_usda-85a4ccafddfcce6b-5.image | 1 + .../fog_usda-c4be6859ecb41784-1.image | 1 + .../fog_wall_usda-d41794b69bda1696-1.image | 1 + ...foreign_mtlx_usda-1e9da30a7325ba81-1.image | 1 + .../fov_cm_usda-aeeac260878050ff-1.image | 1 + .../fov_m_usda-b134eebe4c048026-1.image | 1 + .../frustum_usda-78a6eed72a138fc6-1.image | 1 + ...ight_s_shape_usda-ca8302fa13315ae0-1.image | 1 + ..._a_transform_usda-b99d3970dc3191b0-1.image | 1 + ...diced_rotate_usda-e8c2998b278e7b4c-1.image | 1 + ...ed_translate_usda-0b0bd3f1a63779cf-1.image | 1 + ...ive_exposure_usda-6a1bc74cbd2099fa-1.image | 1 + ...ndo_exposure_usda-8cd035220544928f-1.image | 1 + ..._base_colour_usda-185573627cdcf2a6-1.image | 1 + ..._carried_fog_usda-b5397418f77073c1-1.image | 1 + ...nged_on_disk_usda-0c8b6f9bfb68059a-1.image | 1 + ...llbox_rotate_usda-76b2e5fb271f6c0c-1.image | 1 + ...ox_translate_usda-ab7177593fd6f36b-1.image | 1 + ...l_demoted_K1_usda-e328a49ee95fd405-1.image | 1 + ...l_demoted_K4_usda-d0354a764756e3b4-1.image | 1 + ...ld__bad_unit_usda-bf5aa1ce7a54f9e2-1.image | 1 + ...pth_of_field_usda-61f50bc7be824751-1.image | 1 + ...idden_rotate_usda-82abbe3ed6112a4c-1.image | 1 + ...en_translate_usda-a8196d9e2f17ecbf-1.image | 1 + ...dome_texture_usda-c3e04747e405ac6e-1.image | 1 + .../full_drop_usda-a61417609925c673-1.image | 1 + ...ull_exposure_usda-fe83c794ae61f2a2-1.image | 1 + .../full_fixed_usda-adb1781d64f694c8-1.image | 1 + ..._base_colour_usda-dd47b7dff78ee58e-1.image | 1 + ...imvar_undone_usda-318d40a5ee9b02d7-1.image | 1 + ..._its_primvar_usda-98bf5373a7d5697f-1.image | 1 + ..._linked_Fill_usda-cb706e1f9f991794-1.image | 1 + ...l_linked_Key_usda-db486cee2438fb3b-1.image | 1 + ...l_linked_Rim_usda-2874a091d25b590b-1.image | 1 + ...ed_undo_Fill_usda-a93137db50fd28c8-1.image | 1 + ...ked_undo_Key_usda-1239d0ab4241ef3f-1.image | 1 + ...ked_undo_Rim_usda-03ca7b9265c405f0-1.image | 1 + ...ll_max_depth_usda-1164faed927e051e-1.image | 1 + ...eshes_rotate_usda-402e98fde9a693c4-1.image | 1 + ...es_translate_usda-ee4192f2a802af39-1.image | 1 + ...e_new_camera_usda-73f0dca6c14ef5d7-1.image | 1 + ...diced_rotate_usda-d7adb4497350da61-1.image | 1 + ...ed_translate_usda-6bfd0fb9adcbe164-1.image | 1 + ...een_exposure_usda-b0790c819b4e0d97-1.image | 1 + ...ndo_exposure_usda-c40080b74d3fb5a6-1.image | 1 + ...ad_rewritten_usda-03a6e3d1a01a5551-1.image | 1 + ...ad_roughness_usda-498bc078c77be0a5-1.image | 1 + ...do_roughness_usda-7143361153e7f548-1.image | 1 + ..._Pref_undone_usda-774a34f5226e3639-1.image | 1 + ...ts_with_Pref_usda-8674ccd68263fd36-1.image | 1 + ..._re_exported_usda-39edd0f167e79907-1.image | 1 + ...l_rect_light_usda-efc21afcf05d7959-1.image | 1 + ...ull_reloaded_usda-5a765fd50dde24be-1.image | 1 + ...nsform_stack_usda-38a53b23a8f224c2-1.image | 1 + ...aptive_scene_usda-bde6533023d6ccd8-1.image | 1 + ...aptive_scene_usda-721dc26887b364a7-1.image | 1 + ...oduct_camera_usda-0a3badd9a91b1027-1.image | 1 + ...tings_camera_usda-2b1ab3b4034d45bb-1.image | 1 + ...rying_camera_usda-56381435fa6b51f5-1.image | 1 + ...ll_roughness_usda-a1ffe89d435678bc-1.image | 1 + ...full_sampler_usda-27ca674891cf7c52-1.image | 1 + ...full_scatter_usda-80ff37fcf1ff9f3c-1.image | 1 + ...hared_shader_usda-bcebf475c7d9ca1f-1.image | 1 + ...at_the_frame_usda-06436b4d06eb2f5f-1.image | 1 + ...hutter_close_usda-ce0b12427cfd435b-1.image | 1 + ...ter_exposure_usda-36da172692d8936a-1.image | 1 + ...er_rewritten_usda-2e79c887f2d55e88-1.image | 1 + ...texture_file_usda-1fd2cfaf6e5de06c-1.image | 1 + ...ight_s_shape_usda-f05814080b96dca5-1.image | 1 + ..._a_transform_usda-d26b3a02a093ce4f-1.image | 1 + ..._base_colour_usda-d814da72eab3f116-1.image | 1 + ...ld__bad_unit_usda-6419381399744bc7-1.image | 1 + ...pth_of_field_usda-3ef9a9cb1855677e-1.image | 1 + ...dome_texture_usda-a17c02c0536bdc00-1.image | 1 + ...ndo_exposure_usda-c9169e83397e3561-1.image | 1 + ...do_max_depth_usda-a8a78eb6299a327a-1.image | 1 + ...o_rect_light_usda-2d6a907009434890-1.image | 1 + ...do_roughness_usda-62c5e0d0879e604d-1.image | 1 + ...undo_sampler_usda-0d28664679d41bef-1.image | 1 + ...hutter_close_usda-f7c724218b21e98a-1.image | 1 + ...texture_file_usda-d5aef4a622503f01-1.image | 1 + ...uct_retarget_usda-1e1edebd41fde9bc-1.image | 1 + ...do_the_reset_usda-7e7c9dbebb517c2f-1.image | 1 + ...o_the_rotate_usda-c1aa90b58073a573-1.image | 1 + ...after_reload_usda-b19199733b99fec2-1.image | 1 + ...furnace_ball_usda-54ac5243ee332532-1.image | 1 + .../furnace_usda-bbc6fe1cb946780f-1.image | 1 + ...var_bilinear_usda-8ca893f677c91586-1.image | 1 + .../fvar_loop_usda-855199bacac38db5-1.image | 1 + .../geometry_usda-3299cf85fca858a4-1.image | 1 + .../glass_usda-6ef57f18257a3d7a-1.image | 1 + ...bsdf_false_1_usda-8cc43a3f4dae46fb-1.image | 1 + ...bsdf_false_2_usda-ff99772c18e0997c-1.image | 1 + ...bsdf_false_3_usda-8c8e2079502f800d-1.image | 1 + ...bsdf_false_4_usda-76914e768885b3e6-1.image | 1 + ...ight_false_1_usda-7fde13de0abc769b-1.image | 1 + ...ight_false_2_usda-58c418a757f93b46-1.image | 1 + ...ight_false_3_usda-0e4d0c5d73f098b1-1.image | 1 + ...ight_false_4_usda-db6287c220d2329c-1.image | 1 + ...light_true_1_usda-da25e07b06740551-1.image | 1 + ...light_true_2_usda-ddbe5a176c05cba2-1.image | 1 + ...light_true_3_usda-06ab9cf1d9f5303b-1.image | 1 + ...light_true_4_usda-bae142df171828c4-1.image | 1 + ...ower_false_1_usda-8463e7fa7c167c7f-1.image | 1 + ...ower_false_2_usda-dcf0f8d60a6084ce-1.image | 1 + ...ower_false_3_usda-fedffe90ed130071-1.image | 1 + ...ower_false_4_usda-654bf9f6d4073ca8-1.image | 1 + ...bsdf_false_1_usda-5434dbae8c19939f-1.image | 1 + ...bsdf_false_2_usda-bb9d9ab32ead4e0e-1.image | 1 + ...bsdf_false_3_usda-edc5ae56976f1ff1-1.image | 1 + ...bsdf_false_4_usda-b2e4ed7db6e6d9c8-1.image | 1 + ...ight_false_1_usda-03a3c8316f39e87b-1.image | 1 + ...ight_false_2_usda-33306f5e5e7489a0-1.image | 1 + ...ight_false_3_usda-d3cf26f624795805-1.image | 1 + ...ight_false_4_usda-bc3c2cc49389e192-1.image | 1 + ...light_true_1_usda-c5cb6d9f35a09a41-1.image | 1 + ...light_true_2_usda-4db04417a2f553bc-1.image | 1 + ...light_true_3_usda-8962360ec726337b-1.image | 1 + ...light_true_4_usda-704837282362091e-1.image | 1 + ...ower_false_1_usda-b16be3e51935cdad-1.image | 1 + ...ower_false_2_usda-9bd601062d2922a2-1.image | 1 + ...ower_false_3_usda-af38f2deac1db5db-1.image | 1 + ...ower_false_4_usda-e07f6fc2b4bb4c68-1.image | 1 + ..._var_light_1_usda-950756ddd9a80314-1.image | 1 + ..._var_light_2_usda-6aede4cf281248af-1.image | 1 + ..._var_power_1_usda-712adb9891f33818-1.image | 1 + ..._var_power_2_usda-ccbbda539b6109ff-1.image | 1 + .../hair_usda-541c95fb5b2e8895-1.image | 1 + .../hair_usda-541c95fb5b2e8895-2.image | 1 + .../hair_usda-65dd84de0e473f00-1.image | 1 + ...ir_variation_usda-4ab3c7f511466a98-1.image | 1 + ...ir_variation_usda-921fbdca7fd9bc69-1.image | 1 + ...ir_variation_usda-921fbdca7fd9bc69-2.image | 1 + ...ir_variation_usda-aa2b773ff3d2e5c2-1.image | 1 + ...urce_classes_usda-a9259268854e750e-1.image | 1 + .../hidden_usda-9a2924a818f3fb98-1.image | 1 + ...n_zero_scale_usda-a4193f9a6324f7d0-1.image | 1 + .../high_bits_usda-276acbda2859c899-1.image | 1 + .../holdout_usda-fcfa139ef12785fd-1.image | 1 + .../houdini_var_usda-c716d987aba001e4-1.image | 1 + .../huge_blur_usda-2cc6d64af71f20b3-1.image | 1 + .../huge_kernel_usda-a515683f6e1b404a-1.image | 1 + .../ies_light_usda-9afaa60e27f14926-1.image | 1 + ...nored_curves_usda-d8234281140f3b7d-1.image | 1 + ...gnored_light_usda-26909110fbe92be4-1.image | 1 + ...ed_prototype_usda-f94b3942ea16e527-1.image | 1 + ...nored_volume_usda-32845f161c65c4a9-1.image | 1 + ...it_Capsule_1_usda-751cd07d979a4d81-1.image | 1 + ...icit_Capsule_usda-3ad3fb7cdd9a1902-1.image | 1 + ...mplicit_Cone_usda-024380e72d6d34a7-1.image | 1 + ...mplicit_Cube_usda-4bb89de99da949b6-1.image | 1 + ...t_Cylinder_1_usda-9964aa85919856f9-1.image | 1 + ...cit_Cylinder_usda-bee0e5841f0acf39-1.image | 1 + ...plicit_Plane_usda-77823213740cc6c2-1.image | 1 + ...it_displaced_usda-395a4477685bb193-1.image | 1 + ...plicit_level_usda-e441bb0a849304c5-1.image | 1 + ...mplicit_lone_usda-8c73fbc5c6234554-1.image | 1 + ...licit_moving_usda-2b9c98847f8ffdc5-1.image | 1 + ...t_prototypes_usda-754c2247d4091e78-1.image | 1 + ...licit_scaled_usda-5918722b7152b9f3-1.image | 1 + ...icit_shading_usda-b3809be67678f20f-1.image | 1 + ...licit_shapes_usda-180b516d9253da53-1.image | 1 + ...licit_shapes_usda-180b516d9253da53-2.image | 1 + ...licit_shapes_usda-30852d50af72eb96-1.image | 1 + ...licit_shapes_usda-41169aa3c303f69f-1.image | 1 + ...plicit_twins_usda-925c195d8a7f5a5c-1.image | 1 + ...import_plain_usda-37ba4c8eb30aefb6-1.image | 1 + .../import_usda-a114cca514b1e2e9-1.image | 1 + ...orted_motion_usda-98baf8cfec165d96-1.image | 1 + .../inf_light_usda-fd28273b2a9da24d-1.image | 1 + .../infinite_usda-6e15312bf55ca148-1.image | 1 + .../inherits_usda-946600d02d8755e0-1.image | 1 + .../input_usda-39af7a7dd8ccc053-1.image | 1 + ...anced_curves_usda-4486def29adfc50e-1.image | 1 + ...ncer_primvar_usda-6d97a3b7a8db1d2d-1.image | 1 + ..._reset_child_usda-327d10b931ee4635-1.image | 1 + ...o_root_xform_usda-824b2432496695f2-1.image | 1 + .../instancer_usda-24b4955bd587b7fc-1.image | 1 + .../instancer_usda-b5460e79ed990f95-1.image | 1 + .../instancer_usda-c51fcdc4de98cc87-1.image | 1 + .../instances_usda-0e86a3f92c8bc5d3-1.image | 1 + .../instances_usda-dd5f31a7c4515489-1.image | 1 + .../instancing_usda-046f52337fabb1a4-1.image | 1 + .../instancing_usda-1b870942bf28e01d-1.image | 1 + .../instancing_usda-37ed91a3e61701fe-1.image | 1 + .../instancing_usda-3c5cc93e1666982d-1.image | 1 + .../instancing_usda-3c5cc93e1666982d-2.image | 1 + .../instancing_usda-4c123aa1f400f41f-1.image | 1 + .../instancing_usda-4d15fe3f4f1fa7d2-1.image | 1 + .../instancing_usda-5aa111b242f25730-1.image | 1 + .../instancing_usda-8afb1b2336afd39d-1.image | 1 + .../instancing_usda-8afb1b2336afd39d-2.image | 1 + .../instancing_usda-bee611607d893be7-1.image | 1 + .../instancing_usda-c51a6942a8212cb9-1.image | 1 + ...nstantaneous_usda-3e155a939a6cc6cd-1.image | 1 + .../int_id_usda-520c4dc179153d4f-1.image | 1 + ..._light_sizes_usda-9c386d5a319bfe23-1.image | 1 + .../invalid_usda-d575a3c70872d8d6-1.image | 1 + ...variant_0_05_usda-adfdce9489c2fe04-1.image | 1 + .../invariant_0_usda-4ea5be31deb326f6-1.image | 1 + .../leaf_usda-be27c43b70391f12-1.image | 1 + .../leaf_usda-be27c43b70391f12-2.image | 1 + .../leaf_usda-c026046b07c5fbb8-1.image | 1 + .../leaf_usda-d886c4e05035aaa7-1.image | 1 + .../leaf_usda-e14e254e24f8bc2e-1.image | 1 + ...handed_baked_usda-9363c3fa472cdcde-1.image | 1 + ...ed_instanced_usda-f9d8d0fbabf00605-1.image | 1 + ...ded_mirrored_usda-b73e3433c9e6bccf-1.image | 1 + ...d_subdivided_usda-bd37842befe48e18-1.image | 1 + ...t_handed_tri_usda-ba795e2eb1c56aef-1.image | 1 + .../lens_cm_usda-73dbd961c243712e-1.image | 1 + .../lens_fstop_usda-da4d1cf71564d625-1.image | 1 + .../lens_m_usda-983a5a6e5f39e694-1.image | 1 + ...s_unauthored_usda-24a6800a9f22c131-1.image | 1 + .../level_two_usda-9004a66abae4e107-1.image | 1 + ...ight_linking_usda-0a7e4d5176bc2b33-1.image | 1 + ...ight_linking_usda-0a7e4d5176bc2b33-2.image | 1 + ...ight_linking_usda-0df578a9208fb7cf-1.image | 1 + ...ight_linking_usda-84012730e231d407-1.image | 1 + ...ight_linking_usda-a83ba5cc073d5f22-1.image | 1 + ...ples_default_usda-6242aa388fa102a1-1.image | 1 + ...samples_huge_usda-128d1881332e6fff-1.image | 1 + ...samples_zero_usda-516355bd0568c89e-1.image | 1 + ...t_visibility_usda-01977678b305c007-1.image | 1 + ...t_visibility_usda-01977678b305c007-2.image | 1 + ...t_visibility_usda-2b8ba6eb3030d1ec-1.image | 1 + ...t_visibility_usda-3ea0aa2435326544-1.image | 1 + ...ed_bsdf_1024_usda-00c8472dfa9bd263-1.image | 1 + ...nked_bsdf_16_usda-f488614962bd77c6-1.image | 1 + ...d_light_1024_usda-42bcc0ce33e153f3-1.image | 1 + ...ked_light_16_usda-94637210b45ab59a-1.image | 1 + ...ked_power_16_usda-eebb6febe29b133c-1.image | 1 + .../listing_usda-3efcced39a72eaa9-1.image | 1 + .../listing_usda-488ac4c542f2b8d8-1.image | 1 + .../listing_usda-f960655cad0d43f4-1.image | 1 + .../listing_usda-fd4c266bcdd26a9c-1.image | 1 + .../live_cube_usda-4cf5f22f20fef745-1.image | 1 + ...nder_unnamed_usda-7b7e7a1709504194-1.image | 1 + ...ive_cylinder_usda-07218dcdd495ca91-1.image | 1 + ...emoted_light_usda-16477f127e75566e-1.image | 1 + ...emoted_light_usda-16477f127e75566e-2.image | 1 + ..._dicing_none_usda-fde7cae55b0adc90-1.image | 1 + ...ing_retarget_usda-682d6c0fca1a4c12-1.image | 1 + .../live_dicing_usda-8bb261767fad5d1d-1.image | 1 + .../live_dicing_usda-c3c9ffc84677f809-1.image | 1 + ...ing_adaptive_usda-264a6722f87e2488-1.image | 1 + ...live_framing_usda-21ec0fb4edc0e3e0-1.image | 1 + ...live_framing_usda-6d7a1bccee33c035-1.image | 1 + ...live_framing_usda-6d7a1bccee33c035-2.image | 1 + ...var_warnings_usda-bb9c911d0ed38f94-1.image | 1 + ...ars_retarget_usda-59fb6cd49cb76e6b-1.image | 1 + ...ars_retarget_usda-f4742b8648291059-1.image | 1 + ...get_adaptive_usda-df276969e17c075b-1.image | 1 + ...target_diced_usda-68dfaa2802aa4ba4-1.image | 1 + ...target_diced_usda-91fe8df867e8f0cc-1.image | 1 + ...target_empty_usda-6f96b70b05bd5238-1.image | 1 + ...retarget_rig_usda-c517fabd0cfe3025-1.image | 1 + ...etarget_slow_usda-abb2313197b2f2f6-1.image | 1 + ...rget_unnamed_usda-11fb9c8dd8a6685f-1.image | 1 + ...ive_retarget_usda-443a3934a068f8e2-1.image | 1 + ...ive_retarget_usda-de7ad4a8e0eab00a-1.image | 1 + ...ive_retarget_usda-de7ad4a8e0eab00a-2.image | 1 + ...ive_retarget_usda-de7ad4a8e0eab00a-3.image | 1 + ...ive_retarget_usda-de7ad4a8e0eab00a-4.image | 1 + .../live_usda-99c94ab20e276ccd-1.image | 1 + .../live_usda-99c94ab20e276ccd-2.image | 1 + .../live_usda-b329c13621e10111-1.image | 1 + .../lookdev_usda-168fe99d44c7fbd8-1.image | 1 + .../lookdev_usda-17804c08eb02feff-1.image | 1 + .../lookdev_usda-17804c08eb02feff-2.image | 1 + .../lookdev_usda-2df588e196076e2d-1.image | 1 + .../lookdev_usda-37661541bc721de0-1.image | 1 + .../lookdev_usda-451cadfaa7f8e528-1.image | 1 + .../lookdev_usda-4e0b53f3e573c0d5-1.image | 1 + .../lookdev_usda-5b22641b5a20aa26-1.image | 1 + .../lookdev_usda-5b22641b5a20aa26-2.image | 1 + .../lookdev_usda-619dbb27dff03edb-1.image | 1 + .../lookdev_usda-6332af41b2f94037-1.image | 1 + .../lookdev_usda-66e64ab7da1be7a8-1.image | 1 + .../lookdev_usda-675a4c56d7da2e1a-1.image | 1 + .../lookdev_usda-6a91390c6e2e8f32-1.image | 1 + .../lookdev_usda-75d1c7f90fc366b6-1.image | 1 + .../lookdev_usda-7ce0ae0f49d396d8-1.image | 1 + .../lookdev_usda-7ed4ae42b2f80bd6-1.image | 1 + .../lookdev_usda-83b2bc40e66e8d90-1.image | 1 + .../lookdev_usda-84687138ca39f6d2-1.image | 1 + .../lookdev_usda-889e2ebeaf6f6f43-1.image | 1 + .../lookdev_usda-8bccb97f1cea35ce-1.image | 1 + .../lookdev_usda-8bccb97f1cea35ce-2.image | 1 + .../lookdev_usda-8e1d5d176c63c934-1.image | 1 + .../lookdev_usda-96a10d1a1b799db6-1.image | 1 + .../lookdev_usda-96b32b9e68a1ec9a-1.image | 1 + .../lookdev_usda-9b73e2f3385f85a2-1.image | 1 + .../lookdev_usda-a96810dec00d46d8-1.image | 1 + .../lookdev_usda-ad6a0ecf2cf3c658-1.image | 1 + .../lookdev_usda-b139810cbe0eac4c-1.image | 1 + .../lookdev_usda-b1d2ea509cf7ee23-1.image | 1 + .../lookdev_usda-b23ccdb4706d3d98-1.image | 1 + .../lookdev_usda-bdef936e454d02c5-1.image | 1 + .../lookdev_usda-c088c49aaf559905-1.image | 1 + .../lookdev_usda-c8874f17309d40f1-1.image | 1 + .../lookdev_usda-cab3bf60bc31d2f7-1.image | 1 + .../lookdev_usda-cae9785463ecddf6-1.image | 1 + .../lookdev_usda-d07bf630611d13b0-1.image | 1 + .../lookdev_usda-d977f122a6f754f5-1.image | 1 + .../lookdev_usda-da5095c5387fc6d5-1.image | 1 + .../lookdev_usda-ddd9a472681fe394-1.image | 1 + .../lookdev_usda-e6376a73c80d838f-1.image | 1 + .../lookdev_usda-f0ebb00d074c9c96-1.image | 1 + .../lookdev_usda-f374e5a4458830ba-1.image | 1 + .../lookdev_usda-f374e5a4458830ba-2.image | 1 + .../lookdev_usda-f4c4e13661091485-1.image | 1 + .../lookdev_usda-fa7c6612a51b87e4-1.image | 1 + .../lookdev_usda-fad17720e6382b8f-1.image | 1 + .../loop_plain_usda-47275a5a5923eb53-1.image | 1 + .../loop_ptex_usda-305da98d6891c0e8-1.image | 1 + ..._too_complex_usda-d110af4b6d4f2169-1.image | 1 + ...lpe_variance_usda-eb6b4998eed83db2-1.image | 1 + .../lpe_vars_usda-4a1166013a93c744-1.image | 1 + .../malformed_usda-6eca12ea39b96a60-1.image | 1 + .../many_lights_usda-2896f3594596fed9-1.image | 1 + .../many_lights_usda-492e76bd4d2bdc51-1.image | 1 + .../many_lights_usda-492e76bd4d2bdc51-2.image | 1 + .../marks_usda-92136ff2d6b2d34c-1.image | 1 + .../masks_usda-0b1d6cd46ef5aa7b-1.image | 1 + .../mass_spike_usda-41c01d82edccd4ad-1.image | 1 + .../mass_spike_usda-41c01d82edccd4ad-2.image | 1 + .../mass_spike_usda-dee5e21f531bb6c7-1.image | 1 + ...erialx_basic_usda-2113b612a3c1746f-1.image | 1 + ...erialx_basic_usda-2113b612a3c1746f-2.image | 1 + ...erialx_basic_usda-47f44502b8b66093-1.image | 1 + ...erialx_basic_usda-5e3c6402db738e98-1.image | 1 + ...erialx_basic_usda-605f278bcaf83bcb-1.image | 1 + ...erialx_basic_usda-7efe0aff05c6d47a-1.image | 1 + ...erialx_basic_usda-ee87ad7ab34333f5-1.image | 1 + ...rialx_cutout_usda-38de4138760ea72d-1.image | 1 + ...rialx_cutout_usda-38de4138760ea72d-2.image | 1 + ...rialx_cutout_usda-ae65df7de0c507fa-1.image | 1 + ...alx_emissive_usda-37e54478999af2b3-1.image | 1 + ...alx_emissive_usda-37e54478999af2b3-2.image | 1 + ...alx_emissive_usda-3c55abed0c2329af-1.image | 1 + ...alx_emissive_usda-746e6884e4aa1a13-1.image | 1 + ...alx_emissive_usda-8dd82f7591e605f2-1.image | 1 + ...terialx_lion_usda-a62e7b45a5b76dea-1.image | 1 + ...terialx_lion_usda-f3e8e29236c1c73f-1.image | 1 + ...terialx_lion_usda-f3e8e29236c1c73f-2.image | 1 + ...alx_showcase_usda-1e9e0f7089dbbfd5-1.image | 1 + ...alx_showcase_usda-3aaa54bfab01739a-1.image | 1 + ...alx_showcase_usda-3aaa54bfab01739a-2.image | 1 + ...x_subsurface_usda-218ab79fb5de55b5-1.image | 1 + ...x_subsurface_usda-3b07bee1fa621b95-1.image | 1 + ...x_subsurface_usda-3b07bee1fa621b95-2.image | 1 + ...alx_surfaces_usda-b446db21b7cb309b-1.image | 1 + ...alx_surfaces_usda-b446db21b7cb309b-2.image | 1 + ...alx_surfaces_usda-ca1ad78e541d4d41-1.image | 1 + ...rialx_teapot_usda-2d8b448afc9a82e2-1.image | 1 + ...rialx_teapot_usda-2d8b448afc9a82e2-2.image | 1 + ...rialx_teapot_usda-6ea1bea03dbe6c0d-1.image | 1 + ...rialx_volume_usda-0d615ee9e93f873e-1.image | 1 + ...rialx_volume_usda-dbd96c41f0cfcd9f-1.image | 1 + ...rialx_volume_usda-f4f640ec1f11b3d3-1.image | 1 + ...rialx_volume_usda-f4f640ec1f11b3d3-2.image | 1 + .../matrix_usda-9dd65c424c31f5e5-1.image | 1 + .../matte_dome_usda-942a3b1e6f8ce42b-1.image | 1 + .../matte_dome_usda-e3baadd4a9e3ffb7-1.image | 1 + ...pth_negative_usda-eec4c585057974f1-1.image | 1 + ...ax_depth_one_usda-0b2d301b9905817a-1.image | 1 + ...x_depth_zero_usda-931745fbe0c2c985-1.image | 1 + .../membership_usda-e44fc1429c4b92d1-1.image | 1 + ...mesh_blurred_usda-13d48869156e4433-1.image | 1 + .../mesh_both_usda-90fff2587206dcbe-1.image | 1 + .../mesh_sharp_usda-98679e56cacbfa24-1.image | 1 + .../mesh_track_usda-2da67447ace68ea3-1.image | 1 + ..._0_1_power_1_usda-d5e924c1e43088a2-1.image | 1 + ..._1_0_power_1_usda-0a224c171445c02a-1.image | 1 + ..._1_1_power_1_usda-3e1ca1268dde29a1-1.image | 1 + .../mirror_usda-e5687a44290234b9-1.image | 1 + ...ismatch_same_usda-36f547d4088a73c8-1.image | 1 + .../mismatch_usda-4938acb7109c81b3-1.image | 1 + .../mismatch_usda-e42c92f5d05f1fcf-1.image | 1 + .../missing_usda-048983dc2b7e8f66-1.image | 1 + ...xed_hair_ref_usda-1bf6615be167a70b-1.image | 1 + .../mixed_hair_usda-e643846eb6c6d950-1.image | 1 + .../motionblur_usda-2ad099074d244fc2-1.image | 1 + .../motionblur_usda-f2666f3e50d41453-1.image | 1 + .../motionblur_usda-f2666f3e50d41453-2.image | 1 + .../motionblur_usda-ff0d49c1a505d497-1.image | 1 + ...ctor_aliases_usda-8852d8dcf38ecf0d-1.image | 1 + ...ctor_blurred_usda-6d69c20d22e19877-1.image | 1 + ...vector_types_usda-d2a10e1c91de57de-1.image | 1 + ...motionvector_usda-0097c4dc99684b31-1.image | 1 + ...motionvector_usda-2921a3a583a7af01-1.image | 1 + ...motionvector_usda-37a40f3b6ac9aeab-1.image | 1 + ...motionvector_usda-37a40f3b6ac9aeab-2.image | 1 + ...motionvector_usda-43ed7e424bbaa4f7-1.image | 1 + ...motionvector_usda-6dec65e3aa55dc9d-1.image | 1 + ...motionvector_usda-c5f34f1e623349ba-1.image | 1 + .../multiply_usda-8736676f00161943-1.image | 1 + .../named_chart_usda-67761c5ec52139aa-1.image | 1 + .../named_usda-455967a7b376e998-1.image | 1 + .../named_usda-caf35125dfbdc7e1-1.image | 1 + .../named_usda-d1e9bde789e7233a-1.image | 1 + .../nan_shaping_usda-9e699df2d0518cc0-1.image | 1 + .../native_usda-48df729899939992-1.image | 1 + .../native_usda-aa00109a0de726bd-1.image | 1 + .../near_far_usda-378c724af4dad1fb-1.image | 1 + .../nearest_usda-01bca6fa7666b1f3-1.image | 1 + .../nearest_usda-6471e7e6d484d155-1.image | 1 + ...tive_min_spp_usda-f445ea0383fc1875-1.image | 1 + ...ested_direct_usda-e25d7da2b966c023-1.image | 1 + ...ested_hidden_usda-0ea71f61bc0a58d6-1.image | 1 + ...o_root_xform_usda-95a505e1fa209779-1.image | 1 + ...d_instancing_usda-39f09e1523375345-1.image | 1 + ...d_instancing_usda-4b3ca108154f4935-1.image | 1 + ...d_instancing_usda-4b3ca108154f4935-2.image | 1 + ...d_instancing_usda-915b43a7369963b2-1.image | 1 + ...d_instancing_usda-df6640aca1d2b235-1.image | 1 + ...d_instancing_usda-e37604ffa926df8a-1.image | 1 + ...d_instancing_usda-fda6a6f1c2f5b28e-1.image | 1 + ...d_instancing_usda-fff87a8b52b8e069-1.image | 1 + ...not_composed_usda-c0a020bf777d3f88-1.image | 1 + .../nested_one_usda-bc56793ff0720fdc-1.image | 1 + ...sted_scatter_usda-4724aa4d383273d2-1.image | 1 + ...ed_translate_usda-31c01e41ce7e4eb3-1.image | 1 + .../nested_two_usda-0fad6a8ff7f8520a-1.image | 1 + .../nested_usda-dbe832b66063cf24-1.image | 1 + .../neural_usda-57a514ca820ab02c-1.image | 1 + .../ngon_usda-573da62ad402526c-1.image | 1 + ...iform_lights_usda-181564afd75bc784-1.image | 1 + .../no_camera_usda-08eaf78e1847bdbe-1.image | 1 + .../no_camera_usda-2a7bfc7853b270c5-1.image | 1 + .../no_camera_usda-5507d24332d7f188-1.image | 1 + .../no_camera_usda-758b683c20791ceb-1.image | 1 + .../no_camera_usda-ac160dc389201eeb-1.image | 1 + .../no_camera_usda-af24412e492e9147-1.image | 1 + .../no_camera_usda-f2e322198f5a52d6-1.image | 1 + .../no_frame_usda-06c9736b1ee41555-1.image | 1 + .../no_kernel_usda-250e185a51aff6c5-1.image | 1 + .../no_products_usda-b2f39aa3f795faa2-1.image | 1 + ...var_authored_usda-7c630c4e6b264297-1.image | 1 + .../no_var_bare_usda-0f6834e5d7411efd-1.image | 1 + .../non_finite_usda-b38223b4cd532638-1.image | 1 + .../none_usda-3500dce365c976fb-1.image | 1 + .../none_usda-8ca1039ef6a1af13-1.image | 1 + .../none_usda-b2626a5c29f30d06-1.image | 1 + ...off_cylinder_usda-cad3a8a0bec58113-1.image | 1 + ...orm_off_disk_usda-d4ac49b171982a5d-1.image | 1 + ...orm_off_rect_usda-7ca0616652c56bb1-1.image | 1 + ...m_off_sphere_usda-0abd6bba11da485f-1.image | 1 + ..._on_cylinder_usda-f3dd54fd2e0d1929-1.image | 1 + ...norm_on_disk_usda-80da988892a29bff-1.image | 1 + ...norm_on_rect_usda-0fb0cae5dd5fa17f-1.image | 1 + ...rm_on_sphere_usda-a4e34a4e4682e3b5-1.image | 1 + .../normals_usda-eb98f1adc17331b3-1.image | 1 + .../nothing_usda-05a76e84b550abac-1.image | 1 + .../nurbs_clean_usda-362cea70cf67e6cc-1.image | 1 + .../nurbs_empty_usda-af6c06cf5e078823-1.image | 1 + .../nurbs_full_usda-ee811943aa635f36-1.image | 1 + .../nurbs_half_usda-26730abe8461e1ee-1.image | 1 + ...bs_malformed_usda-edaffca17525a0db-1.image | 1 + ...urbs_refused_usda-2cd12f986b06b3a5-1.image | 1 + .../on_camera_usda-0e1653405c0b04b8-1.image | 1 + .../once_direct_usda-87536582b2725522-1.image | 1 + ...ce_instanced_usda-cfe757ff670cf1a4-1.image | 1 + .../opacity_usda-18ffcc13eb92677a-1.image | 1 + ...pbr_showcase_usda-0f7c1eaf15ef6726-1.image | 1 + ...pbr_showcase_usda-1dca66ecebc9d919-1.image | 1 + ...pbr_showcase_usda-1dca66ecebc9d919-2.image | 1 + ...pbr_showcase_usda-501b45e8f6131d21-1.image | 1 + .../openpbr_usda-876563da4aa0a57a-1.image | 1 + ...ther_lookdev_usda-31ecdc884f3fb603-1.image | 1 + .../other_op_usda-7a2444b60f22a636-1.image | 1 + .../overflow_usda-c7dbcb2b55d9a450-1.image | 1 + .../override_usda-b67a66c0201ba59a-1.image | 1 + .../overrides_usda-e08388bc2f33304d-1.image | 1 + ...partial_link_usda-0b6b5eacc86557dc-1.image | 1 + ...pass_payload_usda-08d0e4051511c08a-1.image | 1 + ...s_dome_twice_usda-0b80861de0309489-1.image | 1 + ...s_dome_twice_usda-bdae79d96585e6fd-1.image | 1 + ...s_dome_twice_usda-c05e0c1783414e94-1.image | 1 + ...s_dome_twice_usda-e9d62fba57fc58f7-1.image | 1 + ...dden_in_back_usda-5e69798956b67766-1.image | 1 + ...dden_in_back_usda-5e69798956b67766-2.image | 1 + ...dden_in_back_usda-ad65d77e744f59b2-1.image | 1 + ...dden_in_back_usda-ad65d77e744f59b2-2.image | 1 + ...dden_in_back_usda-e4f2c0c97dbe1a55-1.image | 1 + ...dden_in_back_usda-e4f2c0c97dbe1a55-2.image | 1 + .../passes_usda-562a5b3a04949a47-1.image | 1 + .../passes_usda-aaa6ef1b16e7d6b6-1.image | 1 + ...yload_camera_usda-ff33ccc1b50862a6-1.image | 1 + ...ayload_links_usda-f941f0e5247354e6-1.image | 1 + .../photometric_usda-644b1d1ebbe4cb72-1.image | 1 + ...e_unauthored_usda-ecde60dead7180c2-1.image | 1 + ...pinhole_zero_usda-9f676d1852dc7168-1.image | 1 + .../pivot_stack_usda-eabcdb11552ea0a9-1.image | 1 + ...pixel_filter_usda-c618794e70f5ffe3-1.image | 1 + .../place_once_usda-66a0c16b42b4539e-1.image | 1 + .../place_twice_usda-c4ce4deb59d3727f-1.image | 1 + .../placed_usda-000d21c7a8ef61e5-1.image | 1 + .../placed_usda-0ba3af4ffa595294-1.image | 1 + .../placed_usda-503a8ea6d52670c0-1.image | 1 + .../placed_usda-63f0ce074fafa44d-1.image | 1 + .../placed_usda-6fa96be933bc04d8-1.image | 1 + .../placed_usda-7ad6f5aa95ba8499-1.image | 1 + .../placed_usda-7c35981b427daf53-1.image | 1 + .../placed_usda-7c35981b427daf53-2.image | 1 + .../placed_usda-85cdaaa611ddcfb8-1.image | 1 + .../placed_usda-94944664ab7e307d-1.image | 1 + .../placed_usda-97fbc0f3fbe2c018-1.image | 1 + .../placed_usda-b9e166293d4eb014-1.image | 1 + .../placed_usda-c1f420d2f8074d9e-1.image | 1 + .../placed_usda-c1f420d2f8074d9e-2.image | 1 + .../placed_usda-c1f420d2f8074d9e-3.image | 1 + .../placed_usda-c316df83883a2080-1.image | 1 + .../placed_usda-d17077acbffaca45-1.image | 1 + .../placed_usda-d4ecee5c0312cf96-1.image | 1 + .../placed_usda-dc7b9c4f6886cafa-1.image | 1 + .../placed_usda-f5c13f6f8bb66ab5-1.image | 1 + .../placements_usda-275bfd0cb4688e5d-1.image | 1 + .../plane_usda-e5035e45dccaf24c-1.image | 1 + .../planes_usda-b941e449ca4a031a-1.image | 1 + ...c_0_1_bsdf_1_usda-bd800d4fcb330be2-1.image | 1 + ..._0_1_light_1_usda-a03210c9831fba26-1.image | 1 + ..._0_1_power_1_usda-482542fae980bf52-1.image | 1 + ..._25_3_bsdf_1_usda-36e5cb22b2676a41-1.image | 1 + ..._25_3_bsdf_1_usda-d38160b2be22e70c-1.image | 1 + ..._25_3_bsdf_2_usda-78a7411a4858bc6b-1.image | 1 + ..._25_3_bsdf_3_usda-f81a4b161903a8f2-1.image | 1 + ..._25_3_bsdf_4_usda-87a5b5e826a38a61-1.image | 1 + ...25_3_light_1_usda-135d2f963daf2551-1.image | 1 + ...25_3_light_1_usda-cf1431b5a2f0391c-1.image | 1 + ...25_3_light_2_usda-c1e873bea9886ca9-1.image | 1 + ...25_3_light_3_usda-0dc30546dc7303fa-1.image | 1 + ...25_3_light_4_usda-306836af9dcd76c7-1.image | 1 + ...25_3_power_1_usda-aeace9cae6e95285-1.image | 1 + ...25_3_power_1_usda-f2feafce67b9cc18-1.image | 1 + ...25_3_power_2_usda-9558069a3a6cb6c1-1.image | 1 + ...25_3_power_3_usda-848bb8619ed104b2-1.image | 1 + ...25_3_power_4_usda-13781e826c793feb-1.image | 1 + ...c_1_0_bsdf_1_usda-7392b4eece3d4ffa-1.image | 1 + ..._1_0_light_1_usda-e29b88fff3b5eede-1.image | 1 + ..._1_0_power_1_usda-db7be84c0c913b8a-1.image | 1 + ...c_1_1_bsdf_1_usda-1a655ee8a457375b-1.image | 1 + ..._1_1_light_1_usda-d608d0096c4c9293-1.image | 1 + ..._1_1_power_1_usda-dad1612ee907e657-1.image | 1 + .../precomp_C_usda-ceae07fa5339bc4e-1.image | 1 + ...p_look_final_usda-46848a8dcf6250e4-1.image | 1 + ...precomp_none_usda-749e88768dbe99b1-1.image | 1 + .../precomp_usda-33f481698c3a3ce7-1.image | 1 + .../precomp_usda-4339ddf5a07dea17-1.image | 1 + .../precomp_usda-886c8d8bef125a6d-1.image | 1 + .../precomp_usda-886c8d8bef125a6d-2.image | 1 + .../precomp_usda-9c591dbe4a6a2374-1.image | 1 + .../precomp_usda-d9d1e77cdf9ce71d-1.image | 1 + .../precomp_usda-e1a87b662c5109e8-1.image | 1 + .../precomp_usda-e28059e8e7dd2fb9-1.image | 1 + ...review_plain_usda-56c5917475bdaa40-1.image | 1 + ...eview_tagged_usda-21171eef0f915c9d-1.image | 1 + .../preview_usda-6fa33b5d399ba28d-1.image | 1 + ...primvar_aovs_usda-1ceba2b5cd7da4fe-1.image | 1 + ...primvar_aovs_usda-b5e76a14b4ccb3db-1.image | 1 + ...primvar_aovs_usda-b5e76a14b4ccb3db-2.image | 1 + ...primvar_aovs_usda-e0e162475fa824e5-1.image | 1 + ...multisampled_usda-774c86244886ea5e-1.image | 1 + ...primvar_vars_usda-f6787f7fdf1eebf3-1.image | 1 + ...l_par_square_usda-6cb0d1de356675bd-1.image | 1 + ...ral_par_wide_usda-e65d9f21a141c052-1.image | 1 + .../products_usda-e7ced79f762e48ff-1.image | 1 + .../prune_usda-3bf02286156e9774-1.image | 1 + .../prune_usda-d1a6b2f2900a3fc1-1.image | 1 + .../prune_usda-f5ce85341275f544-1.image | 1 + .../ptex_phase_usda-9d5b92d8c597babb-1.image | 1 + .../ptex_quads_usda-c2d1b0153068d224-1.image | 1 + .../ptex_quads_usda-ded3ea05445ff449-1.image | 1 + .../ptex_quads_usda-ded3ea05445ff449-2.image | 1 + ...ose_bindings_usda-08709bdb4f451e59-1.image | 1 + ...ose_bindings_usda-08709bdb4f451e59-2.image | 1 + ...ose_bindings_usda-856ac5cdf233a681-1.image | 1 + .../purpose_usda-bf0c2e782a7f7633-1.image | 1 + ...pxr_displace_usda-3eb2626e4111c003-1.image | 1 + ...pxr_displace_usda-744b2066d6ee31b4-1.image | 1 + ...pxr_displace_usda-aa614afb7e46c6eb-1.image | 1 + ...pxr_displace_usda-aa614afb7e46c6eb-2.image | 1 + .../quad_usda-8a80e703a52aec63-1.image | 1 + ...quiet_curves_usda-c001d1e165c273d4-1.image | 1 + .../quiet_light_usda-c8a2428bb59d472f-1.image | 1 + ...et_prototype_usda-4ee6edc155c4ce34-1.image | 1 + ...quiet_volume_usda-5e752c5254e3ed36-1.image | 1 + .../range_far_usda-4ecb448a88a6c818-1.image | 1 + .../range_usda-bc6d3542e7333f02-1.image | 1 + .../raw_dome_usda-e8a6497f6f3c05ee-1.image | 1 + .../raw_light_usda-ea76f3df9a669477-1.image | 1 + ...ct_light_far_usda-89364d5e280ec883-1.image | 1 + ...t_light_near_usda-e8eb7549c9231ec8-1.image | 1 + .../rect_light_usda-eadf17e73fc59819-1.image | 1 + ...rect_texture_usda-fa043cce9d6338f4-1.image | 1 + .../rectlight_usda-3885e18a97e5845d-1.image | 1 + .../rectlight_usda-3885e18a97e5845d-2.image | 1 + .../rectlight_usda-5482f82d359615b0-1.image | 1 + .../rectlight_usda-e2a69198ab36729f-1.image | 1 + .../refusals_usda-e2a11260371695e9-1.image | 1 + .../refused_usda-0be9300cea6f944b-1.image | 1 + ...ender_passes_usda-109738cee49991a5-1.image | 1 + ...ender_passes_usda-109738cee49991a5-2.image | 1 + ...ender_passes_usda-109738cee49991a5-3.image | 1 + ...ender_passes_usda-15787cfcd05d1f32-1.image | 1 + ...ender_passes_usda-15787cfcd05d1f32-2.image | 1 + ...ender_passes_usda-2eed0231ac063823-1.image | 1 + ...ender_passes_usda-5d8d12e685ddd56c-1.image | 1 + ...ender_passes_usda-5d8d12e685ddd56c-2.image | 1 + ...ender_passes_usda-c03e7c6702e31ad3-1.image | 1 + ...ender_passes_usda-f5e51ff2422aa383-1.image | 1 + ...ender_passes_usda-f5e51ff2422aa383-2.image | 1 + ...ender_passes_usda-f98e72ee422221b6-1.image | 1 + ...ource_camera_usda-d46ae988f6d9241c-1.image | 1 + ...ender_source_usda-131b801caa122c43-1.image | 1 + ...ender_source_usda-749a95594e279116-1.image | 1 + ...ender_source_usda-b15267a29d9e4616-1.image | 1 + .../reset_disk_usda-6e0b5adab74a3b7a-1.image | 1 + ...ion_negative_usda-0d18504e846cea31-1.image | 1 + ...olution_zero_usda-e3f58678deb9aa30-1.image | 1 + .../rest_usda-feaaa720bb9a30d2-1.image | 1 + .../root_usda-00dd7b68b86c7168-1.image | 1 + .../root_usda-00e8d0d9a2f465b9-1.image | 1 + .../root_usda-1ddeac0a2964315c-1.image | 1 + .../root_usda-2f86c31117cc8b58-1.image | 1 + .../root_usda-43c385d7a2a21d1e-1.image | 1 + .../root_usda-4aa136053cd56402-1.image | 1 + .../root_usda-4b8c79cf557cf378-1.image | 1 + .../root_usda-5042b0d1011805d6-1.image | 1 + .../root_usda-5c84bdb62972ba25-1.image | 1 + .../root_usda-63552b8e06717f62-1.image | 1 + .../root_usda-642eeb8c5780c872-1.image | 1 + .../root_usda-65bf0b61fd007f62-1.image | 1 + .../root_usda-67d463deb3cd2295-1.image | 1 + .../root_usda-7781d1893e2e23fd-1.image | 1 + .../root_usda-7eba3de4e6efbf15-1.image | 1 + .../root_usda-8099cbe59e22c4ff-1.image | 1 + .../root_usda-834306f0b405a977-1.image | 1 + .../root_usda-8c6dbffe8bcc7f5d-1.image | 1 + .../root_usda-921d5e21a6ec411f-1.image | 1 + .../root_usda-9d7d0e6b748bbe2f-1.image | 1 + .../root_usda-a0c411ed1048de1a-1.image | 1 + .../root_usda-a95c3cfeafbe744e-1.image | 1 + .../root_usda-aa094b9d362ee4b9-1.image | 1 + .../root_usda-bedb2af78f4c965d-1.image | 1 + .../root_usda-bfc3cfdc3fb023a6-1.image | 1 + .../root_usda-c51fa0d84e7325f7-1.image | 1 + .../root_usda-c6c9d5036fcf5e6d-1.image | 1 + .../root_usda-c6c9d5036fcf5e6d-2.image | 1 + .../root_usda-c78a3b1a4bb10072-1.image | 1 + .../root_usda-cc0a74d0f1a22c6a-1.image | 1 + .../root_usda-ccefc9342ef07f81-1.image | 1 + .../root_usda-ce726227b7d02261-1.image | 1 + .../root_usda-cef90a6ad595b1b4-1.image | 1 + .../root_usda-d2c312942e13c754-1.image | 1 + .../root_usda-dcc0d192c2504171-1.image | 1 + .../root_usda-df9ad38a08c60f60-1.image | 1 + .../root_usda-e227181a4d86cdde-1.image | 1 + .../root_usda-f3eca4e5e1cfc428-1.image | 1 + .../root_usda-f3eca4e5e1cfc428-2.image | 1 + .../root_usda-f4c8b443da714046-1.image | 1 + .../root_usda-f7df8a9705f0748f-1.image | 1 + ...otate_parent_usda-a0cc7d7c189a5bba-1.image | 1 + .../s_usda-0006d97926014c1b-1.image | 1 + ...pler_default_usda-6c4e4e80bde0b7e5-1.image | 1 + ...mpler_halton_usda-bcb88dc4e7395359-1.image | 1 + ...pler_lattice_usda-83017538d7bb844b-1.image | 1 + ...sphere_light_usda-2dabd5a9f4c0f98e-1.image | 1 + .../scaled_usda-308f36ce00bb3ea8-1.image | 1 + .../scatter_usda-08c435043fb988f9-1.image | 1 + .../scatter_usda-e62e321631ee4219-1.image | 1 + ..._color_space_usda-acd6f59e656731c0-1.image | 1 + .../settings_usda-58e4038727242b7e-1.image | 1 + .../settings_usda-8c1bce0acc8c2aa3-1.image | 1 + ...ball_blocked_usda-7a4aa722cf803335-1.image | 1 + ...all_excluded_usda-97e5af329ccc1a04-1.image | 1 + ..._fog_blocked_usda-02a2d7c4f4baa106-1.image | 1 + ...fog_excluded_usda-0f89cfc00df34be3-1.image | 1 + .../shadow_open_usda-43f52a9430038a59-1.image | 1 + .../shaped_rect_usda-2479a47c7797a66c-1.image | 1 + ...aping_absent_usda-59ac6c6c6ed71036-1.image | 1 + ...ping_applied_usda-b1b65b90122da6f7-1.image | 1 + ...hared_points_usda-b97fa4512d46ed74-1.image | 1 + .../shared_usda-9209cd8eb954e389-1.image | 1 + .../shared_usda-b9af19ac4c829153-1.image | 1 + .../sharp_usda-9bf0a09f5df9236e-1.image | 1 + ...shot_lookdev_usda-13a3dd4f11de39b9-1.image | 1 + ...shot_lookdev_usda-27651d6a015b04ab-1.image | 1 + ...shot_lookdev_usda-369c0d66f45d39b9-1.image | 1 + ...shot_lookdev_usda-6f33035f56110470-1.image | 1 + ...shot_lookdev_usda-7003167a7a70688d-1.image | 1 + ...shot_lookdev_usda-b26fdb3392c1eac3-1.image | 1 + ...shot_lookdev_usda-bc9d89b7ffc91e9b-1.image | 1 + ...shot_lookdev_usda-cac7cb8da11a9b99-1.image | 1 + ...shot_lookdev_usda-e785595b364179c9-1.image | 1 + ...shot_lookdev_usda-e82a725344733609-1.image | 1 + ...shot_lookdev_usda-eaf3eeced61f0581-1.image | 1 + ...shot_lookdev_usda-f697274eb781e181-1.image | 1 + .../shot_usda-bc277892832ac542-1.image | 1 + .../sibling_usda-ec40564c6bb9a56d-1.image | 1 + .../single_usda-472ac6d4e19ff814-1.image | 1 + .../smoke_grid_usda-64f278d7126815e0-1.image | 1 + .../smoke_usda-8b219b9873531af2-1.image | 1 + .../smoke_usda-c485b4550b7ac78b-1.image | 1 + .../smoke_usda-e1b03a141b55e173-1.image | 1 + .../smoke_usda-e1b03a141b55e173-2.image | 1 + .../snapshot_usda-48d0c43b60eb99bd-1.image | 1 + ...ere_and_mesh_usda-0e0815d93400ffb5-1.image | 1 + .../sphere_both_usda-e02008707f44acbc-1.image | 1 + ...e_crust_wins_usda-cfeb9931008a7ea6-1.image | 1 + ...ere_defaults_usda-8b8f061019318106-1.image | 1 + ...sphere_light_usda-4886e72703716517-1.image | 1 + ...niform_scale_usda-4a3711274af76a73-1.image | 1 + .../sphere_only_usda-71bd2f6a8198f0b8-1.image | 1 + ...re_ri_camera_usda-47b1274be8232510-1.image | 1 + ...e_tiny_scale_usda-7eb2c16e3f3404d7-1.image | 1 + ...sphere_track_usda-9c13bacd8c4d2d91-1.image | 1 + ...niform_scale_usda-afcce7d5fa243629-1.image | 1 + .../sphere_usda-8366b90874a02778-1.image | 1 + ...e_zero_scale_usda-ac3436d07948ddb2-1.image | 1 + ...hed_cylinder_usda-6bfde315320c4111-1.image | 1 + ...quashed_disk_usda-e4a3093a38518998-1.image | 1 + ...ashed_sphere_usda-7bcbaa3c83aaf92c-1.image | 1 + .../stack_0_usda-2dad0f5ec97c10b8-1.image | 1 + .../stack_150_usda-9fc28daf7efcde9e-1.image | 1 + .../stage_usda-0695b3612208bcf5-1.image | 1 + .../stage_usda-08451a086997d754-1.image | 1 + .../stage_usda-08f2605aa76f8c5a-1.image | 1 + .../stage_usda-0a9a4fefc79d0b59-1.image | 1 + .../stage_usda-0dae1afcf6927089-1.image | 1 + .../stage_usda-137bf5b9bbcbaa09-1.image | 1 + .../stage_usda-15ab0320e4168a3a-1.image | 1 + .../stage_usda-1780ae5d9b4706f3-1.image | 1 + .../stage_usda-18576b421133666c-1.image | 1 + .../stage_usda-18d4c3c27061d1e0-1.image | 1 + .../stage_usda-19c958e4224602c7-1.image | 1 + .../stage_usda-1ad9de82b394044d-1.image | 1 + .../stage_usda-22dd31756ff245fc-1.image | 1 + .../stage_usda-22e94b531779cff1-1.image | 1 + .../stage_usda-24ad7c66559e9c80-1.image | 1 + .../stage_usda-26105365b1fd8dbc-1.image | 1 + .../stage_usda-2912eb63656b3371-1.image | 1 + .../stage_usda-2c5736e1f1ba1f8d-1.image | 1 + .../stage_usda-2c8067fb553f81df-1.image | 1 + .../stage_usda-2ce486f3dc966042-1.image | 1 + .../stage_usda-2ffe73dbb471510a-1.image | 1 + .../stage_usda-323a3e02a1f4d7b0-1.image | 1 + .../stage_usda-340b07ebab8f9091-1.image | 1 + .../stage_usda-3622e7d90bc81d34-1.image | 1 + .../stage_usda-370b26846e2e31bd-1.image | 1 + .../stage_usda-370b26846e2e31bd-2.image | 1 + .../stage_usda-37a86d28c7d197ed-1.image | 1 + .../stage_usda-3c67a25a0a341efb-1.image | 1 + .../stage_usda-3effc82524d047c7-1.image | 1 + .../stage_usda-3f9cd9ed5581414a-1.image | 1 + .../stage_usda-41ded1a4c5604d81-1.image | 1 + .../stage_usda-41ded1a4c5604d81-2.image | 1 + .../stage_usda-48e70f6118b1f181-1.image | 1 + .../stage_usda-49f9cb3e8a3fb9fb-1.image | 1 + .../stage_usda-4a064c9610d45212-1.image | 1 + .../stage_usda-4f30830cd0cff6cf-1.image | 1 + .../stage_usda-520aa0db2cddfe4a-1.image | 1 + .../stage_usda-54895eac26b3d68b-1.image | 1 + .../stage_usda-5842de9c4816f088-1.image | 1 + .../stage_usda-591315737502029a-1.image | 1 + .../stage_usda-592ba3007488df6d-1.image | 1 + .../stage_usda-59354f1aad350085-1.image | 1 + .../stage_usda-5b237a71fd087753-1.image | 1 + .../stage_usda-5cc80e16451809c9-1.image | 1 + .../stage_usda-5dc19c72025a0150-1.image | 1 + .../stage_usda-5f7140cec32f4f07-1.image | 1 + .../stage_usda-604932e0d3e70494-1.image | 1 + .../stage_usda-64b7039b1d43e540-1.image | 1 + .../stage_usda-65ee13ae526ffeea-1.image | 1 + .../stage_usda-67247fa59107a671-1.image | 1 + .../stage_usda-6bf959c4a9ccd0b3-1.image | 1 + .../stage_usda-6d5fe86af042b6e1-1.image | 1 + .../stage_usda-71054a8e0c511721-1.image | 1 + .../stage_usda-7c770edd10f5907e-1.image | 1 + .../stage_usda-8088e3bfe6185392-1.image | 1 + .../stage_usda-80aabe25c21585c0-1.image | 1 + .../stage_usda-82538c264d2a03ab-1.image | 1 + .../stage_usda-82538c264d2a03ab-2.image | 1 + .../stage_usda-82a10c399a16cdfe-1.image | 1 + .../stage_usda-8330e4bc297d2c11-1.image | 1 + .../stage_usda-888072d0abcb4b7c-1.image | 1 + .../stage_usda-8a23f56494af42b0-1.image | 1 + .../stage_usda-8b53eb2ddb581089-1.image | 1 + .../stage_usda-8bc1102225447b76-1.image | 1 + .../stage_usda-8bcafd97dd44d415-1.image | 1 + .../stage_usda-8c1801ab78070f29-1.image | 1 + .../stage_usda-8cceeaf3cdd2ee51-1.image | 1 + .../stage_usda-91c6c701cea6760c-1.image | 1 + .../stage_usda-93b962ab026b22b8-1.image | 1 + .../stage_usda-976234e8d4ff9d44-1.image | 1 + .../stage_usda-9a4d212002571295-1.image | 1 + .../stage_usda-9af3795f55319fa5-1.image | 1 + .../stage_usda-9f427c13a5c51892-1.image | 1 + .../stage_usda-a366debd179e59ca-1.image | 1 + .../stage_usda-a5b1d711f3b9ea59-1.image | 1 + .../stage_usda-a74b5f3cf6bce97e-1.image | 1 + .../stage_usda-a7f91b5a6640999a-1.image | 1 + .../stage_usda-a87fd805403755dc-1.image | 1 + .../stage_usda-abb589be134471f7-1.image | 1 + .../stage_usda-abeca91af484e4eb-1.image | 1 + .../stage_usda-b0726246200d796c-1.image | 1 + .../stage_usda-b091ac35593cb491-1.image | 1 + .../stage_usda-b8974322f9c3c9a8-1.image | 1 + .../stage_usda-bb51bbccac634602-1.image | 1 + .../stage_usda-bc2640abb95a8689-1.image | 1 + .../stage_usda-bdce5005dd991897-1.image | 1 + .../stage_usda-c3555672a13627c7-1.image | 1 + .../stage_usda-c469a696e567b939-1.image | 1 + .../stage_usda-c7b4569174f0eec0-1.image | 1 + .../stage_usda-cd83faa181eb1fd7-1.image | 1 + .../stage_usda-cf6459f3f81ccc47-1.image | 1 + .../stage_usda-cf8a4ab339090107-1.image | 1 + .../stage_usda-d2ee2497345d697d-1.image | 1 + .../stage_usda-d72f3f29bbbe2aac-1.image | 1 + .../stage_usda-db5313ef5e73713b-1.image | 1 + .../stage_usda-dbe57a2b9b304f79-1.image | 1 + .../stage_usda-dc3f3fbeccf7b47a-1.image | 1 + .../stage_usda-df6e87952da2ef59-1.image | 1 + .../stage_usda-dfcbe85c1522e1a0-1.image | 1 + .../stage_usda-e0281d61316ee28c-1.image | 1 + .../stage_usda-e190342a381695b4-1.image | 1 + .../stage_usda-e4221ab681d9d69c-1.image | 1 + .../stage_usda-e515f767109d59fd-1.image | 1 + .../stage_usda-e6a49698324053cb-1.image | 1 + .../stage_usda-e725f8fd7bc55370-1.image | 1 + .../stage_usda-eae49fc2a8ca60e5-1.image | 1 + .../stage_usda-eb49e61d600c4d7e-1.image | 1 + .../stage_usda-ebf6853a9256b461-1.image | 1 + .../stage_usda-ef8a900692712be4-1.image | 1 + .../stage_usda-f1cbf14d6569cda8-1.image | 1 + .../stage_usda-f3300bdef5e06140-1.image | 1 + .../stage_usda-f33567936d2468ed-1.image | 1 + .../stage_usda-fbc457cd2253b427-1.image | 1 + .../stage_usda-fec7a3f24112f4ad-1.image | 1 + .../stage_usda-ffdbda6eb16c3b7d-1.image | 1 + ...atic_vectors_usda-fae85e3b03a2883e-1.image | 1 + .../static_with_usda-9af9d7b39f92f260-1.image | 1 + ...atic_without_usda-cd73d9530ee2de09-1.image | 1 + .../stats_usda-00e508bd2c5eb608-1.image | 1 + .../stops_usda-f48d13a255e8b51e-1.image | 1 + ...tegy_balance_usda-bdbde883917b565d-1.image | 1 + ...rategy_bogus_usda-ab14768d89b4fe10-1.image | 1 + ...trategy_bsdf_usda-f7c53ec9f704be37-1.image | 1 + ...rategy_light_usda-ec65e0dfb065b1f1-1.image | 1 + ...rategy_power_usda-03788414ab51c35f-1.image | 1 + .../streamed_usda-08988239fcd84b0c-1.image | 1 + .../streamed_usda-274e7e68b089c3ac-1.image | 1 + .../string_id_usda-4ef78239c4d0e1cc-1.image | 1 + .../string_usda-edd62f0c52a0bd52-1.image | 1 + ...strip_cracks_usda-5cdf0130b2848b76-1.image | 1 + .../strip_usda-a747742859825b3a-1.image | 1 + .../subdiv_0_usda-6db126ded01c4707-1.image | 1 + .../subdiv_1_usda-bde0e042f33df4a5-1.image | 1 + .../subdiv_2_usda-47f822571f7427d3-1.image | 1 + ...div_bilinear_usda-287ba8f91aef206f-1.image | 1 + .../subdiv_cage_usda-17f666e1e5c6d08f-1.image | 1 + ...bdiv_clamped_usda-01685ab19e968980-1.image | 1 + ...bdiv_default_usda-be76976c79a95643-1.image | 1 + ...aceted_first_usda-510113487f701e14-1.image | 1 + ...smooth_first_usda-9375effdf17e1f42-1.image | 1 + ...ubdiv_legacy_usda-e769c33757ced97c-1.image | 1 + ...ubdiv_level0_usda-436132ac852dd08e-1.image | 1 + ...v_loop_quads_usda-1e8f941ca190d506-1.image | 1 + ...none_faceted_usda-7ad44c4961677420-1.image | 1 + .../subdiv_none_usda-38f763827a18343d-1.image | 1 + .../subdiv_none_usda-aea9b45539bdf216-1.image | 1 + ...div_override_usda-347cb15990d5b2db-1.image | 1 + ...div_override_usda-4180b38ea57c9096-1.image | 1 + ...div_override_usda-633f8e7fec39c727-1.image | 1 + ...bdiv_rest_15_usda-dcdc5eeb73b7d3e8-1.image | 1 + ...ubdiv_rest_8_usda-c9f6f9ef6bd5e50d-1.image | 1 + ...div_rule_all_usda-7c4745bac0fe1ad7-1.image | 1 + ...e_boundaries_usda-3c0d79de547dbc49-1.image | 1 + ..._cornersOnly_usda-3a7940237cbe0a3d-1.image | 1 + ...cornersPlus1_usda-10da8f737cfaea1d-1.image | 1 + ...cornersPlus2_usda-7ab350be92df8201-1.image | 1 + ...iv_rule_none_usda-86622a148177c839-1.image | 1 + ...ubdiv_smooth_usda-ecacf29cbe8c3a69-1.image | 1 + ...div_streamed_usda-6897e2d021bbe857-1.image | 1 + ...v_unauthored_usda-1f8d567cba520aee-1.image | 1 + ...subdiv_uv_fv_usda-5e00e8c1f3e1cc34-1.image | 1 + ...iv_uv_vertex_usda-b6cc7115ae3418dd-1.image | 1 + ...ion_adaptive_usda-4b5883574262488d-1.image | 1 + ...ion_adaptive_usda-8765a889a888ae6b-1.image | 1 + ...ion_adaptive_usda-95a3e0a9db67a1fb-1.image | 1 + ...ion_adaptive_usda-de7625b66c9d664b-1.image | 1 + ...ion_adaptive_usda-de7625b66c9d664b-2.image | 1 + .../subdivision_usda-093423ee46de2ab4-1.image | 1 + .../subdivision_usda-59b7fc0fc3af435b-1.image | 1 + .../subdivision_usda-59b7fc0fc3af435b-2.image | 1 + .../subdivision_usda-c1e09f9374aaab81-1.image | 1 + .../sun_delta_usda-ea8cdfc115606b89-1.image | 1 + .../sun_lux_usda-f3cb39d866e6c449-1.image | 1 + .../sun_narrow_usda-cc46151e1eb78ebf-1.image | 1 + .../sun_nits_usda-8ccba3be0d36785e-1.image | 1 + ...ported_types_usda-5cac3f5a887f68e8-1.image | 1 + .../synonym_a_usda-c8543088a0bca8e3-1.image | 1 + .../synonym_b_usda-5b26c8cc28a6baa8-1.image | 1 + .../textured_usda-addde73d309fca5e-1.image | 1 + .../thin_window_usda-61e111e4ca995610-1.image | 1 + .../thin_window_usda-9e0a6257872a8f5f-1.image | 1 + .../thin_window_usda-da2b075160721507-1.image | 1 + .../thin_window_usda-da2b075160721507-2.image | 1 + .../tiles_usda-63de672cd360cf69-1.image | 1 + ...me_sampled_1_usda-ee3787d0222ab673-1.image | 1 + ...me_sampled_2_usda-4dad1e9703710b97-1.image | 1 + .../time_usda-a4ea088a5cd5b4c7-1.image | 1 + ...ance_default_usda-3a112890c553cc1b-1.image | 1 + ...olerance_nan_usda-22547c2684ba9e8c-1.image | 1 + ...olerance_off_usda-f5f012b4db29329d-1.image | 1 + ...nslate_scale_usda-f3698f1a1411c8b2-1.image | 1 + ...latex_curves_usda-65ef3846123d9b35-1.image | 1 + ...nslatex_disk_usda-9d38522639915278-1.image | 1 + .../tuft_shadow_usda-1baacafb4242e12e-1.image | 1 + .../twice_a_usda-0f943c80bd7e2c65-1.image | 1 + .../twice_b_usda-b96b0ece9c5875aa-1.image | 1 + ...broken_first_usda-3cb7946e1e445b8e-1.image | 1 + ...s_shot_first_usda-a7d808f7cd7c7a83-1.image | 1 + ...o_instancers_usda-287c7bdad0690e3b-1.image | 1 + .../unauthored_usda-1a04ae4ebcf35cb8-1.image | 1 + .../unauthored_usda-9a9d89c801b1b740-1.image | 1 + .../unbindable_usda-a5d47f8d674e7ddd-1.image | 1 + .../unbound_usda-19c17e4f548a50df-1.image | 1 + .../unbound_usda-4ae577ca0b682f0f-1.image | 1 + ...niform_cages_usda-2c90ea028524eadd-1.image | 1 + ...niform_cages_usda-b6490d10d0de391f-1.image | 1 + ...niform_cages_usda-d12f6f58167b27f9-1.image | 1 + ...niform_cages_usda-d982dbb48b0da21b-1.image | 1 + ...iform_colour_usda-6a475987121a1476-1.image | 1 + ...it_tiny_lens_usda-aa2efc45eecd1493-1.image | 1 + .../unit_volume_usda-693980b7090e37bf-1.image | 1 + ...it_zero_lens_usda-d1f56221f44bb692-1.image | 1 + ...t_zero_named_usda-9847ffecfd9df22b-1.image | 1 + ...zero_pinhole_usda-af47867eeabcfd70-1.image | 1 + ...nown_display_usda-e75f3f3b8d756ec8-1.image | 1 + ...known_filter_usda-ed678783aa9ef74d-1.image | 1 + .../unknown_op_usda-954c2bfc62b12357-1.image | 1 + ...unknown_type_usda-d0386e0b10524625-1.image | 1 + .../unnamed_usda-ed6b84994bc45537-1.image | 1 + ...vable_winner_usda-514f97ffe2814294-1.image | 1 + ...in_prototype_usda-d2aca9633823884e-1.image | 1 + ...ted_type_one_usda-61236dabf0bd2054-1.image | 1 + ...ported_types_usda-4026b0fff876b77b-1.image | 1 + .../unsupported_usda-25a7c1709e68a39b-1.image | 1 + ...able_texture_usda-0a21b6baa96879e3-1.image | 1 + .../usdlux_usda-0d6669b552eae2be-1.image | 1 + .../usdlux_usda-39cf98150f7f0d03-1.image | 1 + .../usdlux_usda-39cf98150f7f0d03-2.image | 1 + ...iew_textured_usda-36a3119df926a1de-1.image | 1 + ...iew_textured_usda-7e17862f6c19bca4-1.image | 1 + ...iew_textured_usda-ae16aa06d4e182b3-1.image | 1 + ...iew_textured_usda-ae16aa06d4e182b3-2.image | 1 + .../uv2_usda-a9136787dec77f95-1.image | 1 + ...v_dedup_same_usda-9ef71121455e022c-1.image | 1 + .../uv_dedup_usda-3e327caf2288bcc5-1.image | 1 + ...var_authored_usda-30d82aafae5b77cb-1.image | 1 + .../veach_mis_usda-30c729cf3e421f8c-1.image | 1 + .../veach_mis_usda-30c729cf3e421f8c-2.image | 1 + .../veach_mis_usda-324cce08805da6ff-1.image | 1 + .../veach_mis_usda-3b12df225993b91b-1.image | 1 + .../veach_mis_usda-3b12df225993b91b-2.image | 1 + .../veach_mis_usda-3d8992b3ea4a144d-1.image | 1 + .../veach_mis_usda-3fdc201d13c79fac-1.image | 1 + .../veach_mis_usda-4f2fb0dc74121654-1.image | 1 + .../veach_mis_usda-4f2fb0dc74121654-2.image | 1 + .../veach_mis_usda-4f2fb0dc74121654-3.image | 1 + .../veach_mis_usda-4f2fb0dc74121654-4.image | 1 + .../veach_mis_usda-6dae75008d5ac94f-1.image | 1 + .../veach_mis_usda-6dae75008d5ac94f-2.image | 1 + .../veach_mis_usda-6dae75008d5ac94f-3.image | 1 + .../veach_mis_usda-6dae75008d5ac94f-4.image | 1 + .../veach_mis_usda-70c995e092ab1d61-1.image | 1 + .../veach_mis_usda-70c995e092ab1d61-10.image | 1 + .../veach_mis_usda-70c995e092ab1d61-11.image | 1 + .../veach_mis_usda-70c995e092ab1d61-12.image | 1 + .../veach_mis_usda-70c995e092ab1d61-13.image | 1 + .../veach_mis_usda-70c995e092ab1d61-14.image | 1 + .../veach_mis_usda-70c995e092ab1d61-15.image | 1 + .../veach_mis_usda-70c995e092ab1d61-16.image | 1 + .../veach_mis_usda-70c995e092ab1d61-17.image | 1 + .../veach_mis_usda-70c995e092ab1d61-18.image | 1 + .../veach_mis_usda-70c995e092ab1d61-19.image | 1 + .../veach_mis_usda-70c995e092ab1d61-2.image | 1 + .../veach_mis_usda-70c995e092ab1d61-20.image | 1 + .../veach_mis_usda-70c995e092ab1d61-21.image | 1 + .../veach_mis_usda-70c995e092ab1d61-22.image | 1 + .../veach_mis_usda-70c995e092ab1d61-23.image | 1 + .../veach_mis_usda-70c995e092ab1d61-24.image | 1 + .../veach_mis_usda-70c995e092ab1d61-25.image | 1 + .../veach_mis_usda-70c995e092ab1d61-3.image | 1 + .../veach_mis_usda-70c995e092ab1d61-4.image | 1 + .../veach_mis_usda-70c995e092ab1d61-5.image | 1 + .../veach_mis_usda-70c995e092ab1d61-6.image | 1 + .../veach_mis_usda-70c995e092ab1d61-7.image | 1 + .../veach_mis_usda-70c995e092ab1d61-8.image | 1 + .../veach_mis_usda-70c995e092ab1d61-9.image | 1 + .../veach_mis_usda-7b2ec235dd7d06ba-1.image | 1 + .../veach_mis_usda-8251e3de3f3f6069-1.image | 1 + .../veach_mis_usda-8251e3de3f3f6069-10.image | 1 + .../veach_mis_usda-8251e3de3f3f6069-11.image | 1 + .../veach_mis_usda-8251e3de3f3f6069-2.image | 1 + .../veach_mis_usda-8251e3de3f3f6069-3.image | 1 + .../veach_mis_usda-8251e3de3f3f6069-4.image | 1 + .../veach_mis_usda-8251e3de3f3f6069-5.image | 1 + .../veach_mis_usda-8251e3de3f3f6069-6.image | 1 + .../veach_mis_usda-8251e3de3f3f6069-7.image | 1 + .../veach_mis_usda-8251e3de3f3f6069-8.image | 1 + .../veach_mis_usda-8251e3de3f3f6069-9.image | 1 + .../veach_mis_usda-918cd4cfc31f23ae-1.image | 1 + .../veach_mis_usda-c455222f332b9874-1.image | 1 + .../veach_mis_usda-c455222f332b9874-2.image | 1 + .../veach_mis_usda-c455222f332b9874-3.image | 1 + .../veach_mis_usda-ecedf2e2c801d4c5-1.image | 1 + .../veach_mis_usda-ecedf2e2c801d4c5-2.image | 1 + .../veach_mis_usda-ecedf2e2c801d4c5-3.image | 1 + .../veach_mis_usda-eeb660d07679d619-1.image | 1 + .../veach_mis_usda-f7c825bf3b0bac82-1.image | 1 + .../visibility_usda-0f9ed9fc0b62a02c-1.image | 1 + .../visibility_usda-2bf7c45881effd3f-1.image | 1 + .../visibility_usda-d0c678c9c1d6a069-1.image | 1 + .../visibility_usda-f7d5c6c9644dd6bb-1.image | 1 + ...isible_light_usda-c593161971da5ec4-1.image | 1 + ...in_prototype_usda-d6406b3b1214ee81-1.image | 1 + .../volume_usda-a8034cd85e6f3de3-1.image | 1 + .../volume_usda-bac87085eea27fa2-1.image | 1 + .../volume_usda-dc3452b116e9581a-1.image | 1 + .../wide_ok_usda-07bfe44a3376f28e-1.image | 1 + .../wide_usda-98ba41961b37bb34-1.image | 1 + ...ttom_quarter_usda-3769adf96d53a2f1-1.image | 1 + ...w_boundaries_usda-8ec00fd05808f90e-1.image | 1 + ...ndow_centres_usda-5b25bbbab727a81b-1.image | 1 + ...ndow_default_usda-1d0d1bbb6d0e388d-1.image | 1 + ...window_empty_usda-c239bdc771be269c-1.image | 1 + ...s_unauthored_usda-6f84b7cb89845fa4-1.image | 1 + ...dow_honoured_usda-0e440c93c494db71-1.image | 1 + ..._no_products_usda-9317bad8a6d2e63d-1.image | 1 + ...ow_off_frame_usda-0e5c269b6dd24fb6-1.image | 1 + ...ow_one_pixel_usda-66ddf756a5e443fe-1.image | 1 + ...dow_overscan_usda-c27e01fde4009f5e-1.image | 1 + ...ct_overrides_usda-bb3b29ebf7dd99a8-1.image | 1 + ...ducts_differ_usda-78414609fe85fc23-1.image | 1 + ...w_right_half_usda-c5f5b85f1946cb91-1.image | 1 + ...w_unauthored_usda-5d663894090b1282-1.image | 1 + ...rking_acescg_usda-453466808888f80c-1.image | 1 + ...king_default_usda-5aec729f1efbcf98-1.image | 1 + ...working_host_usda-964cb93fefda7817-1.image | 1 + ...working_srgb_usda-8fdff51064dc58c9-1.image | 1 + .../x_usda-4b3ed4428fa191c7-1.image | 1 + .../x_usda-4f6345f399f0a5af-1.image | 1 + .../x_usda-a701d438407a1ca1-1.image | 1 + .../x_usda-d5611726aa414464-1.image | 1 + crates/crust-render/tests/import_parity.rs | 5 +- .../moho-import/specs/import-parity/spec.md | 8 ++-- openspec/changes/moho-import/tasks.md | 12 +++-- scripts/parity_images.expected | 25 ++++++++++ scripts/parity_images.sh | 47 +++++++++++++++++++ 1729 files changed, 1819 insertions(+), 10 deletions(-) create mode 100644 crates/crust-core/tests/data/import_baselines/PointInstancedMedCity_usd-951317bf2ce0f6ed-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/absorber_usda-e5a517b5b36fd7e1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/adaptive_bounded_usda-871964d811713ece-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/adaptive_unbounded_usda-6ab4975baebe18ef-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/adjust_aperture_height_usda-9d28c7b3a9cad9f9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/adjust_aperture_width_usda-c50e2f84bef7e6b7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/agrees_with_spec_usda-985ed763a0957571-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/anamorphic_usda-c23c78df222208eb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/ancestor_usda-3171d13289efaaff-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/ancestor_usda-74843e3cc431dad3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/animated_no_shutter_usda-dc5451565381429f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/animated_usda-84baf2836991de3b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/animated_usda-e242162a2dbef33a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-0b34d79521209b48-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-5446fd76cda9ed55-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-7b809f697af333f7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-87536adca26db1ce-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-a8098f0bc76c3026-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-beee1323479cf47f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-cca20ab6197e3823-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-cfe8a27d275b06f7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-d9cfa85be82eff7f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/animation_usda-dc0987b1e9c0a44b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/aov_format_usda-3d1985fd48e4fb2d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-4a2c1502ba0a175e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-5ec9a160b78f998f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6a98ab5ed25ffa78-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6d6e4a8f31366652-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-803d9a5b24ae0e42-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-c88cebf77c02e1c8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-96034a4139733157-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_usda-90b4ce2557c1c46e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/aovs_usda-cd31a05d6e49ceda-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/area_lights_usda-07bd34a97e44c0ab-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/area_lights_usda-6989a4d471c724cf-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/area_nothing_usda-bf90dbc7327fa98c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/area_nothing_visible_usda-2f4e016170ad5820-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-3b3a8108b3e9fae9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-41ce6942a2d54582-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-6567e83e5076f9db-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-9934bec515530278-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e4930eb0174b9dd7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e7566c662eda92b2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-ec05a5f1f38841c6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-f9c370778b865b50-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/authored_only_usda-e3c97926a3d11ac4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/backdrop_dome_light_1_usda-bda39b6574f6f444-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/backdrop_streamed_usda-5c630271a8fcfd44-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/backdrop_usda-2757fcfd84c07e64-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/backdrop_usda-3818c88f3ea1e994-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/backdrop_usda-e17ddb582cb97b8c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/backlit_diffuse_usda-3dfba11cda1cd7c6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/backlit_hair_usda-59f16e3a1a4f9b6d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/bad_length_usda-3ab7b93f882199a8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/bad_volume_usda-00cc0d19953cb7f6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/banded_dome_usda-03eaa43cee7b25ab-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/binding_usda-3ec3b212bbee4e90-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/black_usda-ca3475f9863dc283-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/blackbody_acescg_usda-e4fe8984977e4dc5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/blur_default_usda-d0c5474e0dfbe769-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/blur_false_usda-8f6712fd58e3e7dd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/blur_product_inherits_synonym_usda-8cbc9a895bc4da45-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/blur_product_off_usda-ad5ae20ae0e9dd8e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/blur_product_on_usda-9e081a22d073a61a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/blur_products_differ_usda-97d616ea3858dc6c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/blur_settings_only_usda-57bf8b1f820d60e9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/blur_synonym_usda-5c4201bf40a84766-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/blur_warnings_usda-560d69942e1e7771-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/blurred_usda-152a0fdff5c8c9a3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/both_usda-4af15817dabdb39f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/boundary_usda-85fcb2406c56d725-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/broken_materials_usda-040c16d0365cbc63-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/broken_mesh_usda-217190c267ddf4a1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cage_three_usda-65204db7a7ccaed8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/cam_narrow_usda-dcae36868790f279-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cam_none_usda-1ef9fbd129b9560a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cam_none_usda-2cb27e460ee10e43-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cam_wide_usda-098c8afc4872dbb7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/camera_dof_usda-f69bc93db8900a0e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/camera_ortho_usda-21d5879ec7de6dbf-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/camera_projection_unknown_usda-8a8cac00719054ad-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/camera_rot_usda-c74e88c7205b56e5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/camera_usda-2d8f34945903545d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/camera_visibility_usda-0af373522188190d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/camera_visibility_usda-5198be21d5bb35d1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/camera_zero_focus_usda-ad065540da61feb4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/capped_usda-de82c45ab5a80eb6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/centred_both_usda-06ae7e6ad41f5b45-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/centred_frame_usda-200d23d9927b7966-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/centred_open_usda-75e668aa9e5ecb2d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/chart_interp_constant_0_usda-16acce3a8ae23e69-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/chart_interp_constant_2_usda-51380ed7a7ea4305-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_0_usda-a6d6a93dda32caf2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_2_usda-bad2637a6a91c73a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/chart_interp_uniform_0_usda-ffe6596ba2b6a108-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/chart_interp_uniform_2_usda-815f4bb2830bedd0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_0_usda-a6e2151559aa05f1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_2_usda-49181df1e2a2d359-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/clean_usda-d4e60f418d0e5485-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/clear_usda-487518c3a2bde507-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/closest_usda-b1b06704b4564b8c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/color_space_api_usda-7258fb7a16ddde2f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/color_temperature_off_usda-d2963845fd5e72c4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/color_temperature_usda-a7d9f5fccba89fff-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/compensation_alias_usda-ea168514e7b00460-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/compensation_off_usda-37a366efa8d50980-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/constant_cage_usda-6838009dc4d51123-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/constant_none_off_usda-4da7234b198fc34c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/constant_none_usda-3f38201b0c964211-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/convolve_usda-ae27710a0c217615-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/copper_usda-856b7fd7384c75f6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-1f6a1535ca10a892-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-dddcb8fd2ce59c1f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-937b5a30e0d1b2a9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-a0bb21684d68d231-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-f5ac4ca7187d0afa-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-021e0477d02e8b56-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-08de1880a086a764-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-15e73f9974620a1a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-16d2af5b91e595bd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-1aeeae0fba6dbe97-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-248f67f6240f7680-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-254e9b608e6c20f0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-265ef4c54c4d2534-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2711a47b10d83a96-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-4.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-5.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-6.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2cf51e7bf43f4fa8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a12e7835578a84e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a2af9f3e570b458-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c316a1edd099ef0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c74fafa1c66c123-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-3cac72b0550f05b3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-450b164daa4e0f80-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-48a104b8a2799466-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-518e1fd5063f7227-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-10.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-11.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-12.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-13.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-14.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-15.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-16.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-17.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-18.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-19.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-20.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-21.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-22.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-23.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-24.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-25.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-4.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-5.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-6.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-7.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-8.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-9.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-5d064faa753e9d7b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-5e1b400d2f0d70bc-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-5ff835103ecfad3e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-61a13a775605a0ce-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-61e87f520a6a2dff-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-63b1f6980e443f71-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-67753350f4f997a4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-67d6afd449214b25-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-7300aa94ecae6c37-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-7478515f32354718-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-7ba56e4f79d4195f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-7e55fcb3620f4663-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-7f63dd70a33e2183-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-4.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-88df24aa0618a335-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-88e25ed80282bc79-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-88eeabb6ac92eef4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-89c626c1e078ca38-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-8e692f67a3c276f4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-8ecb1db3e29a9e13-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-93e84687c267227a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9514c8683d2c9e4d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-96761b8033e5fb3c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-987ee05acd715dfa-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-99aef82ca410b677-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9a0515f0d918dd40-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-10.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-100.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-101.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-102.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-103.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-104.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-105.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-106.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-107.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-108.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-109.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-11.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-110.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-111.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-112.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-113.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-114.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-115.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-116.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-117.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-118.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-119.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-12.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-120.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-121.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-122.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-123.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-124.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-125.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-126.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-127.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-128.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-129.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-13.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-130.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-131.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-132.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-133.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-134.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-135.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-136.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-137.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-138.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-139.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-14.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-140.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-141.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-142.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-143.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-144.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-145.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-146.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-147.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-148.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-149.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-15.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-150.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-151.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-152.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-153.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-154.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-155.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-156.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-157.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-158.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-159.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-16.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-160.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-161.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-162.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-163.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-164.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-165.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-166.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-167.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-168.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-169.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-17.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-170.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-171.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-172.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-173.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-174.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-175.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-176.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-177.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-178.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-179.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-18.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-180.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-181.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-182.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-183.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-184.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-185.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-186.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-187.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-188.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-189.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-19.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-190.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-191.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-192.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-20.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-21.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-22.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-23.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-24.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-25.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-26.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-27.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-28.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-29.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-30.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-31.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-32.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-33.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-34.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-35.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-36.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-37.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-38.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-39.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-4.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-40.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-41.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-42.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-43.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-44.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-45.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-46.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-47.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-48.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-49.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-5.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-50.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-51.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-52.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-53.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-54.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-55.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-56.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-57.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-58.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-59.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-6.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-60.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-61.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-62.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-63.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-64.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-65.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-66.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-67.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-68.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-69.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-7.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-70.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-71.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-72.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-73.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-74.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-75.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-76.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-77.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-78.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-79.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-8.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-80.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-81.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-82.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-83.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-84.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-85.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-86.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-87.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-88.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-89.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-9.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-90.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-91.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-92.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-93.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-94.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-95.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-96.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-97.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-98.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-99.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-a06c636245c00028-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-4.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-5.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-6.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-a1b6b7b33175c629-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-a6c99e7589fd5bbe-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-4.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-b194c866668b8c75-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-b32b870ba5ca59f9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-b3d2bc2ed9037c82-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-b62de59b31ca0e80-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-b6c7e44d8560abd5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-4.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-5.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-be34c0d526943796-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-cb7b0dee2139a326-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-cdab40c0e9cba23f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-cf47b345f0453895-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-d3d144cf7b8b758b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-da1f2707813489ef-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-4.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-ec6907d7b5edc24c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-ed05b9821202ec22-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-efc8f2e410ea1edf-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0235d211948c8ae-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0d9751b5af0e124-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-4.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f52f4933a61a7b17-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f72ab0ee474423bf-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-4.image create mode 100644 crates/crust-core/tests/data/import_baselines/cornellbox_usda-fc498f82a9cb979f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/counters_usda-4398822590228cb6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/curves_usda-49b1041fa43b5df8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/curves_usda-6c82e9cb233e7c1e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/curves_usda-bf538717464b4055-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/curves_usda-e59f2a157a03b823-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cycle_usda-6c5127dceb205457-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cyl_far_usda-14bf93b40e3110ed-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cyl_near_usda-8880b5f4401667ce-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cyl_proto_nested_usda-337785a80bd25b4b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cyl_proto_once_usda-5861fac834a9592e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cyl_proto_twice_usda-9d0b4387b8ae21e9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cyl_unnamed_usda-6b8943ce79ec798b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/cylinder_light_usda-a8869b560165f646-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dangling_usda-33cdcee1c03a3f62-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/default_links_usda-fa4bfc17658672ca-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/degenerate_lights_usda-c119df2817a52e22-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_alone_ref_usda-ad2f6d6f9f5a6b34-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_alone_usda-d2a904287b895157-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_near_usda-2b8cc53942e05573-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_nothing_usda-02863a7cb9ea2edb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_product_diced_usda-bde5502fcf67625f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_product_ref_cam_usda-206ed631706e669f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_product_ref_near_usda-a7f21d55b08b22eb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_product_usda-0fe0e77ccc289c1f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_property_usda-541c1a7591a9b5c0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_ref_usda-450597df8121a96c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_self_usda-9d54e5a1b138ff5e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_through_near_usda-43e145636209967d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_unauthored_usda-d941af55d3f95425-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_unnamed_usda-1911d7362c693947-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dicing_xform_usda-fdb39a50b9314e69-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/disabled_broken_usda-3e31009d90ef26ec-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/disk_light_usda-720389dc27e2a4c4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/displaced_rest_usda-d70fe6fb257dd183-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/displacement_usda-03e54e80075ba30c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/displacement_usda-180936ed9cbacb0b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/displacement_usda-4db664e792f21a27-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/displacement_usda-5e2aa9f4f1dfd37e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/dof_default_lens_usda-c199c396bb781cc0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dof_default_usda-57e78e0586982b2f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dof_disabled_bad_unit_usda-b76c543fc6398eaa-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dof_disabled_usda-420b407ea5317d3e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dof_fallback_lens_usda-bff40e44436746b1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dof_fallback_pinhole_usda-c69160a93b244f8f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dof_product_off_usda-ec7655fdc64080b7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dof_product_on_usda-642bf95d97820f23-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dof_product_on_usda-9b87c5f936703494-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dof_products_differ_usda-a379642f2edc4361-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dof_products_disagree_usda-8e35ec3ea864f596-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dof_settings_only_usda-dc3a7d2e89c34444-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-06f3801d332f35bd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-2d5a500fad6dcfad-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-4222ab94f00b4ba4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-43c08f98bb3b74e6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-7b71c02186033a9a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-88f2729f3b3188bb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-9d834df56ca3b1ac-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-af5d67f7909dc65a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b592bc76e2706492-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b9dc71e44c528187-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_camera_off_usda-b5a9eac417c3bdbb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_crust_wins_usda-0bfe2eb5bc4f83c5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_default_usda-7c13b46b00b734f8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_exclude_bsdf_usda-fb9c2dcc2b05783e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_exclude_power_usda-a488dc90e33bf33b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_0_pole_scene_z_up_usda-4a3a839d045f42ae-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_0_reference_usda-e3c0f10234d60e6f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_1_pole_y_usda-b39274d8389c93ec-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_1_pole_z_usda-3ab2d43568c3a9ca-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_1_rotated_usda-96a7a52ba96f792f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_1_scene_no_up_usda-db7f3549433e3ca1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_1_scene_y_up_usda-cef3793797de068b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_1_usda-771e6d7e193401ac-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_1_z_up_usda-d2385f77c8ec6eb4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_light_usda-f46a39c15abcc98f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_no_assets_usda-b8800e7204db6d4a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_power_usda-abfbd64e964dc44d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/dome_ri_camera_usda-acf95ad397fe1930-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/domelight_usda-22dcdc7630c52071-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/domelight_usda-5a2a25c11957ed70-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/domelight_usda-5d8f200125b9fd09-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/domelight_usda-7f00a6c7fd4959fa-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/drop_usda-214f7b543bee6df1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/drop_usda-4c62c449da4ae2d3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edge_false_usda-dfb19c6c90615a56-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edge_true_usda-bddf6fe338522a86-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edges_usda-9743a0d0ff86dafe-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-077b57f7b0804f19-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-085dfd17ac95282d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-188f318a9146ce97-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-1966e17597c3de42-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-19a787b3bcc74617-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-23003ea81a2d2024-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-23fb1cff1e547a51-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-24cc8ef3649b336a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-30c8f1f2b1117913-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-339a76e50715bbe3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-3450a9d6105e89a6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-411d0a61690b9e71-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-43a14b5e78154dda-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-483e16501c86632a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-4966b50c696e8080-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-4cf921963a4325e9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-4d3c65f04d4eaea9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-4dd694c9b20daa77-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-516372ff4968411b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-53a62fecc28e0de7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-5521dd197a77f33e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-57fa1e33af4efac6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-5f2834619e774ab4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-6019827f6d635824-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-65b79e09c14be76d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-662e56b1a93d2d66-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-6deff31ef60f6033-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-7239cb83230ea59e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-786eedaaaa2108bd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-939ae62aa1013f1f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-9785472850c84b20-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-9f3ec2b0f2000d47-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-a15a160797d16740-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-a15f50a6d270c4d6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-a2d6c26d716466c1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-a693bfb772c311e2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-a9ea182c81eccd64-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-aafb5513a53fa62e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-b0da370b544b77b5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-b14405d5563d3059-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-b271371e2517722b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-b80eb10c2ba34178-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-b8d0f20bfaa82329-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-c0b43128dd170a60-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-c1012e35073052d4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-c5e06d108f13878a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-c6a1743cb004bfc8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-cfa1cdf26c62d04e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-d51c63f9aa3e9706-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-d6c1dd24567db6e1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-dcd2a1d09ecabfda-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-e3a820d4d01acabc-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-ea33d0579957ea29-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-ec4aae2ab8a0f13f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-efadd5d5ae9b33c8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-f437292a1baf4562-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-f7edbb7e619c3f5d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/edits_usda-fdfde88486c6dc74-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/empty_source_name_usda-acd517e82c0f53e1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/empty_usda-c1bba32cb87c83e9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/exposure_0_usda-c142af23c7dc6585-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/exposure_2_usda-1ae682494eb4e641-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/exposure_usda-0139c7326dc66b4b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/expression_usda-843ebd908965795b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/expression_usda-e90ffc3af7a5e58d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fallback_usda-0dcbe995ba9d33f5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fallbacks_usda-19de7bd844b31582-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/far_light_blocked_usda-ad271da815e04f1e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/far_light_clear_usda-4072c77a8d9198cd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/far_light_dimmed_usda-8a326222fcc01e51-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/filters_usda-c37f75b53580c4aa-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/five_usda-1346633108536d3b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/five_usda-98f6c3806296ddf6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_a_usda-c25ea86ab9b74771-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_b_usda-d165df586bcbb934-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_bsdf_usda-240806b5ed98a443-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_excluded_bsdf_usda-9ebfc40e02ef831f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_excluded_power_usda-a0c514c4c53c3bc4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_light_usda-ac22cdb8dae42d75-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_lit_bsdf_usda-4f776a8e8b44bb17-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_lit_power_usda-cbade45198a3c38a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_power_usda-c8d64f5dff77f2e7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-219213dd24619244-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-509c893b29b09cb4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-54b48891484e98a0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-643d53c126eee84d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-4.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-5.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_usda-c4be6859ecb41784-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fog_wall_usda-d41794b69bda1696-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/foreign_mtlx_usda-1e9da30a7325ba81-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fov_cm_usda-aeeac260878050ff-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fov_m_usda-b134eebe4c048026-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/frustum_usda-78a6eed72a138fc6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_a_light_s_shape_usda-ca8302fa13315ae0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_a_transform_usda-b99d3970dc3191b0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_adaptive_diced_rotate_usda-e8c2998b278e7b4c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_adaptive_diced_translate_usda-0b0bd3f1a63779cf-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_adaptive_exposure_usda-6a1bc74cbd2099fa-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_adaptive_undo_exposure_usda-8cd035220544928f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_base_colour_usda-185573627cdcf2a6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_carried_fog_usda-b5397418f77073c1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_changed_on_disk_usda-0c8b6f9bfb68059a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_cornellbox_rotate_usda-76b2e5fb271f6c0c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_cornellbox_translate_usda-ab7177593fd6f36b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_demoted_K1_usda-e328a49ee95fd405-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_demoted_K4_usda-d0354a764756e3b4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field__bad_unit_usda-bf5aa1ce7a54f9e2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field_usda-61f50bc7be824751-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_dome_hidden_rotate_usda-82abbe3ed6112a4c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_dome_hidden_translate_usda-a8196d9e2f17ecbf-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_dome_texture_usda-c3e04747e405ac6e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_drop_usda-a61417609925c673-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_exposure_usda-fe83c794ae61f2a2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_fixed_usda-adb1781d64f694c8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_groom_base_colour_usda-dd47b7dff78ee58e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_groom_primvar_undone_usda-318d40a5ee9b02d7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_groom_reads_its_primvar_usda-98bf5373a7d5697f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_linked_Fill_usda-cb706e1f9f991794-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_linked_Key_usda-db486cee2438fb3b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_linked_Rim_usda-2874a091d25b590b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_linked_undo_Fill_usda-a93137db50fd28c8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_linked_undo_Key_usda-1239d0ab4241ef3f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_linked_undo_Rim_usda-03ca7b9265c405f0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_max_depth_usda-1164faed927e051e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_meshes_rotate_usda-402e98fde9a693c4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_meshes_translate_usda-ee4192f2a802af39-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_move_the_new_camera_usda-73f0dca6c14ef5d7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_on_screen_diced_rotate_usda-d7adb4497350da61-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_on_screen_diced_translate_usda-6bfd0fb9adcbe164-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_on_screen_exposure_usda-b0790c819b4e0d97-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_on_screen_undo_exposure_usda-c40080b74d3fb5a6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_payload_rewritten_usda-03a6e3d1a01a5551-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_payload_roughness_usda-498bc078c77be0a5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_payload_undo_roughness_usda-7143361153e7f548-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_products_with_Pref_undone_usda-774a34f5226e3639-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_products_with_Pref_usda-8674ccd68263fd36-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_re_exported_usda-39edd0f167e79907-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_rect_light_usda-efc21afcf05d7959-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_reloaded_usda-5a765fd50dde24be-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_reset_the_camera_s_transform_stack_usda-38a53b23a8f224c2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_retarget_a_diced_adaptive_scene_usda-bde6533023d6ccd8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_retarget_an_adaptive_scene_usda-721dc26887b364a7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_retarget_the_product_camera_usda-0a3badd9a91b1027-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_retarget_the_settings_camera_usda-2b1ab3b4034d45bb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_retarget_to_a_carrying_camera_usda-56381435fa6b51f5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_roughness_usda-a1ffe89d435678bc-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_sampler_usda-27ca674891cf7c52-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_scatter_usda-80ff37fcf1ff9f3c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_shared_shader_usda-bcebf475c7d9ca1f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_sharp_at_the_frame_usda-06436b4d06eb2f5f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_shutter_close_usda-ce0b12427cfd435b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_shutter_exposure_usda-36da172692d8936a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_sublayer_rewritten_usda-2e79c887f2d55e88-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_texture_file_usda-1fd2cfaf6e5de06c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_a_light_s_shape_usda-f05814080b96dca5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_a_transform_usda-d26b3a02a093ce4f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_base_colour_usda-d814da72eab3f116-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field__bad_unit_usda-6419381399744bc7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field_usda-3ef9a9cb1855677e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_dome_texture_usda-a17c02c0536bdc00-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_exposure_usda-c9169e83397e3561-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_max_depth_usda-a8a78eb6299a327a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_rect_light_usda-2d6a907009434890-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_roughness_usda-62c5e0d0879e604d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_sampler_usda-0d28664679d41bef-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_shutter_close_usda-f7c724218b21e98a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_texture_file_usda-d5aef4a622503f01-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_the_product_retarget_usda-1e1edebd41fde9bc-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_the_reset_usda-7e7c9dbebb517c2f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_undo_the_rotate_usda-c1aa90b58073a573-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/full_undone_after_reload_usda-b19199733b99fec2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/furnace_ball_usda-54ac5243ee332532-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/furnace_usda-bbc6fe1cb946780f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fvar_bilinear_usda-8ca893f677c91586-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/fvar_loop_usda-855199bacac38db5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/geometry_usda-3299cf85fca858a4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glass_usda-6ef57f18257a3d7a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_1_usda-8cc43a3f4dae46fb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_2_usda-ff99772c18e0997c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_3_usda-8c8e2079502f800d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_4_usda-76914e768885b3e6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_1_usda-7fde13de0abc769b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_2_usda-58c418a757f93b46-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_3_usda-0e4d0c5d73f098b1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_4_usda-db6287c220d2329c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_1_usda-da25e07b06740551-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_2_usda-ddbe5a176c05cba2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_3_usda-06ab9cf1d9f5303b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_4_usda-bae142df171828c4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_1_usda-8463e7fa7c167c7f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_2_usda-dcf0f8d60a6084ce-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_3_usda-fedffe90ed130071-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_4_usda-654bf9f6d4073ca8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_1_usda-5434dbae8c19939f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_2_usda-bb9d9ab32ead4e0e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_3_usda-edc5ae56976f1ff1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_4_usda-b2e4ed7db6e6d9c8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_1_usda-03a3c8316f39e87b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_2_usda-33306f5e5e7489a0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_3_usda-d3cf26f624795805-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_4_usda-bc3c2cc49389e192-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_1_usda-c5cb6d9f35a09a41-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_2_usda-4db04417a2f553bc-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_3_usda-8962360ec726337b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_4_usda-704837282362091e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_1_usda-b16be3e51935cdad-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_2_usda-9bd601062d2922a2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_3_usda-af38f2deac1db5db-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_4_usda-e07f6fc2b4bb4c68-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_var_light_1_usda-950756ddd9a80314-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_var_light_2_usda-6aede4cf281248af-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_var_power_1_usda-712adb9891f33818-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/glossy_var_power_2_usda-ccbbda539b6109ff-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/hair_usda-65dd84de0e473f00-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/hair_variation_usda-4ab3c7f511466a98-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/hair_variation_usda-aa2b773ff3d2e5c2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/hidden_source_classes_usda-a9259268854e750e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/hidden_usda-9a2924a818f3fb98-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/hidden_zero_scale_usda-a4193f9a6324f7d0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/high_bits_usda-276acbda2859c899-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/holdout_usda-fcfa139ef12785fd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/houdini_var_usda-c716d987aba001e4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/huge_blur_usda-2cc6d64af71f20b3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/huge_kernel_usda-a515683f6e1b404a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/ies_light_usda-9afaa60e27f14926-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/ignored_curves_usda-d8234281140f3b7d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/ignored_light_usda-26909110fbe92be4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/ignored_prototype_usda-f94b3942ea16e527-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/ignored_volume_usda-32845f161c65c4a9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_Capsule_1_usda-751cd07d979a4d81-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_Capsule_usda-3ad3fb7cdd9a1902-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_Cone_usda-024380e72d6d34a7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_Cube_usda-4bb89de99da949b6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_Cylinder_1_usda-9964aa85919856f9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_Cylinder_usda-bee0e5841f0acf39-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_Plane_usda-77823213740cc6c2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_displaced_usda-395a4477685bb193-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_level_usda-e441bb0a849304c5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_lone_usda-8c73fbc5c6234554-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_moving_usda-2b9c98847f8ffdc5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_prototypes_usda-754c2247d4091e78-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_scaled_usda-5918722b7152b9f3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_shading_usda-b3809be67678f20f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-30852d50af72eb96-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-41169aa3c303f69f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/implicit_twins_usda-925c195d8a7f5a5c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/import_plain_usda-37ba4c8eb30aefb6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/import_usda-a114cca514b1e2e9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/imported_motion_usda-98baf8cfec165d96-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/inf_light_usda-fd28273b2a9da24d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/infinite_usda-6e15312bf55ca148-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/inherits_usda-946600d02d8755e0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/input_usda-39af7a7dd8ccc053-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instanced_curves_usda-4486def29adfc50e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instancer_primvar_usda-6d97a3b7a8db1d2d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instancer_proto_root_reset_child_usda-327d10b931ee4635-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instancer_proto_root_xform_usda-824b2432496695f2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instancer_usda-24b4955bd587b7fc-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instancer_usda-b5460e79ed990f95-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instancer_usda-c51fcdc4de98cc87-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instances_usda-0e86a3f92c8bc5d3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instances_usda-dd5f31a7c4515489-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-046f52337fabb1a4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-1b870942bf28e01d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-37ed91a3e61701fe-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-4c123aa1f400f41f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-4d15fe3f4f1fa7d2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-5aa111b242f25730-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-bee611607d893be7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-c51a6942a8212cb9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instantaneous_usda-3e155a939a6cc6cd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/int_id_usda-520c4dc179153d4f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/invalid_light_sizes_usda-9c386d5a319bfe23-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/invalid_usda-d575a3c70872d8d6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/invariant_0_05_usda-adfdce9489c2fe04-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/invariant_0_usda-4ea5be31deb326f6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/leaf_usda-c026046b07c5fbb8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/leaf_usda-d886c4e05035aaa7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/leaf_usda-e14e254e24f8bc2e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/left_handed_baked_usda-9363c3fa472cdcde-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/left_handed_instanced_usda-f9d8d0fbabf00605-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/left_handed_mirrored_usda-b73e3433c9e6bccf-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/left_handed_subdivided_usda-bd37842befe48e18-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/left_handed_tri_usda-ba795e2eb1c56aef-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lens_cm_usda-73dbd961c243712e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lens_fstop_usda-da4d1cf71564d625-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lens_m_usda-983a5a6e5f39e694-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lens_unauthored_usda-24a6800a9f22c131-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/level_two_usda-9004a66abae4e107-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/light_linking_usda-0df578a9208fb7cf-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/light_linking_usda-84012730e231d407-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/light_linking_usda-a83ba5cc073d5f22-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/light_samples_default_usda-6242aa388fa102a1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/light_samples_huge_usda-128d1881332e6fff-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/light_samples_zero_usda-516355bd0568c89e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/light_visibility_usda-2b8ba6eb3030d1ec-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/light_visibility_usda-3ea0aa2435326544-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/linked_bsdf_1024_usda-00c8472dfa9bd263-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/linked_bsdf_16_usda-f488614962bd77c6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/linked_light_1024_usda-42bcc0ce33e153f3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/linked_light_16_usda-94637210b45ab59a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/linked_power_16_usda-eebb6febe29b133c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/listing_usda-3efcced39a72eaa9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/listing_usda-488ac4c542f2b8d8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/listing_usda-f960655cad0d43f4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/listing_usda-fd4c266bcdd26a9c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_cube_usda-4cf5f22f20fef745-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_cylinder_unnamed_usda-7b7e7a1709504194-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_cylinder_usda-07218dcdd495ca91-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_dicing_none_usda-fde7cae55b0adc90-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_dicing_retarget_usda-682d6c0fca1a4c12-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_dicing_usda-8bb261767fad5d1d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_dicing_usda-c3c9ffc84677f809-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_framing_adaptive_usda-264a6722f87e2488-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_framing_usda-21ec0fb4edc0e3e0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_primvar_warnings_usda-bb9c911d0ed38f94-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-59fb6cd49cb76e6b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-f4742b8648291059-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_adaptive_usda-df276969e17c075b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-68dfaa2802aa4ba4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-91fe8df867e8f0cc-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_empty_usda-6f96b70b05bd5238-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_rig_usda-c517fabd0cfe3025-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_slow_usda-abb2313197b2f2f6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_unnamed_usda-11fb9c8dd8a6685f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_usda-443a3934a068f8e2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-4.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/live_usda-b329c13621e10111-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-168fe99d44c7fbd8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-2df588e196076e2d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-37661541bc721de0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-451cadfaa7f8e528-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-4e0b53f3e573c0d5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-619dbb27dff03edb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-6332af41b2f94037-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-66e64ab7da1be7a8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-675a4c56d7da2e1a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-6a91390c6e2e8f32-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-75d1c7f90fc366b6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-7ce0ae0f49d396d8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-7ed4ae42b2f80bd6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-83b2bc40e66e8d90-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-84687138ca39f6d2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-889e2ebeaf6f6f43-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-8e1d5d176c63c934-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-96a10d1a1b799db6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-96b32b9e68a1ec9a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-9b73e2f3385f85a2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-a96810dec00d46d8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-ad6a0ecf2cf3c658-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-b139810cbe0eac4c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-b1d2ea509cf7ee23-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-b23ccdb4706d3d98-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-bdef936e454d02c5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-c088c49aaf559905-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-c8874f17309d40f1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-cab3bf60bc31d2f7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-cae9785463ecddf6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-d07bf630611d13b0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-d977f122a6f754f5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-da5095c5387fc6d5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-ddd9a472681fe394-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-e6376a73c80d838f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-f0ebb00d074c9c96-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-f4c4e13661091485-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-fa7c6612a51b87e4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lookdev_usda-fad17720e6382b8f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/loop_plain_usda-47275a5a5923eb53-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/loop_ptex_usda-305da98d6891c0e8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lpe_too_complex_usda-d110af4b6d4f2169-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lpe_variance_usda-eb6b4998eed83db2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/lpe_vars_usda-4a1166013a93c744-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/malformed_usda-6eca12ea39b96a60-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/many_lights_usda-2896f3594596fed9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/marks_usda-92136ff2d6b2d34c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/masks_usda-0b1d6cd46ef5aa7b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/mass_spike_usda-dee5e21f531bb6c7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_basic_usda-47f44502b8b66093-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_basic_usda-5e3c6402db738e98-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_basic_usda-605f278bcaf83bcb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_basic_usda-7efe0aff05c6d47a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_basic_usda-ee87ad7ab34333f5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-ae65df7de0c507fa-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-3c55abed0c2329af-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-746e6884e4aa1a13-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-8dd82f7591e605f2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_lion_usda-a62e7b45a5b76dea-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-1e9e0f7089dbbfd5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-218ab79fb5de55b5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-ca1ad78e541d4d41-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-6ea1bea03dbe6c0d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_volume_usda-0d615ee9e93f873e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_volume_usda-dbd96c41f0cfcd9f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/matrix_usda-9dd65c424c31f5e5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/matte_dome_usda-942a3b1e6f8ce42b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/matte_dome_usda-e3baadd4a9e3ffb7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/max_depth_negative_usda-eec4c585057974f1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/max_depth_one_usda-0b2d301b9905817a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/max_depth_zero_usda-931745fbe0c2c985-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/membership_usda-e44fc1429c4b92d1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/mesh_blurred_usda-13d48869156e4433-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/mesh_both_usda-90fff2587206dcbe-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/mesh_sharp_usda-98679e56cacbfa24-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/mesh_track_usda-2da67447ace68ea3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/metal_0_1_power_1_usda-d5e924c1e43088a2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/metal_1_0_power_1_usda-0a224c171445c02a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/metal_1_1_power_1_usda-3e1ca1268dde29a1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/mirror_usda-e5687a44290234b9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/mismatch_same_usda-36f547d4088a73c8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/mismatch_usda-4938acb7109c81b3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/mismatch_usda-e42c92f5d05f1fcf-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/missing_usda-048983dc2b7e8f66-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/mixed_hair_ref_usda-1bf6615be167a70b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/mixed_hair_usda-e643846eb6c6d950-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/motionblur_usda-2ad099074d244fc2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/motionblur_usda-ff0d49c1a505d497-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_aliases_usda-8852d8dcf38ecf0d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_blurred_usda-6d69c20d22e19877-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_types_usda-d2a10e1c91de57de-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_usda-0097c4dc99684b31-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_usda-2921a3a583a7af01-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_usda-43ed7e424bbaa4f7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_usda-6dec65e3aa55dc9d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/motionvector_usda-c5f34f1e623349ba-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/multiply_usda-8736676f00161943-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/named_chart_usda-67761c5ec52139aa-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/named_usda-455967a7b376e998-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/named_usda-caf35125dfbdc7e1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/named_usda-d1e9bde789e7233a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nan_shaping_usda-9e699df2d0518cc0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/native_usda-48df729899939992-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/native_usda-aa00109a0de726bd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/near_far_usda-378c724af4dad1fb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nearest_usda-01bca6fa7666b1f3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nearest_usda-6471e7e6d484d155-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/negative_min_spp_usda-f445ea0383fc1875-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nested_direct_usda-e25d7da2b966c023-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nested_hidden_usda-0ea71f61bc0a58d6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancer_proto_root_xform_usda-95a505e1fa209779-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancing_usda-39f09e1523375345-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancing_usda-915b43a7369963b2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancing_usda-df6640aca1d2b235-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancing_usda-e37604ffa926df8a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fda6a6f1c2f5b28e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fff87a8b52b8e069-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-c0a020bf777d3f88-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nested_one_usda-bc56793ff0720fdc-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nested_scatter_usda-4724aa4d383273d2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nested_translate_usda-31c01e41ce7e4eb3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nested_two_usda-0fad6a8ff7f8520a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nested_usda-dbe832b66063cf24-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/neural_usda-57a514ca820ab02c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/ngon_usda-573da62ad402526c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nine_uniform_lights_usda-181564afd75bc784-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/no_camera_usda-08eaf78e1847bdbe-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/no_camera_usda-2a7bfc7853b270c5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/no_camera_usda-5507d24332d7f188-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/no_camera_usda-758b683c20791ceb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/no_camera_usda-ac160dc389201eeb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/no_camera_usda-af24412e492e9147-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/no_camera_usda-f2e322198f5a52d6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/no_frame_usda-06c9736b1ee41555-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/no_kernel_usda-250e185a51aff6c5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/no_products_usda-b2f39aa3f795faa2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/no_var_authored_usda-7c630c4e6b264297-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/no_var_bare_usda-0f6834e5d7411efd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/non_finite_usda-b38223b4cd532638-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/none_usda-3500dce365c976fb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/none_usda-8ca1039ef6a1af13-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/none_usda-b2626a5c29f30d06-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/norm_off_cylinder_usda-cad3a8a0bec58113-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/norm_off_disk_usda-d4ac49b171982a5d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/norm_off_rect_usda-7ca0616652c56bb1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/norm_off_sphere_usda-0abd6bba11da485f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/norm_on_cylinder_usda-f3dd54fd2e0d1929-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/norm_on_disk_usda-80da988892a29bff-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/norm_on_rect_usda-0fb0cae5dd5fa17f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/norm_on_sphere_usda-a4e34a4e4682e3b5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/normals_usda-eb98f1adc17331b3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nothing_usda-05a76e84b550abac-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nurbs_clean_usda-362cea70cf67e6cc-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nurbs_empty_usda-af6c06cf5e078823-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nurbs_full_usda-ee811943aa635f36-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nurbs_half_usda-26730abe8461e1ee-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nurbs_malformed_usda-edaffca17525a0db-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nurbs_refused_usda-2cd12f986b06b3a5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/on_camera_usda-0e1653405c0b04b8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/once_direct_usda-87536582b2725522-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/once_instanced_usda-cfe757ff670cf1a4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/opacity_usda-18ffcc13eb92677a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-0f7c1eaf15ef6726-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-501b45e8f6131d21-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/openpbr_usda-876563da4aa0a57a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/other_lookdev_usda-31ecdc884f3fb603-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/other_op_usda-7a2444b60f22a636-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/overflow_usda-c7dbcb2b55d9a450-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/override_usda-b67a66c0201ba59a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/overrides_usda-e08388bc2f33304d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/partial_link_usda-0b6b5eacc86557dc-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/pass_payload_usda-08d0e4051511c08a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-0b80861de0309489-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-bdae79d96585e6fd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-c05e0c1783414e94-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-e9d62fba57fc58f7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/passes_usda-562a5b3a04949a47-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/passes_usda-aaa6ef1b16e7d6b6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/payload_camera_usda-ff33ccc1b50862a6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/payload_links_usda-f941f0e5247354e6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/photometric_usda-644b1d1ebbe4cb72-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/pinhole_unauthored_usda-ecde60dead7180c2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/pinhole_zero_usda-9f676d1852dc7168-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/pivot_stack_usda-eabcdb11552ea0a9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/pixel_filter_usda-c618794e70f5ffe3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/place_once_usda-66a0c16b42b4539e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/place_twice_usda-c4ce4deb59d3727f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-000d21c7a8ef61e5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-0ba3af4ffa595294-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-503a8ea6d52670c0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-63f0ce074fafa44d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-6fa96be933bc04d8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-7ad6f5aa95ba8499-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-85cdaaa611ddcfb8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-94944664ab7e307d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-97fbc0f3fbe2c018-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-b9e166293d4eb014-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-c316df83883a2080-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-d17077acbffaca45-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-d4ecee5c0312cf96-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-dc7b9c4f6886cafa-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/placed_usda-f5c13f6f8bb66ab5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/placements_usda-275bfd0cb4688e5d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plane_usda-e5035e45dccaf24c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/planes_usda-b941e449ca4a031a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_1_bsdf_1_usda-bd800d4fcb330be2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_1_light_1_usda-a03210c9831fba26-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_1_power_1_usda-482542fae980bf52-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-36e5cb22b2676a41-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-d38160b2be22e70c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_2_usda-78a7411a4858bc6b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_3_usda-f81a4b161903a8f2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_4_usda-87a5b5e826a38a61-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-135d2f963daf2551-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-cf1431b5a2f0391c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_2_usda-c1e873bea9886ca9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_3_usda-0dc30546dc7303fa-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_4_usda-306836af9dcd76c7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-aeace9cae6e95285-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-f2feafce67b9cc18-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_2_usda-9558069a3a6cb6c1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_3_usda-848bb8619ed104b2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_4_usda-13781e826c793feb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_1_0_bsdf_1_usda-7392b4eece3d4ffa-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_1_0_light_1_usda-e29b88fff3b5eede-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_1_0_power_1_usda-db7be84c0c913b8a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_1_1_bsdf_1_usda-1a655ee8a457375b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_1_1_light_1_usda-d608d0096c4c9293-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plastic_1_1_power_1_usda-dad1612ee907e657-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_C_usda-ceae07fa5339bc4e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_look_final_usda-46848a8dcf6250e4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_none_usda-749e88768dbe99b1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_usda-33f481698c3a3ce7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_usda-4339ddf5a07dea17-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_usda-9c591dbe4a6a2374-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_usda-d9d1e77cdf9ce71d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_usda-e1a87b662c5109e8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/precomp_usda-e28059e8e7dd2fb9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/preview_plain_usda-56c5917475bdaa40-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/preview_tagged_usda-21171eef0f915c9d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/preview_usda-6fa33b5d399ba28d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-1ceba2b5cd7da4fe-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-e0e162475fa824e5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/primvar_multisampled_usda-774c86244886ea5e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/primvar_vars_usda-f6787f7fdf1eebf3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/procedural_par_square_usda-6cb0d1de356675bd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/procedural_par_wide_usda-e65d9f21a141c052-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/products_usda-e7ced79f762e48ff-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/prune_usda-3bf02286156e9774-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/prune_usda-d1a6b2f2900a3fc1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/prune_usda-f5ce85341275f544-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/ptex_phase_usda-9d5b92d8c597babb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/ptex_quads_usda-c2d1b0153068d224-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-856ac5cdf233a681-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/purpose_usda-bf0c2e782a7f7633-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/pxr_displace_usda-3eb2626e4111c003-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/pxr_displace_usda-744b2066d6ee31b4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/quad_usda-8a80e703a52aec63-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/quiet_curves_usda-c001d1e165c273d4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/quiet_light_usda-c8a2428bb59d472f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/quiet_prototype_usda-4ee6edc155c4ce34-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/quiet_volume_usda-5e752c5254e3ed36-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/range_far_usda-4ecb448a88a6c818-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/range_usda-bc6d3542e7333f02-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/raw_dome_usda-e8a6497f6f3c05ee-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/raw_light_usda-ea76f3df9a669477-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/rect_light_far_usda-89364d5e280ec883-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/rect_light_near_usda-e8eb7549c9231ec8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/rect_light_usda-eadf17e73fc59819-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/rect_texture_usda-fa043cce9d6338f4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/rectlight_usda-5482f82d359615b0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/rectlight_usda-e2a69198ab36729f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/refusals_usda-e2a11260371695e9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/refused_usda-0be9300cea6f944b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-2eed0231ac063823-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-c03e7c6702e31ad3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_passes_usda-f98e72ee422221b6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_source_camera_usda-d46ae988f6d9241c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_source_usda-131b801caa122c43-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_source_usda-749a95594e279116-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_source_usda-b15267a29d9e4616-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/reset_disk_usda-6e0b5adab74a3b7a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/resolution_negative_usda-0d18504e846cea31-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/resolution_zero_usda-e3f58678deb9aa30-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/rest_usda-feaaa720bb9a30d2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-00dd7b68b86c7168-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-00e8d0d9a2f465b9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-1ddeac0a2964315c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-2f86c31117cc8b58-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-43c385d7a2a21d1e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-4aa136053cd56402-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-4b8c79cf557cf378-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-5042b0d1011805d6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-5c84bdb62972ba25-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-63552b8e06717f62-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-642eeb8c5780c872-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-65bf0b61fd007f62-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-67d463deb3cd2295-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-7781d1893e2e23fd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-7eba3de4e6efbf15-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-8099cbe59e22c4ff-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-834306f0b405a977-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-8c6dbffe8bcc7f5d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-921d5e21a6ec411f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-9d7d0e6b748bbe2f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-a0c411ed1048de1a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-a95c3cfeafbe744e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-aa094b9d362ee4b9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-bedb2af78f4c965d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-bfc3cfdc3fb023a6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-c51fa0d84e7325f7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-c78a3b1a4bb10072-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-cc0a74d0f1a22c6a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-ccefc9342ef07f81-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-ce726227b7d02261-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-cef90a6ad595b1b4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-d2c312942e13c754-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-dcc0d192c2504171-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-df9ad38a08c60f60-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-e227181a4d86cdde-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-f4c8b443da714046-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-f7df8a9705f0748f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/rotate_parent_usda-a0cc7d7c189a5bba-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/s_usda-0006d97926014c1b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sampler_default_usda-6c4e4e80bde0b7e5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sampler_halton_usda-bcb88dc4e7395359-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sampler_lattice_usda-83017538d7bb844b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/scaled_sphere_light_usda-2dabd5a9f4c0f98e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/scaled_usda-308f36ce00bb3ea8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/scatter_usda-08c435043fb988f9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/scatter_usda-e62e321631ee4219-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/scope_color_space_usda-acd6f59e656731c0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/settings_usda-58e4038727242b7e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/settings_usda-8c1bce0acc8c2aa3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shadow_ball_blocked_usda-7a4aa722cf803335-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shadow_ball_excluded_usda-97e5af329ccc1a04-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shadow_fog_blocked_usda-02a2d7c4f4baa106-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shadow_fog_excluded_usda-0f89cfc00df34be3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shadow_open_usda-43f52a9430038a59-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shaped_rect_usda-2479a47c7797a66c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shaping_absent_usda-59ac6c6c6ed71036-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shaping_applied_usda-b1b65b90122da6f7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shared_points_usda-b97fa4512d46ed74-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shared_usda-9209cd8eb954e389-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shared_usda-b9af19ac4c829153-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sharp_usda-9bf0a09f5df9236e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-13a3dd4f11de39b9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-27651d6a015b04ab-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-369c0d66f45d39b9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-6f33035f56110470-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-7003167a7a70688d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-b26fdb3392c1eac3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-bc9d89b7ffc91e9b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-cac7cb8da11a9b99-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e785595b364179c9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e82a725344733609-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-eaf3eeced61f0581-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-f697274eb781e181-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/shot_usda-bc277892832ac542-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sibling_usda-ec40564c6bb9a56d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/single_usda-472ac6d4e19ff814-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/smoke_grid_usda-64f278d7126815e0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/smoke_usda-8b219b9873531af2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/smoke_usda-c485b4550b7ac78b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/snapshot_usda-48d0c43b60eb99bd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_and_mesh_usda-0e0815d93400ffb5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_both_usda-e02008707f44acbc-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_crust_wins_usda-cfeb9931008a7ea6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_defaults_usda-8b8f061019318106-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_light_usda-4886e72703716517-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_nonuniform_scale_usda-4a3711274af76a73-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_only_usda-71bd2f6a8198f0b8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_ri_camera_usda-47b1274be8232510-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_tiny_scale_usda-7eb2c16e3f3404d7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_track_usda-9c13bacd8c4d2d91-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_uniform_scale_usda-afcce7d5fa243629-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_usda-8366b90874a02778-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sphere_zero_scale_usda-ac3436d07948ddb2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/squashed_cylinder_usda-6bfde315320c4111-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/squashed_disk_usda-e4a3093a38518998-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/squashed_sphere_usda-7bcbaa3c83aaf92c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stack_0_usda-2dad0f5ec97c10b8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stack_150_usda-9fc28daf7efcde9e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-0695b3612208bcf5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-08451a086997d754-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-08f2605aa76f8c5a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-0a9a4fefc79d0b59-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-0dae1afcf6927089-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-137bf5b9bbcbaa09-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-15ab0320e4168a3a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-1780ae5d9b4706f3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-18576b421133666c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-18d4c3c27061d1e0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-19c958e4224602c7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-1ad9de82b394044d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-22dd31756ff245fc-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-22e94b531779cff1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-24ad7c66559e9c80-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-26105365b1fd8dbc-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-2912eb63656b3371-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-2c5736e1f1ba1f8d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-2c8067fb553f81df-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-2ce486f3dc966042-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-2ffe73dbb471510a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-323a3e02a1f4d7b0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-340b07ebab8f9091-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-3622e7d90bc81d34-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-37a86d28c7d197ed-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-3c67a25a0a341efb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-3effc82524d047c7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-3f9cd9ed5581414a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-48e70f6118b1f181-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-49f9cb3e8a3fb9fb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-4a064c9610d45212-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-4f30830cd0cff6cf-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-520aa0db2cddfe4a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-54895eac26b3d68b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-5842de9c4816f088-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-591315737502029a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-592ba3007488df6d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-59354f1aad350085-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-5b237a71fd087753-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-5cc80e16451809c9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-5dc19c72025a0150-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-5f7140cec32f4f07-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-604932e0d3e70494-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-64b7039b1d43e540-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-65ee13ae526ffeea-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-67247fa59107a671-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-6bf959c4a9ccd0b3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-6d5fe86af042b6e1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-71054a8e0c511721-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-7c770edd10f5907e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-8088e3bfe6185392-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-80aabe25c21585c0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-82a10c399a16cdfe-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-8330e4bc297d2c11-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-888072d0abcb4b7c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-8a23f56494af42b0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-8b53eb2ddb581089-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-8bc1102225447b76-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-8bcafd97dd44d415-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-8c1801ab78070f29-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-8cceeaf3cdd2ee51-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-91c6c701cea6760c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-93b962ab026b22b8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-976234e8d4ff9d44-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-9a4d212002571295-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-9af3795f55319fa5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-9f427c13a5c51892-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-a366debd179e59ca-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-a5b1d711f3b9ea59-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-a74b5f3cf6bce97e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-a7f91b5a6640999a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-a87fd805403755dc-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-abb589be134471f7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-abeca91af484e4eb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-b0726246200d796c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-b091ac35593cb491-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-b8974322f9c3c9a8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-bb51bbccac634602-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-bc2640abb95a8689-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-bdce5005dd991897-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-c3555672a13627c7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-c469a696e567b939-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-c7b4569174f0eec0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-cd83faa181eb1fd7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-cf6459f3f81ccc47-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-cf8a4ab339090107-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-d2ee2497345d697d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-d72f3f29bbbe2aac-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-db5313ef5e73713b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-dbe57a2b9b304f79-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-dc3f3fbeccf7b47a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-df6e87952da2ef59-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-dfcbe85c1522e1a0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-e0281d61316ee28c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-e190342a381695b4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-e4221ab681d9d69c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-e515f767109d59fd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-e6a49698324053cb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-e725f8fd7bc55370-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-eae49fc2a8ca60e5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-eb49e61d600c4d7e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-ebf6853a9256b461-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-ef8a900692712be4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-f1cbf14d6569cda8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-f3300bdef5e06140-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-f33567936d2468ed-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-fbc457cd2253b427-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-fec7a3f24112f4ad-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-ffdbda6eb16c3b7d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/static_vectors_usda-fae85e3b03a2883e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/static_with_usda-9af9d7b39f92f260-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/static_without_usda-cd73d9530ee2de09-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stats_usda-00e508bd2c5eb608-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stops_usda-f48d13a255e8b51e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/strategy_balance_usda-bdbde883917b565d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/strategy_bogus_usda-ab14768d89b4fe10-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/strategy_bsdf_usda-f7c53ec9f704be37-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/strategy_light_usda-ec65e0dfb065b1f1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/strategy_power_usda-03788414ab51c35f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/streamed_usda-08988239fcd84b0c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/streamed_usda-274e7e68b089c3ac-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/string_id_usda-4ef78239c4d0e1cc-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/string_usda-edd62f0c52a0bd52-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/strip_cracks_usda-5cdf0130b2848b76-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/strip_usda-a747742859825b3a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_0_usda-6db126ded01c4707-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_1_usda-bde0e042f33df4a5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_2_usda-47f822571f7427d3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_bilinear_usda-287ba8f91aef206f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_cage_usda-17f666e1e5c6d08f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_clamped_usda-01685ab19e968980-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_default_usda-be76976c79a95643-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_key_faceted_first_usda-510113487f701e14-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_key_smooth_first_usda-9375effdf17e1f42-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_legacy_usda-e769c33757ced97c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_level0_usda-436132ac852dd08e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_loop_quads_usda-1e8f941ca190d506-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_none_faceted_usda-7ad44c4961677420-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_none_usda-38f763827a18343d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_none_usda-aea9b45539bdf216-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_override_usda-347cb15990d5b2db-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_override_usda-4180b38ea57c9096-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_override_usda-633f8e7fec39c727-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_rest_15_usda-dcdc5eeb73b7d3e8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_rest_8_usda-c9f6f9ef6bd5e50d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_rule_all_usda-7c4745bac0fe1ad7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_rule_boundaries_usda-3c0d79de547dbc49-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersOnly_usda-3a7940237cbe0a3d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus1_usda-10da8f737cfaea1d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus2_usda-7ab350be92df8201-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_rule_none_usda-86622a148177c839-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_smooth_usda-ecacf29cbe8c3a69-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_streamed_usda-6897e2d021bbe857-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_unauthored_usda-1f8d567cba520aee-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_uv_fv_usda-5e00e8c1f3e1cc34-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdiv_uv_vertex_usda-b6cc7115ae3418dd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-4b5883574262488d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-8765a889a888ae6b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-95a3e0a9db67a1fb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdivision_usda-093423ee46de2ab4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/subdivision_usda-c1e09f9374aaab81-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sun_delta_usda-ea8cdfc115606b89-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sun_lux_usda-f3cb39d866e6c449-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sun_narrow_usda-cc46151e1eb78ebf-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/sun_nits_usda-8ccba3be0d36785e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/supported_types_usda-5cac3f5a887f68e8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/synonym_a_usda-c8543088a0bca8e3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/synonym_b_usda-5b26c8cc28a6baa8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/textured_usda-addde73d309fca5e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/thin_window_usda-61e111e4ca995610-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/thin_window_usda-9e0a6257872a8f5f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/tiles_usda-63de672cd360cf69-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/time_sampled_1_usda-ee3787d0222ab673-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/time_sampled_2_usda-4dad1e9703710b97-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/time_usda-a4ea088a5cd5b4c7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/tolerance_default_usda-3a112890c553cc1b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/tolerance_nan_usda-22547c2684ba9e8c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/tolerance_off_usda-f5f012b4db29329d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/translate_scale_usda-f3698f1a1411c8b2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/translatex_curves_usda-65ef3846123d9b35-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/translatex_disk_usda-9d38522639915278-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/tuft_shadow_usda-1baacafb4242e12e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/twice_a_usda-0f943c80bd7e2c65-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/twice_b_usda-b96b0ece9c5875aa-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/two_cameras_broken_first_usda-3cb7946e1e445b8e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/two_cameras_shot_first_usda-a7d808f7cd7c7a83-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/two_instancers_usda-287c7bdad0690e3b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unauthored_usda-1a04ae4ebcf35cb8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unauthored_usda-9a9d89c801b1b740-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unbindable_usda-a5d47f8d674e7ddd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unbound_usda-19c17e4f548a50df-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unbound_usda-4ae577ca0b682f0f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/uniform_cages_usda-2c90ea028524eadd-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/uniform_cages_usda-b6490d10d0de391f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d12f6f58167b27f9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d982dbb48b0da21b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/uniform_colour_usda-6a475987121a1476-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unit_tiny_lens_usda-aa2efc45eecd1493-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unit_volume_usda-693980b7090e37bf-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unit_zero_lens_usda-d1f56221f44bb692-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unit_zero_named_usda-9847ffecfd9df22b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unit_zero_pinhole_usda-af47867eeabcfd70-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unknown_display_usda-e75f3f3b8d756ec8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unknown_filter_usda-ed678783aa9ef74d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unknown_op_usda-954c2bfc62b12357-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unknown_type_usda-d0386e0b10524625-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unnamed_usda-ed6b84994bc45537-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unresolvable_winner_usda-514f97ffe2814294-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unsupported_in_prototype_usda-d2aca9633823884e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unsupported_type_one_usda-61236dabf0bd2054-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unsupported_types_usda-4026b0fff876b77b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unsupported_usda-25a7c1709e68a39b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/unusable_texture_usda-0a21b6baa96879e3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/usdlux_usda-0d6669b552eae2be-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-36a3119df926a1de-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-7e17862f6c19bca4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/uv2_usda-a9136787dec77f95-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/uv_dedup_same_usda-9ef71121455e022c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/uv_dedup_usda-3e327caf2288bcc5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/var_authored_usda-30d82aafae5b77cb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-324cce08805da6ff-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-3d8992b3ea4a144d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-3fdc201d13c79fac-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-4.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-4.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-10.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-11.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-12.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-13.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-14.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-15.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-16.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-17.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-18.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-19.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-20.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-21.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-22.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-23.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-24.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-25.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-4.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-5.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-6.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-7.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-8.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-9.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-7b2ec235dd7d06ba-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-10.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-11.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-4.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-5.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-6.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-7.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-8.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-9.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-918cd4cfc31f23ae-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-2.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-3.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-eeb660d07679d619-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/veach_mis_usda-f7c825bf3b0bac82-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/visibility_usda-0f9ed9fc0b62a02c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/visibility_usda-2bf7c45881effd3f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/visibility_usda-d0c678c9c1d6a069-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/visibility_usda-f7d5c6c9644dd6bb-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/visible_light_usda-c593161971da5ec4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/volume_in_prototype_usda-d6406b3b1214ee81-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/volume_usda-a8034cd85e6f3de3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/volume_usda-bac87085eea27fa2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/volume_usda-dc3452b116e9581a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/wide_ok_usda-07bfe44a3376f28e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/wide_usda-98ba41961b37bb34-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/window_bottom_quarter_usda-3769adf96d53a2f1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/window_boundaries_usda-8ec00fd05808f90e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/window_centres_usda-5b25bbbab727a81b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/window_default_usda-1d0d1bbb6d0e388d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/window_empty_usda-c239bdc771be269c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/window_full_vs_unauthored_usda-6f84b7cb89845fa4-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/window_honoured_usda-0e440c93c494db71-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/window_no_products_usda-9317bad8a6d2e63d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/window_off_frame_usda-0e5c269b6dd24fb6-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/window_one_pixel_usda-66ddf756a5e443fe-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/window_overscan_usda-c27e01fde4009f5e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/window_product_overrides_usda-bb3b29ebf7dd99a8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/window_products_differ_usda-78414609fe85fc23-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/window_right_half_usda-c5f5b85f1946cb91-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/window_unauthored_usda-5d663894090b1282-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/working_acescg_usda-453466808888f80c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/working_default_usda-5aec729f1efbcf98-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/working_host_usda-964cb93fefda7817-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/working_srgb_usda-8fdff51064dc58c9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/x_usda-4b3ed4428fa191c7-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/x_usda-4f6345f399f0a5af-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/x_usda-a701d438407a1ca1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/x_usda-d5611726aa414464-1.image create mode 100644 scripts/parity_images.expected create mode 100755 scripts/parity_images.sh diff --git a/crates/crust-core/src/parity.rs b/crates/crust-core/src/parity.rs index d2e82a83b..62f30a356 100644 --- a/crates/crust-core/src/parity.rs +++ b/crates/crust-core/src/parity.rs @@ -17,7 +17,8 @@ //! migration's difference. //! - `CRUST_PARITY_IMAGES=1` also imports the stage a second time and renders //! it at 16 spp with the indirect clamp off, comparing a hash of its pixels -//! (the `.image` baseline). Meant for `cargo test --release`: an unoptimised +//! (the `.image` baseline). With it, `CRUST_RECORD_BASELINES=1` records only +//! the images; the digests are still compared. Meant for `cargo test --release`: an unoptimised //! build renders too slowly for every import of the suite. //! //! A baseline is keyed by a hash of every layer the import composed (paths and @@ -282,7 +283,11 @@ pub fn check_import( } } for (file, actual) in files { - if recording() { + // With images on, the digests are compared, never recorded: the image + // run (an optimised build) records only the images, and checks that it + // imports exactly what the unoptimised run recorded. + let is_image = file.extension().is_some_and(|e| e == "image"); + if recording() && (is_image || !with_images()) { if let Err(e) = std::fs::create_dir_all(&dir).and_then(|()| std::fs::write(&file, actual)) { diff --git a/crates/crust-core/tests/data/import_baselines/PointInstancedMedCity_usd-951317bf2ce0f6ed-1.image b/crates/crust-core/tests/data/import_baselines/PointInstancedMedCity_usd-951317bf2ce0f6ed-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/PointInstancedMedCity_usd-951317bf2ce0f6ed-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/absorber_usda-e5a517b5b36fd7e1-1.image b/crates/crust-core/tests/data/import_baselines/absorber_usda-e5a517b5b36fd7e1-1.image new file mode 100644 index 000000000..284ab7d2f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/absorber_usda-e5a517b5b36fd7e1-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 124764322822d8dd diff --git a/crates/crust-core/tests/data/import_baselines/adaptive_bounded_usda-871964d811713ece-1.image b/crates/crust-core/tests/data/import_baselines/adaptive_bounded_usda-871964d811713ece-1.image new file mode 100644 index 000000000..42d037249 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/adaptive_bounded_usda-871964d811713ece-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 4581757b44c71325 diff --git a/crates/crust-core/tests/data/import_baselines/adaptive_unbounded_usda-6ab4975baebe18ef-1.image b/crates/crust-core/tests/data/import_baselines/adaptive_unbounded_usda-6ab4975baebe18ef-1.image new file mode 100644 index 000000000..42d037249 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/adaptive_unbounded_usda-6ab4975baebe18ef-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 4581757b44c71325 diff --git a/crates/crust-core/tests/data/import_baselines/adjust_aperture_height_usda-9d28c7b3a9cad9f9-1.image b/crates/crust-core/tests/data/import_baselines/adjust_aperture_height_usda-9d28c7b3a9cad9f9-1.image new file mode 100644 index 000000000..a31c306ad --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/adjust_aperture_height_usda-9d28c7b3a9cad9f9-1.image @@ -0,0 +1 @@ +240x136 16spp clamp-off b3c21885e58a29da diff --git a/crates/crust-core/tests/data/import_baselines/adjust_aperture_width_usda-c50e2f84bef7e6b7-1.image b/crates/crust-core/tests/data/import_baselines/adjust_aperture_width_usda-c50e2f84bef7e6b7-1.image new file mode 100644 index 000000000..9b1ded9a0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/adjust_aperture_width_usda-c50e2f84bef7e6b7-1.image @@ -0,0 +1 @@ +240x136 16spp clamp-off 2a2ae02b81d14fd2 diff --git a/crates/crust-core/tests/data/import_baselines/agrees_with_spec_usda-985ed763a0957571-1.image b/crates/crust-core/tests/data/import_baselines/agrees_with_spec_usda-985ed763a0957571-1.image new file mode 100644 index 000000000..3013e04d8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/agrees_with_spec_usda-985ed763a0957571-1.image @@ -0,0 +1 @@ +32x18 16spp clamp-off 988ca9561494bf25 diff --git a/crates/crust-core/tests/data/import_baselines/anamorphic_usda-c23c78df222208eb-1.image b/crates/crust-core/tests/data/import_baselines/anamorphic_usda-c23c78df222208eb-1.image new file mode 100644 index 000000000..b47338751 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/anamorphic_usda-c23c78df222208eb-1.image @@ -0,0 +1 @@ +32x16 16spp clamp-off 660d8e5ef01f322d diff --git a/crates/crust-core/tests/data/import_baselines/ancestor_usda-3171d13289efaaff-1.image b/crates/crust-core/tests/data/import_baselines/ancestor_usda-3171d13289efaaff-1.image new file mode 100644 index 000000000..ba50a87b7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ancestor_usda-3171d13289efaaff-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off 05a95d2ab1d58b45 diff --git a/crates/crust-core/tests/data/import_baselines/ancestor_usda-74843e3cc431dad3-1.image b/crates/crust-core/tests/data/import_baselines/ancestor_usda-74843e3cc431dad3-1.image new file mode 100644 index 000000000..65e2eebfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ancestor_usda-74843e3cc431dad3-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1f4cffd87b5be6a4 diff --git a/crates/crust-core/tests/data/import_baselines/animated_no_shutter_usda-dc5451565381429f-1.image b/crates/crust-core/tests/data/import_baselines/animated_no_shutter_usda-dc5451565381429f-1.image new file mode 100644 index 000000000..0e8a4d39e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animated_no_shutter_usda-dc5451565381429f-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 51c3405b7660a8ac diff --git a/crates/crust-core/tests/data/import_baselines/animated_usda-84baf2836991de3b-1.image b/crates/crust-core/tests/data/import_baselines/animated_usda-84baf2836991de3b-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animated_usda-84baf2836991de3b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/animated_usda-e242162a2dbef33a-1.image b/crates/crust-core/tests/data/import_baselines/animated_usda-e242162a2dbef33a-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animated_usda-e242162a2dbef33a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-0b34d79521209b48-1.image b/crates/crust-core/tests/data/import_baselines/animation_usda-0b34d79521209b48-1.image new file mode 100644 index 000000000..9c33f4e88 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-0b34d79521209b48-1.image @@ -0,0 +1 @@ +96x54 16spp clamp-off 6f274e07f0941867 diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-5446fd76cda9ed55-1.image b/crates/crust-core/tests/data/import_baselines/animation_usda-5446fd76cda9ed55-1.image new file mode 100644 index 000000000..ade137ad6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-5446fd76cda9ed55-1.image @@ -0,0 +1 @@ +96x54 16spp clamp-off d7315d89c57f5cf7 diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-7b809f697af333f7-1.image b/crates/crust-core/tests/data/import_baselines/animation_usda-7b809f697af333f7-1.image new file mode 100644 index 000000000..e00ae509b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-7b809f697af333f7-1.image @@ -0,0 +1 @@ +96x54 16spp clamp-off cc96346d932cc17c diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-87536adca26db1ce-1.image b/crates/crust-core/tests/data/import_baselines/animation_usda-87536adca26db1ce-1.image new file mode 100644 index 000000000..365d51aa6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-87536adca26db1ce-1.image @@ -0,0 +1 @@ +96x54 16spp clamp-off 63daa24ffb10c955 diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-a8098f0bc76c3026-1.image b/crates/crust-core/tests/data/import_baselines/animation_usda-a8098f0bc76c3026-1.image new file mode 100644 index 000000000..f3b1cc92a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-a8098f0bc76c3026-1.image @@ -0,0 +1 @@ +96x54 16spp clamp-off bb48f209960474f7 diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-1.image b/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-1.image new file mode 100644 index 000000000..ade137ad6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-1.image @@ -0,0 +1 @@ +96x54 16spp clamp-off d7315d89c57f5cf7 diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-2.image b/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-2.image new file mode 100644 index 000000000..ade137ad6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-2.image @@ -0,0 +1 @@ +96x54 16spp clamp-off d7315d89c57f5cf7 diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-beee1323479cf47f-1.image b/crates/crust-core/tests/data/import_baselines/animation_usda-beee1323479cf47f-1.image new file mode 100644 index 000000000..9e4ca8fdb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-beee1323479cf47f-1.image @@ -0,0 +1 @@ +96x54 16spp clamp-off 8c3e234c98d542ee diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-cca20ab6197e3823-1.image b/crates/crust-core/tests/data/import_baselines/animation_usda-cca20ab6197e3823-1.image new file mode 100644 index 000000000..a8cbff83e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-cca20ab6197e3823-1.image @@ -0,0 +1 @@ +96x54 16spp clamp-off 4d2db51977773c64 diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-cfe8a27d275b06f7-1.image b/crates/crust-core/tests/data/import_baselines/animation_usda-cfe8a27d275b06f7-1.image new file mode 100644 index 000000000..ade137ad6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-cfe8a27d275b06f7-1.image @@ -0,0 +1 @@ +96x54 16spp clamp-off d7315d89c57f5cf7 diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-d9cfa85be82eff7f-1.image b/crates/crust-core/tests/data/import_baselines/animation_usda-d9cfa85be82eff7f-1.image new file mode 100644 index 000000000..249c64290 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-d9cfa85be82eff7f-1.image @@ -0,0 +1 @@ +96x54 16spp clamp-off a4cf10f126d1dd59 diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-dc0987b1e9c0a44b-1.image b/crates/crust-core/tests/data/import_baselines/animation_usda-dc0987b1e9c0a44b-1.image new file mode 100644 index 000000000..3ce938463 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-dc0987b1e9c0a44b-1.image @@ -0,0 +1 @@ +96x54 16spp clamp-off 3eaec3e041a51a7b diff --git a/crates/crust-core/tests/data/import_baselines/aov_format_usda-3d1985fd48e4fb2d-1.image b/crates/crust-core/tests/data/import_baselines/aov_format_usda-3d1985fd48e4fb2d-1.image new file mode 100644 index 000000000..648a9f248 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aov_format_usda-3d1985fd48e4fb2d-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off 54407d51eeed59ca diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-4a2c1502ba0a175e-1.image b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-4a2c1502ba0a175e-1.image new file mode 100644 index 000000000..6d0c7cc68 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-4a2c1502ba0a175e-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off 6d657218ffac01a2 diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-5ec9a160b78f998f-1.image b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-5ec9a160b78f998f-1.image new file mode 100644 index 000000000..6d0c7cc68 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-5ec9a160b78f998f-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off 6d657218ffac01a2 diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6a98ab5ed25ffa78-1.image b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6a98ab5ed25ffa78-1.image new file mode 100644 index 000000000..6d0c7cc68 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6a98ab5ed25ffa78-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off 6d657218ffac01a2 diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6d6e4a8f31366652-1.image b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6d6e4a8f31366652-1.image new file mode 100644 index 000000000..6d0c7cc68 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6d6e4a8f31366652-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off 6d657218ffac01a2 diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-803d9a5b24ae0e42-1.image b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-803d9a5b24ae0e42-1.image new file mode 100644 index 000000000..6d0c7cc68 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-803d9a5b24ae0e42-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off 6d657218ffac01a2 diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-c88cebf77c02e1c8-1.image b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-c88cebf77c02e1c8-1.image new file mode 100644 index 000000000..6d0c7cc68 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-c88cebf77c02e1c8-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off 6d657218ffac01a2 diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-96034a4139733157-1.image b/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-96034a4139733157-1.image new file mode 100644 index 000000000..da26b1909 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-96034a4139733157-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off a056342ef04b0777 diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-1.image b/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-1.image new file mode 100644 index 000000000..da26b1909 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off a056342ef04b0777 diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-2.image b/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-2.image new file mode 100644 index 000000000..da26b1909 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-2.image @@ -0,0 +1 @@ +320x180 16spp clamp-off a056342ef04b0777 diff --git a/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-1.image b/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-1.image new file mode 100644 index 000000000..6d0c7cc68 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off 6d657218ffac01a2 diff --git a/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-2.image b/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-2.image new file mode 100644 index 000000000..6d0c7cc68 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-2.image @@ -0,0 +1 @@ +160x90 16spp clamp-off 6d657218ffac01a2 diff --git a/crates/crust-core/tests/data/import_baselines/aovs_usda-90b4ce2557c1c46e-1.image b/crates/crust-core/tests/data/import_baselines/aovs_usda-90b4ce2557c1c46e-1.image new file mode 100644 index 000000000..6d0c7cc68 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_usda-90b4ce2557c1c46e-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off 6d657218ffac01a2 diff --git a/crates/crust-core/tests/data/import_baselines/aovs_usda-cd31a05d6e49ceda-1.image b/crates/crust-core/tests/data/import_baselines/aovs_usda-cd31a05d6e49ceda-1.image new file mode 100644 index 000000000..6d0c7cc68 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/aovs_usda-cd31a05d6e49ceda-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off 6d657218ffac01a2 diff --git a/crates/crust-core/tests/data/import_baselines/area_lights_usda-07bd34a97e44c0ab-1.image b/crates/crust-core/tests/data/import_baselines/area_lights_usda-07bd34a97e44c0ab-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/area_lights_usda-07bd34a97e44c0ab-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/area_lights_usda-6989a4d471c724cf-1.image b/crates/crust-core/tests/data/import_baselines/area_lights_usda-6989a4d471c724cf-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/area_lights_usda-6989a4d471c724cf-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/area_nothing_usda-bf90dbc7327fa98c-1.image b/crates/crust-core/tests/data/import_baselines/area_nothing_usda-bf90dbc7327fa98c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/area_nothing_usda-bf90dbc7327fa98c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/area_nothing_visible_usda-2f4e016170ad5820-1.image b/crates/crust-core/tests/data/import_baselines/area_nothing_visible_usda-2f4e016170ad5820-1.image new file mode 100644 index 000000000..0d5371bdf --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/area_nothing_visible_usda-2f4e016170ad5820-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 7262827b81999b78 diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-3b3a8108b3e9fae9-1.image b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-3b3a8108b3e9fae9-1.image new file mode 100644 index 000000000..cf19bec4c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-3b3a8108b3e9fae9-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 418fe906cf3335ef diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-41ce6942a2d54582-1.image b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-41ce6942a2d54582-1.image new file mode 100644 index 000000000..cf19bec4c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-41ce6942a2d54582-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 418fe906cf3335ef diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-6567e83e5076f9db-1.image b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-6567e83e5076f9db-1.image new file mode 100644 index 000000000..d4bb49c0d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-6567e83e5076f9db-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off c3b1ce8ce277cdfe diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-9934bec515530278-1.image b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-9934bec515530278-1.image new file mode 100644 index 000000000..cf19bec4c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-9934bec515530278-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 418fe906cf3335ef diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e4930eb0174b9dd7-1.image b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e4930eb0174b9dd7-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e4930eb0174b9dd7-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e7566c662eda92b2-1.image b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e7566c662eda92b2-1.image new file mode 100644 index 000000000..cf19bec4c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e7566c662eda92b2-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 418fe906cf3335ef diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-ec05a5f1f38841c6-1.image b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-ec05a5f1f38841c6-1.image new file mode 100644 index 000000000..d4bb49c0d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-ec05a5f1f38841c6-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off c3b1ce8ce277cdfe diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-f9c370778b865b50-1.image b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-f9c370778b865b50-1.image new file mode 100644 index 000000000..cf19bec4c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-f9c370778b865b50-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 418fe906cf3335ef diff --git a/crates/crust-core/tests/data/import_baselines/authored_only_usda-e3c97926a3d11ac4-1.image b/crates/crust-core/tests/data/import_baselines/authored_only_usda-e3c97926a3d11ac4-1.image new file mode 100644 index 000000000..41d6a31ea --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/authored_only_usda-e3c97926a3d11ac4-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 3c406206c0d3b4b6 diff --git a/crates/crust-core/tests/data/import_baselines/backdrop_dome_light_1_usda-bda39b6574f6f444-1.image b/crates/crust-core/tests/data/import_baselines/backdrop_dome_light_1_usda-bda39b6574f6f444-1.image new file mode 100644 index 000000000..ef6a3bc1a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/backdrop_dome_light_1_usda-bda39b6574f6f444-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 82fd92b977974e05 diff --git a/crates/crust-core/tests/data/import_baselines/backdrop_streamed_usda-5c630271a8fcfd44-1.image b/crates/crust-core/tests/data/import_baselines/backdrop_streamed_usda-5c630271a8fcfd44-1.image new file mode 100644 index 000000000..bb25fb6ec --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/backdrop_streamed_usda-5c630271a8fcfd44-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 0d595f538d4d7bb5 diff --git a/crates/crust-core/tests/data/import_baselines/backdrop_usda-2757fcfd84c07e64-1.image b/crates/crust-core/tests/data/import_baselines/backdrop_usda-2757fcfd84c07e64-1.image new file mode 100644 index 000000000..ef6a3bc1a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/backdrop_usda-2757fcfd84c07e64-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 82fd92b977974e05 diff --git a/crates/crust-core/tests/data/import_baselines/backdrop_usda-3818c88f3ea1e994-1.image b/crates/crust-core/tests/data/import_baselines/backdrop_usda-3818c88f3ea1e994-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/backdrop_usda-3818c88f3ea1e994-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/backdrop_usda-e17ddb582cb97b8c-1.image b/crates/crust-core/tests/data/import_baselines/backdrop_usda-e17ddb582cb97b8c-1.image new file mode 100644 index 000000000..ad6d19c3c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/backdrop_usda-e17ddb582cb97b8c-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 57c3651777bb1388 diff --git a/crates/crust-core/tests/data/import_baselines/backlit_diffuse_usda-3dfba11cda1cd7c6-1.image b/crates/crust-core/tests/data/import_baselines/backlit_diffuse_usda-3dfba11cda1cd7c6-1.image new file mode 100644 index 000000000..ab456aa96 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/backlit_diffuse_usda-3dfba11cda1cd7c6-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off e5fbd87f2534b2bd diff --git a/crates/crust-core/tests/data/import_baselines/backlit_hair_usda-59f16e3a1a4f9b6d-1.image b/crates/crust-core/tests/data/import_baselines/backlit_hair_usda-59f16e3a1a4f9b6d-1.image new file mode 100644 index 000000000..a0bf16a7b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/backlit_hair_usda-59f16e3a1a4f9b6d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off f8a9f23b5160dcb7 diff --git a/crates/crust-core/tests/data/import_baselines/bad_length_usda-3ab7b93f882199a8-1.image b/crates/crust-core/tests/data/import_baselines/bad_length_usda-3ab7b93f882199a8-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/bad_length_usda-3ab7b93f882199a8-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/bad_volume_usda-00cc0d19953cb7f6-1.image b/crates/crust-core/tests/data/import_baselines/bad_volume_usda-00cc0d19953cb7f6-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/bad_volume_usda-00cc0d19953cb7f6-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/banded_dome_usda-03eaa43cee7b25ab-1.image b/crates/crust-core/tests/data/import_baselines/banded_dome_usda-03eaa43cee7b25ab-1.image new file mode 100644 index 000000000..b58239ea0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/banded_dome_usda-03eaa43cee7b25ab-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 4f3e257129109575 diff --git a/crates/crust-core/tests/data/import_baselines/binding_usda-3ec3b212bbee4e90-1.image b/crates/crust-core/tests/data/import_baselines/binding_usda-3ec3b212bbee4e90-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/binding_usda-3ec3b212bbee4e90-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/black_usda-ca3475f9863dc283-1.image b/crates/crust-core/tests/data/import_baselines/black_usda-ca3475f9863dc283-1.image new file mode 100644 index 000000000..5ad872464 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/black_usda-ca3475f9863dc283-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off f3fb6a6deb5af325 diff --git a/crates/crust-core/tests/data/import_baselines/blackbody_acescg_usda-e4fe8984977e4dc5-1.image b/crates/crust-core/tests/data/import_baselines/blackbody_acescg_usda-e4fe8984977e4dc5-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blackbody_acescg_usda-e4fe8984977e4dc5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/blur_default_usda-d0c5474e0dfbe769-1.image b/crates/crust-core/tests/data/import_baselines/blur_default_usda-d0c5474e0dfbe769-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_default_usda-d0c5474e0dfbe769-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/blur_false_usda-8f6712fd58e3e7dd-1.image b/crates/crust-core/tests/data/import_baselines/blur_false_usda-8f6712fd58e3e7dd-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_false_usda-8f6712fd58e3e7dd-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/blur_product_inherits_synonym_usda-8cbc9a895bc4da45-1.image b/crates/crust-core/tests/data/import_baselines/blur_product_inherits_synonym_usda-8cbc9a895bc4da45-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_product_inherits_synonym_usda-8cbc9a895bc4da45-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/blur_product_off_usda-ad5ae20ae0e9dd8e-1.image b/crates/crust-core/tests/data/import_baselines/blur_product_off_usda-ad5ae20ae0e9dd8e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_product_off_usda-ad5ae20ae0e9dd8e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/blur_product_on_usda-9e081a22d073a61a-1.image b/crates/crust-core/tests/data/import_baselines/blur_product_on_usda-9e081a22d073a61a-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_product_on_usda-9e081a22d073a61a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/blur_products_differ_usda-97d616ea3858dc6c-1.image b/crates/crust-core/tests/data/import_baselines/blur_products_differ_usda-97d616ea3858dc6c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_products_differ_usda-97d616ea3858dc6c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/blur_settings_only_usda-57bf8b1f820d60e9-1.image b/crates/crust-core/tests/data/import_baselines/blur_settings_only_usda-57bf8b1f820d60e9-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_settings_only_usda-57bf8b1f820d60e9-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/blur_synonym_usda-5c4201bf40a84766-1.image b/crates/crust-core/tests/data/import_baselines/blur_synonym_usda-5c4201bf40a84766-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_synonym_usda-5c4201bf40a84766-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/blur_warnings_usda-560d69942e1e7771-1.image b/crates/crust-core/tests/data/import_baselines/blur_warnings_usda-560d69942e1e7771-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blur_warnings_usda-560d69942e1e7771-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/blurred_usda-152a0fdff5c8c9a3-1.image b/crates/crust-core/tests/data/import_baselines/blurred_usda-152a0fdff5c8c9a3-1.image new file mode 100644 index 000000000..a73ad2479 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/blurred_usda-152a0fdff5c8c9a3-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 7d8ea19b840f87f9 diff --git a/crates/crust-core/tests/data/import_baselines/both_usda-4af15817dabdb39f-1.image b/crates/crust-core/tests/data/import_baselines/both_usda-4af15817dabdb39f-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/both_usda-4af15817dabdb39f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/boundary_usda-85fcb2406c56d725-1.image b/crates/crust-core/tests/data/import_baselines/boundary_usda-85fcb2406c56d725-1.image new file mode 100644 index 000000000..0247ded27 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/boundary_usda-85fcb2406c56d725-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 04d1252637e88ed3 diff --git a/crates/crust-core/tests/data/import_baselines/broken_materials_usda-040c16d0365cbc63-1.image b/crates/crust-core/tests/data/import_baselines/broken_materials_usda-040c16d0365cbc63-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/broken_materials_usda-040c16d0365cbc63-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/broken_mesh_usda-217190c267ddf4a1-1.image b/crates/crust-core/tests/data/import_baselines/broken_mesh_usda-217190c267ddf4a1-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/broken_mesh_usda-217190c267ddf4a1-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/cage_three_usda-65204db7a7ccaed8-1.image b/crates/crust-core/tests/data/import_baselines/cage_three_usda-65204db7a7ccaed8-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cage_three_usda-65204db7a7ccaed8-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-1.image b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-2.image b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-2.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-2.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-1.image b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-2.image b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-2.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-2.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-1.image b/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-2.image b/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-2.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-2.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-3.image b/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-3.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-3.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/cam_narrow_usda-dcae36868790f279-1.image b/crates/crust-core/tests/data/import_baselines/cam_narrow_usda-dcae36868790f279-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam_narrow_usda-dcae36868790f279-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/cam_none_usda-1ef9fbd129b9560a-1.image b/crates/crust-core/tests/data/import_baselines/cam_none_usda-1ef9fbd129b9560a-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam_none_usda-1ef9fbd129b9560a-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/cam_none_usda-2cb27e460ee10e43-1.image b/crates/crust-core/tests/data/import_baselines/cam_none_usda-2cb27e460ee10e43-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam_none_usda-2cb27e460ee10e43-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/cam_wide_usda-098c8afc4872dbb7-1.image b/crates/crust-core/tests/data/import_baselines/cam_wide_usda-098c8afc4872dbb7-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cam_wide_usda-098c8afc4872dbb7-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/camera_dof_usda-f69bc93db8900a0e-1.image b/crates/crust-core/tests/data/import_baselines/camera_dof_usda-f69bc93db8900a0e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_dof_usda-f69bc93db8900a0e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/camera_ortho_usda-21d5879ec7de6dbf-1.image b/crates/crust-core/tests/data/import_baselines/camera_ortho_usda-21d5879ec7de6dbf-1.image new file mode 100644 index 000000000..aac9ec548 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_ortho_usda-21d5879ec7de6dbf-1.image @@ -0,0 +1 @@ +64x64 16spp clamp-off 68c00ea49d512325 diff --git a/crates/crust-core/tests/data/import_baselines/camera_projection_unknown_usda-8a8cac00719054ad-1.image b/crates/crust-core/tests/data/import_baselines/camera_projection_unknown_usda-8a8cac00719054ad-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_projection_unknown_usda-8a8cac00719054ad-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/camera_rot_usda-c74e88c7205b56e5-1.image b/crates/crust-core/tests/data/import_baselines/camera_rot_usda-c74e88c7205b56e5-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_rot_usda-c74e88c7205b56e5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/camera_usda-2d8f34945903545d-1.image b/crates/crust-core/tests/data/import_baselines/camera_usda-2d8f34945903545d-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_usda-2d8f34945903545d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-0af373522188190d-1.image b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-0af373522188190d-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-0af373522188190d-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-5198be21d5bb35d1-1.image b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-5198be21d5bb35d1-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-5198be21d5bb35d1-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/camera_zero_focus_usda-ad065540da61feb4-1.image b/crates/crust-core/tests/data/import_baselines/camera_zero_focus_usda-ad065540da61feb4-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_zero_focus_usda-ad065540da61feb4-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/capped_usda-de82c45ab5a80eb6-1.image b/crates/crust-core/tests/data/import_baselines/capped_usda-de82c45ab5a80eb6-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/capped_usda-de82c45ab5a80eb6-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/centred_both_usda-06ae7e6ad41f5b45-1.image b/crates/crust-core/tests/data/import_baselines/centred_both_usda-06ae7e6ad41f5b45-1.image new file mode 100644 index 000000000..bfa41788e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/centred_both_usda-06ae7e6ad41f5b45-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off dc255797970d888d diff --git a/crates/crust-core/tests/data/import_baselines/centred_frame_usda-200d23d9927b7966-1.image b/crates/crust-core/tests/data/import_baselines/centred_frame_usda-200d23d9927b7966-1.image new file mode 100644 index 000000000..bfa41788e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/centred_frame_usda-200d23d9927b7966-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off dc255797970d888d diff --git a/crates/crust-core/tests/data/import_baselines/centred_open_usda-75e668aa9e5ecb2d-1.image b/crates/crust-core/tests/data/import_baselines/centred_open_usda-75e668aa9e5ecb2d-1.image new file mode 100644 index 000000000..6a65f383a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/centred_open_usda-75e668aa9e5ecb2d-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 98e9524f3d395cd5 diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_constant_0_usda-16acce3a8ae23e69-1.image b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_0_usda-16acce3a8ae23e69-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_0_usda-16acce3a8ae23e69-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_constant_2_usda-51380ed7a7ea4305-1.image b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_2_usda-51380ed7a7ea4305-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_2_usda-51380ed7a7ea4305-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_0_usda-a6d6a93dda32caf2-1.image b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_0_usda-a6d6a93dda32caf2-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_0_usda-a6d6a93dda32caf2-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_2_usda-bad2637a6a91c73a-1.image b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_2_usda-bad2637a6a91c73a-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_2_usda-bad2637a6a91c73a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_0_usda-ffe6596ba2b6a108-1.image b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_0_usda-ffe6596ba2b6a108-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_0_usda-ffe6596ba2b6a108-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_2_usda-815f4bb2830bedd0-1.image b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_2_usda-815f4bb2830bedd0-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_2_usda-815f4bb2830bedd0-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_0_usda-a6e2151559aa05f1-1.image b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_0_usda-a6e2151559aa05f1-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_0_usda-a6e2151559aa05f1-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_2_usda-49181df1e2a2d359-1.image b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_2_usda-49181df1e2a2d359-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_2_usda-49181df1e2a2d359-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/clean_usda-d4e60f418d0e5485-1.image b/crates/crust-core/tests/data/import_baselines/clean_usda-d4e60f418d0e5485-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/clean_usda-d4e60f418d0e5485-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/clear_usda-487518c3a2bde507-1.image b/crates/crust-core/tests/data/import_baselines/clear_usda-487518c3a2bde507-1.image new file mode 100644 index 000000000..53378165f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/clear_usda-487518c3a2bde507-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off d0cf0590b1be3709 diff --git a/crates/crust-core/tests/data/import_baselines/closest_usda-b1b06704b4564b8c-1.image b/crates/crust-core/tests/data/import_baselines/closest_usda-b1b06704b4564b8c-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/closest_usda-b1b06704b4564b8c-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/color_space_api_usda-7258fb7a16ddde2f-1.image b/crates/crust-core/tests/data/import_baselines/color_space_api_usda-7258fb7a16ddde2f-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/color_space_api_usda-7258fb7a16ddde2f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/color_temperature_off_usda-d2963845fd5e72c4-1.image b/crates/crust-core/tests/data/import_baselines/color_temperature_off_usda-d2963845fd5e72c4-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/color_temperature_off_usda-d2963845fd5e72c4-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/color_temperature_usda-a7d9f5fccba89fff-1.image b/crates/crust-core/tests/data/import_baselines/color_temperature_usda-a7d9f5fccba89fff-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/color_temperature_usda-a7d9f5fccba89fff-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/compensation_alias_usda-ea168514e7b00460-1.image b/crates/crust-core/tests/data/import_baselines/compensation_alias_usda-ea168514e7b00460-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/compensation_alias_usda-ea168514e7b00460-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/compensation_off_usda-37a366efa8d50980-1.image b/crates/crust-core/tests/data/import_baselines/compensation_off_usda-37a366efa8d50980-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/compensation_off_usda-37a366efa8d50980-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/constant_cage_usda-6838009dc4d51123-1.image b/crates/crust-core/tests/data/import_baselines/constant_cage_usda-6838009dc4d51123-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/constant_cage_usda-6838009dc4d51123-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/constant_none_off_usda-4da7234b198fc34c-1.image b/crates/crust-core/tests/data/import_baselines/constant_none_off_usda-4da7234b198fc34c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/constant_none_off_usda-4da7234b198fc34c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/constant_none_usda-3f38201b0c964211-1.image b/crates/crust-core/tests/data/import_baselines/constant_none_usda-3f38201b0c964211-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/constant_none_usda-3f38201b0c964211-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/convolve_usda-ae27710a0c217615-1.image b/crates/crust-core/tests/data/import_baselines/convolve_usda-ae27710a0c217615-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/convolve_usda-ae27710a0c217615-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/copper_usda-856b7fd7384c75f6-1.image b/crates/crust-core/tests/data/import_baselines/copper_usda-856b7fd7384c75f6-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/copper_usda-856b7fd7384c75f6-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-1f6a1535ca10a892-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-1f6a1535ca10a892-1.image new file mode 100644 index 000000000..73b558234 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-1f6a1535ca10a892-1.image @@ -0,0 +1 @@ +512x512 16spp clamp-off e5ffae3fe49f22a2 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-1.image new file mode 100644 index 000000000..73b558234 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-1.image @@ -0,0 +1 @@ +512x512 16spp clamp-off e5ffae3fe49f22a2 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-2.image new file mode 100644 index 000000000..73b558234 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-2.image @@ -0,0 +1 @@ +512x512 16spp clamp-off e5ffae3fe49f22a2 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-1.image new file mode 100644 index 000000000..73b558234 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-1.image @@ -0,0 +1 @@ +512x512 16spp clamp-off e5ffae3fe49f22a2 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-2.image new file mode 100644 index 000000000..73b558234 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-2.image @@ -0,0 +1 @@ +512x512 16spp clamp-off e5ffae3fe49f22a2 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-dddcb8fd2ce59c1f-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-dddcb8fd2ce59c1f-1.image new file mode 100644 index 000000000..73b558234 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-dddcb8fd2ce59c1f-1.image @@ -0,0 +1 @@ +512x512 16spp clamp-off e5ffae3fe49f22a2 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-937b5a30e0d1b2a9-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-937b5a30e0d1b2a9-1.image new file mode 100644 index 000000000..0f9205e21 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-937b5a30e0d1b2a9-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off c0a8018fae7df9ad diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-a0bb21684d68d231-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-a0bb21684d68d231-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-a0bb21684d68d231-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-f5ac4ca7187d0afa-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-f5ac4ca7187d0afa-1.image new file mode 100644 index 000000000..2d80680ea --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-f5ac4ca7187d0afa-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 1c648dd042d37b6a diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-021e0477d02e8b56-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-021e0477d02e8b56-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-021e0477d02e8b56-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-08de1880a086a764-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-08de1880a086a764-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-08de1880a086a764-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-15e73f9974620a1a-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-15e73f9974620a1a-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-15e73f9974620a1a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-16d2af5b91e595bd-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-16d2af5b91e595bd-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-16d2af5b91e595bd-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-1aeeae0fba6dbe97-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-1aeeae0fba6dbe97-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-1aeeae0fba6dbe97-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-248f67f6240f7680-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-248f67f6240f7680-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-248f67f6240f7680-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-254e9b608e6c20f0-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-254e9b608e6c20f0-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-254e9b608e6c20f0-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-265ef4c54c4d2534-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-265ef4c54c4d2534-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-265ef4c54c4d2534-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2711a47b10d83a96-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2711a47b10d83a96-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2711a47b10d83a96-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-3.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-3.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-3.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-4.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-4.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-4.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-5.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-5.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-5.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-6.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-6.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-6.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2cf51e7bf43f4fa8-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2cf51e7bf43f4fa8-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2cf51e7bf43f4fa8-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-3.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-3.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-3.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a12e7835578a84e-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a12e7835578a84e-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a12e7835578a84e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a2af9f3e570b458-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a2af9f3e570b458-1.image new file mode 100644 index 000000000..ba7807e5c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a2af9f3e570b458-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off be51728d9580fa28 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c316a1edd099ef0-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c316a1edd099ef0-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c316a1edd099ef0-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c74fafa1c66c123-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c74fafa1c66c123-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c74fafa1c66c123-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3cac72b0550f05b3-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3cac72b0550f05b3-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3cac72b0550f05b3-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-450b164daa4e0f80-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-450b164daa4e0f80-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-450b164daa4e0f80-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-48a104b8a2799466-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-48a104b8a2799466-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-48a104b8a2799466-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-518e1fd5063f7227-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-518e1fd5063f7227-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-518e1fd5063f7227-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-10.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-10.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-10.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-11.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-11.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-11.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-12.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-12.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-12.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-13.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-13.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-13.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-14.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-14.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-14.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-15.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-15.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-15.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-16.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-16.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-16.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-17.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-17.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-17.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-18.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-18.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-18.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-19.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-19.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-19.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-20.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-20.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-20.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-21.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-21.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-21.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-22.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-22.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-22.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-23.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-23.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-23.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-24.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-24.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-24.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-25.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-25.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-25.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-3.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-3.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-3.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-4.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-4.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-4.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-5.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-5.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-5.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-6.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-6.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-6.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-7.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-7.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-7.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-8.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-8.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-8.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-9.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-9.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-9.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5d064faa753e9d7b-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5d064faa753e9d7b-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5d064faa753e9d7b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5e1b400d2f0d70bc-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5e1b400d2f0d70bc-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5e1b400d2f0d70bc-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5ff835103ecfad3e-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5ff835103ecfad3e-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5ff835103ecfad3e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61a13a775605a0ce-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61a13a775605a0ce-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61a13a775605a0ce-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61e87f520a6a2dff-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61e87f520a6a2dff-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61e87f520a6a2dff-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-63b1f6980e443f71-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-63b1f6980e443f71-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-63b1f6980e443f71-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67753350f4f997a4-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67753350f4f997a4-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67753350f4f997a4-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67d6afd449214b25-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67d6afd449214b25-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67d6afd449214b25-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7300aa94ecae6c37-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7300aa94ecae6c37-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7300aa94ecae6c37-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7478515f32354718-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7478515f32354718-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7478515f32354718-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7ba56e4f79d4195f-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7ba56e4f79d4195f-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7ba56e4f79d4195f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7e55fcb3620f4663-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7e55fcb3620f4663-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7e55fcb3620f4663-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7f63dd70a33e2183-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7f63dd70a33e2183-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7f63dd70a33e2183-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-3.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-3.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-3.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-4.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-4.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-4.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88df24aa0618a335-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88df24aa0618a335-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88df24aa0618a335-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88e25ed80282bc79-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88e25ed80282bc79-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88e25ed80282bc79-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88eeabb6ac92eef4-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88eeabb6ac92eef4-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88eeabb6ac92eef4-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-89c626c1e078ca38-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-89c626c1e078ca38-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-89c626c1e078ca38-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8e692f67a3c276f4-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8e692f67a3c276f4-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8e692f67a3c276f4-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8ecb1db3e29a9e13-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8ecb1db3e29a9e13-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8ecb1db3e29a9e13-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-93e84687c267227a-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-93e84687c267227a-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-93e84687c267227a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9514c8683d2c9e4d-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9514c8683d2c9e4d-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9514c8683d2c9e4d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-96761b8033e5fb3c-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-96761b8033e5fb3c-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-96761b8033e5fb3c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-987ee05acd715dfa-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-987ee05acd715dfa-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-987ee05acd715dfa-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-99aef82ca410b677-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-99aef82ca410b677-1.image new file mode 100644 index 000000000..19d12aa0f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-99aef82ca410b677-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off b5b042e3c8cb3b9b diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9a0515f0d918dd40-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9a0515f0d918dd40-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9a0515f0d918dd40-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-10.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-10.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-10.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-100.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-100.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-100.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-101.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-101.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-101.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-102.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-102.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-102.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-103.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-103.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-103.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-104.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-104.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-104.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-105.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-105.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-105.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-106.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-106.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-106.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-107.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-107.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-107.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-108.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-108.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-108.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-109.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-109.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-109.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-11.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-11.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-11.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-110.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-110.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-110.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-111.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-111.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-111.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-112.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-112.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-112.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-113.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-113.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-113.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-114.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-114.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-114.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-115.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-115.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-115.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-116.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-116.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-116.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-117.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-117.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-117.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-118.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-118.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-118.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-119.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-119.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-119.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-12.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-12.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-12.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-120.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-120.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-120.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-121.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-121.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-121.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-122.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-122.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-122.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-123.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-123.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-123.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-124.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-124.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-124.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-125.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-125.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-125.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-126.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-126.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-126.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-127.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-127.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-127.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-128.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-128.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-128.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-129.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-129.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-129.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-13.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-13.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-13.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-130.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-130.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-130.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-131.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-131.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-131.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-132.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-132.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-132.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-133.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-133.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-133.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-134.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-134.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-134.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-135.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-135.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-135.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-136.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-136.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-136.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-137.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-137.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-137.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-138.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-138.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-138.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-139.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-139.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-139.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-14.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-14.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-14.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-140.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-140.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-140.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-141.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-141.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-141.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-142.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-142.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-142.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-143.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-143.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-143.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-144.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-144.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-144.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-145.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-145.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-145.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-146.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-146.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-146.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-147.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-147.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-147.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-148.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-148.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-148.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-149.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-149.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-149.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-15.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-15.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-15.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-150.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-150.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-150.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-151.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-151.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-151.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-152.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-152.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-152.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-153.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-153.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-153.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-154.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-154.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-154.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-155.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-155.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-155.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-156.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-156.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-156.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-157.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-157.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-157.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-158.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-158.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-158.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-159.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-159.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-159.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-16.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-16.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-16.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-160.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-160.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-160.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-161.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-161.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-161.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-162.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-162.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-162.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-163.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-163.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-163.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-164.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-164.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-164.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-165.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-165.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-165.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-166.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-166.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-166.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-167.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-167.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-167.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-168.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-168.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-168.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-169.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-169.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-169.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-17.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-17.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-17.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-170.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-170.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-170.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-171.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-171.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-171.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-172.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-172.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-172.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-173.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-173.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-173.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-174.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-174.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-174.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-175.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-175.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-175.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-176.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-176.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-176.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-177.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-177.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-177.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-178.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-178.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-178.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-179.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-179.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-179.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-18.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-18.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-18.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-180.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-180.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-180.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-181.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-181.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-181.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-182.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-182.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-182.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-183.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-183.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-183.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-184.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-184.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-184.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-185.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-185.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-185.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-186.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-186.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-186.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-187.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-187.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-187.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-188.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-188.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-188.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-189.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-189.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-189.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-19.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-19.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-19.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-190.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-190.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-190.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-191.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-191.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-191.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-192.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-192.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-192.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-20.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-20.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-20.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-21.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-21.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-21.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-22.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-22.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-22.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-23.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-23.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-23.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-24.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-24.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-24.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-25.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-25.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-25.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-26.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-26.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-26.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-27.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-27.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-27.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-28.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-28.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-28.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-29.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-29.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-29.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-3.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-3.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-3.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-30.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-30.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-30.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-31.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-31.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-31.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-32.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-32.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-32.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-33.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-33.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-33.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-34.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-34.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-34.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-35.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-35.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-35.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-36.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-36.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-36.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-37.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-37.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-37.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-38.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-38.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-38.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-39.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-39.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-39.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-4.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-4.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-4.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-40.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-40.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-40.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-41.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-41.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-41.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-42.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-42.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-42.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-43.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-43.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-43.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-44.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-44.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-44.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-45.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-45.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-45.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-46.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-46.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-46.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-47.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-47.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-47.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-48.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-48.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-48.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-49.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-49.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-49.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-5.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-5.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-5.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-50.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-50.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-50.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-51.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-51.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-51.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-52.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-52.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-52.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-53.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-53.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-53.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-54.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-54.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-54.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-55.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-55.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-55.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-56.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-56.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-56.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-57.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-57.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-57.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-58.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-58.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-58.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-59.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-59.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-59.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-6.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-6.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-6.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-60.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-60.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-60.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-61.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-61.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-61.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-62.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-62.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-62.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-63.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-63.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-63.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-64.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-64.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-64.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-65.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-65.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-65.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-66.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-66.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-66.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-67.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-67.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-67.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-68.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-68.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-68.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-69.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-69.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-69.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-7.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-7.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-7.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-70.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-70.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-70.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-71.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-71.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-71.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-72.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-72.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-72.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-73.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-73.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-73.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-74.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-74.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-74.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-75.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-75.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-75.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-76.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-76.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-76.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-77.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-77.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-77.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-78.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-78.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-78.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-79.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-79.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-79.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-8.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-8.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-8.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-80.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-80.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-80.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-81.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-81.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-81.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-82.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-82.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-82.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-83.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-83.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-83.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-84.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-84.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-84.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-85.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-85.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-85.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-86.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-86.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-86.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-87.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-87.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-87.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-88.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-88.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-88.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-89.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-89.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-89.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-9.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-9.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-9.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-90.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-90.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-90.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-91.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-91.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-91.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-92.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-92.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-92.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-93.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-93.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-93.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-94.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-94.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-94.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-95.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-95.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-95.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-96.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-96.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-96.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-97.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-97.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-97.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-98.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-98.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-98.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-99.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-99.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-99.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a06c636245c00028-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a06c636245c00028-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a06c636245c00028-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-3.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-3.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-3.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-4.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-4.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-4.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-5.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-5.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-5.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-6.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-6.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-6.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a1b6b7b33175c629-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a1b6b7b33175c629-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a1b6b7b33175c629-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a6c99e7589fd5bbe-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a6c99e7589fd5bbe-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a6c99e7589fd5bbe-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-3.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-3.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-3.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-4.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-4.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-4.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b194c866668b8c75-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b194c866668b8c75-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b194c866668b8c75-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b32b870ba5ca59f9-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b32b870ba5ca59f9-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b32b870ba5ca59f9-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b3d2bc2ed9037c82-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b3d2bc2ed9037c82-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b3d2bc2ed9037c82-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b62de59b31ca0e80-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b62de59b31ca0e80-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b62de59b31ca0e80-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b6c7e44d8560abd5-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b6c7e44d8560abd5-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b6c7e44d8560abd5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-3.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-3.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-3.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-4.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-4.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-4.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-5.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-5.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-5.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-be34c0d526943796-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-be34c0d526943796-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-be34c0d526943796-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cb7b0dee2139a326-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cb7b0dee2139a326-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cb7b0dee2139a326-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cdab40c0e9cba23f-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cdab40c0e9cba23f-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cdab40c0e9cba23f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cf47b345f0453895-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cf47b345f0453895-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cf47b345f0453895-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d3d144cf7b8b758b-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d3d144cf7b8b758b-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d3d144cf7b8b758b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-da1f2707813489ef-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-da1f2707813489ef-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-da1f2707813489ef-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-3.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-3.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-3.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-3.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-3.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-3.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-4.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-4.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-4.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ec6907d7b5edc24c-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ec6907d7b5edc24c-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ec6907d7b5edc24c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ed05b9821202ec22-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ed05b9821202ec22-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ed05b9821202ec22-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-efc8f2e410ea1edf-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-efc8f2e410ea1edf-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-efc8f2e410ea1edf-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0235d211948c8ae-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0235d211948c8ae-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0235d211948c8ae-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0d9751b5af0e124-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0d9751b5af0e124-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0d9751b5af0e124-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-3.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-3.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-3.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-4.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-4.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-4.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f52f4933a61a7b17-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f52f4933a61a7b17-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f52f4933a61a7b17-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f72ab0ee474423bf-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f72ab0ee474423bf-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f72ab0ee474423bf-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-3.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-3.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-3.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-2.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-2.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-3.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-3.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-3.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-4.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-4.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-4.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-fc498f82a9cb979f-1.image b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-fc498f82a9cb979f-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-fc498f82a9cb979f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/counters_usda-4398822590228cb6-1.image b/crates/crust-core/tests/data/import_baselines/counters_usda-4398822590228cb6-1.image new file mode 100644 index 000000000..f0b9b5b6b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/counters_usda-4398822590228cb6-1.image @@ -0,0 +1 @@ +32x16 16spp clamp-off 6df0de0551480325 diff --git a/crates/crust-core/tests/data/import_baselines/curves_usda-49b1041fa43b5df8-1.image b/crates/crust-core/tests/data/import_baselines/curves_usda-49b1041fa43b5df8-1.image new file mode 100644 index 000000000..e916a0cc0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/curves_usda-49b1041fa43b5df8-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off 4221afc206dfeafa diff --git a/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-1.image b/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-1.image new file mode 100644 index 000000000..e3c34ea16 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-1.image @@ -0,0 +1 @@ +64x64 16spp clamp-off a9aeeb6ec2045102 diff --git a/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-2.image b/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-2.image new file mode 100644 index 000000000..e3c34ea16 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-2.image @@ -0,0 +1 @@ +64x64 16spp clamp-off a9aeeb6ec2045102 diff --git a/crates/crust-core/tests/data/import_baselines/curves_usda-6c82e9cb233e7c1e-1.image b/crates/crust-core/tests/data/import_baselines/curves_usda-6c82e9cb233e7c1e-1.image new file mode 100644 index 000000000..e3c34ea16 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/curves_usda-6c82e9cb233e7c1e-1.image @@ -0,0 +1 @@ +64x64 16spp clamp-off a9aeeb6ec2045102 diff --git a/crates/crust-core/tests/data/import_baselines/curves_usda-bf538717464b4055-1.image b/crates/crust-core/tests/data/import_baselines/curves_usda-bf538717464b4055-1.image new file mode 100644 index 000000000..e3c34ea16 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/curves_usda-bf538717464b4055-1.image @@ -0,0 +1 @@ +64x64 16spp clamp-off a9aeeb6ec2045102 diff --git a/crates/crust-core/tests/data/import_baselines/curves_usda-e59f2a157a03b823-1.image b/crates/crust-core/tests/data/import_baselines/curves_usda-e59f2a157a03b823-1.image new file mode 100644 index 000000000..1cb54f20e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/curves_usda-e59f2a157a03b823-1.image @@ -0,0 +1 @@ +64x64 16spp clamp-off 2f1ab4ebb46ccf71 diff --git a/crates/crust-core/tests/data/import_baselines/cycle_usda-6c5127dceb205457-1.image b/crates/crust-core/tests/data/import_baselines/cycle_usda-6c5127dceb205457-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cycle_usda-6c5127dceb205457-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/cyl_far_usda-14bf93b40e3110ed-1.image b/crates/crust-core/tests/data/import_baselines/cyl_far_usda-14bf93b40e3110ed-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cyl_far_usda-14bf93b40e3110ed-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/cyl_near_usda-8880b5f4401667ce-1.image b/crates/crust-core/tests/data/import_baselines/cyl_near_usda-8880b5f4401667ce-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cyl_near_usda-8880b5f4401667ce-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/cyl_proto_nested_usda-337785a80bd25b4b-1.image b/crates/crust-core/tests/data/import_baselines/cyl_proto_nested_usda-337785a80bd25b4b-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cyl_proto_nested_usda-337785a80bd25b4b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/cyl_proto_once_usda-5861fac834a9592e-1.image b/crates/crust-core/tests/data/import_baselines/cyl_proto_once_usda-5861fac834a9592e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cyl_proto_once_usda-5861fac834a9592e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/cyl_proto_twice_usda-9d0b4387b8ae21e9-1.image b/crates/crust-core/tests/data/import_baselines/cyl_proto_twice_usda-9d0b4387b8ae21e9-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cyl_proto_twice_usda-9d0b4387b8ae21e9-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/cyl_unnamed_usda-6b8943ce79ec798b-1.image b/crates/crust-core/tests/data/import_baselines/cyl_unnamed_usda-6b8943ce79ec798b-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cyl_unnamed_usda-6b8943ce79ec798b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/cylinder_light_usda-a8869b560165f646-1.image b/crates/crust-core/tests/data/import_baselines/cylinder_light_usda-a8869b560165f646-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/cylinder_light_usda-a8869b560165f646-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dangling_usda-33cdcee1c03a3f62-1.image b/crates/crust-core/tests/data/import_baselines/dangling_usda-33cdcee1c03a3f62-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dangling_usda-33cdcee1c03a3f62-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/default_links_usda-fa4bfc17658672ca-1.image b/crates/crust-core/tests/data/import_baselines/default_links_usda-fa4bfc17658672ca-1.image new file mode 100644 index 000000000..6a65b36f8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/default_links_usda-fa4bfc17658672ca-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 97e363ac34854a58 diff --git a/crates/crust-core/tests/data/import_baselines/degenerate_lights_usda-c119df2817a52e22-1.image b/crates/crust-core/tests/data/import_baselines/degenerate_lights_usda-c119df2817a52e22-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/degenerate_lights_usda-c119df2817a52e22-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dicing_alone_ref_usda-ad2f6d6f9f5a6b34-1.image b/crates/crust-core/tests/data/import_baselines/dicing_alone_ref_usda-ad2f6d6f9f5a6b34-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_alone_ref_usda-ad2f6d6f9f5a6b34-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dicing_alone_usda-d2a904287b895157-1.image b/crates/crust-core/tests/data/import_baselines/dicing_alone_usda-d2a904287b895157-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_alone_usda-d2a904287b895157-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dicing_near_usda-2b8cc53942e05573-1.image b/crates/crust-core/tests/data/import_baselines/dicing_near_usda-2b8cc53942e05573-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_near_usda-2b8cc53942e05573-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dicing_nothing_usda-02863a7cb9ea2edb-1.image b/crates/crust-core/tests/data/import_baselines/dicing_nothing_usda-02863a7cb9ea2edb-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_nothing_usda-02863a7cb9ea2edb-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dicing_product_diced_usda-bde5502fcf67625f-1.image b/crates/crust-core/tests/data/import_baselines/dicing_product_diced_usda-bde5502fcf67625f-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_product_diced_usda-bde5502fcf67625f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dicing_product_ref_cam_usda-206ed631706e669f-1.image b/crates/crust-core/tests/data/import_baselines/dicing_product_ref_cam_usda-206ed631706e669f-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_product_ref_cam_usda-206ed631706e669f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dicing_product_ref_near_usda-a7f21d55b08b22eb-1.image b/crates/crust-core/tests/data/import_baselines/dicing_product_ref_near_usda-a7f21d55b08b22eb-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_product_ref_near_usda-a7f21d55b08b22eb-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dicing_product_usda-0fe0e77ccc289c1f-1.image b/crates/crust-core/tests/data/import_baselines/dicing_product_usda-0fe0e77ccc289c1f-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_product_usda-0fe0e77ccc289c1f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dicing_property_usda-541c1a7591a9b5c0-1.image b/crates/crust-core/tests/data/import_baselines/dicing_property_usda-541c1a7591a9b5c0-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_property_usda-541c1a7591a9b5c0-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dicing_ref_usda-450597df8121a96c-1.image b/crates/crust-core/tests/data/import_baselines/dicing_ref_usda-450597df8121a96c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_ref_usda-450597df8121a96c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dicing_self_usda-9d54e5a1b138ff5e-1.image b/crates/crust-core/tests/data/import_baselines/dicing_self_usda-9d54e5a1b138ff5e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_self_usda-9d54e5a1b138ff5e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dicing_through_near_usda-43e145636209967d-1.image b/crates/crust-core/tests/data/import_baselines/dicing_through_near_usda-43e145636209967d-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_through_near_usda-43e145636209967d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dicing_unauthored_usda-d941af55d3f95425-1.image b/crates/crust-core/tests/data/import_baselines/dicing_unauthored_usda-d941af55d3f95425-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_unauthored_usda-d941af55d3f95425-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dicing_unnamed_usda-1911d7362c693947-1.image b/crates/crust-core/tests/data/import_baselines/dicing_unnamed_usda-1911d7362c693947-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_unnamed_usda-1911d7362c693947-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dicing_xform_usda-fdb39a50b9314e69-1.image b/crates/crust-core/tests/data/import_baselines/dicing_xform_usda-fdb39a50b9314e69-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dicing_xform_usda-fdb39a50b9314e69-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/disabled_broken_usda-3e31009d90ef26ec-1.image b/crates/crust-core/tests/data/import_baselines/disabled_broken_usda-3e31009d90ef26ec-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/disabled_broken_usda-3e31009d90ef26ec-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/disk_light_usda-720389dc27e2a4c4-1.image b/crates/crust-core/tests/data/import_baselines/disk_light_usda-720389dc27e2a4c4-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/disk_light_usda-720389dc27e2a4c4-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/displaced_rest_usda-d70fe6fb257dd183-1.image b/crates/crust-core/tests/data/import_baselines/displaced_rest_usda-d70fe6fb257dd183-1.image new file mode 100644 index 000000000..cca888b82 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/displaced_rest_usda-d70fe6fb257dd183-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off f4dbd2e055480e73 diff --git a/crates/crust-core/tests/data/import_baselines/displacement_usda-03e54e80075ba30c-1.image b/crates/crust-core/tests/data/import_baselines/displacement_usda-03e54e80075ba30c-1.image new file mode 100644 index 000000000..59b96f9ae --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/displacement_usda-03e54e80075ba30c-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 88b3f84e2b23bbb8 diff --git a/crates/crust-core/tests/data/import_baselines/displacement_usda-180936ed9cbacb0b-1.image b/crates/crust-core/tests/data/import_baselines/displacement_usda-180936ed9cbacb0b-1.image new file mode 100644 index 000000000..340f20ea5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/displacement_usda-180936ed9cbacb0b-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off f6b0646028628054 diff --git a/crates/crust-core/tests/data/import_baselines/displacement_usda-4db664e792f21a27-1.image b/crates/crust-core/tests/data/import_baselines/displacement_usda-4db664e792f21a27-1.image new file mode 100644 index 000000000..340f20ea5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/displacement_usda-4db664e792f21a27-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off f6b0646028628054 diff --git a/crates/crust-core/tests/data/import_baselines/displacement_usda-5e2aa9f4f1dfd37e-1.image b/crates/crust-core/tests/data/import_baselines/displacement_usda-5e2aa9f4f1dfd37e-1.image new file mode 100644 index 000000000..340f20ea5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/displacement_usda-5e2aa9f4f1dfd37e-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off f6b0646028628054 diff --git a/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-1.image b/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-1.image new file mode 100644 index 000000000..59b96f9ae --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 88b3f84e2b23bbb8 diff --git a/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-2.image b/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-2.image new file mode 100644 index 000000000..59b96f9ae --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-2.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 88b3f84e2b23bbb8 diff --git a/crates/crust-core/tests/data/import_baselines/dof_default_lens_usda-c199c396bb781cc0-1.image b/crates/crust-core/tests/data/import_baselines/dof_default_lens_usda-c199c396bb781cc0-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_default_lens_usda-c199c396bb781cc0-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dof_default_usda-57e78e0586982b2f-1.image b/crates/crust-core/tests/data/import_baselines/dof_default_usda-57e78e0586982b2f-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_default_usda-57e78e0586982b2f-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/dof_disabled_bad_unit_usda-b76c543fc6398eaa-1.image b/crates/crust-core/tests/data/import_baselines/dof_disabled_bad_unit_usda-b76c543fc6398eaa-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_disabled_bad_unit_usda-b76c543fc6398eaa-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dof_disabled_usda-420b407ea5317d3e-1.image b/crates/crust-core/tests/data/import_baselines/dof_disabled_usda-420b407ea5317d3e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_disabled_usda-420b407ea5317d3e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dof_fallback_lens_usda-bff40e44436746b1-1.image b/crates/crust-core/tests/data/import_baselines/dof_fallback_lens_usda-bff40e44436746b1-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_fallback_lens_usda-bff40e44436746b1-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dof_fallback_pinhole_usda-c69160a93b244f8f-1.image b/crates/crust-core/tests/data/import_baselines/dof_fallback_pinhole_usda-c69160a93b244f8f-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_fallback_pinhole_usda-c69160a93b244f8f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dof_product_off_usda-ec7655fdc64080b7-1.image b/crates/crust-core/tests/data/import_baselines/dof_product_off_usda-ec7655fdc64080b7-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_product_off_usda-ec7655fdc64080b7-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-642bf95d97820f23-1.image b/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-642bf95d97820f23-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-642bf95d97820f23-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-9b87c5f936703494-1.image b/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-9b87c5f936703494-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-9b87c5f936703494-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dof_products_differ_usda-a379642f2edc4361-1.image b/crates/crust-core/tests/data/import_baselines/dof_products_differ_usda-a379642f2edc4361-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_products_differ_usda-a379642f2edc4361-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dof_products_disagree_usda-8e35ec3ea864f596-1.image b/crates/crust-core/tests/data/import_baselines/dof_products_disagree_usda-8e35ec3ea864f596-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_products_disagree_usda-8e35ec3ea864f596-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dof_settings_only_usda-dc3a7d2e89c34444-1.image b/crates/crust-core/tests/data/import_baselines/dof_settings_only_usda-dc3a7d2e89c34444-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dof_settings_only_usda-dc3a7d2e89c34444-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-06f3801d332f35bd-1.image b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-06f3801d332f35bd-1.image new file mode 100644 index 000000000..52834a60b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-06f3801d332f35bd-1.image @@ -0,0 +1 @@ +240x136 16spp clamp-off 9fe71171392c329e diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-1.image b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-1.image new file mode 100644 index 000000000..52834a60b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-1.image @@ -0,0 +1 @@ +240x136 16spp clamp-off 9fe71171392c329e diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-2.image b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-2.image new file mode 100644 index 000000000..52834a60b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-2.image @@ -0,0 +1 @@ +240x136 16spp clamp-off 9fe71171392c329e diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-2d5a500fad6dcfad-1.image b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-2d5a500fad6dcfad-1.image new file mode 100644 index 000000000..52834a60b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-2d5a500fad6dcfad-1.image @@ -0,0 +1 @@ +240x136 16spp clamp-off 9fe71171392c329e diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-4222ab94f00b4ba4-1.image b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-4222ab94f00b4ba4-1.image new file mode 100644 index 000000000..52834a60b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-4222ab94f00b4ba4-1.image @@ -0,0 +1 @@ +240x136 16spp clamp-off 9fe71171392c329e diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-43c08f98bb3b74e6-1.image b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-43c08f98bb3b74e6-1.image new file mode 100644 index 000000000..e8e2259fa --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-43c08f98bb3b74e6-1.image @@ -0,0 +1 @@ +240x136 16spp clamp-off 1b57b2888ce8eb35 diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-7b71c02186033a9a-1.image b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-7b71c02186033a9a-1.image new file mode 100644 index 000000000..52834a60b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-7b71c02186033a9a-1.image @@ -0,0 +1 @@ +240x136 16spp clamp-off 9fe71171392c329e diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-88f2729f3b3188bb-1.image b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-88f2729f3b3188bb-1.image new file mode 100644 index 000000000..52834a60b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-88f2729f3b3188bb-1.image @@ -0,0 +1 @@ +240x136 16spp clamp-off 9fe71171392c329e diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-9d834df56ca3b1ac-1.image b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-9d834df56ca3b1ac-1.image new file mode 100644 index 000000000..52834a60b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-9d834df56ca3b1ac-1.image @@ -0,0 +1 @@ +240x136 16spp clamp-off 9fe71171392c329e diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-af5d67f7909dc65a-1.image b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-af5d67f7909dc65a-1.image new file mode 100644 index 000000000..e8e2259fa --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-af5d67f7909dc65a-1.image @@ -0,0 +1 @@ +240x136 16spp clamp-off 1b57b2888ce8eb35 diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b592bc76e2706492-1.image b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b592bc76e2706492-1.image new file mode 100644 index 000000000..52834a60b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b592bc76e2706492-1.image @@ -0,0 +1 @@ +240x136 16spp clamp-off 9fe71171392c329e diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b9dc71e44c528187-1.image b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b9dc71e44c528187-1.image new file mode 100644 index 000000000..52834a60b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b9dc71e44c528187-1.image @@ -0,0 +1 @@ +240x136 16spp clamp-off 9fe71171392c329e diff --git a/crates/crust-core/tests/data/import_baselines/dome_camera_off_usda-b5a9eac417c3bdbb-1.image b/crates/crust-core/tests/data/import_baselines/dome_camera_off_usda-b5a9eac417c3bdbb-1.image new file mode 100644 index 000000000..d40488b39 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_camera_off_usda-b5a9eac417c3bdbb-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off e0c982d4061fc1d3 diff --git a/crates/crust-core/tests/data/import_baselines/dome_crust_wins_usda-0bfe2eb5bc4f83c5-1.image b/crates/crust-core/tests/data/import_baselines/dome_crust_wins_usda-0bfe2eb5bc4f83c5-1.image new file mode 100644 index 000000000..b1fb14759 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_crust_wins_usda-0bfe2eb5bc4f83c5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 1e3a61612e840325 diff --git a/crates/crust-core/tests/data/import_baselines/dome_default_usda-7c13b46b00b734f8-1.image b/crates/crust-core/tests/data/import_baselines/dome_default_usda-7c13b46b00b734f8-1.image new file mode 100644 index 000000000..b1fb14759 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_default_usda-7c13b46b00b734f8-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 1e3a61612e840325 diff --git a/crates/crust-core/tests/data/import_baselines/dome_exclude_bsdf_usda-fb9c2dcc2b05783e-1.image b/crates/crust-core/tests/data/import_baselines/dome_exclude_bsdf_usda-fb9c2dcc2b05783e-1.image new file mode 100644 index 000000000..dc6d20b19 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_exclude_bsdf_usda-fb9c2dcc2b05783e-1.image @@ -0,0 +1 @@ +32x32 16spp clamp-off dc1bff10f92a7a6f diff --git a/crates/crust-core/tests/data/import_baselines/dome_exclude_power_usda-a488dc90e33bf33b-1.image b/crates/crust-core/tests/data/import_baselines/dome_exclude_power_usda-a488dc90e33bf33b-1.image new file mode 100644 index 000000000..fe922edee --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_exclude_power_usda-a488dc90e33bf33b-1.image @@ -0,0 +1 @@ +32x32 16spp clamp-off a717d1a2f800657d diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_0_pole_scene_z_up_usda-4a3a839d045f42ae-1.image b/crates/crust-core/tests/data/import_baselines/dome_light_0_pole_scene_z_up_usda-4a3a839d045f42ae-1.image new file mode 100644 index 000000000..b58239ea0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_0_pole_scene_z_up_usda-4a3a839d045f42ae-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 4f3e257129109575 diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_0_reference_usda-e3c0f10234d60e6f-1.image b/crates/crust-core/tests/data/import_baselines/dome_light_0_reference_usda-e3c0f10234d60e6f-1.image new file mode 100644 index 000000000..b58239ea0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_0_reference_usda-e3c0f10234d60e6f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 4f3e257129109575 diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_y_usda-b39274d8389c93ec-1.image b/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_y_usda-b39274d8389c93ec-1.image new file mode 100644 index 000000000..b58239ea0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_y_usda-b39274d8389c93ec-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 4f3e257129109575 diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_z_usda-3ab2d43568c3a9ca-1.image b/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_z_usda-3ab2d43568c3a9ca-1.image new file mode 100644 index 000000000..271ed6f77 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_z_usda-3ab2d43568c3a9ca-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 1d3504db8673b1f5 diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_rotated_usda-96a7a52ba96f792f-1.image b/crates/crust-core/tests/data/import_baselines/dome_light_1_rotated_usda-96a7a52ba96f792f-1.image new file mode 100644 index 000000000..3e2f8e3be --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_rotated_usda-96a7a52ba96f792f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 320719aea0a218c5 diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_no_up_usda-db7f3549433e3ca1-1.image b/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_no_up_usda-db7f3549433e3ca1-1.image new file mode 100644 index 000000000..b58239ea0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_no_up_usda-db7f3549433e3ca1-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 4f3e257129109575 diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_y_up_usda-cef3793797de068b-1.image b/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_y_up_usda-cef3793797de068b-1.image new file mode 100644 index 000000000..b58239ea0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_y_up_usda-cef3793797de068b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 4f3e257129109575 diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_usda-771e6d7e193401ac-1.image b/crates/crust-core/tests/data/import_baselines/dome_light_1_usda-771e6d7e193401ac-1.image new file mode 100644 index 000000000..e764f739a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_usda-771e6d7e193401ac-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 143f59da8403ab25 diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_z_up_usda-d2385f77c8ec6eb4-1.image b/crates/crust-core/tests/data/import_baselines/dome_light_1_z_up_usda-d2385f77c8ec6eb4-1.image new file mode 100644 index 000000000..271ed6f77 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_z_up_usda-d2385f77c8ec6eb4-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 1d3504db8673b1f5 diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_usda-f46a39c15abcc98f-1.image b/crates/crust-core/tests/data/import_baselines/dome_light_usda-f46a39c15abcc98f-1.image new file mode 100644 index 000000000..bdd1eaa08 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_light_usda-f46a39c15abcc98f-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off de1bef126e989fb7 diff --git a/crates/crust-core/tests/data/import_baselines/dome_no_assets_usda-b8800e7204db6d4a-1.image b/crates/crust-core/tests/data/import_baselines/dome_no_assets_usda-b8800e7204db6d4a-1.image new file mode 100644 index 000000000..b1fb14759 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_no_assets_usda-b8800e7204db6d4a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 1e3a61612e840325 diff --git a/crates/crust-core/tests/data/import_baselines/dome_power_usda-abfbd64e964dc44d-1.image b/crates/crust-core/tests/data/import_baselines/dome_power_usda-abfbd64e964dc44d-1.image new file mode 100644 index 000000000..bdd1eaa08 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_power_usda-abfbd64e964dc44d-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off de1bef126e989fb7 diff --git a/crates/crust-core/tests/data/import_baselines/dome_ri_camera_usda-acf95ad397fe1930-1.image b/crates/crust-core/tests/data/import_baselines/dome_ri_camera_usda-acf95ad397fe1930-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/dome_ri_camera_usda-acf95ad397fe1930-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/domelight_usda-22dcdc7630c52071-1.image b/crates/crust-core/tests/data/import_baselines/domelight_usda-22dcdc7630c52071-1.image new file mode 100644 index 000000000..b1f697624 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/domelight_usda-22dcdc7630c52071-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 024d1057546527f7 diff --git a/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-1.image b/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-1.image new file mode 100644 index 000000000..35dcfa764 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 64391f5099bf45b3 diff --git a/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-2.image b/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-2.image new file mode 100644 index 000000000..35dcfa764 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-2.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 64391f5099bf45b3 diff --git a/crates/crust-core/tests/data/import_baselines/domelight_usda-5a2a25c11957ed70-1.image b/crates/crust-core/tests/data/import_baselines/domelight_usda-5a2a25c11957ed70-1.image new file mode 100644 index 000000000..35dcfa764 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/domelight_usda-5a2a25c11957ed70-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 64391f5099bf45b3 diff --git a/crates/crust-core/tests/data/import_baselines/domelight_usda-5d8f200125b9fd09-1.image b/crates/crust-core/tests/data/import_baselines/domelight_usda-5d8f200125b9fd09-1.image new file mode 100644 index 000000000..d13036c6c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/domelight_usda-5d8f200125b9fd09-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 489aedbe254cf3db diff --git a/crates/crust-core/tests/data/import_baselines/domelight_usda-7f00a6c7fd4959fa-1.image b/crates/crust-core/tests/data/import_baselines/domelight_usda-7f00a6c7fd4959fa-1.image new file mode 100644 index 000000000..35dcfa764 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/domelight_usda-7f00a6c7fd4959fa-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 64391f5099bf45b3 diff --git a/crates/crust-core/tests/data/import_baselines/drop_usda-214f7b543bee6df1-1.image b/crates/crust-core/tests/data/import_baselines/drop_usda-214f7b543bee6df1-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/drop_usda-214f7b543bee6df1-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/drop_usda-4c62c449da4ae2d3-1.image b/crates/crust-core/tests/data/import_baselines/drop_usda-4c62c449da4ae2d3-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/drop_usda-4c62c449da4ae2d3-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/edge_false_usda-dfb19c6c90615a56-1.image b/crates/crust-core/tests/data/import_baselines/edge_false_usda-dfb19c6c90615a56-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edge_false_usda-dfb19c6c90615a56-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/edge_true_usda-bddf6fe338522a86-1.image b/crates/crust-core/tests/data/import_baselines/edge_true_usda-bddf6fe338522a86-1.image new file mode 100644 index 000000000..2f5da29dd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edge_true_usda-bddf6fe338522a86-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off 99ad996344236215 diff --git a/crates/crust-core/tests/data/import_baselines/edges_usda-9743a0d0ff86dafe-1.image b/crates/crust-core/tests/data/import_baselines/edges_usda-9743a0d0ff86dafe-1.image new file mode 100644 index 000000000..4a30c4d68 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edges_usda-9743a0d0ff86dafe-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off 04cf6161c383092a diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-077b57f7b0804f19-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-077b57f7b0804f19-1.image new file mode 100644 index 000000000..1ac592459 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-077b57f7b0804f19-1.image @@ -0,0 +1 @@ +32x32 16spp clamp-off e9cfe8ea4fd880fc diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-085dfd17ac95282d-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-085dfd17ac95282d-1.image new file mode 100644 index 000000000..aa809d36e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-085dfd17ac95282d-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 8505746c918f1879 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-188f318a9146ce97-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-188f318a9146ce97-1.image new file mode 100644 index 000000000..8200e2f81 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-188f318a9146ce97-1.image @@ -0,0 +1 @@ +40x24 16spp clamp-off 1966b9063f1b648f diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-1966e17597c3de42-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-1966e17597c3de42-1.image new file mode 100644 index 000000000..79bc428f3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-1966e17597c3de42-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 0956f9aa6aa6e7f9 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-19a787b3bcc74617-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-19a787b3bcc74617-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-19a787b3bcc74617-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-23003ea81a2d2024-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-23003ea81a2d2024-1.image new file mode 100644 index 000000000..b0e6d1897 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-23003ea81a2d2024-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off 284489ddb79b7eed diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-23fb1cff1e547a51-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-23fb1cff1e547a51-1.image new file mode 100644 index 000000000..51107fcdd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-23fb1cff1e547a51-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off fbca99e6d6c9aaa1 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-24cc8ef3649b336a-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-24cc8ef3649b336a-1.image new file mode 100644 index 000000000..1ac592459 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-24cc8ef3649b336a-1.image @@ -0,0 +1 @@ +32x32 16spp clamp-off e9cfe8ea4fd880fc diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-30c8f1f2b1117913-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-30c8f1f2b1117913-1.image new file mode 100644 index 000000000..35947da35 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-30c8f1f2b1117913-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off cc1ed1cd405cee06 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-339a76e50715bbe3-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-339a76e50715bbe3-1.image new file mode 100644 index 000000000..95603ce7c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-339a76e50715bbe3-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 6403d1e8ae317b59 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-3450a9d6105e89a6-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-3450a9d6105e89a6-1.image new file mode 100644 index 000000000..a84e5dad3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-3450a9d6105e89a6-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off 8afb97f1fcc0a4b0 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-411d0a61690b9e71-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-411d0a61690b9e71-1.image new file mode 100644 index 000000000..cbda222ce --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-411d0a61690b9e71-1.image @@ -0,0 +1 @@ +40x24 16spp clamp-off c2a9124ddf153b95 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-43a14b5e78154dda-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-43a14b5e78154dda-1.image new file mode 100644 index 000000000..9378fb72b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-43a14b5e78154dda-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off c163d232d4decad1 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-483e16501c86632a-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-483e16501c86632a-1.image new file mode 100644 index 000000000..fcaffe734 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-483e16501c86632a-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off 0d773aac90551cea diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-4966b50c696e8080-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-4966b50c696e8080-1.image new file mode 100644 index 000000000..360e9305d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-4966b50c696e8080-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 24452f50ab457022 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-4cf921963a4325e9-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-4cf921963a4325e9-1.image new file mode 100644 index 000000000..35947da35 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-4cf921963a4325e9-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off cc1ed1cd405cee06 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-4d3c65f04d4eaea9-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-4d3c65f04d4eaea9-1.image new file mode 100644 index 000000000..5688433a3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-4d3c65f04d4eaea9-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 7c5b1caced942179 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-4dd694c9b20daa77-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-4dd694c9b20daa77-1.image new file mode 100644 index 000000000..e5718bb57 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-4dd694c9b20daa77-1.image @@ -0,0 +1 @@ +32x18 16spp clamp-off ddf40d7a272e6781 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-516372ff4968411b-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-516372ff4968411b-1.image new file mode 100644 index 000000000..fc580b73d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-516372ff4968411b-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 366d57a699b8e531 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-53a62fecc28e0de7-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-53a62fecc28e0de7-1.image new file mode 100644 index 000000000..fc580b73d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-53a62fecc28e0de7-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 366d57a699b8e531 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-5521dd197a77f33e-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-5521dd197a77f33e-1.image new file mode 100644 index 000000000..6484a8a34 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-5521dd197a77f33e-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 62de9b49d7ab19be diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-57fa1e33af4efac6-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-57fa1e33af4efac6-1.image new file mode 100644 index 000000000..66eab852f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-57fa1e33af4efac6-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 585e4cf6144cf63e diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-1.image new file mode 100644 index 000000000..95603ce7c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 6403d1e8ae317b59 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-2.image b/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-2.image new file mode 100644 index 000000000..95603ce7c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-2.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 6403d1e8ae317b59 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-5f2834619e774ab4-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-5f2834619e774ab4-1.image new file mode 100644 index 000000000..61ffa56d4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-5f2834619e774ab4-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 3072ee50a874d8ba diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-6019827f6d635824-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-6019827f6d635824-1.image new file mode 100644 index 000000000..afbe2bf68 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-6019827f6d635824-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off da848a57e8cc8f21 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-65b79e09c14be76d-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-65b79e09c14be76d-1.image new file mode 100644 index 000000000..bbf584960 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-65b79e09c14be76d-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 9e4982191bc1cf10 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-662e56b1a93d2d66-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-662e56b1a93d2d66-1.image new file mode 100644 index 000000000..e60074db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-662e56b1a93d2d66-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off 7efb7ee2a8cd5748 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-6deff31ef60f6033-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-6deff31ef60f6033-1.image new file mode 100644 index 000000000..51107fcdd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-6deff31ef60f6033-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off fbca99e6d6c9aaa1 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-7239cb83230ea59e-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-7239cb83230ea59e-1.image new file mode 100644 index 000000000..6dce74c13 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-7239cb83230ea59e-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e648a58ccb35ae3b diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-786eedaaaa2108bd-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-786eedaaaa2108bd-1.image new file mode 100644 index 000000000..79bc428f3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-786eedaaaa2108bd-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 0956f9aa6aa6e7f9 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-1.image new file mode 100644 index 000000000..6dce74c13 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e648a58ccb35ae3b diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-2.image b/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-2.image new file mode 100644 index 000000000..6dce74c13 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-2.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e648a58ccb35ae3b diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-939ae62aa1013f1f-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-939ae62aa1013f1f-1.image new file mode 100644 index 000000000..aa809d36e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-939ae62aa1013f1f-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 8505746c918f1879 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-9785472850c84b20-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-9785472850c84b20-1.image new file mode 100644 index 000000000..e5718bb57 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-9785472850c84b20-1.image @@ -0,0 +1 @@ +32x18 16spp clamp-off ddf40d7a272e6781 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-9f3ec2b0f2000d47-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-9f3ec2b0f2000d47-1.image new file mode 100644 index 000000000..31ddc1abc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-9f3ec2b0f2000d47-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off ae7f64651dca213b diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-a15a160797d16740-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-a15a160797d16740-1.image new file mode 100644 index 000000000..e5718bb57 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-a15a160797d16740-1.image @@ -0,0 +1 @@ +32x18 16spp clamp-off ddf40d7a272e6781 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-a15f50a6d270c4d6-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-a15f50a6d270c4d6-1.image new file mode 100644 index 000000000..d1a3a8119 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-a15f50a6d270c4d6-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 5ee39cdf8a8edcc5 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-a2d6c26d716466c1-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-a2d6c26d716466c1-1.image new file mode 100644 index 000000000..aa809d36e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-a2d6c26d716466c1-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 8505746c918f1879 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-a693bfb772c311e2-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-a693bfb772c311e2-1.image new file mode 100644 index 000000000..79bc428f3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-a693bfb772c311e2-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 0956f9aa6aa6e7f9 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-a9ea182c81eccd64-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-a9ea182c81eccd64-1.image new file mode 100644 index 000000000..b7e0e18ed --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-a9ea182c81eccd64-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off 4ecd351dabb22c67 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-aafb5513a53fa62e-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-aafb5513a53fa62e-1.image new file mode 100644 index 000000000..35947da35 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-aafb5513a53fa62e-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off cc1ed1cd405cee06 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-b0da370b544b77b5-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-b0da370b544b77b5-1.image new file mode 100644 index 000000000..35947da35 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-b0da370b544b77b5-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off cc1ed1cd405cee06 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-b14405d5563d3059-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-b14405d5563d3059-1.image new file mode 100644 index 000000000..535b69736 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-b14405d5563d3059-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 620af06ddc2a7be3 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-b271371e2517722b-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-b271371e2517722b-1.image new file mode 100644 index 000000000..e5718bb57 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-b271371e2517722b-1.image @@ -0,0 +1 @@ +32x18 16spp clamp-off ddf40d7a272e6781 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-b80eb10c2ba34178-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-b80eb10c2ba34178-1.image new file mode 100644 index 000000000..735722fce --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-b80eb10c2ba34178-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 0e015610d3eeef0a diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-b8d0f20bfaa82329-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-b8d0f20bfaa82329-1.image new file mode 100644 index 000000000..6b6b0c40a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-b8d0f20bfaa82329-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 5e901867aef8c50b diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-c0b43128dd170a60-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-c0b43128dd170a60-1.image new file mode 100644 index 000000000..40e1e94d3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-c0b43128dd170a60-1.image @@ -0,0 +1 @@ +40x24 16spp clamp-off 554d014c55de3865 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-c1012e35073052d4-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-c1012e35073052d4-1.image new file mode 100644 index 000000000..6b6b0c40a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-c1012e35073052d4-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 5e901867aef8c50b diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-c5e06d108f13878a-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-c5e06d108f13878a-1.image new file mode 100644 index 000000000..aa809d36e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-c5e06d108f13878a-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 8505746c918f1879 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-c6a1743cb004bfc8-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-c6a1743cb004bfc8-1.image new file mode 100644 index 000000000..aa809d36e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-c6a1743cb004bfc8-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 8505746c918f1879 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-cfa1cdf26c62d04e-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-cfa1cdf26c62d04e-1.image new file mode 100644 index 000000000..1ac592459 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-cfa1cdf26c62d04e-1.image @@ -0,0 +1 @@ +32x32 16spp clamp-off e9cfe8ea4fd880fc diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-d51c63f9aa3e9706-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-d51c63f9aa3e9706-1.image new file mode 100644 index 000000000..6484a8a34 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-d51c63f9aa3e9706-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 62de9b49d7ab19be diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-d6c1dd24567db6e1-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-d6c1dd24567db6e1-1.image new file mode 100644 index 000000000..3f9e769f9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-d6c1dd24567db6e1-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off d844fdc43565b494 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-dcd2a1d09ecabfda-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-dcd2a1d09ecabfda-1.image new file mode 100644 index 000000000..b7e0e18ed --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-dcd2a1d09ecabfda-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off 4ecd351dabb22c67 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-e3a820d4d01acabc-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-e3a820d4d01acabc-1.image new file mode 100644 index 000000000..ac0b74dfc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-e3a820d4d01acabc-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off dbb5b514419e84e6 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-ea33d0579957ea29-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-ea33d0579957ea29-1.image new file mode 100644 index 000000000..41d4f00f9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-ea33d0579957ea29-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off faa99b7bb6e23d99 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-ec4aae2ab8a0f13f-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-ec4aae2ab8a0f13f-1.image new file mode 100644 index 000000000..92640d30e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-ec4aae2ab8a0f13f-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 50e1e2729df388d4 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-efadd5d5ae9b33c8-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-efadd5d5ae9b33c8-1.image new file mode 100644 index 000000000..79bc428f3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-efadd5d5ae9b33c8-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 0956f9aa6aa6e7f9 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-f437292a1baf4562-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-f437292a1baf4562-1.image new file mode 100644 index 000000000..7a48acf75 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-f437292a1baf4562-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off a54b59df3f81253b diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-f7edbb7e619c3f5d-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-f7edbb7e619c3f5d-1.image new file mode 100644 index 000000000..95603ce7c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-f7edbb7e619c3f5d-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 6403d1e8ae317b59 diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-fdfde88486c6dc74-1.image b/crates/crust-core/tests/data/import_baselines/edits_usda-fdfde88486c6dc74-1.image new file mode 100644 index 000000000..1f56f38e9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-fdfde88486c6dc74-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 27a149a4b6dbf0ec diff --git a/crates/crust-core/tests/data/import_baselines/empty_source_name_usda-acd517e82c0f53e1-1.image b/crates/crust-core/tests/data/import_baselines/empty_source_name_usda-acd517e82c0f53e1-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/empty_source_name_usda-acd517e82c0f53e1-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/empty_usda-c1bba32cb87c83e9-1.image b/crates/crust-core/tests/data/import_baselines/empty_usda-c1bba32cb87c83e9-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/empty_usda-c1bba32cb87c83e9-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/exposure_0_usda-c142af23c7dc6585-1.image b/crates/crust-core/tests/data/import_baselines/exposure_0_usda-c142af23c7dc6585-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/exposure_0_usda-c142af23c7dc6585-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/exposure_2_usda-1ae682494eb4e641-1.image b/crates/crust-core/tests/data/import_baselines/exposure_2_usda-1ae682494eb4e641-1.image new file mode 100644 index 000000000..dfe2df4cf --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/exposure_2_usda-1ae682494eb4e641-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off 988b6c8a0d57defd diff --git a/crates/crust-core/tests/data/import_baselines/exposure_usda-0139c7326dc66b4b-1.image b/crates/crust-core/tests/data/import_baselines/exposure_usda-0139c7326dc66b4b-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/exposure_usda-0139c7326dc66b4b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/expression_usda-843ebd908965795b-1.image b/crates/crust-core/tests/data/import_baselines/expression_usda-843ebd908965795b-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/expression_usda-843ebd908965795b-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/expression_usda-e90ffc3af7a5e58d-1.image b/crates/crust-core/tests/data/import_baselines/expression_usda-e90ffc3af7a5e58d-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/expression_usda-e90ffc3af7a5e58d-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/fallback_usda-0dcbe995ba9d33f5-1.image b/crates/crust-core/tests/data/import_baselines/fallback_usda-0dcbe995ba9d33f5-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fallback_usda-0dcbe995ba9d33f5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/fallbacks_usda-19de7bd844b31582-1.image b/crates/crust-core/tests/data/import_baselines/fallbacks_usda-19de7bd844b31582-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fallbacks_usda-19de7bd844b31582-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/far_light_blocked_usda-ad271da815e04f1e-1.image b/crates/crust-core/tests/data/import_baselines/far_light_blocked_usda-ad271da815e04f1e-1.image new file mode 100644 index 000000000..3872692e5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/far_light_blocked_usda-ad271da815e04f1e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off db5516db2665342e diff --git a/crates/crust-core/tests/data/import_baselines/far_light_clear_usda-4072c77a8d9198cd-1.image b/crates/crust-core/tests/data/import_baselines/far_light_clear_usda-4072c77a8d9198cd-1.image new file mode 100644 index 000000000..b191c3857 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/far_light_clear_usda-4072c77a8d9198cd-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 462318a5c0324fb1 diff --git a/crates/crust-core/tests/data/import_baselines/far_light_dimmed_usda-8a326222fcc01e51-1.image b/crates/crust-core/tests/data/import_baselines/far_light_dimmed_usda-8a326222fcc01e51-1.image new file mode 100644 index 000000000..f185f2a59 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/far_light_dimmed_usda-8a326222fcc01e51-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off b2598f4097135347 diff --git a/crates/crust-core/tests/data/import_baselines/filters_usda-c37f75b53580c4aa-1.image b/crates/crust-core/tests/data/import_baselines/filters_usda-c37f75b53580c4aa-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/filters_usda-c37f75b53580c4aa-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/five_usda-1346633108536d3b-1.image b/crates/crust-core/tests/data/import_baselines/five_usda-1346633108536d3b-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/five_usda-1346633108536d3b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/five_usda-98f6c3806296ddf6-1.image b/crates/crust-core/tests/data/import_baselines/five_usda-98f6c3806296ddf6-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/five_usda-98f6c3806296ddf6-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/fog_a_usda-c25ea86ab9b74771-1.image b/crates/crust-core/tests/data/import_baselines/fog_a_usda-c25ea86ab9b74771-1.image new file mode 100644 index 000000000..6c3ad9327 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_a_usda-c25ea86ab9b74771-1.image @@ -0,0 +1 @@ +4x4 16spp clamp-off f8f86a118c6a0a31 diff --git a/crates/crust-core/tests/data/import_baselines/fog_b_usda-d165df586bcbb934-1.image b/crates/crust-core/tests/data/import_baselines/fog_b_usda-d165df586bcbb934-1.image new file mode 100644 index 000000000..290379027 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_b_usda-d165df586bcbb934-1.image @@ -0,0 +1 @@ +4x4 16spp clamp-off 4e2b562253bec41b diff --git a/crates/crust-core/tests/data/import_baselines/fog_bsdf_usda-240806b5ed98a443-1.image b/crates/crust-core/tests/data/import_baselines/fog_bsdf_usda-240806b5ed98a443-1.image new file mode 100644 index 000000000..3a0368223 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_bsdf_usda-240806b5ed98a443-1.image @@ -0,0 +1 @@ +4x4 16spp clamp-off c724de9ac3637afa diff --git a/crates/crust-core/tests/data/import_baselines/fog_excluded_bsdf_usda-9ebfc40e02ef831f-1.image b/crates/crust-core/tests/data/import_baselines/fog_excluded_bsdf_usda-9ebfc40e02ef831f-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_excluded_bsdf_usda-9ebfc40e02ef831f-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/fog_excluded_power_usda-a0c514c4c53c3bc4-1.image b/crates/crust-core/tests/data/import_baselines/fog_excluded_power_usda-a0c514c4c53c3bc4-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_excluded_power_usda-a0c514c4c53c3bc4-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/fog_light_usda-ac22cdb8dae42d75-1.image b/crates/crust-core/tests/data/import_baselines/fog_light_usda-ac22cdb8dae42d75-1.image new file mode 100644 index 000000000..8db6ff346 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_light_usda-ac22cdb8dae42d75-1.image @@ -0,0 +1 @@ +4x4 16spp clamp-off bad54b942cedfc70 diff --git a/crates/crust-core/tests/data/import_baselines/fog_lit_bsdf_usda-4f776a8e8b44bb17-1.image b/crates/crust-core/tests/data/import_baselines/fog_lit_bsdf_usda-4f776a8e8b44bb17-1.image new file mode 100644 index 000000000..407defa02 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_lit_bsdf_usda-4f776a8e8b44bb17-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off e8dbc16899260ae4 diff --git a/crates/crust-core/tests/data/import_baselines/fog_lit_power_usda-cbade45198a3c38a-1.image b/crates/crust-core/tests/data/import_baselines/fog_lit_power_usda-cbade45198a3c38a-1.image new file mode 100644 index 000000000..23eac99a5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_lit_power_usda-cbade45198a3c38a-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off dc6e77ae5cc52076 diff --git a/crates/crust-core/tests/data/import_baselines/fog_power_usda-c8d64f5dff77f2e7-1.image b/crates/crust-core/tests/data/import_baselines/fog_power_usda-c8d64f5dff77f2e7-1.image new file mode 100644 index 000000000..7b93d0d16 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_power_usda-c8d64f5dff77f2e7-1.image @@ -0,0 +1 @@ +4x4 16spp clamp-off 081fb87b6f671fba diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-219213dd24619244-1.image b/crates/crust-core/tests/data/import_baselines/fog_usda-219213dd24619244-1.image new file mode 100644 index 000000000..7ec75be2e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-219213dd24619244-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off d35261095dde40ff diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-1.image b/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-1.image new file mode 100644 index 000000000..7ec75be2e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off d35261095dde40ff diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-2.image b/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-2.image new file mode 100644 index 000000000..7ec75be2e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-2.image @@ -0,0 +1 @@ +320x180 16spp clamp-off d35261095dde40ff diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-509c893b29b09cb4-1.image b/crates/crust-core/tests/data/import_baselines/fog_usda-509c893b29b09cb4-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-509c893b29b09cb4-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-54b48891484e98a0-1.image b/crates/crust-core/tests/data/import_baselines/fog_usda-54b48891484e98a0-1.image new file mode 100644 index 000000000..7ec75be2e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-54b48891484e98a0-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off d35261095dde40ff diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-643d53c126eee84d-1.image b/crates/crust-core/tests/data/import_baselines/fog_usda-643d53c126eee84d-1.image new file mode 100644 index 000000000..7ec75be2e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-643d53c126eee84d-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off d35261095dde40ff diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-1.image b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-1.image new file mode 100644 index 000000000..7ec75be2e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off d35261095dde40ff diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-2.image b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-2.image new file mode 100644 index 000000000..7ec75be2e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-2.image @@ -0,0 +1 @@ +320x180 16spp clamp-off d35261095dde40ff diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-3.image b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-3.image new file mode 100644 index 000000000..7ec75be2e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-3.image @@ -0,0 +1 @@ +320x180 16spp clamp-off d35261095dde40ff diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-4.image b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-4.image new file mode 100644 index 000000000..7ec75be2e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-4.image @@ -0,0 +1 @@ +320x180 16spp clamp-off d35261095dde40ff diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-5.image b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-5.image new file mode 100644 index 000000000..7ec75be2e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-5.image @@ -0,0 +1 @@ +320x180 16spp clamp-off d35261095dde40ff diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-c4be6859ecb41784-1.image b/crates/crust-core/tests/data/import_baselines/fog_usda-c4be6859ecb41784-1.image new file mode 100644 index 000000000..7ec75be2e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-c4be6859ecb41784-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off d35261095dde40ff diff --git a/crates/crust-core/tests/data/import_baselines/fog_wall_usda-d41794b69bda1696-1.image b/crates/crust-core/tests/data/import_baselines/fog_wall_usda-d41794b69bda1696-1.image new file mode 100644 index 000000000..3cde27029 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fog_wall_usda-d41794b69bda1696-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off e23cfbc57d681661 diff --git a/crates/crust-core/tests/data/import_baselines/foreign_mtlx_usda-1e9da30a7325ba81-1.image b/crates/crust-core/tests/data/import_baselines/foreign_mtlx_usda-1e9da30a7325ba81-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/foreign_mtlx_usda-1e9da30a7325ba81-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/fov_cm_usda-aeeac260878050ff-1.image b/crates/crust-core/tests/data/import_baselines/fov_cm_usda-aeeac260878050ff-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fov_cm_usda-aeeac260878050ff-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/fov_m_usda-b134eebe4c048026-1.image b/crates/crust-core/tests/data/import_baselines/fov_m_usda-b134eebe4c048026-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fov_m_usda-b134eebe4c048026-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/frustum_usda-78a6eed72a138fc6-1.image b/crates/crust-core/tests/data/import_baselines/frustum_usda-78a6eed72a138fc6-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/frustum_usda-78a6eed72a138fc6-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/full_a_light_s_shape_usda-ca8302fa13315ae0-1.image b/crates/crust-core/tests/data/import_baselines/full_a_light_s_shape_usda-ca8302fa13315ae0-1.image new file mode 100644 index 000000000..8496c7874 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_a_light_s_shape_usda-ca8302fa13315ae0-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 7ad539de7ff7244a diff --git a/crates/crust-core/tests/data/import_baselines/full_a_transform_usda-b99d3970dc3191b0-1.image b/crates/crust-core/tests/data/import_baselines/full_a_transform_usda-b99d3970dc3191b0-1.image new file mode 100644 index 000000000..5e1bf2e96 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_a_transform_usda-b99d3970dc3191b0-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off b0533d215a5cd138 diff --git a/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_rotate_usda-e8c2998b278e7b4c-1.image b/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_rotate_usda-e8c2998b278e7b4c-1.image new file mode 100644 index 000000000..fcaffe734 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_rotate_usda-e8c2998b278e7b4c-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off 0d773aac90551cea diff --git a/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_translate_usda-0b0bd3f1a63779cf-1.image b/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_translate_usda-0b0bd3f1a63779cf-1.image new file mode 100644 index 000000000..bf6242a3f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_translate_usda-0b0bd3f1a63779cf-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off af1f735b84e46b6c diff --git a/crates/crust-core/tests/data/import_baselines/full_adaptive_exposure_usda-6a1bc74cbd2099fa-1.image b/crates/crust-core/tests/data/import_baselines/full_adaptive_exposure_usda-6a1bc74cbd2099fa-1.image new file mode 100644 index 000000000..e3b32f859 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_adaptive_exposure_usda-6a1bc74cbd2099fa-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off 1f3143034888bf63 diff --git a/crates/crust-core/tests/data/import_baselines/full_adaptive_undo_exposure_usda-8cd035220544928f-1.image b/crates/crust-core/tests/data/import_baselines/full_adaptive_undo_exposure_usda-8cd035220544928f-1.image new file mode 100644 index 000000000..35947da35 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_adaptive_undo_exposure_usda-8cd035220544928f-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off cc1ed1cd405cee06 diff --git a/crates/crust-core/tests/data/import_baselines/full_base_colour_usda-185573627cdcf2a6-1.image b/crates/crust-core/tests/data/import_baselines/full_base_colour_usda-185573627cdcf2a6-1.image new file mode 100644 index 000000000..ab21343ca --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_base_colour_usda-185573627cdcf2a6-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off ff2beaa5102f00b8 diff --git a/crates/crust-core/tests/data/import_baselines/full_carried_fog_usda-b5397418f77073c1-1.image b/crates/crust-core/tests/data/import_baselines/full_carried_fog_usda-b5397418f77073c1-1.image new file mode 100644 index 000000000..bbf584960 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_carried_fog_usda-b5397418f77073c1-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 9e4982191bc1cf10 diff --git a/crates/crust-core/tests/data/import_baselines/full_changed_on_disk_usda-0c8b6f9bfb68059a-1.image b/crates/crust-core/tests/data/import_baselines/full_changed_on_disk_usda-0c8b6f9bfb68059a-1.image new file mode 100644 index 000000000..79ca9c1a0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_changed_on_disk_usda-0c8b6f9bfb68059a-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 6673c392f1d4262b diff --git a/crates/crust-core/tests/data/import_baselines/full_cornellbox_rotate_usda-76b2e5fb271f6c0c-1.image b/crates/crust-core/tests/data/import_baselines/full_cornellbox_rotate_usda-76b2e5fb271f6c0c-1.image new file mode 100644 index 000000000..93c96d061 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_cornellbox_rotate_usda-76b2e5fb271f6c0c-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 1916c797d2192e99 diff --git a/crates/crust-core/tests/data/import_baselines/full_cornellbox_translate_usda-ab7177593fd6f36b-1.image b/crates/crust-core/tests/data/import_baselines/full_cornellbox_translate_usda-ab7177593fd6f36b-1.image new file mode 100644 index 000000000..8ad243e38 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_cornellbox_translate_usda-ab7177593fd6f36b-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 6f05189de4721ea1 diff --git a/crates/crust-core/tests/data/import_baselines/full_demoted_K1_usda-e328a49ee95fd405-1.image b/crates/crust-core/tests/data/import_baselines/full_demoted_K1_usda-e328a49ee95fd405-1.image new file mode 100644 index 000000000..7538440af --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_demoted_K1_usda-e328a49ee95fd405-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off fbd0efbe7d828a88 diff --git a/crates/crust-core/tests/data/import_baselines/full_demoted_K4_usda-d0354a764756e3b4-1.image b/crates/crust-core/tests/data/import_baselines/full_demoted_K4_usda-d0354a764756e3b4-1.image new file mode 100644 index 000000000..2bcc3e7a3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_demoted_K4_usda-d0354a764756e3b4-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 55228b08e17a941e diff --git a/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field__bad_unit_usda-bf5aa1ce7a54f9e2-1.image b/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field__bad_unit_usda-bf5aa1ce7a54f9e2-1.image new file mode 100644 index 000000000..3f9e769f9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field__bad_unit_usda-bf5aa1ce7a54f9e2-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off d844fdc43565b494 diff --git a/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field_usda-61f50bc7be824751-1.image b/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field_usda-61f50bc7be824751-1.image new file mode 100644 index 000000000..3f9e769f9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field_usda-61f50bc7be824751-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off d844fdc43565b494 diff --git a/crates/crust-core/tests/data/import_baselines/full_dome_hidden_rotate_usda-82abbe3ed6112a4c-1.image b/crates/crust-core/tests/data/import_baselines/full_dome_hidden_rotate_usda-82abbe3ed6112a4c-1.image new file mode 100644 index 000000000..8737a33e9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_dome_hidden_rotate_usda-82abbe3ed6112a4c-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 05855210d395029f diff --git a/crates/crust-core/tests/data/import_baselines/full_dome_hidden_translate_usda-a8196d9e2f17ecbf-1.image b/crates/crust-core/tests/data/import_baselines/full_dome_hidden_translate_usda-a8196d9e2f17ecbf-1.image new file mode 100644 index 000000000..54ab33149 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_dome_hidden_translate_usda-a8196d9e2f17ecbf-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 4546a5d33ec76d38 diff --git a/crates/crust-core/tests/data/import_baselines/full_dome_texture_usda-c3e04747e405ac6e-1.image b/crates/crust-core/tests/data/import_baselines/full_dome_texture_usda-c3e04747e405ac6e-1.image new file mode 100644 index 000000000..01bfe0e42 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_dome_texture_usda-c3e04747e405ac6e-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off e91e50445f593725 diff --git a/crates/crust-core/tests/data/import_baselines/full_drop_usda-a61417609925c673-1.image b/crates/crust-core/tests/data/import_baselines/full_drop_usda-a61417609925c673-1.image new file mode 100644 index 000000000..c8fe26a37 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_drop_usda-a61417609925c673-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off ea22816a7e537ada diff --git a/crates/crust-core/tests/data/import_baselines/full_exposure_usda-fe83c794ae61f2a2-1.image b/crates/crust-core/tests/data/import_baselines/full_exposure_usda-fe83c794ae61f2a2-1.image new file mode 100644 index 000000000..cebc04326 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_exposure_usda-fe83c794ae61f2a2-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off bc40eaca1e9ff520 diff --git a/crates/crust-core/tests/data/import_baselines/full_fixed_usda-adb1781d64f694c8-1.image b/crates/crust-core/tests/data/import_baselines/full_fixed_usda-adb1781d64f694c8-1.image new file mode 100644 index 000000000..afc2d921e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_fixed_usda-adb1781d64f694c8-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 2caa34772f5d6a86 diff --git a/crates/crust-core/tests/data/import_baselines/full_groom_base_colour_usda-dd47b7dff78ee58e-1.image b/crates/crust-core/tests/data/import_baselines/full_groom_base_colour_usda-dd47b7dff78ee58e-1.image new file mode 100644 index 000000000..40e1e94d3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_groom_base_colour_usda-dd47b7dff78ee58e-1.image @@ -0,0 +1 @@ +40x24 16spp clamp-off 554d014c55de3865 diff --git a/crates/crust-core/tests/data/import_baselines/full_groom_primvar_undone_usda-318d40a5ee9b02d7-1.image b/crates/crust-core/tests/data/import_baselines/full_groom_primvar_undone_usda-318d40a5ee9b02d7-1.image new file mode 100644 index 000000000..40e1e94d3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_groom_primvar_undone_usda-318d40a5ee9b02d7-1.image @@ -0,0 +1 @@ +40x24 16spp clamp-off 554d014c55de3865 diff --git a/crates/crust-core/tests/data/import_baselines/full_groom_reads_its_primvar_usda-98bf5373a7d5697f-1.image b/crates/crust-core/tests/data/import_baselines/full_groom_reads_its_primvar_usda-98bf5373a7d5697f-1.image new file mode 100644 index 000000000..cbda222ce --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_groom_reads_its_primvar_usda-98bf5373a7d5697f-1.image @@ -0,0 +1 @@ +40x24 16spp clamp-off c2a9124ddf153b95 diff --git a/crates/crust-core/tests/data/import_baselines/full_linked_Fill_usda-cb706e1f9f991794-1.image b/crates/crust-core/tests/data/import_baselines/full_linked_Fill_usda-cb706e1f9f991794-1.image new file mode 100644 index 000000000..09ebed360 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_linked_Fill_usda-cb706e1f9f991794-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off 4288390158c0e799 diff --git a/crates/crust-core/tests/data/import_baselines/full_linked_Key_usda-db486cee2438fb3b-1.image b/crates/crust-core/tests/data/import_baselines/full_linked_Key_usda-db486cee2438fb3b-1.image new file mode 100644 index 000000000..a84e36bde --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_linked_Key_usda-db486cee2438fb3b-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off a9f5c6ebe65efbfc diff --git a/crates/crust-core/tests/data/import_baselines/full_linked_Rim_usda-2874a091d25b590b-1.image b/crates/crust-core/tests/data/import_baselines/full_linked_Rim_usda-2874a091d25b590b-1.image new file mode 100644 index 000000000..da645adc2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_linked_Rim_usda-2874a091d25b590b-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off 7977e0aa7c988c4b diff --git a/crates/crust-core/tests/data/import_baselines/full_linked_undo_Fill_usda-a93137db50fd28c8-1.image b/crates/crust-core/tests/data/import_baselines/full_linked_undo_Fill_usda-a93137db50fd28c8-1.image new file mode 100644 index 000000000..a84e36bde --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_linked_undo_Fill_usda-a93137db50fd28c8-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off a9f5c6ebe65efbfc diff --git a/crates/crust-core/tests/data/import_baselines/full_linked_undo_Key_usda-1239d0ab4241ef3f-1.image b/crates/crust-core/tests/data/import_baselines/full_linked_undo_Key_usda-1239d0ab4241ef3f-1.image new file mode 100644 index 000000000..e60074db9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_linked_undo_Key_usda-1239d0ab4241ef3f-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off 7efb7ee2a8cd5748 diff --git a/crates/crust-core/tests/data/import_baselines/full_linked_undo_Rim_usda-03ca7b9265c405f0-1.image b/crates/crust-core/tests/data/import_baselines/full_linked_undo_Rim_usda-03ca7b9265c405f0-1.image new file mode 100644 index 000000000..09ebed360 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_linked_undo_Rim_usda-03ca7b9265c405f0-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off 4288390158c0e799 diff --git a/crates/crust-core/tests/data/import_baselines/full_max_depth_usda-1164faed927e051e-1.image b/crates/crust-core/tests/data/import_baselines/full_max_depth_usda-1164faed927e051e-1.image new file mode 100644 index 000000000..7a2e4cc59 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_max_depth_usda-1164faed927e051e-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 650d02711795ba6e diff --git a/crates/crust-core/tests/data/import_baselines/full_meshes_rotate_usda-402e98fde9a693c4-1.image b/crates/crust-core/tests/data/import_baselines/full_meshes_rotate_usda-402e98fde9a693c4-1.image new file mode 100644 index 000000000..5f60ec729 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_meshes_rotate_usda-402e98fde9a693c4-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 2b7caada058a2573 diff --git a/crates/crust-core/tests/data/import_baselines/full_meshes_translate_usda-ee4192f2a802af39-1.image b/crates/crust-core/tests/data/import_baselines/full_meshes_translate_usda-ee4192f2a802af39-1.image new file mode 100644 index 000000000..b35cd56af --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_meshes_translate_usda-ee4192f2a802af39-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off c831c2dcae9ba81d diff --git a/crates/crust-core/tests/data/import_baselines/full_move_the_new_camera_usda-73f0dca6c14ef5d7-1.image b/crates/crust-core/tests/data/import_baselines/full_move_the_new_camera_usda-73f0dca6c14ef5d7-1.image new file mode 100644 index 000000000..2b3250cf8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_move_the_new_camera_usda-73f0dca6c14ef5d7-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 28f7da964e2fd644 diff --git a/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_rotate_usda-d7adb4497350da61-1.image b/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_rotate_usda-d7adb4497350da61-1.image new file mode 100644 index 000000000..d600cd666 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_rotate_usda-d7adb4497350da61-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 323335470c0fe12b diff --git a/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_translate_usda-6bfd0fb9adcbe164-1.image b/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_translate_usda-6bfd0fb9adcbe164-1.image new file mode 100644 index 000000000..644e089e2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_translate_usda-6bfd0fb9adcbe164-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 76a1fa7d306a8a85 diff --git a/crates/crust-core/tests/data/import_baselines/full_on_screen_exposure_usda-b0790c819b4e0d97-1.image b/crates/crust-core/tests/data/import_baselines/full_on_screen_exposure_usda-b0790c819b4e0d97-1.image new file mode 100644 index 000000000..7ff3f4d38 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_on_screen_exposure_usda-b0790c819b4e0d97-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off b9259930d9171aab diff --git a/crates/crust-core/tests/data/import_baselines/full_on_screen_undo_exposure_usda-c40080b74d3fb5a6-1.image b/crates/crust-core/tests/data/import_baselines/full_on_screen_undo_exposure_usda-c40080b74d3fb5a6-1.image new file mode 100644 index 000000000..6b6b0c40a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_on_screen_undo_exposure_usda-c40080b74d3fb5a6-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 5e901867aef8c50b diff --git a/crates/crust-core/tests/data/import_baselines/full_payload_rewritten_usda-03a6e3d1a01a5551-1.image b/crates/crust-core/tests/data/import_baselines/full_payload_rewritten_usda-03a6e3d1a01a5551-1.image new file mode 100644 index 000000000..2fbdc9344 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_payload_rewritten_usda-03a6e3d1a01a5551-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 4c86d9fc0259a5fb diff --git a/crates/crust-core/tests/data/import_baselines/full_payload_roughness_usda-498bc078c77be0a5-1.image b/crates/crust-core/tests/data/import_baselines/full_payload_roughness_usda-498bc078c77be0a5-1.image new file mode 100644 index 000000000..fffd22f70 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_payload_roughness_usda-498bc078c77be0a5-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off ac9d4cf39c1a51e3 diff --git a/crates/crust-core/tests/data/import_baselines/full_payload_undo_roughness_usda-7143361153e7f548-1.image b/crates/crust-core/tests/data/import_baselines/full_payload_undo_roughness_usda-7143361153e7f548-1.image new file mode 100644 index 000000000..fc580b73d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_payload_undo_roughness_usda-7143361153e7f548-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 366d57a699b8e531 diff --git a/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_undone_usda-774a34f5226e3639-1.image b/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_undone_usda-774a34f5226e3639-1.image new file mode 100644 index 000000000..6dce74c13 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_undone_usda-774a34f5226e3639-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e648a58ccb35ae3b diff --git a/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_usda-8674ccd68263fd36-1.image b/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_usda-8674ccd68263fd36-1.image new file mode 100644 index 000000000..6dce74c13 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_usda-8674ccd68263fd36-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e648a58ccb35ae3b diff --git a/crates/crust-core/tests/data/import_baselines/full_re_exported_usda-39edd0f167e79907-1.image b/crates/crust-core/tests/data/import_baselines/full_re_exported_usda-39edd0f167e79907-1.image new file mode 100644 index 000000000..cc6b70dc4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_re_exported_usda-39edd0f167e79907-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 41504af5265577be diff --git a/crates/crust-core/tests/data/import_baselines/full_rect_light_usda-efc21afcf05d7959-1.image b/crates/crust-core/tests/data/import_baselines/full_rect_light_usda-efc21afcf05d7959-1.image new file mode 100644 index 000000000..fe212a5bd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_rect_light_usda-efc21afcf05d7959-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 5dca7776dd8e6c1f diff --git a/crates/crust-core/tests/data/import_baselines/full_reloaded_usda-5a765fd50dde24be-1.image b/crates/crust-core/tests/data/import_baselines/full_reloaded_usda-5a765fd50dde24be-1.image new file mode 100644 index 000000000..569cd2ee9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_reloaded_usda-5a765fd50dde24be-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 0a5bf65444923e88 diff --git a/crates/crust-core/tests/data/import_baselines/full_reset_the_camera_s_transform_stack_usda-38a53b23a8f224c2-1.image b/crates/crust-core/tests/data/import_baselines/full_reset_the_camera_s_transform_stack_usda-38a53b23a8f224c2-1.image new file mode 100644 index 000000000..1cf8dfc29 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_reset_the_camera_s_transform_stack_usda-38a53b23a8f224c2-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off a68831230cd85e7d diff --git a/crates/crust-core/tests/data/import_baselines/full_retarget_a_diced_adaptive_scene_usda-bde6533023d6ccd8-1.image b/crates/crust-core/tests/data/import_baselines/full_retarget_a_diced_adaptive_scene_usda-bde6533023d6ccd8-1.image new file mode 100644 index 000000000..e4272bb18 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_retarget_a_diced_adaptive_scene_usda-bde6533023d6ccd8-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off 65656b043bb46283 diff --git a/crates/crust-core/tests/data/import_baselines/full_retarget_an_adaptive_scene_usda-721dc26887b364a7-1.image b/crates/crust-core/tests/data/import_baselines/full_retarget_an_adaptive_scene_usda-721dc26887b364a7-1.image new file mode 100644 index 000000000..a84e5dad3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_retarget_an_adaptive_scene_usda-721dc26887b364a7-1.image @@ -0,0 +1 @@ +48x27 16spp clamp-off 8afb97f1fcc0a4b0 diff --git a/crates/crust-core/tests/data/import_baselines/full_retarget_the_product_camera_usda-0a3badd9a91b1027-1.image b/crates/crust-core/tests/data/import_baselines/full_retarget_the_product_camera_usda-0a3badd9a91b1027-1.image new file mode 100644 index 000000000..61ffa56d4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_retarget_the_product_camera_usda-0a3badd9a91b1027-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 3072ee50a874d8ba diff --git a/crates/crust-core/tests/data/import_baselines/full_retarget_the_settings_camera_usda-2b1ab3b4034d45bb-1.image b/crates/crust-core/tests/data/import_baselines/full_retarget_the_settings_camera_usda-2b1ab3b4034d45bb-1.image new file mode 100644 index 000000000..aa809d36e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_retarget_the_settings_camera_usda-2b1ab3b4034d45bb-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 8505746c918f1879 diff --git a/crates/crust-core/tests/data/import_baselines/full_retarget_to_a_carrying_camera_usda-56381435fa6b51f5-1.image b/crates/crust-core/tests/data/import_baselines/full_retarget_to_a_carrying_camera_usda-56381435fa6b51f5-1.image new file mode 100644 index 000000000..d1a3a8119 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_retarget_to_a_carrying_camera_usda-56381435fa6b51f5-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 5ee39cdf8a8edcc5 diff --git a/crates/crust-core/tests/data/import_baselines/full_roughness_usda-a1ffe89d435678bc-1.image b/crates/crust-core/tests/data/import_baselines/full_roughness_usda-a1ffe89d435678bc-1.image new file mode 100644 index 000000000..990c78f2e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_roughness_usda-a1ffe89d435678bc-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off c7129f3efaf88dda diff --git a/crates/crust-core/tests/data/import_baselines/full_sampler_usda-27ca674891cf7c52-1.image b/crates/crust-core/tests/data/import_baselines/full_sampler_usda-27ca674891cf7c52-1.image new file mode 100644 index 000000000..f578d7bd6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_sampler_usda-27ca674891cf7c52-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off ba9a59bdaff14a99 diff --git a/crates/crust-core/tests/data/import_baselines/full_scatter_usda-80ff37fcf1ff9f3c-1.image b/crates/crust-core/tests/data/import_baselines/full_scatter_usda-80ff37fcf1ff9f3c-1.image new file mode 100644 index 000000000..d6302dd1b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_scatter_usda-80ff37fcf1ff9f3c-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 74128e666e058a48 diff --git a/crates/crust-core/tests/data/import_baselines/full_shared_shader_usda-bcebf475c7d9ca1f-1.image b/crates/crust-core/tests/data/import_baselines/full_shared_shader_usda-bcebf475c7d9ca1f-1.image new file mode 100644 index 000000000..4b9a46633 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_shared_shader_usda-bcebf475c7d9ca1f-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 878a44fd0e7d2b84 diff --git a/crates/crust-core/tests/data/import_baselines/full_sharp_at_the_frame_usda-06436b4d06eb2f5f-1.image b/crates/crust-core/tests/data/import_baselines/full_sharp_at_the_frame_usda-06436b4d06eb2f5f-1.image new file mode 100644 index 000000000..79bc428f3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_sharp_at_the_frame_usda-06436b4d06eb2f5f-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 0956f9aa6aa6e7f9 diff --git a/crates/crust-core/tests/data/import_baselines/full_shutter_close_usda-ce0b12427cfd435b-1.image b/crates/crust-core/tests/data/import_baselines/full_shutter_close_usda-ce0b12427cfd435b-1.image new file mode 100644 index 000000000..79bc428f3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_shutter_close_usda-ce0b12427cfd435b-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 0956f9aa6aa6e7f9 diff --git a/crates/crust-core/tests/data/import_baselines/full_shutter_exposure_usda-36da172692d8936a-1.image b/crates/crust-core/tests/data/import_baselines/full_shutter_exposure_usda-36da172692d8936a-1.image new file mode 100644 index 000000000..79bc428f3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_shutter_exposure_usda-36da172692d8936a-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 0956f9aa6aa6e7f9 diff --git a/crates/crust-core/tests/data/import_baselines/full_sublayer_rewritten_usda-2e79c887f2d55e88-1.image b/crates/crust-core/tests/data/import_baselines/full_sublayer_rewritten_usda-2e79c887f2d55e88-1.image new file mode 100644 index 000000000..e14303a7e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_sublayer_rewritten_usda-2e79c887f2d55e88-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 55db275bd8392d23 diff --git a/crates/crust-core/tests/data/import_baselines/full_texture_file_usda-1fd2cfaf6e5de06c-1.image b/crates/crust-core/tests/data/import_baselines/full_texture_file_usda-1fd2cfaf6e5de06c-1.image new file mode 100644 index 000000000..5cd45a9c6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_texture_file_usda-1fd2cfaf6e5de06c-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off a51db73d7e796579 diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_a_light_s_shape_usda-f05814080b96dca5-1.image b/crates/crust-core/tests/data/import_baselines/full_undo_a_light_s_shape_usda-f05814080b96dca5-1.image new file mode 100644 index 000000000..5e1bf2e96 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_a_light_s_shape_usda-f05814080b96dca5-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off b0533d215a5cd138 diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_a_transform_usda-d26b3a02a093ce4f-1.image b/crates/crust-core/tests/data/import_baselines/full_undo_a_transform_usda-d26b3a02a093ce4f-1.image new file mode 100644 index 000000000..11828d811 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_a_transform_usda-d26b3a02a093ce4f-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off a22f3882aa730ddf diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_base_colour_usda-d814da72eab3f116-1.image b/crates/crust-core/tests/data/import_baselines/full_undo_base_colour_usda-d814da72eab3f116-1.image new file mode 100644 index 000000000..01bfe0e42 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_base_colour_usda-d814da72eab3f116-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off e91e50445f593725 diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field__bad_unit_usda-6419381399744bc7-1.image b/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field__bad_unit_usda-6419381399744bc7-1.image new file mode 100644 index 000000000..95603ce7c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field__bad_unit_usda-6419381399744bc7-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 6403d1e8ae317b59 diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field_usda-3ef9a9cb1855677e-1.image b/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field_usda-3ef9a9cb1855677e-1.image new file mode 100644 index 000000000..95603ce7c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field_usda-3ef9a9cb1855677e-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 6403d1e8ae317b59 diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_dome_texture_usda-a17c02c0536bdc00-1.image b/crates/crust-core/tests/data/import_baselines/full_undo_dome_texture_usda-a17c02c0536bdc00-1.image new file mode 100644 index 000000000..fe212a5bd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_dome_texture_usda-a17c02c0536bdc00-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 5dca7776dd8e6c1f diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_exposure_usda-c9169e83397e3561-1.image b/crates/crust-core/tests/data/import_baselines/full_undo_exposure_usda-c9169e83397e3561-1.image new file mode 100644 index 000000000..11828d811 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_exposure_usda-c9169e83397e3561-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off a22f3882aa730ddf diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_max_depth_usda-a8a78eb6299a327a-1.image b/crates/crust-core/tests/data/import_baselines/full_undo_max_depth_usda-a8a78eb6299a327a-1.image new file mode 100644 index 000000000..cebc04326 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_max_depth_usda-a8a78eb6299a327a-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off bc40eaca1e9ff520 diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_rect_light_usda-2d6a907009434890-1.image b/crates/crust-core/tests/data/import_baselines/full_undo_rect_light_usda-2d6a907009434890-1.image new file mode 100644 index 000000000..f578d7bd6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_rect_light_usda-2d6a907009434890-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off ba9a59bdaff14a99 diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_roughness_usda-62c5e0d0879e604d-1.image b/crates/crust-core/tests/data/import_baselines/full_undo_roughness_usda-62c5e0d0879e604d-1.image new file mode 100644 index 000000000..ab21343ca --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_roughness_usda-62c5e0d0879e604d-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off ff2beaa5102f00b8 diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_sampler_usda-0d28664679d41bef-1.image b/crates/crust-core/tests/data/import_baselines/full_undo_sampler_usda-0d28664679d41bef-1.image new file mode 100644 index 000000000..7a2e4cc59 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_sampler_usda-0d28664679d41bef-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 650d02711795ba6e diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_shutter_close_usda-f7c724218b21e98a-1.image b/crates/crust-core/tests/data/import_baselines/full_undo_shutter_close_usda-f7c724218b21e98a-1.image new file mode 100644 index 000000000..79bc428f3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_shutter_close_usda-f7c724218b21e98a-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 0956f9aa6aa6e7f9 diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_texture_file_usda-d5aef4a622503f01-1.image b/crates/crust-core/tests/data/import_baselines/full_undo_texture_file_usda-d5aef4a622503f01-1.image new file mode 100644 index 000000000..990c78f2e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_texture_file_usda-d5aef4a622503f01-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off c7129f3efaf88dda diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_the_product_retarget_usda-1e1edebd41fde9bc-1.image b/crates/crust-core/tests/data/import_baselines/full_undo_the_product_retarget_usda-1e1edebd41fde9bc-1.image new file mode 100644 index 000000000..aa809d36e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_the_product_retarget_usda-1e1edebd41fde9bc-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 8505746c918f1879 diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_the_reset_usda-7e7c9dbebb517c2f-1.image b/crates/crust-core/tests/data/import_baselines/full_undo_the_reset_usda-7e7c9dbebb517c2f-1.image new file mode 100644 index 000000000..aa809d36e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_the_reset_usda-7e7c9dbebb517c2f-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 8505746c918f1879 diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_the_rotate_usda-c1aa90b58073a573-1.image b/crates/crust-core/tests/data/import_baselines/full_undo_the_rotate_usda-c1aa90b58073a573-1.image new file mode 100644 index 000000000..b35cd56af --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undo_the_rotate_usda-c1aa90b58073a573-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off c831c2dcae9ba81d diff --git a/crates/crust-core/tests/data/import_baselines/full_undone_after_reload_usda-b19199733b99fec2-1.image b/crates/crust-core/tests/data/import_baselines/full_undone_after_reload_usda-b19199733b99fec2-1.image new file mode 100644 index 000000000..569cd2ee9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/full_undone_after_reload_usda-b19199733b99fec2-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 0a5bf65444923e88 diff --git a/crates/crust-core/tests/data/import_baselines/furnace_ball_usda-54ac5243ee332532-1.image b/crates/crust-core/tests/data/import_baselines/furnace_ball_usda-54ac5243ee332532-1.image new file mode 100644 index 000000000..fb6010473 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/furnace_ball_usda-54ac5243ee332532-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off b937cc926f9c9d43 diff --git a/crates/crust-core/tests/data/import_baselines/furnace_usda-bbc6fe1cb946780f-1.image b/crates/crust-core/tests/data/import_baselines/furnace_usda-bbc6fe1cb946780f-1.image new file mode 100644 index 000000000..7affe4a04 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/furnace_usda-bbc6fe1cb946780f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off ba2760d3ba163bec diff --git a/crates/crust-core/tests/data/import_baselines/fvar_bilinear_usda-8ca893f677c91586-1.image b/crates/crust-core/tests/data/import_baselines/fvar_bilinear_usda-8ca893f677c91586-1.image new file mode 100644 index 000000000..6d06e5018 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fvar_bilinear_usda-8ca893f677c91586-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off efadd6e696ce03d6 diff --git a/crates/crust-core/tests/data/import_baselines/fvar_loop_usda-855199bacac38db5-1.image b/crates/crust-core/tests/data/import_baselines/fvar_loop_usda-855199bacac38db5-1.image new file mode 100644 index 000000000..a2eecad9d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/fvar_loop_usda-855199bacac38db5-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off c6767216609b1ec9 diff --git a/crates/crust-core/tests/data/import_baselines/geometry_usda-3299cf85fca858a4-1.image b/crates/crust-core/tests/data/import_baselines/geometry_usda-3299cf85fca858a4-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/geometry_usda-3299cf85fca858a4-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/glass_usda-6ef57f18257a3d7a-1.image b/crates/crust-core/tests/data/import_baselines/glass_usda-6ef57f18257a3d7a-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glass_usda-6ef57f18257a3d7a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_1_usda-8cc43a3f4dae46fb-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_1_usda-8cc43a3f4dae46fb-1.image new file mode 100644 index 000000000..ceb94c2d9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_1_usda-8cc43a3f4dae46fb-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off f8983a52f2ec7248 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_2_usda-ff99772c18e0997c-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_2_usda-ff99772c18e0997c-1.image new file mode 100644 index 000000000..ceb94c2d9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_2_usda-ff99772c18e0997c-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off f8983a52f2ec7248 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_3_usda-8c8e2079502f800d-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_3_usda-8c8e2079502f800d-1.image new file mode 100644 index 000000000..ceb94c2d9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_3_usda-8c8e2079502f800d-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off f8983a52f2ec7248 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_4_usda-76914e768885b3e6-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_4_usda-76914e768885b3e6-1.image new file mode 100644 index 000000000..ceb94c2d9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_4_usda-76914e768885b3e6-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off f8983a52f2ec7248 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_1_usda-7fde13de0abc769b-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_1_usda-7fde13de0abc769b-1.image new file mode 100644 index 000000000..2aeb04a01 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_1_usda-7fde13de0abc769b-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off f994e3bc623bc22a diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_2_usda-58c418a757f93b46-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_2_usda-58c418a757f93b46-1.image new file mode 100644 index 000000000..2aeb04a01 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_2_usda-58c418a757f93b46-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off f994e3bc623bc22a diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_3_usda-0e4d0c5d73f098b1-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_3_usda-0e4d0c5d73f098b1-1.image new file mode 100644 index 000000000..2aeb04a01 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_3_usda-0e4d0c5d73f098b1-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off f994e3bc623bc22a diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_4_usda-db6287c220d2329c-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_4_usda-db6287c220d2329c-1.image new file mode 100644 index 000000000..2aeb04a01 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_4_usda-db6287c220d2329c-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off f994e3bc623bc22a diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_1_usda-da25e07b06740551-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_1_usda-da25e07b06740551-1.image new file mode 100644 index 000000000..6e3d6c696 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_1_usda-da25e07b06740551-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off beeb101beb583943 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_2_usda-ddbe5a176c05cba2-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_2_usda-ddbe5a176c05cba2-1.image new file mode 100644 index 000000000..6e3d6c696 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_2_usda-ddbe5a176c05cba2-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off beeb101beb583943 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_3_usda-06ab9cf1d9f5303b-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_3_usda-06ab9cf1d9f5303b-1.image new file mode 100644 index 000000000..6e3d6c696 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_3_usda-06ab9cf1d9f5303b-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off beeb101beb583943 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_4_usda-bae142df171828c4-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_4_usda-bae142df171828c4-1.image new file mode 100644 index 000000000..6e3d6c696 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_4_usda-bae142df171828c4-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off beeb101beb583943 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_1_usda-8463e7fa7c167c7f-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_1_usda-8463e7fa7c167c7f-1.image new file mode 100644 index 000000000..11aff8e3f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_1_usda-8463e7fa7c167c7f-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 284a0fc522983440 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_2_usda-dcf0f8d60a6084ce-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_2_usda-dcf0f8d60a6084ce-1.image new file mode 100644 index 000000000..11aff8e3f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_2_usda-dcf0f8d60a6084ce-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 284a0fc522983440 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_3_usda-fedffe90ed130071-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_3_usda-fedffe90ed130071-1.image new file mode 100644 index 000000000..11aff8e3f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_3_usda-fedffe90ed130071-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 284a0fc522983440 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_4_usda-654bf9f6d4073ca8-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_4_usda-654bf9f6d4073ca8-1.image new file mode 100644 index 000000000..11aff8e3f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_4_usda-654bf9f6d4073ca8-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 284a0fc522983440 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_1_usda-5434dbae8c19939f-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_1_usda-5434dbae8c19939f-1.image new file mode 100644 index 000000000..1b3ec996a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_1_usda-5434dbae8c19939f-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 46b9b601936d068e diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_2_usda-bb9d9ab32ead4e0e-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_2_usda-bb9d9ab32ead4e0e-1.image new file mode 100644 index 000000000..1b3ec996a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_2_usda-bb9d9ab32ead4e0e-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 46b9b601936d068e diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_3_usda-edc5ae56976f1ff1-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_3_usda-edc5ae56976f1ff1-1.image new file mode 100644 index 000000000..1b3ec996a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_3_usda-edc5ae56976f1ff1-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 46b9b601936d068e diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_4_usda-b2e4ed7db6e6d9c8-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_4_usda-b2e4ed7db6e6d9c8-1.image new file mode 100644 index 000000000..1b3ec996a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_4_usda-b2e4ed7db6e6d9c8-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 46b9b601936d068e diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_1_usda-03a3c8316f39e87b-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_1_usda-03a3c8316f39e87b-1.image new file mode 100644 index 000000000..c404b2c96 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_1_usda-03a3c8316f39e87b-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 6dac79f27dc1db9f diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_2_usda-33306f5e5e7489a0-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_2_usda-33306f5e5e7489a0-1.image new file mode 100644 index 000000000..c404b2c96 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_2_usda-33306f5e5e7489a0-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 6dac79f27dc1db9f diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_3_usda-d3cf26f624795805-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_3_usda-d3cf26f624795805-1.image new file mode 100644 index 000000000..c404b2c96 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_3_usda-d3cf26f624795805-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 6dac79f27dc1db9f diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_4_usda-bc3c2cc49389e192-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_4_usda-bc3c2cc49389e192-1.image new file mode 100644 index 000000000..c404b2c96 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_4_usda-bc3c2cc49389e192-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 6dac79f27dc1db9f diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_1_usda-c5cb6d9f35a09a41-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_1_usda-c5cb6d9f35a09a41-1.image new file mode 100644 index 000000000..5ce77a9d0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_1_usda-c5cb6d9f35a09a41-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off e6550243a82e0188 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_2_usda-4db04417a2f553bc-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_2_usda-4db04417a2f553bc-1.image new file mode 100644 index 000000000..5ce77a9d0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_2_usda-4db04417a2f553bc-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off e6550243a82e0188 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_3_usda-8962360ec726337b-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_3_usda-8962360ec726337b-1.image new file mode 100644 index 000000000..5ce77a9d0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_3_usda-8962360ec726337b-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off e6550243a82e0188 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_4_usda-704837282362091e-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_4_usda-704837282362091e-1.image new file mode 100644 index 000000000..5ce77a9d0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_4_usda-704837282362091e-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off e6550243a82e0188 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_1_usda-b16be3e51935cdad-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_1_usda-b16be3e51935cdad-1.image new file mode 100644 index 000000000..93053830d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_1_usda-b16be3e51935cdad-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 7965ffd2d7800ef8 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_2_usda-9bd601062d2922a2-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_2_usda-9bd601062d2922a2-1.image new file mode 100644 index 000000000..93053830d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_2_usda-9bd601062d2922a2-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 7965ffd2d7800ef8 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_3_usda-af38f2deac1db5db-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_3_usda-af38f2deac1db5db-1.image new file mode 100644 index 000000000..93053830d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_3_usda-af38f2deac1db5db-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 7965ffd2d7800ef8 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_4_usda-e07f6fc2b4bb4c68-1.image b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_4_usda-e07f6fc2b4bb4c68-1.image new file mode 100644 index 000000000..93053830d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_4_usda-e07f6fc2b4bb4c68-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 7965ffd2d7800ef8 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_var_light_1_usda-950756ddd9a80314-1.image b/crates/crust-core/tests/data/import_baselines/glossy_var_light_1_usda-950756ddd9a80314-1.image new file mode 100644 index 000000000..2aeb04a01 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_var_light_1_usda-950756ddd9a80314-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off f994e3bc623bc22a diff --git a/crates/crust-core/tests/data/import_baselines/glossy_var_light_2_usda-6aede4cf281248af-1.image b/crates/crust-core/tests/data/import_baselines/glossy_var_light_2_usda-6aede4cf281248af-1.image new file mode 100644 index 000000000..2aeb04a01 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_var_light_2_usda-6aede4cf281248af-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off f994e3bc623bc22a diff --git a/crates/crust-core/tests/data/import_baselines/glossy_var_power_1_usda-712adb9891f33818-1.image b/crates/crust-core/tests/data/import_baselines/glossy_var_power_1_usda-712adb9891f33818-1.image new file mode 100644 index 000000000..11aff8e3f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_var_power_1_usda-712adb9891f33818-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 284a0fc522983440 diff --git a/crates/crust-core/tests/data/import_baselines/glossy_var_power_2_usda-ccbbda539b6109ff-1.image b/crates/crust-core/tests/data/import_baselines/glossy_var_power_2_usda-ccbbda539b6109ff-1.image new file mode 100644 index 000000000..11aff8e3f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/glossy_var_power_2_usda-ccbbda539b6109ff-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 284a0fc522983440 diff --git a/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-1.image b/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-1.image new file mode 100644 index 000000000..1e2bfedfa --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-1.image @@ -0,0 +1 @@ +192x64 16spp clamp-off 535052872f2730e9 diff --git a/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-2.image b/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-2.image new file mode 100644 index 000000000..1e2bfedfa --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-2.image @@ -0,0 +1 @@ +192x64 16spp clamp-off 535052872f2730e9 diff --git a/crates/crust-core/tests/data/import_baselines/hair_usda-65dd84de0e473f00-1.image b/crates/crust-core/tests/data/import_baselines/hair_usda-65dd84de0e473f00-1.image new file mode 100644 index 000000000..dd573d8a2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hair_usda-65dd84de0e473f00-1.image @@ -0,0 +1 @@ +192x64 16spp clamp-off fee0a8f83dd924af diff --git a/crates/crust-core/tests/data/import_baselines/hair_variation_usda-4ab3c7f511466a98-1.image b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-4ab3c7f511466a98-1.image new file mode 100644 index 000000000..f8dec34f4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-4ab3c7f511466a98-1.image @@ -0,0 +1 @@ +320x160 16spp clamp-off 1c7bbba8fff23870 diff --git a/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-1.image b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-1.image new file mode 100644 index 000000000..f8dec34f4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-1.image @@ -0,0 +1 @@ +320x160 16spp clamp-off 1c7bbba8fff23870 diff --git a/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-2.image b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-2.image new file mode 100644 index 000000000..f8dec34f4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-2.image @@ -0,0 +1 @@ +320x160 16spp clamp-off 1c7bbba8fff23870 diff --git a/crates/crust-core/tests/data/import_baselines/hair_variation_usda-aa2b773ff3d2e5c2-1.image b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-aa2b773ff3d2e5c2-1.image new file mode 100644 index 000000000..ba1e08e31 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-aa2b773ff3d2e5c2-1.image @@ -0,0 +1 @@ +320x160 16spp clamp-off 1f935ae560cf3730 diff --git a/crates/crust-core/tests/data/import_baselines/hidden_source_classes_usda-a9259268854e750e-1.image b/crates/crust-core/tests/data/import_baselines/hidden_source_classes_usda-a9259268854e750e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hidden_source_classes_usda-a9259268854e750e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/hidden_usda-9a2924a818f3fb98-1.image b/crates/crust-core/tests/data/import_baselines/hidden_usda-9a2924a818f3fb98-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hidden_usda-9a2924a818f3fb98-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/hidden_zero_scale_usda-a4193f9a6324f7d0-1.image b/crates/crust-core/tests/data/import_baselines/hidden_zero_scale_usda-a4193f9a6324f7d0-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/hidden_zero_scale_usda-a4193f9a6324f7d0-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/high_bits_usda-276acbda2859c899-1.image b/crates/crust-core/tests/data/import_baselines/high_bits_usda-276acbda2859c899-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/high_bits_usda-276acbda2859c899-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/holdout_usda-fcfa139ef12785fd-1.image b/crates/crust-core/tests/data/import_baselines/holdout_usda-fcfa139ef12785fd-1.image new file mode 100644 index 000000000..343b5cb98 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/holdout_usda-fcfa139ef12785fd-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off b101099529f8e6cb diff --git a/crates/crust-core/tests/data/import_baselines/houdini_var_usda-c716d987aba001e4-1.image b/crates/crust-core/tests/data/import_baselines/houdini_var_usda-c716d987aba001e4-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/houdini_var_usda-c716d987aba001e4-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/huge_blur_usda-2cc6d64af71f20b3-1.image b/crates/crust-core/tests/data/import_baselines/huge_blur_usda-2cc6d64af71f20b3-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/huge_blur_usda-2cc6d64af71f20b3-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/huge_kernel_usda-a515683f6e1b404a-1.image b/crates/crust-core/tests/data/import_baselines/huge_kernel_usda-a515683f6e1b404a-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/huge_kernel_usda-a515683f6e1b404a-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/ies_light_usda-9afaa60e27f14926-1.image b/crates/crust-core/tests/data/import_baselines/ies_light_usda-9afaa60e27f14926-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ies_light_usda-9afaa60e27f14926-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/ignored_curves_usda-d8234281140f3b7d-1.image b/crates/crust-core/tests/data/import_baselines/ignored_curves_usda-d8234281140f3b7d-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ignored_curves_usda-d8234281140f3b7d-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/ignored_light_usda-26909110fbe92be4-1.image b/crates/crust-core/tests/data/import_baselines/ignored_light_usda-26909110fbe92be4-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ignored_light_usda-26909110fbe92be4-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/ignored_prototype_usda-f94b3942ea16e527-1.image b/crates/crust-core/tests/data/import_baselines/ignored_prototype_usda-f94b3942ea16e527-1.image new file mode 100644 index 000000000..0e8a4d39e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ignored_prototype_usda-f94b3942ea16e527-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 51c3405b7660a8ac diff --git a/crates/crust-core/tests/data/import_baselines/ignored_volume_usda-32845f161c65c4a9-1.image b/crates/crust-core/tests/data/import_baselines/ignored_volume_usda-32845f161c65c4a9-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ignored_volume_usda-32845f161c65c4a9-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Capsule_1_usda-751cd07d979a4d81-1.image b/crates/crust-core/tests/data/import_baselines/implicit_Capsule_1_usda-751cd07d979a4d81-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_Capsule_1_usda-751cd07d979a4d81-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Capsule_usda-3ad3fb7cdd9a1902-1.image b/crates/crust-core/tests/data/import_baselines/implicit_Capsule_usda-3ad3fb7cdd9a1902-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_Capsule_usda-3ad3fb7cdd9a1902-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Cone_usda-024380e72d6d34a7-1.image b/crates/crust-core/tests/data/import_baselines/implicit_Cone_usda-024380e72d6d34a7-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_Cone_usda-024380e72d6d34a7-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Cube_usda-4bb89de99da949b6-1.image b/crates/crust-core/tests/data/import_baselines/implicit_Cube_usda-4bb89de99da949b6-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_Cube_usda-4bb89de99da949b6-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_1_usda-9964aa85919856f9-1.image b/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_1_usda-9964aa85919856f9-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_1_usda-9964aa85919856f9-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_usda-bee0e5841f0acf39-1.image b/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_usda-bee0e5841f0acf39-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_usda-bee0e5841f0acf39-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Plane_usda-77823213740cc6c2-1.image b/crates/crust-core/tests/data/import_baselines/implicit_Plane_usda-77823213740cc6c2-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_Plane_usda-77823213740cc6c2-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/implicit_displaced_usda-395a4477685bb193-1.image b/crates/crust-core/tests/data/import_baselines/implicit_displaced_usda-395a4477685bb193-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_displaced_usda-395a4477685bb193-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/implicit_level_usda-e441bb0a849304c5-1.image b/crates/crust-core/tests/data/import_baselines/implicit_level_usda-e441bb0a849304c5-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_level_usda-e441bb0a849304c5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/implicit_lone_usda-8c73fbc5c6234554-1.image b/crates/crust-core/tests/data/import_baselines/implicit_lone_usda-8c73fbc5c6234554-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_lone_usda-8c73fbc5c6234554-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/implicit_moving_usda-2b9c98847f8ffdc5-1.image b/crates/crust-core/tests/data/import_baselines/implicit_moving_usda-2b9c98847f8ffdc5-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_moving_usda-2b9c98847f8ffdc5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/implicit_prototypes_usda-754c2247d4091e78-1.image b/crates/crust-core/tests/data/import_baselines/implicit_prototypes_usda-754c2247d4091e78-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_prototypes_usda-754c2247d4091e78-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/implicit_scaled_usda-5918722b7152b9f3-1.image b/crates/crust-core/tests/data/import_baselines/implicit_scaled_usda-5918722b7152b9f3-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_scaled_usda-5918722b7152b9f3-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/implicit_shading_usda-b3809be67678f20f-1.image b/crates/crust-core/tests/data/import_baselines/implicit_shading_usda-b3809be67678f20f-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_shading_usda-b3809be67678f20f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-1.image b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-1.image new file mode 100644 index 000000000..1052e31af --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off ec5ed4015bdead61 diff --git a/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-2.image b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-2.image new file mode 100644 index 000000000..1052e31af --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-2.image @@ -0,0 +1 @@ +960x540 16spp clamp-off ec5ed4015bdead61 diff --git a/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-30852d50af72eb96-1.image b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-30852d50af72eb96-1.image new file mode 100644 index 000000000..1052e31af --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-30852d50af72eb96-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off ec5ed4015bdead61 diff --git a/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-41169aa3c303f69f-1.image b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-41169aa3c303f69f-1.image new file mode 100644 index 000000000..1052e31af --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-41169aa3c303f69f-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off ec5ed4015bdead61 diff --git a/crates/crust-core/tests/data/import_baselines/implicit_twins_usda-925c195d8a7f5a5c-1.image b/crates/crust-core/tests/data/import_baselines/implicit_twins_usda-925c195d8a7f5a5c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/implicit_twins_usda-925c195d8a7f5a5c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/import_plain_usda-37ba4c8eb30aefb6-1.image b/crates/crust-core/tests/data/import_baselines/import_plain_usda-37ba4c8eb30aefb6-1.image new file mode 100644 index 000000000..431de6ffe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/import_plain_usda-37ba4c8eb30aefb6-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 8fe84ece808596b4 diff --git a/crates/crust-core/tests/data/import_baselines/import_usda-a114cca514b1e2e9-1.image b/crates/crust-core/tests/data/import_baselines/import_usda-a114cca514b1e2e9-1.image new file mode 100644 index 000000000..b01e6071e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/import_usda-a114cca514b1e2e9-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off bbc4bce34628e579 diff --git a/crates/crust-core/tests/data/import_baselines/imported_motion_usda-98baf8cfec165d96-1.image b/crates/crust-core/tests/data/import_baselines/imported_motion_usda-98baf8cfec165d96-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/imported_motion_usda-98baf8cfec165d96-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/inf_light_usda-fd28273b2a9da24d-1.image b/crates/crust-core/tests/data/import_baselines/inf_light_usda-fd28273b2a9da24d-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/inf_light_usda-fd28273b2a9da24d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/infinite_usda-6e15312bf55ca148-1.image b/crates/crust-core/tests/data/import_baselines/infinite_usda-6e15312bf55ca148-1.image new file mode 100644 index 000000000..e764f739a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/infinite_usda-6e15312bf55ca148-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 143f59da8403ab25 diff --git a/crates/crust-core/tests/data/import_baselines/inherits_usda-946600d02d8755e0-1.image b/crates/crust-core/tests/data/import_baselines/inherits_usda-946600d02d8755e0-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/inherits_usda-946600d02d8755e0-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/input_usda-39af7a7dd8ccc053-1.image b/crates/crust-core/tests/data/import_baselines/input_usda-39af7a7dd8ccc053-1.image new file mode 100644 index 000000000..51107fcdd --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/input_usda-39af7a7dd8ccc053-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off fbca99e6d6c9aaa1 diff --git a/crates/crust-core/tests/data/import_baselines/instanced_curves_usda-4486def29adfc50e-1.image b/crates/crust-core/tests/data/import_baselines/instanced_curves_usda-4486def29adfc50e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instanced_curves_usda-4486def29adfc50e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/instancer_primvar_usda-6d97a3b7a8db1d2d-1.image b/crates/crust-core/tests/data/import_baselines/instancer_primvar_usda-6d97a3b7a8db1d2d-1.image new file mode 100644 index 000000000..021b4dafa --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancer_primvar_usda-6d97a3b7a8db1d2d-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off ada8400952cd475b diff --git a/crates/crust-core/tests/data/import_baselines/instancer_proto_root_reset_child_usda-327d10b931ee4635-1.image b/crates/crust-core/tests/data/import_baselines/instancer_proto_root_reset_child_usda-327d10b931ee4635-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancer_proto_root_reset_child_usda-327d10b931ee4635-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/instancer_proto_root_xform_usda-824b2432496695f2-1.image b/crates/crust-core/tests/data/import_baselines/instancer_proto_root_xform_usda-824b2432496695f2-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancer_proto_root_xform_usda-824b2432496695f2-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/instancer_usda-24b4955bd587b7fc-1.image b/crates/crust-core/tests/data/import_baselines/instancer_usda-24b4955bd587b7fc-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancer_usda-24b4955bd587b7fc-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/instancer_usda-b5460e79ed990f95-1.image b/crates/crust-core/tests/data/import_baselines/instancer_usda-b5460e79ed990f95-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancer_usda-b5460e79ed990f95-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/instancer_usda-c51fcdc4de98cc87-1.image b/crates/crust-core/tests/data/import_baselines/instancer_usda-c51fcdc4de98cc87-1.image new file mode 100644 index 000000000..ac69a0ea7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancer_usda-c51fcdc4de98cc87-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off d91f257cb13c42d9 diff --git a/crates/crust-core/tests/data/import_baselines/instances_usda-0e86a3f92c8bc5d3-1.image b/crates/crust-core/tests/data/import_baselines/instances_usda-0e86a3f92c8bc5d3-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instances_usda-0e86a3f92c8bc5d3-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/instances_usda-dd5f31a7c4515489-1.image b/crates/crust-core/tests/data/import_baselines/instances_usda-dd5f31a7c4515489-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instances_usda-dd5f31a7c4515489-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-046f52337fabb1a4-1.image b/crates/crust-core/tests/data/import_baselines/instancing_usda-046f52337fabb1a4-1.image new file mode 100644 index 000000000..04f5b4e66 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-046f52337fabb1a4-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off bc733f3dea963f51 diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-1b870942bf28e01d-1.image b/crates/crust-core/tests/data/import_baselines/instancing_usda-1b870942bf28e01d-1.image new file mode 100644 index 000000000..04f5b4e66 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-1b870942bf28e01d-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off bc733f3dea963f51 diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-37ed91a3e61701fe-1.image b/crates/crust-core/tests/data/import_baselines/instancing_usda-37ed91a3e61701fe-1.image new file mode 100644 index 000000000..04f5b4e66 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-37ed91a3e61701fe-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off bc733f3dea963f51 diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-1.image b/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-1.image new file mode 100644 index 000000000..04f5b4e66 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off bc733f3dea963f51 diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-2.image b/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-2.image new file mode 100644 index 000000000..04f5b4e66 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-2.image @@ -0,0 +1 @@ +480x270 16spp clamp-off bc733f3dea963f51 diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-4c123aa1f400f41f-1.image b/crates/crust-core/tests/data/import_baselines/instancing_usda-4c123aa1f400f41f-1.image new file mode 100644 index 000000000..04f5b4e66 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-4c123aa1f400f41f-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off bc733f3dea963f51 diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-4d15fe3f4f1fa7d2-1.image b/crates/crust-core/tests/data/import_baselines/instancing_usda-4d15fe3f4f1fa7d2-1.image new file mode 100644 index 000000000..04f5b4e66 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-4d15fe3f4f1fa7d2-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off bc733f3dea963f51 diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-5aa111b242f25730-1.image b/crates/crust-core/tests/data/import_baselines/instancing_usda-5aa111b242f25730-1.image new file mode 100644 index 000000000..7bccda95e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-5aa111b242f25730-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off f5b219db6d0d9155 diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-1.image b/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-1.image new file mode 100644 index 000000000..04f5b4e66 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off bc733f3dea963f51 diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-2.image b/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-2.image new file mode 100644 index 000000000..04f5b4e66 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-2.image @@ -0,0 +1 @@ +480x270 16spp clamp-off bc733f3dea963f51 diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-bee611607d893be7-1.image b/crates/crust-core/tests/data/import_baselines/instancing_usda-bee611607d893be7-1.image new file mode 100644 index 000000000..04f5b4e66 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-bee611607d893be7-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off bc733f3dea963f51 diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-c51a6942a8212cb9-1.image b/crates/crust-core/tests/data/import_baselines/instancing_usda-c51a6942a8212cb9-1.image new file mode 100644 index 000000000..04f5b4e66 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-c51a6942a8212cb9-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off bc733f3dea963f51 diff --git a/crates/crust-core/tests/data/import_baselines/instantaneous_usda-3e155a939a6cc6cd-1.image b/crates/crust-core/tests/data/import_baselines/instantaneous_usda-3e155a939a6cc6cd-1.image new file mode 100644 index 000000000..4860355dc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instantaneous_usda-3e155a939a6cc6cd-1.image @@ -0,0 +1 @@ +96x54 16spp clamp-off 2dca5e2412c55c50 diff --git a/crates/crust-core/tests/data/import_baselines/int_id_usda-520c4dc179153d4f-1.image b/crates/crust-core/tests/data/import_baselines/int_id_usda-520c4dc179153d4f-1.image new file mode 100644 index 000000000..648a9f248 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/int_id_usda-520c4dc179153d4f-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off 54407d51eeed59ca diff --git a/crates/crust-core/tests/data/import_baselines/invalid_light_sizes_usda-9c386d5a319bfe23-1.image b/crates/crust-core/tests/data/import_baselines/invalid_light_sizes_usda-9c386d5a319bfe23-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/invalid_light_sizes_usda-9c386d5a319bfe23-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/invalid_usda-d575a3c70872d8d6-1.image b/crates/crust-core/tests/data/import_baselines/invalid_usda-d575a3c70872d8d6-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/invalid_usda-d575a3c70872d8d6-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/invariant_0_05_usda-adfdce9489c2fe04-1.image b/crates/crust-core/tests/data/import_baselines/invariant_0_05_usda-adfdce9489c2fe04-1.image new file mode 100644 index 000000000..d5b7dcc3f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/invariant_0_05_usda-adfdce9489c2fe04-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off b7d3d9dfd985022e diff --git a/crates/crust-core/tests/data/import_baselines/invariant_0_usda-4ea5be31deb326f6-1.image b/crates/crust-core/tests/data/import_baselines/invariant_0_usda-4ea5be31deb326f6-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/invariant_0_usda-4ea5be31deb326f6-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-1.image b/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-2.image b/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-2.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/leaf_usda-c026046b07c5fbb8-1.image b/crates/crust-core/tests/data/import_baselines/leaf_usda-c026046b07c5fbb8-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/leaf_usda-c026046b07c5fbb8-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/leaf_usda-d886c4e05035aaa7-1.image b/crates/crust-core/tests/data/import_baselines/leaf_usda-d886c4e05035aaa7-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/leaf_usda-d886c4e05035aaa7-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/leaf_usda-e14e254e24f8bc2e-1.image b/crates/crust-core/tests/data/import_baselines/leaf_usda-e14e254e24f8bc2e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/leaf_usda-e14e254e24f8bc2e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/left_handed_baked_usda-9363c3fa472cdcde-1.image b/crates/crust-core/tests/data/import_baselines/left_handed_baked_usda-9363c3fa472cdcde-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/left_handed_baked_usda-9363c3fa472cdcde-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/left_handed_instanced_usda-f9d8d0fbabf00605-1.image b/crates/crust-core/tests/data/import_baselines/left_handed_instanced_usda-f9d8d0fbabf00605-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/left_handed_instanced_usda-f9d8d0fbabf00605-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/left_handed_mirrored_usda-b73e3433c9e6bccf-1.image b/crates/crust-core/tests/data/import_baselines/left_handed_mirrored_usda-b73e3433c9e6bccf-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/left_handed_mirrored_usda-b73e3433c9e6bccf-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/left_handed_subdivided_usda-bd37842befe48e18-1.image b/crates/crust-core/tests/data/import_baselines/left_handed_subdivided_usda-bd37842befe48e18-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/left_handed_subdivided_usda-bd37842befe48e18-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/left_handed_tri_usda-ba795e2eb1c56aef-1.image b/crates/crust-core/tests/data/import_baselines/left_handed_tri_usda-ba795e2eb1c56aef-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/left_handed_tri_usda-ba795e2eb1c56aef-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/lens_cm_usda-73dbd961c243712e-1.image b/crates/crust-core/tests/data/import_baselines/lens_cm_usda-73dbd961c243712e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lens_cm_usda-73dbd961c243712e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/lens_fstop_usda-da4d1cf71564d625-1.image b/crates/crust-core/tests/data/import_baselines/lens_fstop_usda-da4d1cf71564d625-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lens_fstop_usda-da4d1cf71564d625-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/lens_m_usda-983a5a6e5f39e694-1.image b/crates/crust-core/tests/data/import_baselines/lens_m_usda-983a5a6e5f39e694-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lens_m_usda-983a5a6e5f39e694-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/lens_unauthored_usda-24a6800a9f22c131-1.image b/crates/crust-core/tests/data/import_baselines/lens_unauthored_usda-24a6800a9f22c131-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lens_unauthored_usda-24a6800a9f22c131-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/level_two_usda-9004a66abae4e107-1.image b/crates/crust-core/tests/data/import_baselines/level_two_usda-9004a66abae4e107-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/level_two_usda-9004a66abae4e107-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-1.image b/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-1.image new file mode 100644 index 000000000..a37e43eea --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off 8ff86f8441e722fd diff --git a/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-2.image b/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-2.image new file mode 100644 index 000000000..a37e43eea --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-2.image @@ -0,0 +1 @@ +160x90 16spp clamp-off 8ff86f8441e722fd diff --git a/crates/crust-core/tests/data/import_baselines/light_linking_usda-0df578a9208fb7cf-1.image b/crates/crust-core/tests/data/import_baselines/light_linking_usda-0df578a9208fb7cf-1.image new file mode 100644 index 000000000..a37e43eea --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_linking_usda-0df578a9208fb7cf-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off 8ff86f8441e722fd diff --git a/crates/crust-core/tests/data/import_baselines/light_linking_usda-84012730e231d407-1.image b/crates/crust-core/tests/data/import_baselines/light_linking_usda-84012730e231d407-1.image new file mode 100644 index 000000000..a37e43eea --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_linking_usda-84012730e231d407-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off 8ff86f8441e722fd diff --git a/crates/crust-core/tests/data/import_baselines/light_linking_usda-a83ba5cc073d5f22-1.image b/crates/crust-core/tests/data/import_baselines/light_linking_usda-a83ba5cc073d5f22-1.image new file mode 100644 index 000000000..a37e43eea --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_linking_usda-a83ba5cc073d5f22-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off 8ff86f8441e722fd diff --git a/crates/crust-core/tests/data/import_baselines/light_samples_default_usda-6242aa388fa102a1-1.image b/crates/crust-core/tests/data/import_baselines/light_samples_default_usda-6242aa388fa102a1-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_samples_default_usda-6242aa388fa102a1-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/light_samples_huge_usda-128d1881332e6fff-1.image b/crates/crust-core/tests/data/import_baselines/light_samples_huge_usda-128d1881332e6fff-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_samples_huge_usda-128d1881332e6fff-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/light_samples_zero_usda-516355bd0568c89e-1.image b/crates/crust-core/tests/data/import_baselines/light_samples_zero_usda-516355bd0568c89e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_samples_zero_usda-516355bd0568c89e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-1.image b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-1.image new file mode 100644 index 000000000..78d3a71c1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-1.image @@ -0,0 +1 @@ +64x64 16spp clamp-off 65db7ee51a453b8d diff --git a/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-2.image b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-2.image new file mode 100644 index 000000000..78d3a71c1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-2.image @@ -0,0 +1 @@ +64x64 16spp clamp-off 65db7ee51a453b8d diff --git a/crates/crust-core/tests/data/import_baselines/light_visibility_usda-2b8ba6eb3030d1ec-1.image b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-2b8ba6eb3030d1ec-1.image new file mode 100644 index 000000000..78d3a71c1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-2b8ba6eb3030d1ec-1.image @@ -0,0 +1 @@ +64x64 16spp clamp-off 65db7ee51a453b8d diff --git a/crates/crust-core/tests/data/import_baselines/light_visibility_usda-3ea0aa2435326544-1.image b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-3ea0aa2435326544-1.image new file mode 100644 index 000000000..78d3a71c1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-3ea0aa2435326544-1.image @@ -0,0 +1 @@ +64x64 16spp clamp-off 65db7ee51a453b8d diff --git a/crates/crust-core/tests/data/import_baselines/linked_bsdf_1024_usda-00c8472dfa9bd263-1.image b/crates/crust-core/tests/data/import_baselines/linked_bsdf_1024_usda-00c8472dfa9bd263-1.image new file mode 100644 index 000000000..16afd794b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/linked_bsdf_1024_usda-00c8472dfa9bd263-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 5ed6956114dfde57 diff --git a/crates/crust-core/tests/data/import_baselines/linked_bsdf_16_usda-f488614962bd77c6-1.image b/crates/crust-core/tests/data/import_baselines/linked_bsdf_16_usda-f488614962bd77c6-1.image new file mode 100644 index 000000000..16afd794b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/linked_bsdf_16_usda-f488614962bd77c6-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 5ed6956114dfde57 diff --git a/crates/crust-core/tests/data/import_baselines/linked_light_1024_usda-42bcc0ce33e153f3-1.image b/crates/crust-core/tests/data/import_baselines/linked_light_1024_usda-42bcc0ce33e153f3-1.image new file mode 100644 index 000000000..5c5e8a595 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/linked_light_1024_usda-42bcc0ce33e153f3-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 55a5f110a4a9a6e4 diff --git a/crates/crust-core/tests/data/import_baselines/linked_light_16_usda-94637210b45ab59a-1.image b/crates/crust-core/tests/data/import_baselines/linked_light_16_usda-94637210b45ab59a-1.image new file mode 100644 index 000000000..5c5e8a595 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/linked_light_16_usda-94637210b45ab59a-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 55a5f110a4a9a6e4 diff --git a/crates/crust-core/tests/data/import_baselines/linked_power_16_usda-eebb6febe29b133c-1.image b/crates/crust-core/tests/data/import_baselines/linked_power_16_usda-eebb6febe29b133c-1.image new file mode 100644 index 000000000..c43ce0e50 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/linked_power_16_usda-eebb6febe29b133c-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 8bb3154eaa69676f diff --git a/crates/crust-core/tests/data/import_baselines/listing_usda-3efcced39a72eaa9-1.image b/crates/crust-core/tests/data/import_baselines/listing_usda-3efcced39a72eaa9-1.image new file mode 100644 index 000000000..b1fb14759 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/listing_usda-3efcced39a72eaa9-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 1e3a61612e840325 diff --git a/crates/crust-core/tests/data/import_baselines/listing_usda-488ac4c542f2b8d8-1.image b/crates/crust-core/tests/data/import_baselines/listing_usda-488ac4c542f2b8d8-1.image new file mode 100644 index 000000000..b1fb14759 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/listing_usda-488ac4c542f2b8d8-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 1e3a61612e840325 diff --git a/crates/crust-core/tests/data/import_baselines/listing_usda-f960655cad0d43f4-1.image b/crates/crust-core/tests/data/import_baselines/listing_usda-f960655cad0d43f4-1.image new file mode 100644 index 000000000..b1fb14759 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/listing_usda-f960655cad0d43f4-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 1e3a61612e840325 diff --git a/crates/crust-core/tests/data/import_baselines/listing_usda-fd4c266bcdd26a9c-1.image b/crates/crust-core/tests/data/import_baselines/listing_usda-fd4c266bcdd26a9c-1.image new file mode 100644 index 000000000..b1fb14759 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/listing_usda-fd4c266bcdd26a9c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 1e3a61612e840325 diff --git a/crates/crust-core/tests/data/import_baselines/live_cube_usda-4cf5f22f20fef745-1.image b/crates/crust-core/tests/data/import_baselines/live_cube_usda-4cf5f22f20fef745-1.image new file mode 100644 index 000000000..e2bb5fad9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_cube_usda-4cf5f22f20fef745-1.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 332fc06af0b9a325 diff --git a/crates/crust-core/tests/data/import_baselines/live_cylinder_unnamed_usda-7b7e7a1709504194-1.image b/crates/crust-core/tests/data/import_baselines/live_cylinder_unnamed_usda-7b7e7a1709504194-1.image new file mode 100644 index 000000000..e2bb5fad9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_cylinder_unnamed_usda-7b7e7a1709504194-1.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 332fc06af0b9a325 diff --git a/crates/crust-core/tests/data/import_baselines/live_cylinder_usda-07218dcdd495ca91-1.image b/crates/crust-core/tests/data/import_baselines/live_cylinder_usda-07218dcdd495ca91-1.image new file mode 100644 index 000000000..e2bb5fad9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_cylinder_usda-07218dcdd495ca91-1.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 332fc06af0b9a325 diff --git a/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-1.image b/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-1.image new file mode 100644 index 000000000..214b67818 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a042bfcc25c9e880 diff --git a/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-2.image b/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-2.image new file mode 100644 index 000000000..214b67818 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a042bfcc25c9e880 diff --git a/crates/crust-core/tests/data/import_baselines/live_dicing_none_usda-fde7cae55b0adc90-1.image b/crates/crust-core/tests/data/import_baselines/live_dicing_none_usda-fde7cae55b0adc90-1.image new file mode 100644 index 000000000..135f05865 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_dicing_none_usda-fde7cae55b0adc90-1.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 65508cb8ca4e0eda diff --git a/crates/crust-core/tests/data/import_baselines/live_dicing_retarget_usda-682d6c0fca1a4c12-1.image b/crates/crust-core/tests/data/import_baselines/live_dicing_retarget_usda-682d6c0fca1a4c12-1.image new file mode 100644 index 000000000..dda883b77 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_dicing_retarget_usda-682d6c0fca1a4c12-1.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 70bad9e32c7499c8 diff --git a/crates/crust-core/tests/data/import_baselines/live_dicing_usda-8bb261767fad5d1d-1.image b/crates/crust-core/tests/data/import_baselines/live_dicing_usda-8bb261767fad5d1d-1.image new file mode 100644 index 000000000..dda883b77 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_dicing_usda-8bb261767fad5d1d-1.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 70bad9e32c7499c8 diff --git a/crates/crust-core/tests/data/import_baselines/live_dicing_usda-c3c9ffc84677f809-1.image b/crates/crust-core/tests/data/import_baselines/live_dicing_usda-c3c9ffc84677f809-1.image new file mode 100644 index 000000000..4fbdb33d2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_dicing_usda-c3c9ffc84677f809-1.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 42720b5aadcdbe76 diff --git a/crates/crust-core/tests/data/import_baselines/live_framing_adaptive_usda-264a6722f87e2488-1.image b/crates/crust-core/tests/data/import_baselines/live_framing_adaptive_usda-264a6722f87e2488-1.image new file mode 100644 index 000000000..135f05865 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_framing_adaptive_usda-264a6722f87e2488-1.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 65508cb8ca4e0eda diff --git a/crates/crust-core/tests/data/import_baselines/live_framing_usda-21ec0fb4edc0e3e0-1.image b/crates/crust-core/tests/data/import_baselines/live_framing_usda-21ec0fb4edc0e3e0-1.image new file mode 100644 index 000000000..49b1a16bb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_framing_usda-21ec0fb4edc0e3e0-1.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 3e487c20041ed425 diff --git a/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-1.image b/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-1.image new file mode 100644 index 000000000..a9f73b500 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-1.image @@ -0,0 +1 @@ +64x32 16spp clamp-off f928cebc00d34ba3 diff --git a/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-2.image b/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-2.image new file mode 100644 index 000000000..a9f73b500 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-2.image @@ -0,0 +1 @@ +64x32 16spp clamp-off f928cebc00d34ba3 diff --git a/crates/crust-core/tests/data/import_baselines/live_primvar_warnings_usda-bb9c911d0ed38f94-1.image b/crates/crust-core/tests/data/import_baselines/live_primvar_warnings_usda-bb9c911d0ed38f94-1.image new file mode 100644 index 000000000..361b4195c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_primvar_warnings_usda-bb9c911d0ed38f94-1.image @@ -0,0 +1 @@ +32x32 16spp clamp-off 6e431751526de325 diff --git a/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-59fb6cd49cb76e6b-1.image b/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-59fb6cd49cb76e6b-1.image new file mode 100644 index 000000000..361b4195c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-59fb6cd49cb76e6b-1.image @@ -0,0 +1 @@ +32x32 16spp clamp-off 6e431751526de325 diff --git a/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-f4742b8648291059-1.image b/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-f4742b8648291059-1.image new file mode 100644 index 000000000..361b4195c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-f4742b8648291059-1.image @@ -0,0 +1 @@ +32x32 16spp clamp-off 6e431751526de325 diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_adaptive_usda-df276969e17c075b-1.image b/crates/crust-core/tests/data/import_baselines/live_retarget_adaptive_usda-df276969e17c075b-1.image new file mode 100644 index 000000000..cf93613f9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_adaptive_usda-df276969e17c075b-1.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 16e836a303211e0c diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-68dfaa2802aa4ba4-1.image b/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-68dfaa2802aa4ba4-1.image new file mode 100644 index 000000000..d552ea83e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-68dfaa2802aa4ba4-1.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 109520ee84a77282 diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-91fe8df867e8f0cc-1.image b/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-91fe8df867e8f0cc-1.image new file mode 100644 index 000000000..9c870aab2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-91fe8df867e8f0cc-1.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 139f317474d7c86a diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_empty_usda-6f96b70b05bd5238-1.image b/crates/crust-core/tests/data/import_baselines/live_retarget_empty_usda-6f96b70b05bd5238-1.image new file mode 100644 index 000000000..93a93b942 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_empty_usda-6f96b70b05bd5238-1.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 0f74b9a35dc0bedd diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_rig_usda-c517fabd0cfe3025-1.image b/crates/crust-core/tests/data/import_baselines/live_retarget_rig_usda-c517fabd0cfe3025-1.image new file mode 100644 index 000000000..93a93b942 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_rig_usda-c517fabd0cfe3025-1.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 0f74b9a35dc0bedd diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_slow_usda-abb2313197b2f2f6-1.image b/crates/crust-core/tests/data/import_baselines/live_retarget_slow_usda-abb2313197b2f2f6-1.image new file mode 100644 index 000000000..93a93b942 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_slow_usda-abb2313197b2f2f6-1.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 0f74b9a35dc0bedd diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_unnamed_usda-11fb9c8dd8a6685f-1.image b/crates/crust-core/tests/data/import_baselines/live_retarget_unnamed_usda-11fb9c8dd8a6685f-1.image new file mode 100644 index 000000000..93a93b942 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_unnamed_usda-11fb9c8dd8a6685f-1.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 0f74b9a35dc0bedd diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-443a3934a068f8e2-1.image b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-443a3934a068f8e2-1.image new file mode 100644 index 000000000..5a223d639 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-443a3934a068f8e2-1.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 6451e8d1d0169b9e diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-1.image b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-1.image new file mode 100644 index 000000000..93a93b942 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-1.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 0f74b9a35dc0bedd diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-2.image b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-2.image new file mode 100644 index 000000000..93a93b942 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-2.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 0f74b9a35dc0bedd diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-3.image b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-3.image new file mode 100644 index 000000000..93a93b942 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-3.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 0f74b9a35dc0bedd diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-4.image b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-4.image new file mode 100644 index 000000000..93a93b942 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-4.image @@ -0,0 +1 @@ +64x32 16spp clamp-off 0f74b9a35dc0bedd diff --git a/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-1.image b/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-1.image new file mode 100644 index 000000000..431de6ffe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 8fe84ece808596b4 diff --git a/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-2.image b/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-2.image new file mode 100644 index 000000000..431de6ffe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-2.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 8fe84ece808596b4 diff --git a/crates/crust-core/tests/data/import_baselines/live_usda-b329c13621e10111-1.image b/crates/crust-core/tests/data/import_baselines/live_usda-b329c13621e10111-1.image new file mode 100644 index 000000000..b01e6071e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/live_usda-b329c13621e10111-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off bbc4bce34628e579 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-168fe99d44c7fbd8-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-168fe99d44c7fbd8-1.image new file mode 100644 index 000000000..6d0c7cc68 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-168fe99d44c7fbd8-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off 6d657218ffac01a2 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-1.image new file mode 100644 index 000000000..afc2d921e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 2caa34772f5d6a86 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-2.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-2.image new file mode 100644 index 000000000..afc2d921e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-2.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 2caa34772f5d6a86 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-2df588e196076e2d-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-2df588e196076e2d-1.image new file mode 100644 index 000000000..f5a40b79c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-2df588e196076e2d-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 7fc2a052099963ae diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-37661541bc721de0-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-37661541bc721de0-1.image new file mode 100644 index 000000000..79ca9c1a0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-37661541bc721de0-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 6673c392f1d4262b diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-451cadfaa7f8e528-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-451cadfaa7f8e528-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-451cadfaa7f8e528-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-4e0b53f3e573c0d5-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-4e0b53f3e573c0d5-1.image new file mode 100644 index 000000000..5e92756f1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-4e0b53f3e573c0d5-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 3dd1fad54766a614 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-1.image new file mode 100644 index 000000000..afc2d921e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 2caa34772f5d6a86 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-2.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-2.image new file mode 100644 index 000000000..afc2d921e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-2.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 2caa34772f5d6a86 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-619dbb27dff03edb-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-619dbb27dff03edb-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-619dbb27dff03edb-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-6332af41b2f94037-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-6332af41b2f94037-1.image new file mode 100644 index 000000000..11828d811 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-6332af41b2f94037-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off a22f3882aa730ddf diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-66e64ab7da1be7a8-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-66e64ab7da1be7a8-1.image new file mode 100644 index 000000000..afc2d921e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-66e64ab7da1be7a8-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 2caa34772f5d6a86 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-675a4c56d7da2e1a-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-675a4c56d7da2e1a-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-675a4c56d7da2e1a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-6a91390c6e2e8f32-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-6a91390c6e2e8f32-1.image new file mode 100644 index 000000000..11828d811 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-6a91390c6e2e8f32-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off a22f3882aa730ddf diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-75d1c7f90fc366b6-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-75d1c7f90fc366b6-1.image new file mode 100644 index 000000000..cc6b70dc4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-75d1c7f90fc366b6-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 41504af5265577be diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ce0ae0f49d396d8-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ce0ae0f49d396d8-1.image new file mode 100644 index 000000000..e14303a7e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ce0ae0f49d396d8-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 55db275bd8392d23 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ed4ae42b2f80bd6-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ed4ae42b2f80bd6-1.image new file mode 100644 index 000000000..2fbdc9344 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ed4ae42b2f80bd6-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 4c86d9fc0259a5fb diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-83b2bc40e66e8d90-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-83b2bc40e66e8d90-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-83b2bc40e66e8d90-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-84687138ca39f6d2-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-84687138ca39f6d2-1.image new file mode 100644 index 000000000..11828d811 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-84687138ca39f6d2-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off a22f3882aa730ddf diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-889e2ebeaf6f6f43-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-889e2ebeaf6f6f43-1.image new file mode 100644 index 000000000..7bccda95e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-889e2ebeaf6f6f43-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off f5b219db6d0d9155 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-1.image new file mode 100644 index 000000000..afc2d921e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 2caa34772f5d6a86 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-2.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-2.image new file mode 100644 index 000000000..afc2d921e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-2.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 2caa34772f5d6a86 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-8e1d5d176c63c934-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-8e1d5d176c63c934-1.image new file mode 100644 index 000000000..11828d811 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-8e1d5d176c63c934-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off a22f3882aa730ddf diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-96a10d1a1b799db6-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-96a10d1a1b799db6-1.image new file mode 100644 index 000000000..4b9a46633 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-96a10d1a1b799db6-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 878a44fd0e7d2b84 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-96b32b9e68a1ec9a-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-96b32b9e68a1ec9a-1.image new file mode 100644 index 000000000..11828d811 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-96b32b9e68a1ec9a-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off a22f3882aa730ddf diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-9b73e2f3385f85a2-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-9b73e2f3385f85a2-1.image new file mode 100644 index 000000000..afc2d921e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-9b73e2f3385f85a2-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 2caa34772f5d6a86 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-a96810dec00d46d8-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-a96810dec00d46d8-1.image new file mode 100644 index 000000000..84d1067ee --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-a96810dec00d46d8-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 5a2933f6e5a6c553 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-ad6a0ecf2cf3c658-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-ad6a0ecf2cf3c658-1.image new file mode 100644 index 000000000..317a333b8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-ad6a0ecf2cf3c658-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 19468fbea2a3acfc diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-b139810cbe0eac4c-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-b139810cbe0eac4c-1.image new file mode 100644 index 000000000..569cd2ee9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-b139810cbe0eac4c-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 0a5bf65444923e88 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-b1d2ea509cf7ee23-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-b1d2ea509cf7ee23-1.image new file mode 100644 index 000000000..17db6ed7e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-b1d2ea509cf7ee23-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 85590c18f0470a9c diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-b23ccdb4706d3d98-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-b23ccdb4706d3d98-1.image new file mode 100644 index 000000000..a8f7340dc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-b23ccdb4706d3d98-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 28c076e202f42a8b diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-bdef936e454d02c5-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-bdef936e454d02c5-1.image new file mode 100644 index 000000000..11828d811 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-bdef936e454d02c5-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off a22f3882aa730ddf diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-c088c49aaf559905-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-c088c49aaf559905-1.image new file mode 100644 index 000000000..6fb80b80b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-c088c49aaf559905-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 3d7a4f12a4369faf diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-c8874f17309d40f1-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-c8874f17309d40f1-1.image new file mode 100644 index 000000000..11828d811 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-c8874f17309d40f1-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off a22f3882aa730ddf diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-cab3bf60bc31d2f7-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-cab3bf60bc31d2f7-1.image new file mode 100644 index 000000000..afc2d921e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-cab3bf60bc31d2f7-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 2caa34772f5d6a86 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-cae9785463ecddf6-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-cae9785463ecddf6-1.image new file mode 100644 index 000000000..11828d811 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-cae9785463ecddf6-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off a22f3882aa730ddf diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-d07bf630611d13b0-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-d07bf630611d13b0-1.image new file mode 100644 index 000000000..3013e04d8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-d07bf630611d13b0-1.image @@ -0,0 +1 @@ +32x18 16spp clamp-off 988ca9561494bf25 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-d977f122a6f754f5-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-d977f122a6f754f5-1.image new file mode 100644 index 000000000..8c3cb6cc5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-d977f122a6f754f5-1.image @@ -0,0 +1 @@ +32x18 16spp clamp-off bb27b0e25769ee18 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-da5095c5387fc6d5-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-da5095c5387fc6d5-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-da5095c5387fc6d5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-ddd9a472681fe394-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-ddd9a472681fe394-1.image new file mode 100644 index 000000000..afc2d921e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-ddd9a472681fe394-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 2caa34772f5d6a86 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-e6376a73c80d838f-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-e6376a73c80d838f-1.image new file mode 100644 index 000000000..afc2d921e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-e6376a73c80d838f-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 2caa34772f5d6a86 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-f0ebb00d074c9c96-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f0ebb00d074c9c96-1.image new file mode 100644 index 000000000..6d0c7cc68 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f0ebb00d074c9c96-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off 6d657218ffac01a2 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-1.image new file mode 100644 index 000000000..05383b1cc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-1.image @@ -0,0 +1 @@ +32x18 16spp clamp-off be8bda21ef27bf9b diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-2.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-2.image new file mode 100644 index 000000000..05383b1cc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-2.image @@ -0,0 +1 @@ +32x18 16spp clamp-off be8bda21ef27bf9b diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-f4c4e13661091485-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f4c4e13661091485-1.image new file mode 100644 index 000000000..11828d811 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f4c4e13661091485-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off a22f3882aa730ddf diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-fa7c6612a51b87e4-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-fa7c6612a51b87e4-1.image new file mode 100644 index 000000000..afc2d921e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-fa7c6612a51b87e4-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 2caa34772f5d6a86 diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-fad17720e6382b8f-1.image b/crates/crust-core/tests/data/import_baselines/lookdev_usda-fad17720e6382b8f-1.image new file mode 100644 index 000000000..11828d811 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-fad17720e6382b8f-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off a22f3882aa730ddf diff --git a/crates/crust-core/tests/data/import_baselines/loop_plain_usda-47275a5a5923eb53-1.image b/crates/crust-core/tests/data/import_baselines/loop_plain_usda-47275a5a5923eb53-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/loop_plain_usda-47275a5a5923eb53-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/loop_ptex_usda-305da98d6891c0e8-1.image b/crates/crust-core/tests/data/import_baselines/loop_ptex_usda-305da98d6891c0e8-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/loop_ptex_usda-305da98d6891c0e8-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/lpe_too_complex_usda-d110af4b6d4f2169-1.image b/crates/crust-core/tests/data/import_baselines/lpe_too_complex_usda-d110af4b6d4f2169-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lpe_too_complex_usda-d110af4b6d4f2169-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/lpe_variance_usda-eb6b4998eed83db2-1.image b/crates/crust-core/tests/data/import_baselines/lpe_variance_usda-eb6b4998eed83db2-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lpe_variance_usda-eb6b4998eed83db2-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/lpe_vars_usda-4a1166013a93c744-1.image b/crates/crust-core/tests/data/import_baselines/lpe_vars_usda-4a1166013a93c744-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/lpe_vars_usda-4a1166013a93c744-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/malformed_usda-6eca12ea39b96a60-1.image b/crates/crust-core/tests/data/import_baselines/malformed_usda-6eca12ea39b96a60-1.image new file mode 100644 index 000000000..6b5b90725 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/malformed_usda-6eca12ea39b96a60-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off 47c4c250dfa669eb diff --git a/crates/crust-core/tests/data/import_baselines/many_lights_usda-2896f3594596fed9-1.image b/crates/crust-core/tests/data/import_baselines/many_lights_usda-2896f3594596fed9-1.image new file mode 100644 index 000000000..3c58a13e7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/many_lights_usda-2896f3594596fed9-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 324b3d3f36346629 diff --git a/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-1.image b/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-1.image new file mode 100644 index 000000000..3c58a13e7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 324b3d3f36346629 diff --git a/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-2.image b/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-2.image new file mode 100644 index 000000000..3c58a13e7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-2.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 324b3d3f36346629 diff --git a/crates/crust-core/tests/data/import_baselines/marks_usda-92136ff2d6b2d34c-1.image b/crates/crust-core/tests/data/import_baselines/marks_usda-92136ff2d6b2d34c-1.image new file mode 100644 index 000000000..ff4dbd240 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/marks_usda-92136ff2d6b2d34c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 263ba081a1bd59fc diff --git a/crates/crust-core/tests/data/import_baselines/masks_usda-0b1d6cd46ef5aa7b-1.image b/crates/crust-core/tests/data/import_baselines/masks_usda-0b1d6cd46ef5aa7b-1.image new file mode 100644 index 000000000..0d5371bdf --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/masks_usda-0b1d6cd46ef5aa7b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 7262827b81999b78 diff --git a/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-1.image b/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-1.image new file mode 100644 index 000000000..300fb9e4a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 82ffcdcec2f0a128 diff --git a/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-2.image b/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-2.image new file mode 100644 index 000000000..300fb9e4a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 82ffcdcec2f0a128 diff --git a/crates/crust-core/tests/data/import_baselines/mass_spike_usda-dee5e21f531bb6c7-1.image b/crates/crust-core/tests/data/import_baselines/mass_spike_usda-dee5e21f531bb6c7-1.image new file mode 100644 index 000000000..300fb9e4a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mass_spike_usda-dee5e21f531bb6c7-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 82ffcdcec2f0a128 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-1.image b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-1.image new file mode 100644 index 000000000..351e4c622 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 4c3417d5ab1e2f66 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-2.image b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-2.image new file mode 100644 index 000000000..351e4c622 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 4c3417d5ab1e2f66 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-47f44502b8b66093-1.image b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-47f44502b8b66093-1.image new file mode 100644 index 000000000..351e4c622 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-47f44502b8b66093-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 4c3417d5ab1e2f66 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-5e3c6402db738e98-1.image b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-5e3c6402db738e98-1.image new file mode 100644 index 000000000..351e4c622 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-5e3c6402db738e98-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 4c3417d5ab1e2f66 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-605f278bcaf83bcb-1.image b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-605f278bcaf83bcb-1.image new file mode 100644 index 000000000..351e4c622 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-605f278bcaf83bcb-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 4c3417d5ab1e2f66 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-7efe0aff05c6d47a-1.image b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-7efe0aff05c6d47a-1.image new file mode 100644 index 000000000..5c3676676 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-7efe0aff05c6d47a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 209246aff562e5bb diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-ee87ad7ab34333f5-1.image b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-ee87ad7ab34333f5-1.image new file mode 100644 index 000000000..351e4c622 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-ee87ad7ab34333f5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 4c3417d5ab1e2f66 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-1.image b/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-1.image new file mode 100644 index 000000000..f6cdffe86 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-1.image @@ -0,0 +1 @@ +640x320 16spp clamp-off 72ee04eb903718f6 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-2.image b/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-2.image new file mode 100644 index 000000000..f6cdffe86 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-2.image @@ -0,0 +1 @@ +640x320 16spp clamp-off 72ee04eb903718f6 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-ae65df7de0c507fa-1.image b/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-ae65df7de0c507fa-1.image new file mode 100644 index 000000000..ae214b496 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-ae65df7de0c507fa-1.image @@ -0,0 +1 @@ +640x320 16spp clamp-off f2f8d62c99d00f96 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-1.image b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-1.image new file mode 100644 index 000000000..7aa8db895 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off e9284a2563f7fde7 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-2.image b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-2.image new file mode 100644 index 000000000..7aa8db895 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-2.image @@ -0,0 +1 @@ +480x270 16spp clamp-off e9284a2563f7fde7 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-3c55abed0c2329af-1.image b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-3c55abed0c2329af-1.image new file mode 100644 index 000000000..88b6dad79 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-3c55abed0c2329af-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 5c86dbe9d51e7930 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-746e6884e4aa1a13-1.image b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-746e6884e4aa1a13-1.image new file mode 100644 index 000000000..7aa8db895 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-746e6884e4aa1a13-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off e9284a2563f7fde7 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-8dd82f7591e605f2-1.image b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-8dd82f7591e605f2-1.image new file mode 100644 index 000000000..7aa8db895 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-8dd82f7591e605f2-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off e9284a2563f7fde7 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-a62e7b45a5b76dea-1.image b/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-a62e7b45a5b76dea-1.image new file mode 100644 index 000000000..55a017520 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-a62e7b45a5b76dea-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off 2aaa819629c6b641 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-1.image b/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-1.image new file mode 100644 index 000000000..81172d3d1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off affca6c86a2b6fce diff --git a/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-2.image b/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-2.image new file mode 100644 index 000000000..81172d3d1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-2.image @@ -0,0 +1 @@ +960x540 16spp clamp-off affca6c86a2b6fce diff --git a/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-1e9e0f7089dbbfd5-1.image b/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-1e9e0f7089dbbfd5-1.image new file mode 100644 index 000000000..2a362eaa2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-1e9e0f7089dbbfd5-1.image @@ -0,0 +1 @@ +1920x1080 16spp clamp-off a06b2a4fde9570af diff --git a/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-1.image b/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-1.image new file mode 100644 index 000000000..9863e023b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-1.image @@ -0,0 +1 @@ +1920x1080 16spp clamp-off 3def04d25b2b7d24 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-2.image b/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-2.image new file mode 100644 index 000000000..9863e023b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-2.image @@ -0,0 +1 @@ +1920x1080 16spp clamp-off 3def04d25b2b7d24 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-218ab79fb5de55b5-1.image b/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-218ab79fb5de55b5-1.image new file mode 100644 index 000000000..d3048beae --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-218ab79fb5de55b5-1.image @@ -0,0 +1 @@ +640x320 16spp clamp-off 208cda1e53c1a362 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-1.image b/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-1.image new file mode 100644 index 000000000..5002ce8cf --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-1.image @@ -0,0 +1 @@ +640x320 16spp clamp-off 372d1c9e85cba058 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-2.image b/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-2.image new file mode 100644 index 000000000..5002ce8cf --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-2.image @@ -0,0 +1 @@ +640x320 16spp clamp-off 372d1c9e85cba058 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-1.image b/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-1.image new file mode 100644 index 000000000..1df05aeb9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-1.image @@ -0,0 +1 @@ +640x400 16spp clamp-off 6cc2043aff96238e diff --git a/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-2.image b/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-2.image new file mode 100644 index 000000000..1df05aeb9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-2.image @@ -0,0 +1 @@ +640x400 16spp clamp-off 6cc2043aff96238e diff --git a/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-ca1ad78e541d4d41-1.image b/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-ca1ad78e541d4d41-1.image new file mode 100644 index 000000000..b5b48ffea --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-ca1ad78e541d4d41-1.image @@ -0,0 +1 @@ +640x400 16spp clamp-off 327348653f0f18b7 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-1.image b/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-1.image new file mode 100644 index 000000000..71e8c8c05 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off 8d5988be50958c3c diff --git a/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-2.image b/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-2.image new file mode 100644 index 000000000..71e8c8c05 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-2.image @@ -0,0 +1 @@ +960x540 16spp clamp-off 8d5988be50958c3c diff --git a/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-6ea1bea03dbe6c0d-1.image b/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-6ea1bea03dbe6c0d-1.image new file mode 100644 index 000000000..b07e86748 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-6ea1bea03dbe6c0d-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off f828b69f81e51210 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-0d615ee9e93f873e-1.image b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-0d615ee9e93f873e-1.image new file mode 100644 index 000000000..f4a834080 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-0d615ee9e93f873e-1.image @@ -0,0 +1 @@ +640x320 16spp clamp-off 82ba0316845cb3d3 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-dbd96c41f0cfcd9f-1.image b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-dbd96c41f0cfcd9f-1.image new file mode 100644 index 000000000..116ea7909 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-dbd96c41f0cfcd9f-1.image @@ -0,0 +1 @@ +640x320 16spp clamp-off dfb6632cfcd081b5 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-1.image b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-1.image new file mode 100644 index 000000000..f4a834080 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-1.image @@ -0,0 +1 @@ +640x320 16spp clamp-off 82ba0316845cb3d3 diff --git a/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-2.image b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-2.image new file mode 100644 index 000000000..f4a834080 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-2.image @@ -0,0 +1 @@ +640x320 16spp clamp-off 82ba0316845cb3d3 diff --git a/crates/crust-core/tests/data/import_baselines/matrix_usda-9dd65c424c31f5e5-1.image b/crates/crust-core/tests/data/import_baselines/matrix_usda-9dd65c424c31f5e5-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/matrix_usda-9dd65c424c31f5e5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/matte_dome_usda-942a3b1e6f8ce42b-1.image b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-942a3b1e6f8ce42b-1.image new file mode 100644 index 000000000..e1a656b71 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-942a3b1e6f8ce42b-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 5a9f04a1349ce87a diff --git a/crates/crust-core/tests/data/import_baselines/matte_dome_usda-e3baadd4a9e3ffb7-1.image b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-e3baadd4a9e3ffb7-1.image new file mode 100644 index 000000000..f874ef134 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-e3baadd4a9e3ffb7-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9c57df03b09e1554 diff --git a/crates/crust-core/tests/data/import_baselines/max_depth_negative_usda-eec4c585057974f1-1.image b/crates/crust-core/tests/data/import_baselines/max_depth_negative_usda-eec4c585057974f1-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/max_depth_negative_usda-eec4c585057974f1-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/max_depth_one_usda-0b2d301b9905817a-1.image b/crates/crust-core/tests/data/import_baselines/max_depth_one_usda-0b2d301b9905817a-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/max_depth_one_usda-0b2d301b9905817a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/max_depth_zero_usda-931745fbe0c2c985-1.image b/crates/crust-core/tests/data/import_baselines/max_depth_zero_usda-931745fbe0c2c985-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/max_depth_zero_usda-931745fbe0c2c985-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/membership_usda-e44fc1429c4b92d1-1.image b/crates/crust-core/tests/data/import_baselines/membership_usda-e44fc1429c4b92d1-1.image new file mode 100644 index 000000000..7a635e34f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/membership_usda-e44fc1429c4b92d1-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 175dbcadbf3b88f7 diff --git a/crates/crust-core/tests/data/import_baselines/mesh_blurred_usda-13d48869156e4433-1.image b/crates/crust-core/tests/data/import_baselines/mesh_blurred_usda-13d48869156e4433-1.image new file mode 100644 index 000000000..41d6a31ea --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mesh_blurred_usda-13d48869156e4433-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 3c406206c0d3b4b6 diff --git a/crates/crust-core/tests/data/import_baselines/mesh_both_usda-90fff2587206dcbe-1.image b/crates/crust-core/tests/data/import_baselines/mesh_both_usda-90fff2587206dcbe-1.image new file mode 100644 index 000000000..c3f5aa567 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mesh_both_usda-90fff2587206dcbe-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 53fc40f87c315583 diff --git a/crates/crust-core/tests/data/import_baselines/mesh_sharp_usda-98679e56cacbfa24-1.image b/crates/crust-core/tests/data/import_baselines/mesh_sharp_usda-98679e56cacbfa24-1.image new file mode 100644 index 000000000..0e8a4d39e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mesh_sharp_usda-98679e56cacbfa24-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 51c3405b7660a8ac diff --git a/crates/crust-core/tests/data/import_baselines/mesh_track_usda-2da67447ace68ea3-1.image b/crates/crust-core/tests/data/import_baselines/mesh_track_usda-2da67447ace68ea3-1.image new file mode 100644 index 000000000..41d6a31ea --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mesh_track_usda-2da67447ace68ea3-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 3c406206c0d3b4b6 diff --git a/crates/crust-core/tests/data/import_baselines/metal_0_1_power_1_usda-d5e924c1e43088a2-1.image b/crates/crust-core/tests/data/import_baselines/metal_0_1_power_1_usda-d5e924c1e43088a2-1.image new file mode 100644 index 000000000..81e5ed6c7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/metal_0_1_power_1_usda-d5e924c1e43088a2-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off fe5f611a6f2bbe85 diff --git a/crates/crust-core/tests/data/import_baselines/metal_1_0_power_1_usda-0a224c171445c02a-1.image b/crates/crust-core/tests/data/import_baselines/metal_1_0_power_1_usda-0a224c171445c02a-1.image new file mode 100644 index 000000000..0b1b824a5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/metal_1_0_power_1_usda-0a224c171445c02a-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 7e8e0fa784351325 diff --git a/crates/crust-core/tests/data/import_baselines/metal_1_1_power_1_usda-3e1ca1268dde29a1-1.image b/crates/crust-core/tests/data/import_baselines/metal_1_1_power_1_usda-3e1ca1268dde29a1-1.image new file mode 100644 index 000000000..81e5ed6c7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/metal_1_1_power_1_usda-3e1ca1268dde29a1-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off fe5f611a6f2bbe85 diff --git a/crates/crust-core/tests/data/import_baselines/mirror_usda-e5687a44290234b9-1.image b/crates/crust-core/tests/data/import_baselines/mirror_usda-e5687a44290234b9-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mirror_usda-e5687a44290234b9-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/mismatch_same_usda-36f547d4088a73c8-1.image b/crates/crust-core/tests/data/import_baselines/mismatch_same_usda-36f547d4088a73c8-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mismatch_same_usda-36f547d4088a73c8-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/mismatch_usda-4938acb7109c81b3-1.image b/crates/crust-core/tests/data/import_baselines/mismatch_usda-4938acb7109c81b3-1.image new file mode 100644 index 000000000..648a9f248 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mismatch_usda-4938acb7109c81b3-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off 54407d51eeed59ca diff --git a/crates/crust-core/tests/data/import_baselines/mismatch_usda-e42c92f5d05f1fcf-1.image b/crates/crust-core/tests/data/import_baselines/mismatch_usda-e42c92f5d05f1fcf-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mismatch_usda-e42c92f5d05f1fcf-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/missing_usda-048983dc2b7e8f66-1.image b/crates/crust-core/tests/data/import_baselines/missing_usda-048983dc2b7e8f66-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/missing_usda-048983dc2b7e8f66-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/mixed_hair_ref_usda-1bf6615be167a70b-1.image b/crates/crust-core/tests/data/import_baselines/mixed_hair_ref_usda-1bf6615be167a70b-1.image new file mode 100644 index 000000000..a0bf16a7b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mixed_hair_ref_usda-1bf6615be167a70b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off f8a9f23b5160dcb7 diff --git a/crates/crust-core/tests/data/import_baselines/mixed_hair_usda-e643846eb6c6d950-1.image b/crates/crust-core/tests/data/import_baselines/mixed_hair_usda-e643846eb6c6d950-1.image new file mode 100644 index 000000000..345966086 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/mixed_hair_usda-e643846eb6c6d950-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 6133acb42277d07c diff --git a/crates/crust-core/tests/data/import_baselines/motionblur_usda-2ad099074d244fc2-1.image b/crates/crust-core/tests/data/import_baselines/motionblur_usda-2ad099074d244fc2-1.image new file mode 100644 index 000000000..7d08b11b2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionblur_usda-2ad099074d244fc2-1.image @@ -0,0 +1 @@ +96x54 16spp clamp-off 6c45ffff7627d298 diff --git a/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-1.image b/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-1.image new file mode 100644 index 000000000..d50d3f6a9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-1.image @@ -0,0 +1 @@ +96x54 16spp clamp-off 81548b5cda94f9f8 diff --git a/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-2.image b/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-2.image new file mode 100644 index 000000000..d50d3f6a9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-2.image @@ -0,0 +1 @@ +96x54 16spp clamp-off 81548b5cda94f9f8 diff --git a/crates/crust-core/tests/data/import_baselines/motionblur_usda-ff0d49c1a505d497-1.image b/crates/crust-core/tests/data/import_baselines/motionblur_usda-ff0d49c1a505d497-1.image new file mode 100644 index 000000000..d50d3f6a9 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionblur_usda-ff0d49c1a505d497-1.image @@ -0,0 +1 @@ +96x54 16spp clamp-off 81548b5cda94f9f8 diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_aliases_usda-8852d8dcf38ecf0d-1.image b/crates/crust-core/tests/data/import_baselines/motionvector_aliases_usda-8852d8dcf38ecf0d-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_aliases_usda-8852d8dcf38ecf0d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_blurred_usda-6d69c20d22e19877-1.image b/crates/crust-core/tests/data/import_baselines/motionvector_blurred_usda-6d69c20d22e19877-1.image new file mode 100644 index 000000000..4a46f93d0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_blurred_usda-6d69c20d22e19877-1.image @@ -0,0 +1 @@ +128x72 16spp clamp-off 76059e49fd5aa45a diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_types_usda-d2a10e1c91de57de-1.image b/crates/crust-core/tests/data/import_baselines/motionvector_types_usda-d2a10e1c91de57de-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_types_usda-d2a10e1c91de57de-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-0097c4dc99684b31-1.image b/crates/crust-core/tests/data/import_baselines/motionvector_usda-0097c4dc99684b31-1.image new file mode 100644 index 000000000..718291567 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-0097c4dc99684b31-1.image @@ -0,0 +1 @@ +128x72 16spp clamp-off 1ef9eb51501467a1 diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-2921a3a583a7af01-1.image b/crates/crust-core/tests/data/import_baselines/motionvector_usda-2921a3a583a7af01-1.image new file mode 100644 index 000000000..718291567 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-2921a3a583a7af01-1.image @@ -0,0 +1 @@ +128x72 16spp clamp-off 1ef9eb51501467a1 diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-1.image b/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-1.image new file mode 100644 index 000000000..718291567 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-1.image @@ -0,0 +1 @@ +128x72 16spp clamp-off 1ef9eb51501467a1 diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-2.image b/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-2.image new file mode 100644 index 000000000..718291567 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-2.image @@ -0,0 +1 @@ +128x72 16spp clamp-off 1ef9eb51501467a1 diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-43ed7e424bbaa4f7-1.image b/crates/crust-core/tests/data/import_baselines/motionvector_usda-43ed7e424bbaa4f7-1.image new file mode 100644 index 000000000..718291567 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-43ed7e424bbaa4f7-1.image @@ -0,0 +1 @@ +128x72 16spp clamp-off 1ef9eb51501467a1 diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-6dec65e3aa55dc9d-1.image b/crates/crust-core/tests/data/import_baselines/motionvector_usda-6dec65e3aa55dc9d-1.image new file mode 100644 index 000000000..718291567 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-6dec65e3aa55dc9d-1.image @@ -0,0 +1 @@ +128x72 16spp clamp-off 1ef9eb51501467a1 diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-c5f34f1e623349ba-1.image b/crates/crust-core/tests/data/import_baselines/motionvector_usda-c5f34f1e623349ba-1.image new file mode 100644 index 000000000..718291567 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-c5f34f1e623349ba-1.image @@ -0,0 +1 @@ +128x72 16spp clamp-off 1ef9eb51501467a1 diff --git a/crates/crust-core/tests/data/import_baselines/multiply_usda-8736676f00161943-1.image b/crates/crust-core/tests/data/import_baselines/multiply_usda-8736676f00161943-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/multiply_usda-8736676f00161943-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/named_chart_usda-67761c5ec52139aa-1.image b/crates/crust-core/tests/data/import_baselines/named_chart_usda-67761c5ec52139aa-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/named_chart_usda-67761c5ec52139aa-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/named_usda-455967a7b376e998-1.image b/crates/crust-core/tests/data/import_baselines/named_usda-455967a7b376e998-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/named_usda-455967a7b376e998-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/named_usda-caf35125dfbdc7e1-1.image b/crates/crust-core/tests/data/import_baselines/named_usda-caf35125dfbdc7e1-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/named_usda-caf35125dfbdc7e1-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/named_usda-d1e9bde789e7233a-1.image b/crates/crust-core/tests/data/import_baselines/named_usda-d1e9bde789e7233a-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/named_usda-d1e9bde789e7233a-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/nan_shaping_usda-9e699df2d0518cc0-1.image b/crates/crust-core/tests/data/import_baselines/nan_shaping_usda-9e699df2d0518cc0-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nan_shaping_usda-9e699df2d0518cc0-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/native_usda-48df729899939992-1.image b/crates/crust-core/tests/data/import_baselines/native_usda-48df729899939992-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/native_usda-48df729899939992-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/native_usda-aa00109a0de726bd-1.image b/crates/crust-core/tests/data/import_baselines/native_usda-aa00109a0de726bd-1.image new file mode 100644 index 000000000..cf663bb5a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/native_usda-aa00109a0de726bd-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off a23f88108aadd2a9 diff --git a/crates/crust-core/tests/data/import_baselines/near_far_usda-378c724af4dad1fb-1.image b/crates/crust-core/tests/data/import_baselines/near_far_usda-378c724af4dad1fb-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/near_far_usda-378c724af4dad1fb-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/nearest_usda-01bca6fa7666b1f3-1.image b/crates/crust-core/tests/data/import_baselines/nearest_usda-01bca6fa7666b1f3-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nearest_usda-01bca6fa7666b1f3-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/nearest_usda-6471e7e6d484d155-1.image b/crates/crust-core/tests/data/import_baselines/nearest_usda-6471e7e6d484d155-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nearest_usda-6471e7e6d484d155-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/negative_min_spp_usda-f445ea0383fc1875-1.image b/crates/crust-core/tests/data/import_baselines/negative_min_spp_usda-f445ea0383fc1875-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/negative_min_spp_usda-f445ea0383fc1875-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/nested_direct_usda-e25d7da2b966c023-1.image b/crates/crust-core/tests/data/import_baselines/nested_direct_usda-e25d7da2b966c023-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_direct_usda-e25d7da2b966c023-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/nested_hidden_usda-0ea71f61bc0a58d6-1.image b/crates/crust-core/tests/data/import_baselines/nested_hidden_usda-0ea71f61bc0a58d6-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_hidden_usda-0ea71f61bc0a58d6-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancer_proto_root_xform_usda-95a505e1fa209779-1.image b/crates/crust-core/tests/data/import_baselines/nested_instancer_proto_root_xform_usda-95a505e1fa209779-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancer_proto_root_xform_usda-95a505e1fa209779-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-39f09e1523375345-1.image b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-39f09e1523375345-1.image new file mode 100644 index 000000000..603a6c224 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-39f09e1523375345-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 876c98e5bda352fd diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-1.image b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-1.image new file mode 100644 index 000000000..603a6c224 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 876c98e5bda352fd diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-2.image b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-2.image new file mode 100644 index 000000000..603a6c224 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-2.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 876c98e5bda352fd diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-915b43a7369963b2-1.image b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-915b43a7369963b2-1.image new file mode 100644 index 000000000..603a6c224 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-915b43a7369963b2-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 876c98e5bda352fd diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-df6640aca1d2b235-1.image b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-df6640aca1d2b235-1.image new file mode 100644 index 000000000..603a6c224 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-df6640aca1d2b235-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 876c98e5bda352fd diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-e37604ffa926df8a-1.image b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-e37604ffa926df8a-1.image new file mode 100644 index 000000000..603a6c224 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-e37604ffa926df8a-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 876c98e5bda352fd diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fda6a6f1c2f5b28e-1.image b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fda6a6f1c2f5b28e-1.image new file mode 100644 index 000000000..679cae541 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fda6a6f1c2f5b28e-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 143cba56d9f80f8a diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fff87a8b52b8e069-1.image b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fff87a8b52b8e069-1.image new file mode 100644 index 000000000..603a6c224 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fff87a8b52b8e069-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 876c98e5bda352fd diff --git a/crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-c0a020bf777d3f88-1.image b/crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-c0a020bf777d3f88-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-c0a020bf777d3f88-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/nested_one_usda-bc56793ff0720fdc-1.image b/crates/crust-core/tests/data/import_baselines/nested_one_usda-bc56793ff0720fdc-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_one_usda-bc56793ff0720fdc-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/nested_scatter_usda-4724aa4d383273d2-1.image b/crates/crust-core/tests/data/import_baselines/nested_scatter_usda-4724aa4d383273d2-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_scatter_usda-4724aa4d383273d2-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/nested_translate_usda-31c01e41ce7e4eb3-1.image b/crates/crust-core/tests/data/import_baselines/nested_translate_usda-31c01e41ce7e4eb3-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_translate_usda-31c01e41ce7e4eb3-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/nested_two_usda-0fad6a8ff7f8520a-1.image b/crates/crust-core/tests/data/import_baselines/nested_two_usda-0fad6a8ff7f8520a-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_two_usda-0fad6a8ff7f8520a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/nested_usda-dbe832b66063cf24-1.image b/crates/crust-core/tests/data/import_baselines/nested_usda-dbe832b66063cf24-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_usda-dbe832b66063cf24-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/neural_usda-57a514ca820ab02c-1.image b/crates/crust-core/tests/data/import_baselines/neural_usda-57a514ca820ab02c-1.image new file mode 100644 index 000000000..493c7cfd3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/neural_usda-57a514ca820ab02c-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off 6c1b85153837cba2 diff --git a/crates/crust-core/tests/data/import_baselines/ngon_usda-573da62ad402526c-1.image b/crates/crust-core/tests/data/import_baselines/ngon_usda-573da62ad402526c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ngon_usda-573da62ad402526c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/nine_uniform_lights_usda-181564afd75bc784-1.image b/crates/crust-core/tests/data/import_baselines/nine_uniform_lights_usda-181564afd75bc784-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nine_uniform_lights_usda-181564afd75bc784-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-08eaf78e1847bdbe-1.image b/crates/crust-core/tests/data/import_baselines/no_camera_usda-08eaf78e1847bdbe-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-08eaf78e1847bdbe-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-2a7bfc7853b270c5-1.image b/crates/crust-core/tests/data/import_baselines/no_camera_usda-2a7bfc7853b270c5-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-2a7bfc7853b270c5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-5507d24332d7f188-1.image b/crates/crust-core/tests/data/import_baselines/no_camera_usda-5507d24332d7f188-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-5507d24332d7f188-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-758b683c20791ceb-1.image b/crates/crust-core/tests/data/import_baselines/no_camera_usda-758b683c20791ceb-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-758b683c20791ceb-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-ac160dc389201eeb-1.image b/crates/crust-core/tests/data/import_baselines/no_camera_usda-ac160dc389201eeb-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-ac160dc389201eeb-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-af24412e492e9147-1.image b/crates/crust-core/tests/data/import_baselines/no_camera_usda-af24412e492e9147-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-af24412e492e9147-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-f2e322198f5a52d6-1.image b/crates/crust-core/tests/data/import_baselines/no_camera_usda-f2e322198f5a52d6-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-f2e322198f5a52d6-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/no_frame_usda-06c9736b1ee41555-1.image b/crates/crust-core/tests/data/import_baselines/no_frame_usda-06c9736b1ee41555-1.image new file mode 100644 index 000000000..d0b251e8d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_frame_usda-06c9736b1ee41555-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 47afa48051e8e7f6 diff --git a/crates/crust-core/tests/data/import_baselines/no_kernel_usda-250e185a51aff6c5-1.image b/crates/crust-core/tests/data/import_baselines/no_kernel_usda-250e185a51aff6c5-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_kernel_usda-250e185a51aff6c5-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/no_products_usda-b2f39aa3f795faa2-1.image b/crates/crust-core/tests/data/import_baselines/no_products_usda-b2f39aa3f795faa2-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_products_usda-b2f39aa3f795faa2-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/no_var_authored_usda-7c630c4e6b264297-1.image b/crates/crust-core/tests/data/import_baselines/no_var_authored_usda-7c630c4e6b264297-1.image new file mode 100644 index 000000000..6e17c7cc4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_var_authored_usda-7c630c4e6b264297-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off b92ef83454fdd3cb diff --git a/crates/crust-core/tests/data/import_baselines/no_var_bare_usda-0f6834e5d7411efd-1.image b/crates/crust-core/tests/data/import_baselines/no_var_bare_usda-0f6834e5d7411efd-1.image new file mode 100644 index 000000000..6e17c7cc4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/no_var_bare_usda-0f6834e5d7411efd-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off b92ef83454fdd3cb diff --git a/crates/crust-core/tests/data/import_baselines/non_finite_usda-b38223b4cd532638-1.image b/crates/crust-core/tests/data/import_baselines/non_finite_usda-b38223b4cd532638-1.image new file mode 100644 index 000000000..0e9e829cc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/non_finite_usda-b38223b4cd532638-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 2c1e65f91e5a3148 diff --git a/crates/crust-core/tests/data/import_baselines/none_usda-3500dce365c976fb-1.image b/crates/crust-core/tests/data/import_baselines/none_usda-3500dce365c976fb-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/none_usda-3500dce365c976fb-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/none_usda-8ca1039ef6a1af13-1.image b/crates/crust-core/tests/data/import_baselines/none_usda-8ca1039ef6a1af13-1.image new file mode 100644 index 000000000..b1fb14759 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/none_usda-8ca1039ef6a1af13-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 1e3a61612e840325 diff --git a/crates/crust-core/tests/data/import_baselines/none_usda-b2626a5c29f30d06-1.image b/crates/crust-core/tests/data/import_baselines/none_usda-b2626a5c29f30d06-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/none_usda-b2626a5c29f30d06-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/norm_off_cylinder_usda-cad3a8a0bec58113-1.image b/crates/crust-core/tests/data/import_baselines/norm_off_cylinder_usda-cad3a8a0bec58113-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/norm_off_cylinder_usda-cad3a8a0bec58113-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/norm_off_disk_usda-d4ac49b171982a5d-1.image b/crates/crust-core/tests/data/import_baselines/norm_off_disk_usda-d4ac49b171982a5d-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/norm_off_disk_usda-d4ac49b171982a5d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/norm_off_rect_usda-7ca0616652c56bb1-1.image b/crates/crust-core/tests/data/import_baselines/norm_off_rect_usda-7ca0616652c56bb1-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/norm_off_rect_usda-7ca0616652c56bb1-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/norm_off_sphere_usda-0abd6bba11da485f-1.image b/crates/crust-core/tests/data/import_baselines/norm_off_sphere_usda-0abd6bba11da485f-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/norm_off_sphere_usda-0abd6bba11da485f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/norm_on_cylinder_usda-f3dd54fd2e0d1929-1.image b/crates/crust-core/tests/data/import_baselines/norm_on_cylinder_usda-f3dd54fd2e0d1929-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/norm_on_cylinder_usda-f3dd54fd2e0d1929-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/norm_on_disk_usda-80da988892a29bff-1.image b/crates/crust-core/tests/data/import_baselines/norm_on_disk_usda-80da988892a29bff-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/norm_on_disk_usda-80da988892a29bff-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/norm_on_rect_usda-0fb0cae5dd5fa17f-1.image b/crates/crust-core/tests/data/import_baselines/norm_on_rect_usda-0fb0cae5dd5fa17f-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/norm_on_rect_usda-0fb0cae5dd5fa17f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/norm_on_sphere_usda-a4e34a4e4682e3b5-1.image b/crates/crust-core/tests/data/import_baselines/norm_on_sphere_usda-a4e34a4e4682e3b5-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/norm_on_sphere_usda-a4e34a4e4682e3b5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/normals_usda-eb98f1adc17331b3-1.image b/crates/crust-core/tests/data/import_baselines/normals_usda-eb98f1adc17331b3-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/normals_usda-eb98f1adc17331b3-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/nothing_usda-05a76e84b550abac-1.image b/crates/crust-core/tests/data/import_baselines/nothing_usda-05a76e84b550abac-1.image new file mode 100644 index 000000000..e5718bb57 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nothing_usda-05a76e84b550abac-1.image @@ -0,0 +1 @@ +32x18 16spp clamp-off ddf40d7a272e6781 diff --git a/crates/crust-core/tests/data/import_baselines/nurbs_clean_usda-362cea70cf67e6cc-1.image b/crates/crust-core/tests/data/import_baselines/nurbs_clean_usda-362cea70cf67e6cc-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nurbs_clean_usda-362cea70cf67e6cc-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/nurbs_empty_usda-af6c06cf5e078823-1.image b/crates/crust-core/tests/data/import_baselines/nurbs_empty_usda-af6c06cf5e078823-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nurbs_empty_usda-af6c06cf5e078823-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/nurbs_full_usda-ee811943aa635f36-1.image b/crates/crust-core/tests/data/import_baselines/nurbs_full_usda-ee811943aa635f36-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nurbs_full_usda-ee811943aa635f36-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/nurbs_half_usda-26730abe8461e1ee-1.image b/crates/crust-core/tests/data/import_baselines/nurbs_half_usda-26730abe8461e1ee-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nurbs_half_usda-26730abe8461e1ee-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/nurbs_malformed_usda-edaffca17525a0db-1.image b/crates/crust-core/tests/data/import_baselines/nurbs_malformed_usda-edaffca17525a0db-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nurbs_malformed_usda-edaffca17525a0db-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/nurbs_refused_usda-2cd12f986b06b3a5-1.image b/crates/crust-core/tests/data/import_baselines/nurbs_refused_usda-2cd12f986b06b3a5-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nurbs_refused_usda-2cd12f986b06b3a5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/on_camera_usda-0e1653405c0b04b8-1.image b/crates/crust-core/tests/data/import_baselines/on_camera_usda-0e1653405c0b04b8-1.image new file mode 100644 index 000000000..9b1ded9a0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/on_camera_usda-0e1653405c0b04b8-1.image @@ -0,0 +1 @@ +240x136 16spp clamp-off 2a2ae02b81d14fd2 diff --git a/crates/crust-core/tests/data/import_baselines/once_direct_usda-87536582b2725522-1.image b/crates/crust-core/tests/data/import_baselines/once_direct_usda-87536582b2725522-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/once_direct_usda-87536582b2725522-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/once_instanced_usda-cfe757ff670cf1a4-1.image b/crates/crust-core/tests/data/import_baselines/once_instanced_usda-cfe757ff670cf1a4-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/once_instanced_usda-cfe757ff670cf1a4-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/opacity_usda-18ffcc13eb92677a-1.image b/crates/crust-core/tests/data/import_baselines/opacity_usda-18ffcc13eb92677a-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/opacity_usda-18ffcc13eb92677a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-0f7c1eaf15ef6726-1.image b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-0f7c1eaf15ef6726-1.image new file mode 100644 index 000000000..e1fc3a7a5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-0f7c1eaf15ef6726-1.image @@ -0,0 +1 @@ +1280x720 16spp clamp-off 2473c06a3596627c diff --git a/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-1.image b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-1.image new file mode 100644 index 000000000..deb275a31 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-1.image @@ -0,0 +1 @@ +1280x720 16spp clamp-off 80b89a276ba11188 diff --git a/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-2.image b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-2.image new file mode 100644 index 000000000..deb275a31 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-2.image @@ -0,0 +1 @@ +1280x720 16spp clamp-off 80b89a276ba11188 diff --git a/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-501b45e8f6131d21-1.image b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-501b45e8f6131d21-1.image new file mode 100644 index 000000000..deb275a31 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-501b45e8f6131d21-1.image @@ -0,0 +1 @@ +1280x720 16spp clamp-off 80b89a276ba11188 diff --git a/crates/crust-core/tests/data/import_baselines/openpbr_usda-876563da4aa0a57a-1.image b/crates/crust-core/tests/data/import_baselines/openpbr_usda-876563da4aa0a57a-1.image new file mode 100644 index 000000000..fd9634619 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/openpbr_usda-876563da4aa0a57a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 21e948c8aba2e454 diff --git a/crates/crust-core/tests/data/import_baselines/other_lookdev_usda-31ecdc884f3fb603-1.image b/crates/crust-core/tests/data/import_baselines/other_lookdev_usda-31ecdc884f3fb603-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/other_lookdev_usda-31ecdc884f3fb603-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/other_op_usda-7a2444b60f22a636-1.image b/crates/crust-core/tests/data/import_baselines/other_op_usda-7a2444b60f22a636-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/other_op_usda-7a2444b60f22a636-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/overflow_usda-c7dbcb2b55d9a450-1.image b/crates/crust-core/tests/data/import_baselines/overflow_usda-c7dbcb2b55d9a450-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/overflow_usda-c7dbcb2b55d9a450-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/override_usda-b67a66c0201ba59a-1.image b/crates/crust-core/tests/data/import_baselines/override_usda-b67a66c0201ba59a-1.image new file mode 100644 index 000000000..163c33547 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/override_usda-b67a66c0201ba59a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 0cd5fb8c1b32ce89 diff --git a/crates/crust-core/tests/data/import_baselines/overrides_usda-e08388bc2f33304d-1.image b/crates/crust-core/tests/data/import_baselines/overrides_usda-e08388bc2f33304d-1.image new file mode 100644 index 000000000..3013e04d8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/overrides_usda-e08388bc2f33304d-1.image @@ -0,0 +1 @@ +32x18 16spp clamp-off 988ca9561494bf25 diff --git a/crates/crust-core/tests/data/import_baselines/partial_link_usda-0b6b5eacc86557dc-1.image b/crates/crust-core/tests/data/import_baselines/partial_link_usda-0b6b5eacc86557dc-1.image new file mode 100644 index 000000000..ef6a3bc1a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/partial_link_usda-0b6b5eacc86557dc-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 82fd92b977974e05 diff --git a/crates/crust-core/tests/data/import_baselines/pass_payload_usda-08d0e4051511c08a-1.image b/crates/crust-core/tests/data/import_baselines/pass_payload_usda-08d0e4051511c08a-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pass_payload_usda-08d0e4051511c08a-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-0b80861de0309489-1.image b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-0b80861de0309489-1.image new file mode 100644 index 000000000..f3308c5f4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-0b80861de0309489-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off ff9997f401c32c9b diff --git a/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-bdae79d96585e6fd-1.image b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-bdae79d96585e6fd-1.image new file mode 100644 index 000000000..f5af96874 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-bdae79d96585e6fd-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off 7ed7cd2fc6b96859 diff --git a/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-c05e0c1783414e94-1.image b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-c05e0c1783414e94-1.image new file mode 100644 index 000000000..c13b4afd5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-c05e0c1783414e94-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off c7f0a23e13ad7fb3 diff --git a/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-e9d62fba57fc58f7-1.image b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-e9d62fba57fc58f7-1.image new file mode 100644 index 000000000..a78e01ae7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-e9d62fba57fc58f7-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off c795054d39051d29 diff --git a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-1.image b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-1.image new file mode 100644 index 000000000..6252140b5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off f9e1234baa5d4ee3 diff --git a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-2.image b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-2.image new file mode 100644 index 000000000..6252140b5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-2.image @@ -0,0 +1 @@ +160x90 16spp clamp-off f9e1234baa5d4ee3 diff --git a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-1.image b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-1.image new file mode 100644 index 000000000..a78e01ae7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off c795054d39051d29 diff --git a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-2.image b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-2.image new file mode 100644 index 000000000..a78e01ae7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-2.image @@ -0,0 +1 @@ +160x90 16spp clamp-off c795054d39051d29 diff --git a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-1.image b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-1.image new file mode 100644 index 000000000..dcfec9d74 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off b2d9bbb91a775474 diff --git a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-2.image b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-2.image new file mode 100644 index 000000000..dcfec9d74 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-2.image @@ -0,0 +1 @@ +160x90 16spp clamp-off b2d9bbb91a775474 diff --git a/crates/crust-core/tests/data/import_baselines/passes_usda-562a5b3a04949a47-1.image b/crates/crust-core/tests/data/import_baselines/passes_usda-562a5b3a04949a47-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_usda-562a5b3a04949a47-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/passes_usda-aaa6ef1b16e7d6b6-1.image b/crates/crust-core/tests/data/import_baselines/passes_usda-aaa6ef1b16e7d6b6-1.image new file mode 100644 index 000000000..45a729bc6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/passes_usda-aaa6ef1b16e7d6b6-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off a4dfebf308d21bdf diff --git a/crates/crust-core/tests/data/import_baselines/payload_camera_usda-ff33ccc1b50862a6-1.image b/crates/crust-core/tests/data/import_baselines/payload_camera_usda-ff33ccc1b50862a6-1.image new file mode 100644 index 000000000..73127af8f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/payload_camera_usda-ff33ccc1b50862a6-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 68685c488793c325 diff --git a/crates/crust-core/tests/data/import_baselines/payload_links_usda-f941f0e5247354e6-1.image b/crates/crust-core/tests/data/import_baselines/payload_links_usda-f941f0e5247354e6-1.image new file mode 100644 index 000000000..0b1b824a5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/payload_links_usda-f941f0e5247354e6-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 7e8e0fa784351325 diff --git a/crates/crust-core/tests/data/import_baselines/photometric_usda-644b1d1ebbe4cb72-1.image b/crates/crust-core/tests/data/import_baselines/photometric_usda-644b1d1ebbe4cb72-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/photometric_usda-644b1d1ebbe4cb72-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/pinhole_unauthored_usda-ecde60dead7180c2-1.image b/crates/crust-core/tests/data/import_baselines/pinhole_unauthored_usda-ecde60dead7180c2-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pinhole_unauthored_usda-ecde60dead7180c2-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/pinhole_zero_usda-9f676d1852dc7168-1.image b/crates/crust-core/tests/data/import_baselines/pinhole_zero_usda-9f676d1852dc7168-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pinhole_zero_usda-9f676d1852dc7168-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/pivot_stack_usda-eabcdb11552ea0a9-1.image b/crates/crust-core/tests/data/import_baselines/pivot_stack_usda-eabcdb11552ea0a9-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pivot_stack_usda-eabcdb11552ea0a9-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/pixel_filter_usda-c618794e70f5ffe3-1.image b/crates/crust-core/tests/data/import_baselines/pixel_filter_usda-c618794e70f5ffe3-1.image new file mode 100644 index 000000000..aac9ec548 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pixel_filter_usda-c618794e70f5ffe3-1.image @@ -0,0 +1 @@ +64x64 16spp clamp-off 68c00ea49d512325 diff --git a/crates/crust-core/tests/data/import_baselines/place_once_usda-66a0c16b42b4539e-1.image b/crates/crust-core/tests/data/import_baselines/place_once_usda-66a0c16b42b4539e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/place_once_usda-66a0c16b42b4539e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/place_twice_usda-c4ce4deb59d3727f-1.image b/crates/crust-core/tests/data/import_baselines/place_twice_usda-c4ce4deb59d3727f-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/place_twice_usda-c4ce4deb59d3727f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-000d21c7a8ef61e5-1.image b/crates/crust-core/tests/data/import_baselines/placed_usda-000d21c7a8ef61e5-1.image new file mode 100644 index 000000000..fd0242994 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-000d21c7a8ef61e5-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off e1aa85f418965034 diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-0ba3af4ffa595294-1.image b/crates/crust-core/tests/data/import_baselines/placed_usda-0ba3af4ffa595294-1.image new file mode 100644 index 000000000..9bef1c83f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-0ba3af4ffa595294-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 3ded2d1d29c7426f diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-503a8ea6d52670c0-1.image b/crates/crust-core/tests/data/import_baselines/placed_usda-503a8ea6d52670c0-1.image new file mode 100644 index 000000000..9c00d41e4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-503a8ea6d52670c0-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off d07945c7d875794f diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-63f0ce074fafa44d-1.image b/crates/crust-core/tests/data/import_baselines/placed_usda-63f0ce074fafa44d-1.image new file mode 100644 index 000000000..acafa1d31 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-63f0ce074fafa44d-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 337d834a81c72ff3 diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-6fa96be933bc04d8-1.image b/crates/crust-core/tests/data/import_baselines/placed_usda-6fa96be933bc04d8-1.image new file mode 100644 index 000000000..f438d4548 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-6fa96be933bc04d8-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 2d0a48edac165805 diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-7ad6f5aa95ba8499-1.image b/crates/crust-core/tests/data/import_baselines/placed_usda-7ad6f5aa95ba8499-1.image new file mode 100644 index 000000000..9c00d41e4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-7ad6f5aa95ba8499-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off d07945c7d875794f diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-1.image b/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-1.image new file mode 100644 index 000000000..d6302dd1b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 74128e666e058a48 diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-2.image b/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-2.image new file mode 100644 index 000000000..d6302dd1b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-2.image @@ -0,0 +1 @@ +48x32 16spp clamp-off 74128e666e058a48 diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-85cdaaa611ddcfb8-1.image b/crates/crust-core/tests/data/import_baselines/placed_usda-85cdaaa611ddcfb8-1.image new file mode 100644 index 000000000..9c00d41e4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-85cdaaa611ddcfb8-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off d07945c7d875794f diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-94944664ab7e307d-1.image b/crates/crust-core/tests/data/import_baselines/placed_usda-94944664ab7e307d-1.image new file mode 100644 index 000000000..9c00d41e4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-94944664ab7e307d-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off d07945c7d875794f diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-97fbc0f3fbe2c018-1.image b/crates/crust-core/tests/data/import_baselines/placed_usda-97fbc0f3fbe2c018-1.image new file mode 100644 index 000000000..9c00d41e4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-97fbc0f3fbe2c018-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off d07945c7d875794f diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-b9e166293d4eb014-1.image b/crates/crust-core/tests/data/import_baselines/placed_usda-b9e166293d4eb014-1.image new file mode 100644 index 000000000..9c00d41e4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-b9e166293d4eb014-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off d07945c7d875794f diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-1.image b/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-1.image new file mode 100644 index 000000000..9c00d41e4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off d07945c7d875794f diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-2.image b/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-2.image new file mode 100644 index 000000000..9c00d41e4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-2.image @@ -0,0 +1 @@ +48x32 16spp clamp-off d07945c7d875794f diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-3.image b/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-3.image new file mode 100644 index 000000000..9c00d41e4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-3.image @@ -0,0 +1 @@ +48x32 16spp clamp-off d07945c7d875794f diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-c316df83883a2080-1.image b/crates/crust-core/tests/data/import_baselines/placed_usda-c316df83883a2080-1.image new file mode 100644 index 000000000..9c00d41e4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-c316df83883a2080-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off d07945c7d875794f diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-d17077acbffaca45-1.image b/crates/crust-core/tests/data/import_baselines/placed_usda-d17077acbffaca45-1.image new file mode 100644 index 000000000..9c00d41e4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-d17077acbffaca45-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off d07945c7d875794f diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-d4ecee5c0312cf96-1.image b/crates/crust-core/tests/data/import_baselines/placed_usda-d4ecee5c0312cf96-1.image new file mode 100644 index 000000000..9c00d41e4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-d4ecee5c0312cf96-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off d07945c7d875794f diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-dc7b9c4f6886cafa-1.image b/crates/crust-core/tests/data/import_baselines/placed_usda-dc7b9c4f6886cafa-1.image new file mode 100644 index 000000000..9c00d41e4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-dc7b9c4f6886cafa-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off d07945c7d875794f diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-f5c13f6f8bb66ab5-1.image b/crates/crust-core/tests/data/import_baselines/placed_usda-f5c13f6f8bb66ab5-1.image new file mode 100644 index 000000000..4bd718235 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-f5c13f6f8bb66ab5-1.image @@ -0,0 +1 @@ +48x32 16spp clamp-off b48d11f44c4cc2e3 diff --git a/crates/crust-core/tests/data/import_baselines/placements_usda-275bfd0cb4688e5d-1.image b/crates/crust-core/tests/data/import_baselines/placements_usda-275bfd0cb4688e5d-1.image new file mode 100644 index 000000000..8e0aab65a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/placements_usda-275bfd0cb4688e5d-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off de7ad47d695d9a8a diff --git a/crates/crust-core/tests/data/import_baselines/plane_usda-e5035e45dccaf24c-1.image b/crates/crust-core/tests/data/import_baselines/plane_usda-e5035e45dccaf24c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plane_usda-e5035e45dccaf24c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/planes_usda-b941e449ca4a031a-1.image b/crates/crust-core/tests/data/import_baselines/planes_usda-b941e449ca4a031a-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/planes_usda-b941e449ca4a031a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_1_bsdf_1_usda-bd800d4fcb330be2-1.image b/crates/crust-core/tests/data/import_baselines/plastic_0_1_bsdf_1_usda-bd800d4fcb330be2-1.image new file mode 100644 index 000000000..d009d4b09 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_1_bsdf_1_usda-bd800d4fcb330be2-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 6fc2c70be97b3dbb diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_1_light_1_usda-a03210c9831fba26-1.image b/crates/crust-core/tests/data/import_baselines/plastic_0_1_light_1_usda-a03210c9831fba26-1.image new file mode 100644 index 000000000..d79302eb6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_1_light_1_usda-a03210c9831fba26-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 83405fcd4dc76a65 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_1_power_1_usda-482542fae980bf52-1.image b/crates/crust-core/tests/data/import_baselines/plastic_0_1_power_1_usda-482542fae980bf52-1.image new file mode 100644 index 000000000..857961466 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_1_power_1_usda-482542fae980bf52-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off da7ac3c5a2eedfbd diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-36e5cb22b2676a41-1.image b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-36e5cb22b2676a41-1.image new file mode 100644 index 000000000..0caa0030c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-36e5cb22b2676a41-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off e603e3c3be9e9707 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-d38160b2be22e70c-1.image b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-d38160b2be22e70c-1.image new file mode 100644 index 000000000..0caa0030c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-d38160b2be22e70c-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off e603e3c3be9e9707 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_2_usda-78a7411a4858bc6b-1.image b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_2_usda-78a7411a4858bc6b-1.image new file mode 100644 index 000000000..0caa0030c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_2_usda-78a7411a4858bc6b-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off e603e3c3be9e9707 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_3_usda-f81a4b161903a8f2-1.image b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_3_usda-f81a4b161903a8f2-1.image new file mode 100644 index 000000000..0caa0030c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_3_usda-f81a4b161903a8f2-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off e603e3c3be9e9707 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_4_usda-87a5b5e826a38a61-1.image b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_4_usda-87a5b5e826a38a61-1.image new file mode 100644 index 000000000..0caa0030c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_4_usda-87a5b5e826a38a61-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off e603e3c3be9e9707 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-135d2f963daf2551-1.image b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-135d2f963daf2551-1.image new file mode 100644 index 000000000..72f7d2a8d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-135d2f963daf2551-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 5b8e972effbc77b4 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-cf1431b5a2f0391c-1.image b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-cf1431b5a2f0391c-1.image new file mode 100644 index 000000000..72f7d2a8d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-cf1431b5a2f0391c-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 5b8e972effbc77b4 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_2_usda-c1e873bea9886ca9-1.image b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_2_usda-c1e873bea9886ca9-1.image new file mode 100644 index 000000000..72f7d2a8d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_2_usda-c1e873bea9886ca9-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 5b8e972effbc77b4 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_3_usda-0dc30546dc7303fa-1.image b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_3_usda-0dc30546dc7303fa-1.image new file mode 100644 index 000000000..72f7d2a8d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_3_usda-0dc30546dc7303fa-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 5b8e972effbc77b4 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_4_usda-306836af9dcd76c7-1.image b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_4_usda-306836af9dcd76c7-1.image new file mode 100644 index 000000000..72f7d2a8d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_4_usda-306836af9dcd76c7-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 5b8e972effbc77b4 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-aeace9cae6e95285-1.image b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-aeace9cae6e95285-1.image new file mode 100644 index 000000000..b01e6071e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-aeace9cae6e95285-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off bbc4bce34628e579 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-f2feafce67b9cc18-1.image b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-f2feafce67b9cc18-1.image new file mode 100644 index 000000000..b01e6071e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-f2feafce67b9cc18-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off bbc4bce34628e579 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_2_usda-9558069a3a6cb6c1-1.image b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_2_usda-9558069a3a6cb6c1-1.image new file mode 100644 index 000000000..b01e6071e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_2_usda-9558069a3a6cb6c1-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off bbc4bce34628e579 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_3_usda-848bb8619ed104b2-1.image b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_3_usda-848bb8619ed104b2-1.image new file mode 100644 index 000000000..b01e6071e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_3_usda-848bb8619ed104b2-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off bbc4bce34628e579 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_4_usda-13781e826c793feb-1.image b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_4_usda-13781e826c793feb-1.image new file mode 100644 index 000000000..b01e6071e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_4_usda-13781e826c793feb-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off bbc4bce34628e579 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_1_0_bsdf_1_usda-7392b4eece3d4ffa-1.image b/crates/crust-core/tests/data/import_baselines/plastic_1_0_bsdf_1_usda-7392b4eece3d4ffa-1.image new file mode 100644 index 000000000..4990a7f23 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_1_0_bsdf_1_usda-7392b4eece3d4ffa-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 0bfed5cf63e28421 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_1_0_light_1_usda-e29b88fff3b5eede-1.image b/crates/crust-core/tests/data/import_baselines/plastic_1_0_light_1_usda-e29b88fff3b5eede-1.image new file mode 100644 index 000000000..ab3245e32 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_1_0_light_1_usda-e29b88fff3b5eede-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 6cd14801cc1644c4 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_1_0_power_1_usda-db7be84c0c913b8a-1.image b/crates/crust-core/tests/data/import_baselines/plastic_1_0_power_1_usda-db7be84c0c913b8a-1.image new file mode 100644 index 000000000..ed1817d87 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_1_0_power_1_usda-db7be84c0c913b8a-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off d569a3e172b8ebfa diff --git a/crates/crust-core/tests/data/import_baselines/plastic_1_1_bsdf_1_usda-1a655ee8a457375b-1.image b/crates/crust-core/tests/data/import_baselines/plastic_1_1_bsdf_1_usda-1a655ee8a457375b-1.image new file mode 100644 index 000000000..29b88419f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_1_1_bsdf_1_usda-1a655ee8a457375b-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off a0bc94bca06dce14 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_1_1_light_1_usda-d608d0096c4c9293-1.image b/crates/crust-core/tests/data/import_baselines/plastic_1_1_light_1_usda-d608d0096c4c9293-1.image new file mode 100644 index 000000000..8ee8c4402 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_1_1_light_1_usda-d608d0096c4c9293-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 369c7e964021c5a3 diff --git a/crates/crust-core/tests/data/import_baselines/plastic_1_1_power_1_usda-dad1612ee907e657-1.image b/crates/crust-core/tests/data/import_baselines/plastic_1_1_power_1_usda-dad1612ee907e657-1.image new file mode 100644 index 000000000..431de6ffe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plastic_1_1_power_1_usda-dad1612ee907e657-1.image @@ -0,0 +1 @@ +16x16 16spp clamp-off 8fe84ece808596b4 diff --git a/crates/crust-core/tests/data/import_baselines/precomp_C_usda-ceae07fa5339bc4e-1.image b/crates/crust-core/tests/data/import_baselines/precomp_C_usda-ceae07fa5339bc4e-1.image new file mode 100644 index 000000000..f5a40b79c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_C_usda-ceae07fa5339bc4e-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 7fc2a052099963ae diff --git a/crates/crust-core/tests/data/import_baselines/precomp_look_final_usda-46848a8dcf6250e4-1.image b/crates/crust-core/tests/data/import_baselines/precomp_look_final_usda-46848a8dcf6250e4-1.image new file mode 100644 index 000000000..f5a40b79c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_look_final_usda-46848a8dcf6250e4-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 7fc2a052099963ae diff --git a/crates/crust-core/tests/data/import_baselines/precomp_none_usda-749e88768dbe99b1-1.image b/crates/crust-core/tests/data/import_baselines/precomp_none_usda-749e88768dbe99b1-1.image new file mode 100644 index 000000000..f5a40b79c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_none_usda-749e88768dbe99b1-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 7fc2a052099963ae diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-33f481698c3a3ce7-1.image b/crates/crust-core/tests/data/import_baselines/precomp_usda-33f481698c3a3ce7-1.image new file mode 100644 index 000000000..f5a40b79c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-33f481698c3a3ce7-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 7fc2a052099963ae diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-4339ddf5a07dea17-1.image b/crates/crust-core/tests/data/import_baselines/precomp_usda-4339ddf5a07dea17-1.image new file mode 100644 index 000000000..f5a40b79c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-4339ddf5a07dea17-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 7fc2a052099963ae diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-1.image b/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-1.image new file mode 100644 index 000000000..f5a40b79c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 7fc2a052099963ae diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-2.image b/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-2.image new file mode 100644 index 000000000..f5a40b79c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-2.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 7fc2a052099963ae diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-9c591dbe4a6a2374-1.image b/crates/crust-core/tests/data/import_baselines/precomp_usda-9c591dbe4a6a2374-1.image new file mode 100644 index 000000000..f5a40b79c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-9c591dbe4a6a2374-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 7fc2a052099963ae diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-d9d1e77cdf9ce71d-1.image b/crates/crust-core/tests/data/import_baselines/precomp_usda-d9d1e77cdf9ce71d-1.image new file mode 100644 index 000000000..f5a40b79c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-d9d1e77cdf9ce71d-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 7fc2a052099963ae diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-e1a87b662c5109e8-1.image b/crates/crust-core/tests/data/import_baselines/precomp_usda-e1a87b662c5109e8-1.image new file mode 100644 index 000000000..f5a40b79c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-e1a87b662c5109e8-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 7fc2a052099963ae diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-e28059e8e7dd2fb9-1.image b/crates/crust-core/tests/data/import_baselines/precomp_usda-e28059e8e7dd2fb9-1.image new file mode 100644 index 000000000..f5a40b79c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-e28059e8e7dd2fb9-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 7fc2a052099963ae diff --git a/crates/crust-core/tests/data/import_baselines/preview_plain_usda-56c5917475bdaa40-1.image b/crates/crust-core/tests/data/import_baselines/preview_plain_usda-56c5917475bdaa40-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/preview_plain_usda-56c5917475bdaa40-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/preview_tagged_usda-21171eef0f915c9d-1.image b/crates/crust-core/tests/data/import_baselines/preview_tagged_usda-21171eef0f915c9d-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/preview_tagged_usda-21171eef0f915c9d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/preview_usda-6fa33b5d399ba28d-1.image b/crates/crust-core/tests/data/import_baselines/preview_usda-6fa33b5d399ba28d-1.image new file mode 100644 index 000000000..0911f0775 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/preview_usda-6fa33b5d399ba28d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 3ad9327381f35328 diff --git a/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-1ceba2b5cd7da4fe-1.image b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-1ceba2b5cd7da4fe-1.image new file mode 100644 index 000000000..e1e2ab5ab --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-1ceba2b5cd7da4fe-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off ed0ab00536a40580 diff --git a/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-1.image b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-1.image new file mode 100644 index 000000000..e1e2ab5ab --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off ed0ab00536a40580 diff --git a/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-2.image b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-2.image new file mode 100644 index 000000000..e1e2ab5ab --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-2.image @@ -0,0 +1 @@ +160x90 16spp clamp-off ed0ab00536a40580 diff --git a/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-e0e162475fa824e5-1.image b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-e0e162475fa824e5-1.image new file mode 100644 index 000000000..e1e2ab5ab --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-e0e162475fa824e5-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off ed0ab00536a40580 diff --git a/crates/crust-core/tests/data/import_baselines/primvar_multisampled_usda-774c86244886ea5e-1.image b/crates/crust-core/tests/data/import_baselines/primvar_multisampled_usda-774c86244886ea5e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/primvar_multisampled_usda-774c86244886ea5e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/primvar_vars_usda-f6787f7fdf1eebf3-1.image b/crates/crust-core/tests/data/import_baselines/primvar_vars_usda-f6787f7fdf1eebf3-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/primvar_vars_usda-f6787f7fdf1eebf3-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/procedural_par_square_usda-6cb0d1de356675bd-1.image b/crates/crust-core/tests/data/import_baselines/procedural_par_square_usda-6cb0d1de356675bd-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/procedural_par_square_usda-6cb0d1de356675bd-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/procedural_par_wide_usda-e65d9f21a141c052-1.image b/crates/crust-core/tests/data/import_baselines/procedural_par_wide_usda-e65d9f21a141c052-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/procedural_par_wide_usda-e65d9f21a141c052-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/products_usda-e7ced79f762e48ff-1.image b/crates/crust-core/tests/data/import_baselines/products_usda-e7ced79f762e48ff-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/products_usda-e7ced79f762e48ff-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/prune_usda-3bf02286156e9774-1.image b/crates/crust-core/tests/data/import_baselines/prune_usda-3bf02286156e9774-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/prune_usda-3bf02286156e9774-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/prune_usda-d1a6b2f2900a3fc1-1.image b/crates/crust-core/tests/data/import_baselines/prune_usda-d1a6b2f2900a3fc1-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/prune_usda-d1a6b2f2900a3fc1-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/prune_usda-f5ce85341275f544-1.image b/crates/crust-core/tests/data/import_baselines/prune_usda-f5ce85341275f544-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/prune_usda-f5ce85341275f544-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/ptex_phase_usda-9d5b92d8c597babb-1.image b/crates/crust-core/tests/data/import_baselines/ptex_phase_usda-9d5b92d8c597babb-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ptex_phase_usda-9d5b92d8c597babb-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-c2d1b0153068d224-1.image b/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-c2d1b0153068d224-1.image new file mode 100644 index 000000000..0e06d321d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-c2d1b0153068d224-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 0630531ef15b502c diff --git a/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-1.image b/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-1.image new file mode 100644 index 000000000..ba63f7d47 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off b66e59588e78f0ca diff --git a/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-2.image b/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-2.image new file mode 100644 index 000000000..ba63f7d47 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-2.image @@ -0,0 +1 @@ +320x180 16spp clamp-off b66e59588e78f0ca diff --git a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-1.image b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-1.image new file mode 100644 index 000000000..a91e71dcb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 150ac3a4441bf342 diff --git a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-2.image b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-2.image new file mode 100644 index 000000000..a91e71dcb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 150ac3a4441bf342 diff --git a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-856ac5cdf233a681-1.image b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-856ac5cdf233a681-1.image new file mode 100644 index 000000000..a91e71dcb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-856ac5cdf233a681-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 150ac3a4441bf342 diff --git a/crates/crust-core/tests/data/import_baselines/purpose_usda-bf0c2e782a7f7633-1.image b/crates/crust-core/tests/data/import_baselines/purpose_usda-bf0c2e782a7f7633-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/purpose_usda-bf0c2e782a7f7633-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-3eb2626e4111c003-1.image b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-3eb2626e4111c003-1.image new file mode 100644 index 000000000..f2df64f62 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-3eb2626e4111c003-1.image @@ -0,0 +1 @@ +240x160 16spp clamp-off a59145e84b30f663 diff --git a/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-744b2066d6ee31b4-1.image b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-744b2066d6ee31b4-1.image new file mode 100644 index 000000000..bd6342800 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-744b2066d6ee31b4-1.image @@ -0,0 +1 @@ +240x160 16spp clamp-off c38835bd3c395f26 diff --git a/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-1.image b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-1.image new file mode 100644 index 000000000..f2cecac71 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-1.image @@ -0,0 +1 @@ +240x160 16spp clamp-off 60e4d93d43aeae7b diff --git a/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-2.image b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-2.image new file mode 100644 index 000000000..f2cecac71 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-2.image @@ -0,0 +1 @@ +240x160 16spp clamp-off 60e4d93d43aeae7b diff --git a/crates/crust-core/tests/data/import_baselines/quad_usda-8a80e703a52aec63-1.image b/crates/crust-core/tests/data/import_baselines/quad_usda-8a80e703a52aec63-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/quad_usda-8a80e703a52aec63-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/quiet_curves_usda-c001d1e165c273d4-1.image b/crates/crust-core/tests/data/import_baselines/quiet_curves_usda-c001d1e165c273d4-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/quiet_curves_usda-c001d1e165c273d4-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/quiet_light_usda-c8a2428bb59d472f-1.image b/crates/crust-core/tests/data/import_baselines/quiet_light_usda-c8a2428bb59d472f-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/quiet_light_usda-c8a2428bb59d472f-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/quiet_prototype_usda-4ee6edc155c4ce34-1.image b/crates/crust-core/tests/data/import_baselines/quiet_prototype_usda-4ee6edc155c4ce34-1.image new file mode 100644 index 000000000..0e8a4d39e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/quiet_prototype_usda-4ee6edc155c4ce34-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 51c3405b7660a8ac diff --git a/crates/crust-core/tests/data/import_baselines/quiet_volume_usda-5e752c5254e3ed36-1.image b/crates/crust-core/tests/data/import_baselines/quiet_volume_usda-5e752c5254e3ed36-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/quiet_volume_usda-5e752c5254e3ed36-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/range_far_usda-4ecb448a88a6c818-1.image b/crates/crust-core/tests/data/import_baselines/range_far_usda-4ecb448a88a6c818-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/range_far_usda-4ecb448a88a6c818-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/range_usda-bc6d3542e7333f02-1.image b/crates/crust-core/tests/data/import_baselines/range_usda-bc6d3542e7333f02-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/range_usda-bc6d3542e7333f02-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/raw_dome_usda-e8a6497f6f3c05ee-1.image b/crates/crust-core/tests/data/import_baselines/raw_dome_usda-e8a6497f6f3c05ee-1.image new file mode 100644 index 000000000..147ccf9ee --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/raw_dome_usda-e8a6497f6f3c05ee-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off f1aa11d930bbc325 diff --git a/crates/crust-core/tests/data/import_baselines/raw_light_usda-ea76f3df9a669477-1.image b/crates/crust-core/tests/data/import_baselines/raw_light_usda-ea76f3df9a669477-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/raw_light_usda-ea76f3df9a669477-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/rect_light_far_usda-89364d5e280ec883-1.image b/crates/crust-core/tests/data/import_baselines/rect_light_far_usda-89364d5e280ec883-1.image new file mode 100644 index 000000000..b191c3857 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rect_light_far_usda-89364d5e280ec883-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 462318a5c0324fb1 diff --git a/crates/crust-core/tests/data/import_baselines/rect_light_near_usda-e8eb7549c9231ec8-1.image b/crates/crust-core/tests/data/import_baselines/rect_light_near_usda-e8eb7549c9231ec8-1.image new file mode 100644 index 000000000..de354dd48 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rect_light_near_usda-e8eb7549c9231ec8-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off c8701a68af8ae6a5 diff --git a/crates/crust-core/tests/data/import_baselines/rect_light_usda-eadf17e73fc59819-1.image b/crates/crust-core/tests/data/import_baselines/rect_light_usda-eadf17e73fc59819-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rect_light_usda-eadf17e73fc59819-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/rect_texture_usda-fa043cce9d6338f4-1.image b/crates/crust-core/tests/data/import_baselines/rect_texture_usda-fa043cce9d6338f4-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rect_texture_usda-fa043cce9d6338f4-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-1.image b/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-1.image new file mode 100644 index 000000000..e4cc91b47 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-1.image @@ -0,0 +1 @@ +64x64 16spp clamp-off 94a9e16418a574e5 diff --git a/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-2.image b/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-2.image new file mode 100644 index 000000000..e4cc91b47 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-2.image @@ -0,0 +1 @@ +64x64 16spp clamp-off 94a9e16418a574e5 diff --git a/crates/crust-core/tests/data/import_baselines/rectlight_usda-5482f82d359615b0-1.image b/crates/crust-core/tests/data/import_baselines/rectlight_usda-5482f82d359615b0-1.image new file mode 100644 index 000000000..e4cc91b47 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rectlight_usda-5482f82d359615b0-1.image @@ -0,0 +1 @@ +64x64 16spp clamp-off 94a9e16418a574e5 diff --git a/crates/crust-core/tests/data/import_baselines/rectlight_usda-e2a69198ab36729f-1.image b/crates/crust-core/tests/data/import_baselines/rectlight_usda-e2a69198ab36729f-1.image new file mode 100644 index 000000000..e4cc91b47 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rectlight_usda-e2a69198ab36729f-1.image @@ -0,0 +1 @@ +64x64 16spp clamp-off 94a9e16418a574e5 diff --git a/crates/crust-core/tests/data/import_baselines/refusals_usda-e2a11260371695e9-1.image b/crates/crust-core/tests/data/import_baselines/refusals_usda-e2a11260371695e9-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/refusals_usda-e2a11260371695e9-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/refused_usda-0be9300cea6f944b-1.image b/crates/crust-core/tests/data/import_baselines/refused_usda-0be9300cea6f944b-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/refused_usda-0be9300cea6f944b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-1.image b/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-1.image new file mode 100644 index 000000000..a78e01ae7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off c795054d39051d29 diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-2.image b/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-2.image new file mode 100644 index 000000000..a78e01ae7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-2.image @@ -0,0 +1 @@ +160x90 16spp clamp-off c795054d39051d29 diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-3.image b/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-3.image new file mode 100644 index 000000000..a78e01ae7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-3.image @@ -0,0 +1 @@ +160x90 16spp clamp-off c795054d39051d29 diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-1.image b/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-1.image new file mode 100644 index 000000000..dcfec9d74 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off b2d9bbb91a775474 diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-2.image b/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-2.image new file mode 100644 index 000000000..dcfec9d74 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-2.image @@ -0,0 +1 @@ +160x90 16spp clamp-off b2d9bbb91a775474 diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-2eed0231ac063823-1.image b/crates/crust-core/tests/data/import_baselines/render_passes_usda-2eed0231ac063823-1.image new file mode 100644 index 000000000..a78e01ae7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-2eed0231ac063823-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off c795054d39051d29 diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-1.image b/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-1.image new file mode 100644 index 000000000..c13b4afd5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off c7f0a23e13ad7fb3 diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-2.image b/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-2.image new file mode 100644 index 000000000..c13b4afd5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-2.image @@ -0,0 +1 @@ +160x90 16spp clamp-off c7f0a23e13ad7fb3 diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-c03e7c6702e31ad3-1.image b/crates/crust-core/tests/data/import_baselines/render_passes_usda-c03e7c6702e31ad3-1.image new file mode 100644 index 000000000..dcfec9d74 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-c03e7c6702e31ad3-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off b2d9bbb91a775474 diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-1.image b/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-1.image new file mode 100644 index 000000000..a78e01ae7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off c795054d39051d29 diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-2.image b/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-2.image new file mode 100644 index 000000000..a78e01ae7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-2.image @@ -0,0 +1 @@ +160x90 16spp clamp-off c795054d39051d29 diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-f98e72ee422221b6-1.image b/crates/crust-core/tests/data/import_baselines/render_passes_usda-f98e72ee422221b6-1.image new file mode 100644 index 000000000..a78e01ae7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-f98e72ee422221b6-1.image @@ -0,0 +1 @@ +160x90 16spp clamp-off c795054d39051d29 diff --git a/crates/crust-core/tests/data/import_baselines/render_source_camera_usda-d46ae988f6d9241c-1.image b/crates/crust-core/tests/data/import_baselines/render_source_camera_usda-d46ae988f6d9241c-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_source_camera_usda-d46ae988f6d9241c-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/render_source_usda-131b801caa122c43-1.image b/crates/crust-core/tests/data/import_baselines/render_source_usda-131b801caa122c43-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_source_usda-131b801caa122c43-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/render_source_usda-749a95594e279116-1.image b/crates/crust-core/tests/data/import_baselines/render_source_usda-749a95594e279116-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_source_usda-749a95594e279116-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/render_source_usda-b15267a29d9e4616-1.image b/crates/crust-core/tests/data/import_baselines/render_source_usda-b15267a29d9e4616-1.image new file mode 100644 index 000000000..64bdea1f0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_source_usda-b15267a29d9e4616-1.image @@ -0,0 +1 @@ +16x4 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/reset_disk_usda-6e0b5adab74a3b7a-1.image b/crates/crust-core/tests/data/import_baselines/reset_disk_usda-6e0b5adab74a3b7a-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/reset_disk_usda-6e0b5adab74a3b7a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/resolution_negative_usda-0d18504e846cea31-1.image b/crates/crust-core/tests/data/import_baselines/resolution_negative_usda-0d18504e846cea31-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/resolution_negative_usda-0d18504e846cea31-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/resolution_zero_usda-e3f58678deb9aa30-1.image b/crates/crust-core/tests/data/import_baselines/resolution_zero_usda-e3f58678deb9aa30-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/resolution_zero_usda-e3f58678deb9aa30-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/rest_usda-feaaa720bb9a30d2-1.image b/crates/crust-core/tests/data/import_baselines/rest_usda-feaaa720bb9a30d2-1.image new file mode 100644 index 000000000..9a20c3625 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rest_usda-feaaa720bb9a30d2-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off 5864db35cae6a0d6 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-00dd7b68b86c7168-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-00dd7b68b86c7168-1.image new file mode 100644 index 000000000..b8cc78d5a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-00dd7b68b86c7168-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off dcea69b0ecf972fb diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-00e8d0d9a2f465b9-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-00e8d0d9a2f465b9-1.image new file mode 100644 index 000000000..8dc57eb06 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-00e8d0d9a2f465b9-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off f0c2a6137cc49d6d diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-1ddeac0a2964315c-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-1ddeac0a2964315c-1.image new file mode 100644 index 000000000..38bdc380f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-1ddeac0a2964315c-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 691da2de7281266e diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-2f86c31117cc8b58-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-2f86c31117cc8b58-1.image new file mode 100644 index 000000000..7bcdd7320 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-2f86c31117cc8b58-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off dd18522f4775ef1d diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-43c385d7a2a21d1e-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-43c385d7a2a21d1e-1.image new file mode 100644 index 000000000..687c6c667 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-43c385d7a2a21d1e-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 8c0d9707a3840307 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-4aa136053cd56402-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-4aa136053cd56402-1.image new file mode 100644 index 000000000..eb5dd2f64 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-4aa136053cd56402-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off c29504390e63441f diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-4b8c79cf557cf378-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-4b8c79cf557cf378-1.image new file mode 100644 index 000000000..5b15a8f9a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-4b8c79cf557cf378-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 21eec4b33f37f6c9 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-5042b0d1011805d6-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-5042b0d1011805d6-1.image new file mode 100644 index 000000000..824d5a390 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-5042b0d1011805d6-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 00ee005bc70d0ce6 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-5c84bdb62972ba25-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-5c84bdb62972ba25-1.image new file mode 100644 index 000000000..7b4c2a20f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-5c84bdb62972ba25-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 590c41154e1a8676 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-63552b8e06717f62-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-63552b8e06717f62-1.image new file mode 100644 index 000000000..7b4c2a20f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-63552b8e06717f62-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 590c41154e1a8676 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-642eeb8c5780c872-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-642eeb8c5780c872-1.image new file mode 100644 index 000000000..cd7b62bfa --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-642eeb8c5780c872-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 45ba327dd680d7f3 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-65bf0b61fd007f62-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-65bf0b61fd007f62-1.image new file mode 100644 index 000000000..7b4c2a20f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-65bf0b61fd007f62-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 590c41154e1a8676 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-67d463deb3cd2295-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-67d463deb3cd2295-1.image new file mode 100644 index 000000000..5fe3194f2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-67d463deb3cd2295-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off cf7f604f30db0556 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-7781d1893e2e23fd-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-7781d1893e2e23fd-1.image new file mode 100644 index 000000000..7b4c2a20f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-7781d1893e2e23fd-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 590c41154e1a8676 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-7eba3de4e6efbf15-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-7eba3de4e6efbf15-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-7eba3de4e6efbf15-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-8099cbe59e22c4ff-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-8099cbe59e22c4ff-1.image new file mode 100644 index 000000000..ca71920c4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-8099cbe59e22c4ff-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 765cb296f5a6f72c diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-834306f0b405a977-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-834306f0b405a977-1.image new file mode 100644 index 000000000..eb5dd2f64 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-834306f0b405a977-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off c29504390e63441f diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-8c6dbffe8bcc7f5d-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-8c6dbffe8bcc7f5d-1.image new file mode 100644 index 000000000..8fe0d33e1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-8c6dbffe8bcc7f5d-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 0db6d0717721e7da diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-921d5e21a6ec411f-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-921d5e21a6ec411f-1.image new file mode 100644 index 000000000..6d053b645 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-921d5e21a6ec411f-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off e1449afcb0d487dd diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-9d7d0e6b748bbe2f-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-9d7d0e6b748bbe2f-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-9d7d0e6b748bbe2f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-a0c411ed1048de1a-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-a0c411ed1048de1a-1.image new file mode 100644 index 000000000..865288893 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-a0c411ed1048de1a-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 249bef8dcfbf2b34 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-a95c3cfeafbe744e-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-a95c3cfeafbe744e-1.image new file mode 100644 index 000000000..829cc8d28 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-a95c3cfeafbe744e-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 676eeff8d001e35c diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-aa094b9d362ee4b9-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-aa094b9d362ee4b9-1.image new file mode 100644 index 000000000..7b4c2a20f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-aa094b9d362ee4b9-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 590c41154e1a8676 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-bedb2af78f4c965d-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-bedb2af78f4c965d-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-bedb2af78f4c965d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-bfc3cfdc3fb023a6-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-bfc3cfdc3fb023a6-1.image new file mode 100644 index 000000000..7b4c2a20f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-bfc3cfdc3fb023a6-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 590c41154e1a8676 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-c51fa0d84e7325f7-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-c51fa0d84e7325f7-1.image new file mode 100644 index 000000000..8fe0d33e1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-c51fa0d84e7325f7-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 0db6d0717721e7da diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-1.image new file mode 100644 index 000000000..64d3507cc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-1.image @@ -0,0 +1 @@ +48x24 16spp clamp-off f0bb5c496107b07a diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-2.image b/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-2.image new file mode 100644 index 000000000..64d3507cc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-2.image @@ -0,0 +1 @@ +48x24 16spp clamp-off f0bb5c496107b07a diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-c78a3b1a4bb10072-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-c78a3b1a4bb10072-1.image new file mode 100644 index 000000000..db1f29f34 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-c78a3b1a4bb10072-1.image @@ -0,0 +1 @@ +160x120 16spp clamp-off 6cfbcbe0993c6cb0 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-cc0a74d0f1a22c6a-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-cc0a74d0f1a22c6a-1.image new file mode 100644 index 000000000..770981cd8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-cc0a74d0f1a22c6a-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off dc3113cd3ffe1848 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-ccefc9342ef07f81-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-ccefc9342ef07f81-1.image new file mode 100644 index 000000000..f1a87e269 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-ccefc9342ef07f81-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 46717004069b8cbd diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-ce726227b7d02261-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-ce726227b7d02261-1.image new file mode 100644 index 000000000..5e29237aa --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-ce726227b7d02261-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 9ecac36811a8f573 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-cef90a6ad595b1b4-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-cef90a6ad595b1b4-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-cef90a6ad595b1b4-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-d2c312942e13c754-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-d2c312942e13c754-1.image new file mode 100644 index 000000000..11b622894 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-d2c312942e13c754-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off e943b6c2da750dd8 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-dcc0d192c2504171-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-dcc0d192c2504171-1.image new file mode 100644 index 000000000..7b4c2a20f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-dcc0d192c2504171-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 590c41154e1a8676 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-df9ad38a08c60f60-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-df9ad38a08c60f60-1.image new file mode 100644 index 000000000..19b3e9c43 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-df9ad38a08c60f60-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 08805804271eab04 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-e227181a4d86cdde-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-e227181a4d86cdde-1.image new file mode 100644 index 000000000..66e10290a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-e227181a4d86cdde-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 2413272b4317cbbe diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-1.image new file mode 100644 index 000000000..64d3507cc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-1.image @@ -0,0 +1 @@ +48x24 16spp clamp-off f0bb5c496107b07a diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-2.image b/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-2.image new file mode 100644 index 000000000..64d3507cc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-2.image @@ -0,0 +1 @@ +48x24 16spp clamp-off f0bb5c496107b07a diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-f4c8b443da714046-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-f4c8b443da714046-1.image new file mode 100644 index 000000000..305cc2f7e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-f4c8b443da714046-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off 4f095d5f8ba22f9b diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-f7df8a9705f0748f-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-f7df8a9705f0748f-1.image new file mode 100644 index 000000000..68dd2ff65 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-f7df8a9705f0748f-1.image @@ -0,0 +1 @@ +24x18 16spp clamp-off ae1b418e0e069e28 diff --git a/crates/crust-core/tests/data/import_baselines/rotate_parent_usda-a0cc7d7c189a5bba-1.image b/crates/crust-core/tests/data/import_baselines/rotate_parent_usda-a0cc7d7c189a5bba-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/rotate_parent_usda-a0cc7d7c189a5bba-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/s_usda-0006d97926014c1b-1.image b/crates/crust-core/tests/data/import_baselines/s_usda-0006d97926014c1b-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/s_usda-0006d97926014c1b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/sampler_default_usda-6c4e4e80bde0b7e5-1.image b/crates/crust-core/tests/data/import_baselines/sampler_default_usda-6c4e4e80bde0b7e5-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sampler_default_usda-6c4e4e80bde0b7e5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/sampler_halton_usda-bcb88dc4e7395359-1.image b/crates/crust-core/tests/data/import_baselines/sampler_halton_usda-bcb88dc4e7395359-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sampler_halton_usda-bcb88dc4e7395359-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/sampler_lattice_usda-83017538d7bb844b-1.image b/crates/crust-core/tests/data/import_baselines/sampler_lattice_usda-83017538d7bb844b-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sampler_lattice_usda-83017538d7bb844b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/scaled_sphere_light_usda-2dabd5a9f4c0f98e-1.image b/crates/crust-core/tests/data/import_baselines/scaled_sphere_light_usda-2dabd5a9f4c0f98e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/scaled_sphere_light_usda-2dabd5a9f4c0f98e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/scaled_usda-308f36ce00bb3ea8-1.image b/crates/crust-core/tests/data/import_baselines/scaled_usda-308f36ce00bb3ea8-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/scaled_usda-308f36ce00bb3ea8-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/scatter_usda-08c435043fb988f9-1.image b/crates/crust-core/tests/data/import_baselines/scatter_usda-08c435043fb988f9-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/scatter_usda-08c435043fb988f9-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/scatter_usda-e62e321631ee4219-1.image b/crates/crust-core/tests/data/import_baselines/scatter_usda-e62e321631ee4219-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/scatter_usda-e62e321631ee4219-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/scope_color_space_usda-acd6f59e656731c0-1.image b/crates/crust-core/tests/data/import_baselines/scope_color_space_usda-acd6f59e656731c0-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/scope_color_space_usda-acd6f59e656731c0-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/settings_usda-58e4038727242b7e-1.image b/crates/crust-core/tests/data/import_baselines/settings_usda-58e4038727242b7e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/settings_usda-58e4038727242b7e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/settings_usda-8c1bce0acc8c2aa3-1.image b/crates/crust-core/tests/data/import_baselines/settings_usda-8c1bce0acc8c2aa3-1.image new file mode 100644 index 000000000..f0b9b5b6b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/settings_usda-8c1bce0acc8c2aa3-1.image @@ -0,0 +1 @@ +32x16 16spp clamp-off 6df0de0551480325 diff --git a/crates/crust-core/tests/data/import_baselines/shadow_ball_blocked_usda-7a4aa722cf803335-1.image b/crates/crust-core/tests/data/import_baselines/shadow_ball_blocked_usda-7a4aa722cf803335-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shadow_ball_blocked_usda-7a4aa722cf803335-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/shadow_ball_excluded_usda-97e5af329ccc1a04-1.image b/crates/crust-core/tests/data/import_baselines/shadow_ball_excluded_usda-97e5af329ccc1a04-1.image new file mode 100644 index 000000000..faa3718b5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shadow_ball_excluded_usda-97e5af329ccc1a04-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 90dcc2e45fb83b3f diff --git a/crates/crust-core/tests/data/import_baselines/shadow_fog_blocked_usda-02a2d7c4f4baa106-1.image b/crates/crust-core/tests/data/import_baselines/shadow_fog_blocked_usda-02a2d7c4f4baa106-1.image new file mode 100644 index 000000000..38d2e3425 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shadow_fog_blocked_usda-02a2d7c4f4baa106-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 911f9054441db64d diff --git a/crates/crust-core/tests/data/import_baselines/shadow_fog_excluded_usda-0f89cfc00df34be3-1.image b/crates/crust-core/tests/data/import_baselines/shadow_fog_excluded_usda-0f89cfc00df34be3-1.image new file mode 100644 index 000000000..faa3718b5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shadow_fog_excluded_usda-0f89cfc00df34be3-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 90dcc2e45fb83b3f diff --git a/crates/crust-core/tests/data/import_baselines/shadow_open_usda-43f52a9430038a59-1.image b/crates/crust-core/tests/data/import_baselines/shadow_open_usda-43f52a9430038a59-1.image new file mode 100644 index 000000000..faa3718b5 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shadow_open_usda-43f52a9430038a59-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 90dcc2e45fb83b3f diff --git a/crates/crust-core/tests/data/import_baselines/shaped_rect_usda-2479a47c7797a66c-1.image b/crates/crust-core/tests/data/import_baselines/shaped_rect_usda-2479a47c7797a66c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shaped_rect_usda-2479a47c7797a66c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/shaping_absent_usda-59ac6c6c6ed71036-1.image b/crates/crust-core/tests/data/import_baselines/shaping_absent_usda-59ac6c6c6ed71036-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shaping_absent_usda-59ac6c6c6ed71036-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/shaping_applied_usda-b1b65b90122da6f7-1.image b/crates/crust-core/tests/data/import_baselines/shaping_applied_usda-b1b65b90122da6f7-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shaping_applied_usda-b1b65b90122da6f7-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/shared_points_usda-b97fa4512d46ed74-1.image b/crates/crust-core/tests/data/import_baselines/shared_points_usda-b97fa4512d46ed74-1.image new file mode 100644 index 000000000..bfaeb4907 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shared_points_usda-b97fa4512d46ed74-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off 55f309e798aa7430 diff --git a/crates/crust-core/tests/data/import_baselines/shared_usda-9209cd8eb954e389-1.image b/crates/crust-core/tests/data/import_baselines/shared_usda-9209cd8eb954e389-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shared_usda-9209cd8eb954e389-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/shared_usda-b9af19ac4c829153-1.image b/crates/crust-core/tests/data/import_baselines/shared_usda-b9af19ac4c829153-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shared_usda-b9af19ac4c829153-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/sharp_usda-9bf0a09f5df9236e-1.image b/crates/crust-core/tests/data/import_baselines/sharp_usda-9bf0a09f5df9236e-1.image new file mode 100644 index 000000000..410d887f2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sharp_usda-9bf0a09f5df9236e-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off f27fb0620765d10a diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-13a3dd4f11de39b9-1.image b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-13a3dd4f11de39b9-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-13a3dd4f11de39b9-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-27651d6a015b04ab-1.image b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-27651d6a015b04ab-1.image new file mode 100644 index 000000000..78015e809 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-27651d6a015b04ab-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off db4fac9d3b84f90f diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-369c0d66f45d39b9-1.image b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-369c0d66f45d39b9-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-369c0d66f45d39b9-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-6f33035f56110470-1.image b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-6f33035f56110470-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-6f33035f56110470-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-7003167a7a70688d-1.image b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-7003167a7a70688d-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-7003167a7a70688d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-b26fdb3392c1eac3-1.image b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-b26fdb3392c1eac3-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-b26fdb3392c1eac3-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-bc9d89b7ffc91e9b-1.image b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-bc9d89b7ffc91e9b-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-bc9d89b7ffc91e9b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-cac7cb8da11a9b99-1.image b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-cac7cb8da11a9b99-1.image new file mode 100644 index 000000000..4bf472b1a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-cac7cb8da11a9b99-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 8a1b50f91ac38a36 diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e785595b364179c9-1.image b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e785595b364179c9-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e785595b364179c9-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e82a725344733609-1.image b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e82a725344733609-1.image new file mode 100644 index 000000000..ba4884437 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e82a725344733609-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 52a1a46f3a46d230 diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-eaf3eeced61f0581-1.image b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-eaf3eeced61f0581-1.image new file mode 100644 index 000000000..0f9205e21 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-eaf3eeced61f0581-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off c0a8018fae7df9ad diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-f697274eb781e181-1.image b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-f697274eb781e181-1.image new file mode 100644 index 000000000..de6bcea85 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-f697274eb781e181-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a1d9e9b76331e32f diff --git a/crates/crust-core/tests/data/import_baselines/shot_usda-bc277892832ac542-1.image b/crates/crust-core/tests/data/import_baselines/shot_usda-bc277892832ac542-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shot_usda-bc277892832ac542-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/sibling_usda-ec40564c6bb9a56d-1.image b/crates/crust-core/tests/data/import_baselines/sibling_usda-ec40564c6bb9a56d-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sibling_usda-ec40564c6bb9a56d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/single_usda-472ac6d4e19ff814-1.image b/crates/crust-core/tests/data/import_baselines/single_usda-472ac6d4e19ff814-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/single_usda-472ac6d4e19ff814-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/smoke_grid_usda-64f278d7126815e0-1.image b/crates/crust-core/tests/data/import_baselines/smoke_grid_usda-64f278d7126815e0-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/smoke_grid_usda-64f278d7126815e0-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/smoke_usda-8b219b9873531af2-1.image b/crates/crust-core/tests/data/import_baselines/smoke_usda-8b219b9873531af2-1.image new file mode 100644 index 000000000..2424d03fe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/smoke_usda-8b219b9873531af2-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off b56710251f2e6466 diff --git a/crates/crust-core/tests/data/import_baselines/smoke_usda-c485b4550b7ac78b-1.image b/crates/crust-core/tests/data/import_baselines/smoke_usda-c485b4550b7ac78b-1.image new file mode 100644 index 000000000..2424d03fe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/smoke_usda-c485b4550b7ac78b-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off b56710251f2e6466 diff --git a/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-1.image b/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-1.image new file mode 100644 index 000000000..2424d03fe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off b56710251f2e6466 diff --git a/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-2.image b/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-2.image new file mode 100644 index 000000000..2424d03fe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-2.image @@ -0,0 +1 @@ +320x180 16spp clamp-off b56710251f2e6466 diff --git a/crates/crust-core/tests/data/import_baselines/snapshot_usda-48d0c43b60eb99bd-1.image b/crates/crust-core/tests/data/import_baselines/snapshot_usda-48d0c43b60eb99bd-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/snapshot_usda-48d0c43b60eb99bd-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/sphere_and_mesh_usda-0e0815d93400ffb5-1.image b/crates/crust-core/tests/data/import_baselines/sphere_and_mesh_usda-0e0815d93400ffb5-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_and_mesh_usda-0e0815d93400ffb5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/sphere_both_usda-e02008707f44acbc-1.image b/crates/crust-core/tests/data/import_baselines/sphere_both_usda-e02008707f44acbc-1.image new file mode 100644 index 000000000..17bda768d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_both_usda-e02008707f44acbc-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 2319fed6b9cef708 diff --git a/crates/crust-core/tests/data/import_baselines/sphere_crust_wins_usda-cfeb9931008a7ea6-1.image b/crates/crust-core/tests/data/import_baselines/sphere_crust_wins_usda-cfeb9931008a7ea6-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_crust_wins_usda-cfeb9931008a7ea6-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/sphere_defaults_usda-8b8f061019318106-1.image b/crates/crust-core/tests/data/import_baselines/sphere_defaults_usda-8b8f061019318106-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_defaults_usda-8b8f061019318106-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/sphere_light_usda-4886e72703716517-1.image b/crates/crust-core/tests/data/import_baselines/sphere_light_usda-4886e72703716517-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_light_usda-4886e72703716517-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/sphere_nonuniform_scale_usda-4a3711274af76a73-1.image b/crates/crust-core/tests/data/import_baselines/sphere_nonuniform_scale_usda-4a3711274af76a73-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_nonuniform_scale_usda-4a3711274af76a73-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/sphere_only_usda-71bd2f6a8198f0b8-1.image b/crates/crust-core/tests/data/import_baselines/sphere_only_usda-71bd2f6a8198f0b8-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_only_usda-71bd2f6a8198f0b8-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/sphere_ri_camera_usda-47b1274be8232510-1.image b/crates/crust-core/tests/data/import_baselines/sphere_ri_camera_usda-47b1274be8232510-1.image new file mode 100644 index 000000000..0d5371bdf --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_ri_camera_usda-47b1274be8232510-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 7262827b81999b78 diff --git a/crates/crust-core/tests/data/import_baselines/sphere_tiny_scale_usda-7eb2c16e3f3404d7-1.image b/crates/crust-core/tests/data/import_baselines/sphere_tiny_scale_usda-7eb2c16e3f3404d7-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_tiny_scale_usda-7eb2c16e3f3404d7-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/sphere_track_usda-9c13bacd8c4d2d91-1.image b/crates/crust-core/tests/data/import_baselines/sphere_track_usda-9c13bacd8c4d2d91-1.image new file mode 100644 index 000000000..c0c2a9d9e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_track_usda-9c13bacd8c4d2d91-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off c4b8bd0ec744066e diff --git a/crates/crust-core/tests/data/import_baselines/sphere_uniform_scale_usda-afcce7d5fa243629-1.image b/crates/crust-core/tests/data/import_baselines/sphere_uniform_scale_usda-afcce7d5fa243629-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_uniform_scale_usda-afcce7d5fa243629-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/sphere_usda-8366b90874a02778-1.image b/crates/crust-core/tests/data/import_baselines/sphere_usda-8366b90874a02778-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_usda-8366b90874a02778-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/sphere_zero_scale_usda-ac3436d07948ddb2-1.image b/crates/crust-core/tests/data/import_baselines/sphere_zero_scale_usda-ac3436d07948ddb2-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sphere_zero_scale_usda-ac3436d07948ddb2-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/squashed_cylinder_usda-6bfde315320c4111-1.image b/crates/crust-core/tests/data/import_baselines/squashed_cylinder_usda-6bfde315320c4111-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/squashed_cylinder_usda-6bfde315320c4111-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/squashed_disk_usda-e4a3093a38518998-1.image b/crates/crust-core/tests/data/import_baselines/squashed_disk_usda-e4a3093a38518998-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/squashed_disk_usda-e4a3093a38518998-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/squashed_sphere_usda-7bcbaa3c83aaf92c-1.image b/crates/crust-core/tests/data/import_baselines/squashed_sphere_usda-7bcbaa3c83aaf92c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/squashed_sphere_usda-7bcbaa3c83aaf92c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stack_0_usda-2dad0f5ec97c10b8-1.image b/crates/crust-core/tests/data/import_baselines/stack_0_usda-2dad0f5ec97c10b8-1.image new file mode 100644 index 000000000..ea37ea467 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stack_0_usda-2dad0f5ec97c10b8-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off f4846d8c3db394f6 diff --git a/crates/crust-core/tests/data/import_baselines/stack_150_usda-9fc28daf7efcde9e-1.image b/crates/crust-core/tests/data/import_baselines/stack_150_usda-9fc28daf7efcde9e-1.image new file mode 100644 index 000000000..43edb60d8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stack_150_usda-9fc28daf7efcde9e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off ae0bf4cb3d777366 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-0695b3612208bcf5-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-0695b3612208bcf5-1.image new file mode 100644 index 000000000..45c7c7673 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-0695b3612208bcf5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a9b43f7c7735c3fb diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-08451a086997d754-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-08451a086997d754-1.image new file mode 100644 index 000000000..9167da060 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-08451a086997d754-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 9d918df738e7419b diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-08f2605aa76f8c5a-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-08f2605aa76f8c5a-1.image new file mode 100644 index 000000000..45c7c7673 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-08f2605aa76f8c5a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a9b43f7c7735c3fb diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-0a9a4fefc79d0b59-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-0a9a4fefc79d0b59-1.image new file mode 100644 index 000000000..24c7ddb45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-0a9a4fefc79d0b59-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 6211336cd955df3b diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-0dae1afcf6927089-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-0dae1afcf6927089-1.image new file mode 100644 index 000000000..2aba0e1c2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-0dae1afcf6927089-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off cf76d033b1272cd1 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-137bf5b9bbcbaa09-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-137bf5b9bbcbaa09-1.image new file mode 100644 index 000000000..160bd5d91 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-137bf5b9bbcbaa09-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off b4e5ed191fd3ea1c diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-15ab0320e4168a3a-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-15ab0320e4168a3a-1.image new file mode 100644 index 000000000..45c7c7673 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-15ab0320e4168a3a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a9b43f7c7735c3fb diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-1780ae5d9b4706f3-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-1780ae5d9b4706f3-1.image new file mode 100644 index 000000000..318bfb54f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-1780ae5d9b4706f3-1.image @@ -0,0 +1 @@ +16x8 16spp clamp-off 6ab05ef9aa8b9b25 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-18576b421133666c-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-18576b421133666c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-18576b421133666c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-18d4c3c27061d1e0-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-18d4c3c27061d1e0-1.image new file mode 100644 index 000000000..24c7ddb45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-18d4c3c27061d1e0-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 6211336cd955df3b diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-19c958e4224602c7-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-19c958e4224602c7-1.image new file mode 100644 index 000000000..f0b9b5b6b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-19c958e4224602c7-1.image @@ -0,0 +1 @@ +32x16 16spp clamp-off 6df0de0551480325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-1ad9de82b394044d-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-1ad9de82b394044d-1.image new file mode 100644 index 000000000..b1b2ee57a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-1ad9de82b394044d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off c4b3e3234fab6655 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-22dd31756ff245fc-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-22dd31756ff245fc-1.image new file mode 100644 index 000000000..d87432c64 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-22dd31756ff245fc-1.image @@ -0,0 +1 @@ +40x24 16spp clamp-off 159590ad28a7f55f diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-22e94b531779cff1-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-22e94b531779cff1-1.image new file mode 100644 index 000000000..cf592a6d4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-22e94b531779cff1-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 71ccd89e99a2b01f diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-24ad7c66559e9c80-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-24ad7c66559e9c80-1.image new file mode 100644 index 000000000..21fc0e6d8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-24ad7c66559e9c80-1.image @@ -0,0 +1 @@ +128x72 16spp clamp-off 5ac05c518b0e1e9c diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-26105365b1fd8dbc-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-26105365b1fd8dbc-1.image new file mode 100644 index 000000000..0f6bb47e6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-26105365b1fd8dbc-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off be2be9919cb0403f diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-2912eb63656b3371-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-2912eb63656b3371-1.image new file mode 100644 index 000000000..452a40d74 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-2912eb63656b3371-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off da0d8844add128c3 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-2c5736e1f1ba1f8d-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-2c5736e1f1ba1f8d-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-2c5736e1f1ba1f8d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-2c8067fb553f81df-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-2c8067fb553f81df-1.image new file mode 100644 index 000000000..cce857adb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-2c8067fb553f81df-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 5a2e886dbf4ce620 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-2ce486f3dc966042-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-2ce486f3dc966042-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-2ce486f3dc966042-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-2ffe73dbb471510a-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-2ffe73dbb471510a-1.image new file mode 100644 index 000000000..7bf6cc326 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-2ffe73dbb471510a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off e6be38d02a9e05a8 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-323a3e02a1f4d7b0-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-323a3e02a1f4d7b0-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-323a3e02a1f4d7b0-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-340b07ebab8f9091-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-340b07ebab8f9091-1.image new file mode 100644 index 000000000..ddd05b285 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-340b07ebab8f9091-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off f9a6cf9848bb1592 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-3622e7d90bc81d34-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-3622e7d90bc81d34-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-3622e7d90bc81d34-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-1.image new file mode 100644 index 000000000..8a765116c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 53c5c55e5b6a90ec diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-2.image b/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-2.image new file mode 100644 index 000000000..921506d81 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off e7125bb88c8183e3 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-37a86d28c7d197ed-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-37a86d28c7d197ed-1.image new file mode 100644 index 000000000..45c7c7673 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-37a86d28c7d197ed-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a9b43f7c7735c3fb diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-3c67a25a0a341efb-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-3c67a25a0a341efb-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-3c67a25a0a341efb-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-3effc82524d047c7-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-3effc82524d047c7-1.image new file mode 100644 index 000000000..75a962c65 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-3effc82524d047c7-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 5ca6413c3316b681 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-3f9cd9ed5581414a-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-3f9cd9ed5581414a-1.image new file mode 100644 index 000000000..45c7c7673 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-3f9cd9ed5581414a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a9b43f7c7735c3fb diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-1.image new file mode 100644 index 000000000..a527455fa --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off fa92bb7b7c98d4ac diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-2.image b/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-2.image new file mode 100644 index 000000000..a527455fa --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off fa92bb7b7c98d4ac diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-48e70f6118b1f181-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-48e70f6118b1f181-1.image new file mode 100644 index 000000000..f0b9b5b6b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-48e70f6118b1f181-1.image @@ -0,0 +1 @@ +32x16 16spp clamp-off 6df0de0551480325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-49f9cb3e8a3fb9fb-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-49f9cb3e8a3fb9fb-1.image new file mode 100644 index 000000000..c1e4a588d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-49f9cb3e8a3fb9fb-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 4b15a79ca2ef8e64 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-4a064c9610d45212-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-4a064c9610d45212-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-4a064c9610d45212-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-4f30830cd0cff6cf-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-4f30830cd0cff6cf-1.image new file mode 100644 index 000000000..45c7c7673 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-4f30830cd0cff6cf-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a9b43f7c7735c3fb diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-520aa0db2cddfe4a-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-520aa0db2cddfe4a-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-520aa0db2cddfe4a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-54895eac26b3d68b-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-54895eac26b3d68b-1.image new file mode 100644 index 000000000..f0b9b5b6b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-54895eac26b3d68b-1.image @@ -0,0 +1 @@ +32x16 16spp clamp-off 6df0de0551480325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-5842de9c4816f088-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-5842de9c4816f088-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-5842de9c4816f088-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-591315737502029a-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-591315737502029a-1.image new file mode 100644 index 000000000..452a40d74 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-591315737502029a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off da0d8844add128c3 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-592ba3007488df6d-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-592ba3007488df6d-1.image new file mode 100644 index 000000000..73c7bc452 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-592ba3007488df6d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 0c7c1916d1025acc diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-59354f1aad350085-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-59354f1aad350085-1.image new file mode 100644 index 000000000..f0b9b5b6b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-59354f1aad350085-1.image @@ -0,0 +1 @@ +32x16 16spp clamp-off 6df0de0551480325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-5b237a71fd087753-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-5b237a71fd087753-1.image new file mode 100644 index 000000000..84ac1ec24 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-5b237a71fd087753-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off fb7768bb3c8316c8 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-5cc80e16451809c9-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-5cc80e16451809c9-1.image new file mode 100644 index 000000000..45c7c7673 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-5cc80e16451809c9-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a9b43f7c7735c3fb diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-5dc19c72025a0150-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-5dc19c72025a0150-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-5dc19c72025a0150-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-5f7140cec32f4f07-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-5f7140cec32f4f07-1.image new file mode 100644 index 000000000..45c7c7673 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-5f7140cec32f4f07-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a9b43f7c7735c3fb diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-604932e0d3e70494-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-604932e0d3e70494-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-604932e0d3e70494-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-64b7039b1d43e540-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-64b7039b1d43e540-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-64b7039b1d43e540-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-65ee13ae526ffeea-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-65ee13ae526ffeea-1.image new file mode 100644 index 000000000..cb7355504 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-65ee13ae526ffeea-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 650db2d54a2e44c9 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-67247fa59107a671-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-67247fa59107a671-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-67247fa59107a671-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-6bf959c4a9ccd0b3-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-6bf959c4a9ccd0b3-1.image new file mode 100644 index 000000000..27c76a0e4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-6bf959c4a9ccd0b3-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 57f8edd356d509b8 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-6d5fe86af042b6e1-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-6d5fe86af042b6e1-1.image new file mode 100644 index 000000000..9e894f9e3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-6d5fe86af042b6e1-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 69e570402310d1da diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-71054a8e0c511721-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-71054a8e0c511721-1.image new file mode 100644 index 000000000..f0b9b5b6b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-71054a8e0c511721-1.image @@ -0,0 +1 @@ +32x16 16spp clamp-off 6df0de0551480325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-7c770edd10f5907e-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-7c770edd10f5907e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-7c770edd10f5907e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8088e3bfe6185392-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-8088e3bfe6185392-1.image new file mode 100644 index 000000000..45c7c7673 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8088e3bfe6185392-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a9b43f7c7735c3fb diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-80aabe25c21585c0-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-80aabe25c21585c0-1.image new file mode 100644 index 000000000..4f6fd594c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-80aabe25c21585c0-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 8cae0790e6eb3d3f diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-1.image new file mode 100644 index 000000000..8a765116c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 53c5c55e5b6a90ec diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-2.image b/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-2.image new file mode 100644 index 000000000..477334e78 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off dee48553732bbb1e diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-82a10c399a16cdfe-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-82a10c399a16cdfe-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-82a10c399a16cdfe-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8330e4bc297d2c11-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-8330e4bc297d2c11-1.image new file mode 100644 index 000000000..c7a7b735d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8330e4bc297d2c11-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 786c513921b13438 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-888072d0abcb4b7c-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-888072d0abcb4b7c-1.image new file mode 100644 index 000000000..3e89d2306 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-888072d0abcb4b7c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off ea4914ee7aca7470 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8a23f56494af42b0-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-8a23f56494af42b0-1.image new file mode 100644 index 000000000..0de6d902e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8a23f56494af42b0-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off d07080be689e52ce diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8b53eb2ddb581089-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-8b53eb2ddb581089-1.image new file mode 100644 index 000000000..458c2cb77 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8b53eb2ddb581089-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 378b39f2275b91ae diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8bc1102225447b76-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-8bc1102225447b76-1.image new file mode 100644 index 000000000..656bbdb35 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8bc1102225447b76-1.image @@ -0,0 +1 @@ +40x24 16spp clamp-off 723815149a4df964 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8bcafd97dd44d415-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-8bcafd97dd44d415-1.image new file mode 100644 index 000000000..eb5105103 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8bcafd97dd44d415-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 6b1c72f0770374ac diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8c1801ab78070f29-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-8c1801ab78070f29-1.image new file mode 100644 index 000000000..45c7c7673 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8c1801ab78070f29-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a9b43f7c7735c3fb diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8cceeaf3cdd2ee51-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-8cceeaf3cdd2ee51-1.image new file mode 100644 index 000000000..ddd05b285 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8cceeaf3cdd2ee51-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off f9a6cf9848bb1592 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-91c6c701cea6760c-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-91c6c701cea6760c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-91c6c701cea6760c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-93b962ab026b22b8-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-93b962ab026b22b8-1.image new file mode 100644 index 000000000..24c7ddb45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-93b962ab026b22b8-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 6211336cd955df3b diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-976234e8d4ff9d44-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-976234e8d4ff9d44-1.image new file mode 100644 index 000000000..a0fcec940 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-976234e8d4ff9d44-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 9c351d0247b71f22 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-9a4d212002571295-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-9a4d212002571295-1.image new file mode 100644 index 000000000..b2a360e22 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-9a4d212002571295-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 58582c7ae13d5973 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-9af3795f55319fa5-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-9af3795f55319fa5-1.image new file mode 100644 index 000000000..95f9e9895 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-9af3795f55319fa5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off fe2f054c949853e4 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-9f427c13a5c51892-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-9f427c13a5c51892-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-9f427c13a5c51892-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-a366debd179e59ca-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-a366debd179e59ca-1.image new file mode 100644 index 000000000..79021150d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-a366debd179e59ca-1.image @@ -0,0 +1 @@ +128x72 16spp clamp-off 2d50ab0504cbe325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-a5b1d711f3b9ea59-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-a5b1d711f3b9ea59-1.image new file mode 100644 index 000000000..13a17527c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-a5b1d711f3b9ea59-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 6af97ded10026b30 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-a74b5f3cf6bce97e-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-a74b5f3cf6bce97e-1.image new file mode 100644 index 000000000..6a88ce76d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-a74b5f3cf6bce97e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 620e19378fb5372d diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-a7f91b5a6640999a-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-a7f91b5a6640999a-1.image new file mode 100644 index 000000000..4f6fd594c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-a7f91b5a6640999a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 8cae0790e6eb3d3f diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-a87fd805403755dc-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-a87fd805403755dc-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-a87fd805403755dc-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-abb589be134471f7-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-abb589be134471f7-1.image new file mode 100644 index 000000000..cce857adb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-abb589be134471f7-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 5a2e886dbf4ce620 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-abeca91af484e4eb-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-abeca91af484e4eb-1.image new file mode 100644 index 000000000..ddd05b285 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-abeca91af484e4eb-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off f9a6cf9848bb1592 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-b0726246200d796c-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-b0726246200d796c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-b0726246200d796c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-b091ac35593cb491-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-b091ac35593cb491-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-b091ac35593cb491-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-b8974322f9c3c9a8-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-b8974322f9c3c9a8-1.image new file mode 100644 index 000000000..4f6fd594c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-b8974322f9c3c9a8-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 8cae0790e6eb3d3f diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-bb51bbccac634602-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-bb51bbccac634602-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-bb51bbccac634602-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-bc2640abb95a8689-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-bc2640abb95a8689-1.image new file mode 100644 index 000000000..45c7c7673 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-bc2640abb95a8689-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a9b43f7c7735c3fb diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-bdce5005dd991897-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-bdce5005dd991897-1.image new file mode 100644 index 000000000..45c7c7673 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-bdce5005dd991897-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a9b43f7c7735c3fb diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-c3555672a13627c7-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-c3555672a13627c7-1.image new file mode 100644 index 000000000..ead6e63c8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-c3555672a13627c7-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 1c93901d5b1548e9 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-c469a696e567b939-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-c469a696e567b939-1.image new file mode 100644 index 000000000..24c7ddb45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-c469a696e567b939-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 6211336cd955df3b diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-c7b4569174f0eec0-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-c7b4569174f0eec0-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-c7b4569174f0eec0-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-cd83faa181eb1fd7-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-cd83faa181eb1fd7-1.image new file mode 100644 index 000000000..bcdd2a68d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-cd83faa181eb1fd7-1.image @@ -0,0 +1 @@ +128x72 16spp clamp-off 8dc69de5eba20193 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-cf6459f3f81ccc47-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-cf6459f3f81ccc47-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-cf6459f3f81ccc47-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-cf8a4ab339090107-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-cf8a4ab339090107-1.image new file mode 100644 index 000000000..70e223316 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-cf8a4ab339090107-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 03bc6770d2d44278 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-d2ee2497345d697d-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-d2ee2497345d697d-1.image new file mode 100644 index 000000000..4f6fd594c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-d2ee2497345d697d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 8cae0790e6eb3d3f diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-d72f3f29bbbe2aac-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-d72f3f29bbbe2aac-1.image new file mode 100644 index 000000000..f1453f795 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-d72f3f29bbbe2aac-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 45f79c0aa79f8fca diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-db5313ef5e73713b-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-db5313ef5e73713b-1.image new file mode 100644 index 000000000..7e165eda3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-db5313ef5e73713b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off ea53a46b507504bd diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-dbe57a2b9b304f79-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-dbe57a2b9b304f79-1.image new file mode 100644 index 000000000..3edc31727 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-dbe57a2b9b304f79-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 5e812b419238b0b8 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-dc3f3fbeccf7b47a-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-dc3f3fbeccf7b47a-1.image new file mode 100644 index 000000000..ddd05b285 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-dc3f3fbeccf7b47a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off f9a6cf9848bb1592 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-df6e87952da2ef59-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-df6e87952da2ef59-1.image new file mode 100644 index 000000000..ddd05b285 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-df6e87952da2ef59-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off f9a6cf9848bb1592 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-dfcbe85c1522e1a0-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-dfcbe85c1522e1a0-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-dfcbe85c1522e1a0-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-e0281d61316ee28c-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-e0281d61316ee28c-1.image new file mode 100644 index 000000000..45c7c7673 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-e0281d61316ee28c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a9b43f7c7735c3fb diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-e190342a381695b4-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-e190342a381695b4-1.image new file mode 100644 index 000000000..24c7ddb45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-e190342a381695b4-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 6211336cd955df3b diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-e4221ab681d9d69c-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-e4221ab681d9d69c-1.image new file mode 100644 index 000000000..45c7c7673 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-e4221ab681d9d69c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a9b43f7c7735c3fb diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-e515f767109d59fd-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-e515f767109d59fd-1.image new file mode 100644 index 000000000..f899bb316 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-e515f767109d59fd-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 493b8dcf1ce053b9 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-e6a49698324053cb-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-e6a49698324053cb-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-e6a49698324053cb-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-e725f8fd7bc55370-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-e725f8fd7bc55370-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-e725f8fd7bc55370-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-eae49fc2a8ca60e5-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-eae49fc2a8ca60e5-1.image new file mode 100644 index 000000000..50b8d3ad8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-eae49fc2a8ca60e5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 48eece89f0acddec diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-eb49e61d600c4d7e-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-eb49e61d600c4d7e-1.image new file mode 100644 index 000000000..9809feb10 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-eb49e61d600c4d7e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 7785b04f1682f99e diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-ebf6853a9256b461-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-ebf6853a9256b461-1.image new file mode 100644 index 000000000..24c7ddb45 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-ebf6853a9256b461-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 6211336cd955df3b diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-ef8a900692712be4-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-ef8a900692712be4-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-ef8a900692712be4-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-f1cbf14d6569cda8-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-f1cbf14d6569cda8-1.image new file mode 100644 index 000000000..da36b8ab1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-f1cbf14d6569cda8-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off cc582f729d0f396a diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-f3300bdef5e06140-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-f3300bdef5e06140-1.image new file mode 100644 index 000000000..45c7c7673 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-f3300bdef5e06140-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a9b43f7c7735c3fb diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-f33567936d2468ed-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-f33567936d2468ed-1.image new file mode 100644 index 000000000..bcdd2a68d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-f33567936d2468ed-1.image @@ -0,0 +1 @@ +128x72 16spp clamp-off 8dc69de5eba20193 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-fbc457cd2253b427-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-fbc457cd2253b427-1.image new file mode 100644 index 000000000..7ba3b0f93 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-fbc457cd2253b427-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64034cf73f5248d8 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-fec7a3f24112f4ad-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-fec7a3f24112f4ad-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-fec7a3f24112f4ad-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-ffdbda6eb16c3b7d-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-ffdbda6eb16c3b7d-1.image new file mode 100644 index 000000000..452a40d74 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-ffdbda6eb16c3b7d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off da0d8844add128c3 diff --git a/crates/crust-core/tests/data/import_baselines/static_vectors_usda-fae85e3b03a2883e-1.image b/crates/crust-core/tests/data/import_baselines/static_vectors_usda-fae85e3b03a2883e-1.image new file mode 100644 index 000000000..c0c2a9d9e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/static_vectors_usda-fae85e3b03a2883e-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off c4b8bd0ec744066e diff --git a/crates/crust-core/tests/data/import_baselines/static_with_usda-9af9d7b39f92f260-1.image b/crates/crust-core/tests/data/import_baselines/static_with_usda-9af9d7b39f92f260-1.image new file mode 100644 index 000000000..0e8a4d39e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/static_with_usda-9af9d7b39f92f260-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 51c3405b7660a8ac diff --git a/crates/crust-core/tests/data/import_baselines/static_without_usda-cd73d9530ee2de09-1.image b/crates/crust-core/tests/data/import_baselines/static_without_usda-cd73d9530ee2de09-1.image new file mode 100644 index 000000000..0e8a4d39e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/static_without_usda-cd73d9530ee2de09-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 51c3405b7660a8ac diff --git a/crates/crust-core/tests/data/import_baselines/stats_usda-00e508bd2c5eb608-1.image b/crates/crust-core/tests/data/import_baselines/stats_usda-00e508bd2c5eb608-1.image new file mode 100644 index 000000000..314a438c1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stats_usda-00e508bd2c5eb608-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 0c7e6e89a269ec4d diff --git a/crates/crust-core/tests/data/import_baselines/stops_usda-f48d13a255e8b51e-1.image b/crates/crust-core/tests/data/import_baselines/stops_usda-f48d13a255e8b51e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stops_usda-f48d13a255e8b51e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/strategy_balance_usda-bdbde883917b565d-1.image b/crates/crust-core/tests/data/import_baselines/strategy_balance_usda-bdbde883917b565d-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/strategy_balance_usda-bdbde883917b565d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/strategy_bogus_usda-ab14768d89b4fe10-1.image b/crates/crust-core/tests/data/import_baselines/strategy_bogus_usda-ab14768d89b4fe10-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/strategy_bogus_usda-ab14768d89b4fe10-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/strategy_bsdf_usda-f7c53ec9f704be37-1.image b/crates/crust-core/tests/data/import_baselines/strategy_bsdf_usda-f7c53ec9f704be37-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/strategy_bsdf_usda-f7c53ec9f704be37-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/strategy_light_usda-ec65e0dfb065b1f1-1.image b/crates/crust-core/tests/data/import_baselines/strategy_light_usda-ec65e0dfb065b1f1-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/strategy_light_usda-ec65e0dfb065b1f1-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/strategy_power_usda-03788414ab51c35f-1.image b/crates/crust-core/tests/data/import_baselines/strategy_power_usda-03788414ab51c35f-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/strategy_power_usda-03788414ab51c35f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/streamed_usda-08988239fcd84b0c-1.image b/crates/crust-core/tests/data/import_baselines/streamed_usda-08988239fcd84b0c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/streamed_usda-08988239fcd84b0c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/streamed_usda-274e7e68b089c3ac-1.image b/crates/crust-core/tests/data/import_baselines/streamed_usda-274e7e68b089c3ac-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/streamed_usda-274e7e68b089c3ac-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/string_id_usda-4ef78239c4d0e1cc-1.image b/crates/crust-core/tests/data/import_baselines/string_id_usda-4ef78239c4d0e1cc-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/string_id_usda-4ef78239c4d0e1cc-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/string_usda-edd62f0c52a0bd52-1.image b/crates/crust-core/tests/data/import_baselines/string_usda-edd62f0c52a0bd52-1.image new file mode 100644 index 000000000..648a9f248 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/string_usda-edd62f0c52a0bd52-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off 54407d51eeed59ca diff --git a/crates/crust-core/tests/data/import_baselines/strip_cracks_usda-5cdf0130b2848b76-1.image b/crates/crust-core/tests/data/import_baselines/strip_cracks_usda-5cdf0130b2848b76-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/strip_cracks_usda-5cdf0130b2848b76-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/strip_usda-a747742859825b3a-1.image b/crates/crust-core/tests/data/import_baselines/strip_usda-a747742859825b3a-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/strip_usda-a747742859825b3a-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_0_usda-6db126ded01c4707-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_0_usda-6db126ded01c4707-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_0_usda-6db126ded01c4707-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_1_usda-bde0e042f33df4a5-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_1_usda-bde0e042f33df4a5-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_1_usda-bde0e042f33df4a5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_2_usda-47f822571f7427d3-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_2_usda-47f822571f7427d3-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_2_usda-47f822571f7427d3-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_bilinear_usda-287ba8f91aef206f-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_bilinear_usda-287ba8f91aef206f-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_bilinear_usda-287ba8f91aef206f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_cage_usda-17f666e1e5c6d08f-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_cage_usda-17f666e1e5c6d08f-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_cage_usda-17f666e1e5c6d08f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_clamped_usda-01685ab19e968980-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_clamped_usda-01685ab19e968980-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_clamped_usda-01685ab19e968980-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_default_usda-be76976c79a95643-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_default_usda-be76976c79a95643-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_default_usda-be76976c79a95643-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_key_faceted_first_usda-510113487f701e14-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_key_faceted_first_usda-510113487f701e14-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_key_faceted_first_usda-510113487f701e14-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_key_smooth_first_usda-9375effdf17e1f42-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_key_smooth_first_usda-9375effdf17e1f42-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_key_smooth_first_usda-9375effdf17e1f42-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_legacy_usda-e769c33757ced97c-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_legacy_usda-e769c33757ced97c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_legacy_usda-e769c33757ced97c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_level0_usda-436132ac852dd08e-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_level0_usda-436132ac852dd08e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_level0_usda-436132ac852dd08e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_loop_quads_usda-1e8f941ca190d506-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_loop_quads_usda-1e8f941ca190d506-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_loop_quads_usda-1e8f941ca190d506-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_none_faceted_usda-7ad44c4961677420-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_none_faceted_usda-7ad44c4961677420-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_none_faceted_usda-7ad44c4961677420-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-38f763827a18343d-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-38f763827a18343d-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-38f763827a18343d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-aea9b45539bdf216-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-aea9b45539bdf216-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-aea9b45539bdf216-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-347cb15990d5b2db-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-347cb15990d5b2db-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-347cb15990d5b2db-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-4180b38ea57c9096-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-4180b38ea57c9096-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-4180b38ea57c9096-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-633f8e7fec39c727-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-633f8e7fec39c727-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-633f8e7fec39c727-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rest_15_usda-dcdc5eeb73b7d3e8-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_rest_15_usda-dcdc5eeb73b7d3e8-1.image new file mode 100644 index 000000000..90eff2c39 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rest_15_usda-dcdc5eeb73b7d3e8-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off c48e0766e3dd2c0f diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rest_8_usda-c9f6f9ef6bd5e50d-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_rest_8_usda-c9f6f9ef6bd5e50d-1.image new file mode 100644 index 000000000..d5305b79c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rest_8_usda-c9f6f9ef6bd5e50d-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off b28189e9be2c15a1 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rule_all_usda-7c4745bac0fe1ad7-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_rule_all_usda-7c4745bac0fe1ad7-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rule_all_usda-7c4745bac0fe1ad7-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rule_boundaries_usda-3c0d79de547dbc49-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_rule_boundaries_usda-3c0d79de547dbc49-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rule_boundaries_usda-3c0d79de547dbc49-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersOnly_usda-3a7940237cbe0a3d-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersOnly_usda-3a7940237cbe0a3d-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersOnly_usda-3a7940237cbe0a3d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus1_usda-10da8f737cfaea1d-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus1_usda-10da8f737cfaea1d-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus1_usda-10da8f737cfaea1d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus2_usda-7ab350be92df8201-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus2_usda-7ab350be92df8201-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus2_usda-7ab350be92df8201-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rule_none_usda-86622a148177c839-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_rule_none_usda-86622a148177c839-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rule_none_usda-86622a148177c839-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_smooth_usda-ecacf29cbe8c3a69-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_smooth_usda-ecacf29cbe8c3a69-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_smooth_usda-ecacf29cbe8c3a69-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_streamed_usda-6897e2d021bbe857-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_streamed_usda-6897e2d021bbe857-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_streamed_usda-6897e2d021bbe857-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_unauthored_usda-1f8d567cba520aee-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_unauthored_usda-1f8d567cba520aee-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_unauthored_usda-1f8d567cba520aee-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_uv_fv_usda-5e00e8c1f3e1cc34-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_uv_fv_usda-5e00e8c1f3e1cc34-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_uv_fv_usda-5e00e8c1f3e1cc34-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_uv_vertex_usda-b6cc7115ae3418dd-1.image b/crates/crust-core/tests/data/import_baselines/subdiv_uv_vertex_usda-b6cc7115ae3418dd-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdiv_uv_vertex_usda-b6cc7115ae3418dd-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-4b5883574262488d-1.image b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-4b5883574262488d-1.image new file mode 100644 index 000000000..4016203b3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-4b5883574262488d-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 3298c20839e2d7dc diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-8765a889a888ae6b-1.image b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-8765a889a888ae6b-1.image new file mode 100644 index 000000000..4016203b3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-8765a889a888ae6b-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 3298c20839e2d7dc diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-95a3e0a9db67a1fb-1.image b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-95a3e0a9db67a1fb-1.image new file mode 100644 index 000000000..2b3e41d4a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-95a3e0a9db67a1fb-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off e033f583c1c6e52f diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-1.image b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-1.image new file mode 100644 index 000000000..4016203b3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 3298c20839e2d7dc diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-2.image b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-2.image new file mode 100644 index 000000000..4016203b3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-2.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 3298c20839e2d7dc diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_usda-093423ee46de2ab4-1.image b/crates/crust-core/tests/data/import_baselines/subdivision_usda-093423ee46de2ab4-1.image new file mode 100644 index 000000000..99f49e031 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdivision_usda-093423ee46de2ab4-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off 9d9354c30c7d3ed6 diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-1.image b/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-1.image new file mode 100644 index 000000000..d48051dbe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off dec5335d8cedbab3 diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-2.image b/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-2.image new file mode 100644 index 000000000..d48051dbe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-2.image @@ -0,0 +1 @@ +320x180 16spp clamp-off dec5335d8cedbab3 diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_usda-c1e09f9374aaab81-1.image b/crates/crust-core/tests/data/import_baselines/subdivision_usda-c1e09f9374aaab81-1.image new file mode 100644 index 000000000..d48051dbe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/subdivision_usda-c1e09f9374aaab81-1.image @@ -0,0 +1 @@ +320x180 16spp clamp-off dec5335d8cedbab3 diff --git a/crates/crust-core/tests/data/import_baselines/sun_delta_usda-ea8cdfc115606b89-1.image b/crates/crust-core/tests/data/import_baselines/sun_delta_usda-ea8cdfc115606b89-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sun_delta_usda-ea8cdfc115606b89-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/sun_lux_usda-f3cb39d866e6c449-1.image b/crates/crust-core/tests/data/import_baselines/sun_lux_usda-f3cb39d866e6c449-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sun_lux_usda-f3cb39d866e6c449-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/sun_narrow_usda-cc46151e1eb78ebf-1.image b/crates/crust-core/tests/data/import_baselines/sun_narrow_usda-cc46151e1eb78ebf-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sun_narrow_usda-cc46151e1eb78ebf-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/sun_nits_usda-8ccba3be0d36785e-1.image b/crates/crust-core/tests/data/import_baselines/sun_nits_usda-8ccba3be0d36785e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/sun_nits_usda-8ccba3be0d36785e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/supported_types_usda-5cac3f5a887f68e8-1.image b/crates/crust-core/tests/data/import_baselines/supported_types_usda-5cac3f5a887f68e8-1.image new file mode 100644 index 000000000..b3b6b7bfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/supported_types_usda-5cac3f5a887f68e8-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a788697d7c6dadfb diff --git a/crates/crust-core/tests/data/import_baselines/synonym_a_usda-c8543088a0bca8e3-1.image b/crates/crust-core/tests/data/import_baselines/synonym_a_usda-c8543088a0bca8e3-1.image new file mode 100644 index 000000000..410d887f2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/synonym_a_usda-c8543088a0bca8e3-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off f27fb0620765d10a diff --git a/crates/crust-core/tests/data/import_baselines/synonym_b_usda-5b26c8cc28a6baa8-1.image b/crates/crust-core/tests/data/import_baselines/synonym_b_usda-5b26c8cc28a6baa8-1.image new file mode 100644 index 000000000..410d887f2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/synonym_b_usda-5b26c8cc28a6baa8-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off f27fb0620765d10a diff --git a/crates/crust-core/tests/data/import_baselines/textured_usda-addde73d309fca5e-1.image b/crates/crust-core/tests/data/import_baselines/textured_usda-addde73d309fca5e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/textured_usda-addde73d309fca5e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/thin_window_usda-61e111e4ca995610-1.image b/crates/crust-core/tests/data/import_baselines/thin_window_usda-61e111e4ca995610-1.image new file mode 100644 index 000000000..eb2a957cb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/thin_window_usda-61e111e4ca995610-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 12cf29137cae9287 diff --git a/crates/crust-core/tests/data/import_baselines/thin_window_usda-9e0a6257872a8f5f-1.image b/crates/crust-core/tests/data/import_baselines/thin_window_usda-9e0a6257872a8f5f-1.image new file mode 100644 index 000000000..eb2a957cb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/thin_window_usda-9e0a6257872a8f5f-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 12cf29137cae9287 diff --git a/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-1.image b/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-1.image new file mode 100644 index 000000000..eb2a957cb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 12cf29137cae9287 diff --git a/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-2.image b/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-2.image new file mode 100644 index 000000000..eb2a957cb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-2.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 12cf29137cae9287 diff --git a/crates/crust-core/tests/data/import_baselines/tiles_usda-63de672cd360cf69-1.image b/crates/crust-core/tests/data/import_baselines/tiles_usda-63de672cd360cf69-1.image new file mode 100644 index 000000000..4a30c4d68 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/tiles_usda-63de672cd360cf69-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off 04cf6161c383092a diff --git a/crates/crust-core/tests/data/import_baselines/time_sampled_1_usda-ee3787d0222ab673-1.image b/crates/crust-core/tests/data/import_baselines/time_sampled_1_usda-ee3787d0222ab673-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/time_sampled_1_usda-ee3787d0222ab673-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/time_sampled_2_usda-4dad1e9703710b97-1.image b/crates/crust-core/tests/data/import_baselines/time_sampled_2_usda-4dad1e9703710b97-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/time_sampled_2_usda-4dad1e9703710b97-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/time_usda-a4ea088a5cd5b4c7-1.image b/crates/crust-core/tests/data/import_baselines/time_usda-a4ea088a5cd5b4c7-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/time_usda-a4ea088a5cd5b4c7-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/tolerance_default_usda-3a112890c553cc1b-1.image b/crates/crust-core/tests/data/import_baselines/tolerance_default_usda-3a112890c553cc1b-1.image new file mode 100644 index 000000000..f0b9b5b6b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/tolerance_default_usda-3a112890c553cc1b-1.image @@ -0,0 +1 @@ +32x16 16spp clamp-off 6df0de0551480325 diff --git a/crates/crust-core/tests/data/import_baselines/tolerance_nan_usda-22547c2684ba9e8c-1.image b/crates/crust-core/tests/data/import_baselines/tolerance_nan_usda-22547c2684ba9e8c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/tolerance_nan_usda-22547c2684ba9e8c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/tolerance_off_usda-f5f012b4db29329d-1.image b/crates/crust-core/tests/data/import_baselines/tolerance_off_usda-f5f012b4db29329d-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/tolerance_off_usda-f5f012b4db29329d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/translate_scale_usda-f3698f1a1411c8b2-1.image b/crates/crust-core/tests/data/import_baselines/translate_scale_usda-f3698f1a1411c8b2-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/translate_scale_usda-f3698f1a1411c8b2-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/translatex_curves_usda-65ef3846123d9b35-1.image b/crates/crust-core/tests/data/import_baselines/translatex_curves_usda-65ef3846123d9b35-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/translatex_curves_usda-65ef3846123d9b35-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/translatex_disk_usda-9d38522639915278-1.image b/crates/crust-core/tests/data/import_baselines/translatex_disk_usda-9d38522639915278-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/translatex_disk_usda-9d38522639915278-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/tuft_shadow_usda-1baacafb4242e12e-1.image b/crates/crust-core/tests/data/import_baselines/tuft_shadow_usda-1baacafb4242e12e-1.image new file mode 100644 index 000000000..489355c92 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/tuft_shadow_usda-1baacafb4242e12e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 411019cc72b6935b diff --git a/crates/crust-core/tests/data/import_baselines/twice_a_usda-0f943c80bd7e2c65-1.image b/crates/crust-core/tests/data/import_baselines/twice_a_usda-0f943c80bd7e2c65-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/twice_a_usda-0f943c80bd7e2c65-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/twice_b_usda-b96b0ece9c5875aa-1.image b/crates/crust-core/tests/data/import_baselines/twice_b_usda-b96b0ece9c5875aa-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/twice_b_usda-b96b0ece9c5875aa-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/two_cameras_broken_first_usda-3cb7946e1e445b8e-1.image b/crates/crust-core/tests/data/import_baselines/two_cameras_broken_first_usda-3cb7946e1e445b8e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/two_cameras_broken_first_usda-3cb7946e1e445b8e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/two_cameras_shot_first_usda-a7d808f7cd7c7a83-1.image b/crates/crust-core/tests/data/import_baselines/two_cameras_shot_first_usda-a7d808f7cd7c7a83-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/two_cameras_shot_first_usda-a7d808f7cd7c7a83-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/two_instancers_usda-287c7bdad0690e3b-1.image b/crates/crust-core/tests/data/import_baselines/two_instancers_usda-287c7bdad0690e3b-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/two_instancers_usda-287c7bdad0690e3b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/unauthored_usda-1a04ae4ebcf35cb8-1.image b/crates/crust-core/tests/data/import_baselines/unauthored_usda-1a04ae4ebcf35cb8-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unauthored_usda-1a04ae4ebcf35cb8-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/unauthored_usda-9a9d89c801b1b740-1.image b/crates/crust-core/tests/data/import_baselines/unauthored_usda-9a9d89c801b1b740-1.image new file mode 100644 index 000000000..9b1ded9a0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unauthored_usda-9a9d89c801b1b740-1.image @@ -0,0 +1 @@ +240x136 16spp clamp-off 2a2ae02b81d14fd2 diff --git a/crates/crust-core/tests/data/import_baselines/unbindable_usda-a5d47f8d674e7ddd-1.image b/crates/crust-core/tests/data/import_baselines/unbindable_usda-a5d47f8d674e7ddd-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unbindable_usda-a5d47f8d674e7ddd-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/unbound_usda-19c17e4f548a50df-1.image b/crates/crust-core/tests/data/import_baselines/unbound_usda-19c17e4f548a50df-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unbound_usda-19c17e4f548a50df-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/unbound_usda-4ae577ca0b682f0f-1.image b/crates/crust-core/tests/data/import_baselines/unbound_usda-4ae577ca0b682f0f-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unbound_usda-4ae577ca0b682f0f-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-2c90ea028524eadd-1.image b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-2c90ea028524eadd-1.image new file mode 100644 index 000000000..a2eecad9d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-2c90ea028524eadd-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off c6767216609b1ec9 diff --git a/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-b6490d10d0de391f-1.image b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-b6490d10d0de391f-1.image new file mode 100644 index 000000000..1de1f76dc --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-b6490d10d0de391f-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off 141030b0243f9996 diff --git a/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d12f6f58167b27f9-1.image b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d12f6f58167b27f9-1.image new file mode 100644 index 000000000..c028b9ae4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d12f6f58167b27f9-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off d99fe12da3896caf diff --git a/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d982dbb48b0da21b-1.image b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d982dbb48b0da21b-1.image new file mode 100644 index 000000000..23a30560e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d982dbb48b0da21b-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off 4356982c6a04ab80 diff --git a/crates/crust-core/tests/data/import_baselines/uniform_colour_usda-6a475987121a1476-1.image b/crates/crust-core/tests/data/import_baselines/uniform_colour_usda-6a475987121a1476-1.image new file mode 100644 index 000000000..648a9f248 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/uniform_colour_usda-6a475987121a1476-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off 54407d51eeed59ca diff --git a/crates/crust-core/tests/data/import_baselines/unit_tiny_lens_usda-aa2efc45eecd1493-1.image b/crates/crust-core/tests/data/import_baselines/unit_tiny_lens_usda-aa2efc45eecd1493-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unit_tiny_lens_usda-aa2efc45eecd1493-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/unit_volume_usda-693980b7090e37bf-1.image b/crates/crust-core/tests/data/import_baselines/unit_volume_usda-693980b7090e37bf-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unit_volume_usda-693980b7090e37bf-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/unit_zero_lens_usda-d1f56221f44bb692-1.image b/crates/crust-core/tests/data/import_baselines/unit_zero_lens_usda-d1f56221f44bb692-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unit_zero_lens_usda-d1f56221f44bb692-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/unit_zero_named_usda-9847ffecfd9df22b-1.image b/crates/crust-core/tests/data/import_baselines/unit_zero_named_usda-9847ffecfd9df22b-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unit_zero_named_usda-9847ffecfd9df22b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/unit_zero_pinhole_usda-af47867eeabcfd70-1.image b/crates/crust-core/tests/data/import_baselines/unit_zero_pinhole_usda-af47867eeabcfd70-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unit_zero_pinhole_usda-af47867eeabcfd70-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/unknown_display_usda-e75f3f3b8d756ec8-1.image b/crates/crust-core/tests/data/import_baselines/unknown_display_usda-e75f3f3b8d756ec8-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unknown_display_usda-e75f3f3b8d756ec8-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/unknown_filter_usda-ed678783aa9ef74d-1.image b/crates/crust-core/tests/data/import_baselines/unknown_filter_usda-ed678783aa9ef74d-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unknown_filter_usda-ed678783aa9ef74d-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/unknown_op_usda-954c2bfc62b12357-1.image b/crates/crust-core/tests/data/import_baselines/unknown_op_usda-954c2bfc62b12357-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unknown_op_usda-954c2bfc62b12357-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/unknown_type_usda-d0386e0b10524625-1.image b/crates/crust-core/tests/data/import_baselines/unknown_type_usda-d0386e0b10524625-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unknown_type_usda-d0386e0b10524625-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/unnamed_usda-ed6b84994bc45537-1.image b/crates/crust-core/tests/data/import_baselines/unnamed_usda-ed6b84994bc45537-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unnamed_usda-ed6b84994bc45537-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/unresolvable_winner_usda-514f97ffe2814294-1.image b/crates/crust-core/tests/data/import_baselines/unresolvable_winner_usda-514f97ffe2814294-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unresolvable_winner_usda-514f97ffe2814294-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/unsupported_in_prototype_usda-d2aca9633823884e-1.image b/crates/crust-core/tests/data/import_baselines/unsupported_in_prototype_usda-d2aca9633823884e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unsupported_in_prototype_usda-d2aca9633823884e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/unsupported_type_one_usda-61236dabf0bd2054-1.image b/crates/crust-core/tests/data/import_baselines/unsupported_type_one_usda-61236dabf0bd2054-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unsupported_type_one_usda-61236dabf0bd2054-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/unsupported_types_usda-4026b0fff876b77b-1.image b/crates/crust-core/tests/data/import_baselines/unsupported_types_usda-4026b0fff876b77b-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unsupported_types_usda-4026b0fff876b77b-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/unsupported_usda-25a7c1709e68a39b-1.image b/crates/crust-core/tests/data/import_baselines/unsupported_usda-25a7c1709e68a39b-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unsupported_usda-25a7c1709e68a39b-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/unusable_texture_usda-0a21b6baa96879e3-1.image b/crates/crust-core/tests/data/import_baselines/unusable_texture_usda-0a21b6baa96879e3-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/unusable_texture_usda-0a21b6baa96879e3-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/usdlux_usda-0d6669b552eae2be-1.image b/crates/crust-core/tests/data/import_baselines/usdlux_usda-0d6669b552eae2be-1.image new file mode 100644 index 000000000..3eeccdcf4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/usdlux_usda-0d6669b552eae2be-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 261a1de10d2ae6ef diff --git a/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-1.image b/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-1.image new file mode 100644 index 000000000..4d80eacc3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 6e992d079a88699b diff --git a/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-2.image b/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-2.image new file mode 100644 index 000000000..4d80eacc3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 6e992d079a88699b diff --git a/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-36a3119df926a1de-1.image b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-36a3119df926a1de-1.image new file mode 100644 index 000000000..689eb29ff --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-36a3119df926a1de-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a8300ec22558283c diff --git a/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-7e17862f6c19bca4-1.image b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-7e17862f6c19bca4-1.image new file mode 100644 index 000000000..89bca8581 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-7e17862f6c19bca4-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off dda8670152809087 diff --git a/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-1.image b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-1.image new file mode 100644 index 000000000..689eb29ff --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a8300ec22558283c diff --git a/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-2.image b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-2.image new file mode 100644 index 000000000..689eb29ff --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-2.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a8300ec22558283c diff --git a/crates/crust-core/tests/data/import_baselines/uv2_usda-a9136787dec77f95-1.image b/crates/crust-core/tests/data/import_baselines/uv2_usda-a9136787dec77f95-1.image new file mode 100644 index 000000000..648a9f248 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/uv2_usda-a9136787dec77f95-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off 54407d51eeed59ca diff --git a/crates/crust-core/tests/data/import_baselines/uv_dedup_same_usda-9ef71121455e022c-1.image b/crates/crust-core/tests/data/import_baselines/uv_dedup_same_usda-9ef71121455e022c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/uv_dedup_same_usda-9ef71121455e022c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/uv_dedup_usda-3e327caf2288bcc5-1.image b/crates/crust-core/tests/data/import_baselines/uv_dedup_usda-3e327caf2288bcc5-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/uv_dedup_usda-3e327caf2288bcc5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/var_authored_usda-30d82aafae5b77cb-1.image b/crates/crust-core/tests/data/import_baselines/var_authored_usda-30d82aafae5b77cb-1.image new file mode 100644 index 000000000..6e17c7cc4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/var_authored_usda-30d82aafae5b77cb-1.image @@ -0,0 +1 @@ +48x36 16spp clamp-off b92ef83454fdd3cb diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-1.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-1.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-2.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-2.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-2.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-324cce08805da6ff-1.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-324cce08805da6ff-1.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-324cce08805da6ff-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-1.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-1.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-2.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-2.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-2.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3d8992b3ea4a144d-1.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3d8992b3ea4a144d-1.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3d8992b3ea4a144d-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3fdc201d13c79fac-1.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3fdc201d13c79fac-1.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3fdc201d13c79fac-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-1.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-1.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-2.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-2.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-2.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-3.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-3.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-3.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-4.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-4.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-4.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-1.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-1.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-2.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-2.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-2.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-3.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-3.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-3.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-4.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-4.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-4.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-1.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-1.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-10.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-10.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-10.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-11.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-11.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-11.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-12.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-12.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-12.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-13.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-13.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-13.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-14.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-14.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-14.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-15.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-15.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-15.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-16.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-16.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-16.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-17.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-17.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-17.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-18.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-18.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-18.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-19.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-19.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-19.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-2.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-2.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-2.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-20.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-20.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-20.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-21.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-21.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-21.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-22.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-22.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-22.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-23.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-23.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-23.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-24.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-24.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-24.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-25.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-25.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-25.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-3.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-3.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-3.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-4.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-4.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-4.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-5.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-5.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-5.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-6.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-6.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-6.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-7.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-7.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-7.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-8.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-8.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-8.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-9.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-9.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-9.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-7b2ec235dd7d06ba-1.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-7b2ec235dd7d06ba-1.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-7b2ec235dd7d06ba-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-1.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-1.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-10.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-10.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-10.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-11.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-11.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-11.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-2.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-2.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-2.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-3.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-3.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-3.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-4.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-4.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-4.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-5.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-5.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-5.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-6.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-6.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-6.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-7.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-7.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-7.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-8.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-8.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-8.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-9.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-9.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-9.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-918cd4cfc31f23ae-1.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-918cd4cfc31f23ae-1.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-918cd4cfc31f23ae-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-1.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-1.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-2.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-2.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-2.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-3.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-3.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-3.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-1.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-1.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-2.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-2.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-2.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-3.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-3.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-3.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-eeb660d07679d619-1.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-eeb660d07679d619-1.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-eeb660d07679d619-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-f7c825bf3b0bac82-1.image b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-f7c825bf3b0bac82-1.image new file mode 100644 index 000000000..96aff8304 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-f7c825bf3b0bac82-1.image @@ -0,0 +1 @@ +960x540 16spp clamp-off c795c604ff2181ef diff --git a/crates/crust-core/tests/data/import_baselines/visibility_usda-0f9ed9fc0b62a02c-1.image b/crates/crust-core/tests/data/import_baselines/visibility_usda-0f9ed9fc0b62a02c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/visibility_usda-0f9ed9fc0b62a02c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/visibility_usda-2bf7c45881effd3f-1.image b/crates/crust-core/tests/data/import_baselines/visibility_usda-2bf7c45881effd3f-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/visibility_usda-2bf7c45881effd3f-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/visibility_usda-d0c678c9c1d6a069-1.image b/crates/crust-core/tests/data/import_baselines/visibility_usda-d0c678c9c1d6a069-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/visibility_usda-d0c678c9c1d6a069-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/visibility_usda-f7d5c6c9644dd6bb-1.image b/crates/crust-core/tests/data/import_baselines/visibility_usda-f7d5c6c9644dd6bb-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/visibility_usda-f7d5c6c9644dd6bb-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/visible_light_usda-c593161971da5ec4-1.image b/crates/crust-core/tests/data/import_baselines/visible_light_usda-c593161971da5ec4-1.image new file mode 100644 index 000000000..0d5371bdf --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/visible_light_usda-c593161971da5ec4-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 7262827b81999b78 diff --git a/crates/crust-core/tests/data/import_baselines/volume_in_prototype_usda-d6406b3b1214ee81-1.image b/crates/crust-core/tests/data/import_baselines/volume_in_prototype_usda-d6406b3b1214ee81-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/volume_in_prototype_usda-d6406b3b1214ee81-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/volume_usda-a8034cd85e6f3de3-1.image b/crates/crust-core/tests/data/import_baselines/volume_usda-a8034cd85e6f3de3-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/volume_usda-a8034cd85e6f3de3-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/volume_usda-bac87085eea27fa2-1.image b/crates/crust-core/tests/data/import_baselines/volume_usda-bac87085eea27fa2-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/volume_usda-bac87085eea27fa2-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/volume_usda-dc3452b116e9581a-1.image b/crates/crust-core/tests/data/import_baselines/volume_usda-dc3452b116e9581a-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/volume_usda-dc3452b116e9581a-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/wide_ok_usda-07bfe44a3376f28e-1.image b/crates/crust-core/tests/data/import_baselines/wide_ok_usda-07bfe44a3376f28e-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/wide_ok_usda-07bfe44a3376f28e-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/wide_usda-98ba41961b37bb34-1.image b/crates/crust-core/tests/data/import_baselines/wide_usda-98ba41961b37bb34-1.image new file mode 100644 index 000000000..f08c49d36 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/wide_usda-98ba41961b37bb34-1.image @@ -0,0 +1 @@ +32x24 16spp clamp-off e72b7b7cff87e77d diff --git a/crates/crust-core/tests/data/import_baselines/window_bottom_quarter_usda-3769adf96d53a2f1-1.image b/crates/crust-core/tests/data/import_baselines/window_bottom_quarter_usda-3769adf96d53a2f1-1.image new file mode 100644 index 000000000..6a456e4e1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_bottom_quarter_usda-3769adf96d53a2f1-1.image @@ -0,0 +1 @@ +100x100 16spp clamp-off e94d157b19346225 diff --git a/crates/crust-core/tests/data/import_baselines/window_boundaries_usda-8ec00fd05808f90e-1.image b/crates/crust-core/tests/data/import_baselines/window_boundaries_usda-8ec00fd05808f90e-1.image new file mode 100644 index 000000000..92ac514d4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_boundaries_usda-8ec00fd05808f90e-1.image @@ -0,0 +1 @@ +8x4 16spp clamp-off c86ec345c0ee8125 diff --git a/crates/crust-core/tests/data/import_baselines/window_centres_usda-5b25bbbab727a81b-1.image b/crates/crust-core/tests/data/import_baselines/window_centres_usda-5b25bbbab727a81b-1.image new file mode 100644 index 000000000..92ac514d4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_centres_usda-5b25bbbab727a81b-1.image @@ -0,0 +1 @@ +8x4 16spp clamp-off c86ec345c0ee8125 diff --git a/crates/crust-core/tests/data/import_baselines/window_default_usda-1d0d1bbb6d0e388d-1.image b/crates/crust-core/tests/data/import_baselines/window_default_usda-1d0d1bbb6d0e388d-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_default_usda-1d0d1bbb6d0e388d-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/window_empty_usda-c239bdc771be269c-1.image b/crates/crust-core/tests/data/import_baselines/window_empty_usda-c239bdc771be269c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_empty_usda-c239bdc771be269c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/window_full_vs_unauthored_usda-6f84b7cb89845fa4-1.image b/crates/crust-core/tests/data/import_baselines/window_full_vs_unauthored_usda-6f84b7cb89845fa4-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_full_vs_unauthored_usda-6f84b7cb89845fa4-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/window_honoured_usda-0e440c93c494db71-1.image b/crates/crust-core/tests/data/import_baselines/window_honoured_usda-0e440c93c494db71-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_honoured_usda-0e440c93c494db71-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/window_no_products_usda-9317bad8a6d2e63d-1.image b/crates/crust-core/tests/data/import_baselines/window_no_products_usda-9317bad8a6d2e63d-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_no_products_usda-9317bad8a6d2e63d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/window_off_frame_usda-0e5c269b6dd24fb6-1.image b/crates/crust-core/tests/data/import_baselines/window_off_frame_usda-0e5c269b6dd24fb6-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_off_frame_usda-0e5c269b6dd24fb6-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/window_one_pixel_usda-66ddf756a5e443fe-1.image b/crates/crust-core/tests/data/import_baselines/window_one_pixel_usda-66ddf756a5e443fe-1.image new file mode 100644 index 000000000..ff3f586a4 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_one_pixel_usda-66ddf756a5e443fe-1.image @@ -0,0 +1 @@ +10x4 16spp clamp-off fcfda4c07d71b8a5 diff --git a/crates/crust-core/tests/data/import_baselines/window_overscan_usda-c27e01fde4009f5e-1.image b/crates/crust-core/tests/data/import_baselines/window_overscan_usda-c27e01fde4009f5e-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_overscan_usda-c27e01fde4009f5e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/window_product_overrides_usda-bb3b29ebf7dd99a8-1.image b/crates/crust-core/tests/data/import_baselines/window_product_overrides_usda-bb3b29ebf7dd99a8-1.image new file mode 100644 index 000000000..6a456e4e1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_product_overrides_usda-bb3b29ebf7dd99a8-1.image @@ -0,0 +1 @@ +100x100 16spp clamp-off e94d157b19346225 diff --git a/crates/crust-core/tests/data/import_baselines/window_products_differ_usda-78414609fe85fc23-1.image b/crates/crust-core/tests/data/import_baselines/window_products_differ_usda-78414609fe85fc23-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_products_differ_usda-78414609fe85fc23-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/window_right_half_usda-c5f5b85f1946cb91-1.image b/crates/crust-core/tests/data/import_baselines/window_right_half_usda-c5f5b85f1946cb91-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_right_half_usda-c5f5b85f1946cb91-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/window_unauthored_usda-5d663894090b1282-1.image b/crates/crust-core/tests/data/import_baselines/window_unauthored_usda-5d663894090b1282-1.image new file mode 100644 index 000000000..f4ebc1648 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/window_unauthored_usda-5d663894090b1282-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 1028d44458cc9325 diff --git a/crates/crust-core/tests/data/import_baselines/working_acescg_usda-453466808888f80c-1.image b/crates/crust-core/tests/data/import_baselines/working_acescg_usda-453466808888f80c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/working_acescg_usda-453466808888f80c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/working_default_usda-5aec729f1efbcf98-1.image b/crates/crust-core/tests/data/import_baselines/working_default_usda-5aec729f1efbcf98-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/working_default_usda-5aec729f1efbcf98-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/working_host_usda-964cb93fefda7817-1.image b/crates/crust-core/tests/data/import_baselines/working_host_usda-964cb93fefda7817-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/working_host_usda-964cb93fefda7817-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/working_srgb_usda-8fdff51064dc58c9-1.image b/crates/crust-core/tests/data/import_baselines/working_srgb_usda-8fdff51064dc58c9-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/working_srgb_usda-8fdff51064dc58c9-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/x_usda-4b3ed4428fa191c7-1.image b/crates/crust-core/tests/data/import_baselines/x_usda-4b3ed4428fa191c7-1.image new file mode 100644 index 000000000..62bbb62d1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/x_usda-4b3ed4428fa191c7-1.image @@ -0,0 +1 @@ +96x54 16spp clamp-off e7b2857721bb831d diff --git a/crates/crust-core/tests/data/import_baselines/x_usda-4f6345f399f0a5af-1.image b/crates/crust-core/tests/data/import_baselines/x_usda-4f6345f399f0a5af-1.image new file mode 100644 index 000000000..62bbb62d1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/x_usda-4f6345f399f0a5af-1.image @@ -0,0 +1 @@ +96x54 16spp clamp-off e7b2857721bb831d diff --git a/crates/crust-core/tests/data/import_baselines/x_usda-a701d438407a1ca1-1.image b/crates/crust-core/tests/data/import_baselines/x_usda-a701d438407a1ca1-1.image new file mode 100644 index 000000000..62bbb62d1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/x_usda-a701d438407a1ca1-1.image @@ -0,0 +1 @@ +96x54 16spp clamp-off e7b2857721bb831d diff --git a/crates/crust-core/tests/data/import_baselines/x_usda-d5611726aa414464-1.image b/crates/crust-core/tests/data/import_baselines/x_usda-d5611726aa414464-1.image new file mode 100644 index 000000000..7172edbfe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/x_usda-d5611726aa414464-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 64ede904b11bab22 diff --git a/crates/crust-render/tests/import_parity.rs b/crates/crust-render/tests/import_parity.rs index 44b2e2b3b..bc32b7f26 100644 --- a/crates/crust-render/tests/import_parity.rs +++ b/crates/crust-render/tests/import_parity.rs @@ -130,7 +130,10 @@ fn compare(stage: &Path, record: bool) -> Option { #[test] fn every_sample_imports_as_its_baseline() { - let record = std::env::var("CRUST_RECORD_BASELINES").is_ok_and(|v| v == "1"); + // The image run (`scripts/parity_images.sh`) imports each stage twice, + // which the report's counts see: it records images only, never reports. + let images = std::env::var("CRUST_PARITY_IMAGES").is_ok_and(|v| v == "1"); + let record = !images && std::env::var("CRUST_RECORD_BASELINES").is_ok_and(|v| v == "1"); let external = cfg!(not(debug_assertions)) || std::env::var("CRUST_PARITY_EXTERNAL").is_ok_and(|v| v == "1"); let mut stages = Vec::new(); diff --git a/openspec/changes/moho-import/specs/import-parity/spec.md b/openspec/changes/moho-import/specs/import-parity/spec.md index ed5b7d819..b700e191a 100644 --- a/openspec/changes/moho-import/specs/import-parity/spec.md +++ b/openspec/changes/moho-import/specs/import-parity/spec.md @@ -62,9 +62,11 @@ or ignored. `cargo test` SHALL run the parity check on every committed `samples/*.usd*` scene, comparing digests and reports with the baselines, and SHALL compare every import an import test performs (fixtures, CLI tests, live re-imports) with its baseline digest. -With `CRUST_PARITY_IMAGES=1`, meant for `cargo test --release`, it SHALL also compare -each import's 16 spp image hash; an unoptimised build renders too slowly to do so on -every run. A sample that cannot run in CI SHALL be listed with its reason. +`scripts/parity_images.sh` (an optimised run with `CRUST_PARITY_IMAGES=1`) SHALL also +compare each import's 16 spp image hash; an unoptimised build renders too slowly to do +so on every run. The tests that observe the second import it makes (asset requests, +log lines, render time) SHALL be listed with that reason, and no other test SHALL fail +in that mode. A sample that cannot run in CI SHALL be listed with its reason. #### Scenario: The test suite diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index ce8801664..3e001b90e 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -79,7 +79,7 @@ this group, and kept for the whole change. and record the baselines from the direct importer. Verify that the whole workspace's tests pass against them, and that a deliberate change to one import fails the test that imported it, naming the first difference. -- [ ] 2.3 Add `crust-render/tests/import_parity.rs`: for each committed `samples/*.usd*`, +- [x] 2.3 Add `crust-render/tests/import_parity.rs`: for each committed `samples/*.usd*`, `crust check --json` with the import's phases removed, compared with a baseline under `import_baselines/check/` (the same `CRUST_RECORD_BASELINES=1` records it), its digest checked by the `crust` process itself. The samples that need files outside the @@ -87,9 +87,13 @@ this group, and kept for the whole change. skipped where those files are missing; they take four to ten minutes each unoptimised, so a debug run compares them only with `CRUST_PARITY_EXTERNAL=1`, and a release run always does. The samples run side by side. Record the reports, and the image hashes of - the whole suite with `CRUST_RECORD_BASELINES=1 CRUST_PARITY_IMAGES=1 cargo test - --release`, from the direct importer. Verify that the test lists every sample, and - that the release image run passes. + every import of the suite with `scripts/parity_images.sh record` (a release run with + `CRUST_PARITY_IMAGES=1`), from the direct importer. The second import and its render + are visible to the few tests that count asset requests or log lines, time a render or + render a panicking material; they fail in that mode and are listed in + `scripts/parity_images.expected`, and the script passes when no import differs and + no other test fails. Verify that the test lists every sample, and that + `scripts/parity_images.sh` passes. - [ ] 2.4 Add `scripts/import_parity.sh record|check [render flags]`. `record` renders the scene `-n` times at `-s 16 --indirect-clamp 0` with `--stats` and keeps the `crust check --json` report (timings removed), the EXR, and the peak memory diff --git a/scripts/parity_images.expected b/scripts/parity_images.expected new file mode 100644 index 000000000..49356dcfa --- /dev/null +++ b/scripts/parity_images.expected @@ -0,0 +1,25 @@ +a_checkpointed_render_ends_with_the_files_of_one_without +a_declined_preview_texture_falls_back_to_its_fallback_then_the_constant +a_long_render_returns_within_its_budget_and_keeps_refining +a_missing_texture_shared_by_three_materials +a_product_differing_only_in_motion_blur_is_kept_and_warned_about +a_raw_dome_texture_keeps_the_working_space +a_source_edited_after_conversion_is_used_with_a_warning +a_streamed_cutout_reads_the_same_alpha +a_tx_arnold_wrote_is_not_rewritten_under_auto_tx +a_window_wholly_outside_the_frame_warns_once +an_empty_window_renders_the_full_frame_with_one_warning +an_expression_variance_resolves_and_its_misuses_are_refused +an_unauthored_and_a_full_window_are_the_same_region +ctrl_c_writes_the_partial_render_and_exits_130 +displaced_at_cage_logs_once_and_counts_every_mesh +dome_texture_is_resolved_and_requested_from_the_host +materialx_textures_reach_the_host_with_their_udim_token +only_meshes_open_displacement_maps +overscan_is_clipped_with_one_warning +preview_textures_anchor_on_their_layer_and_read_the_named_primvar +preview_textures_reach_the_host_with_their_source_color_space +products_that_disagree_on_depth_of_field_render_with_the_first +ptex_load_time_is_billed_to_the_asset_phase +tests_ffi::a_panicking_material_during_a_render_is_an_error_and_the_next_apply_renders +the_documented_look_dev_session_runs diff --git a/scripts/parity_images.sh b/scripts/parity_images.sh new file mode 100755 index 000000000..6afc9ccf0 --- /dev/null +++ b/scripts/parity_images.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash +# The import-parity image run (the `moho-import` change, spec `import-parity`): +# every import the test suite performs is imported a second time and rendered +# at 16 spp with the indirect clamp off, and a hash of its pixels compared with +# the baseline recorded from the direct importer (`crust_core::parity`). +# +# Usage: +# scripts/parity_images.sh # compare +# scripts/parity_images.sh record # record the image baselines +# +# Optimised but without LTO (which moves no bits, see the workspace +# Cargo.toml) to keep the build short. The second import and its render are +# visible to the few tests that count asset requests or log lines, time a +# render, or render a material that panics on purpose; those fail in this mode +# and are listed in scripts/parity_images.expected. The run passes when no +# import differs from its baseline (no `parity:` panic) and every other failure +# is a listed one. + +set -uo pipefail +cd "$(dirname "$0")/.." + +export CRUST_PARITY_IMAGES=1 +if [ "${1:-}" = record ]; then + export CRUST_RECORD_BASELINES=1 +fi +LOG="$(mktemp)" +trap 'rm -f "$LOG"' EXIT +CARGO_PROFILE_RELEASE_LTO=false CARGO_PROFILE_RELEASE_CODEGEN_UNITS=16 \ + cargo test --release --workspace --no-fail-fast >"$LOG" 2>&1 + +status=0 +if grep -q "^parity: \|panicked.*parity.rs" "$LOG"; then + echo "IMPORTS DIFFER FROM THEIR BASELINES:" + grep -A3 "parity.rs" "$LOG" | grep "^parity:\|baseline:\|import:" | head -60 + status=1 +fi +failed="$(grep -E '^test .* FAILED$' "$LOG" | sed 's/^test //; s/ \.\.\. FAILED$//' | sort -u)" +unexpected="$(comm -23 <(printf '%s\n' "$failed" | sed '/^$/d') <(sort -u scripts/parity_images.expected))" +if [ -n "$unexpected" ]; then + echo "TESTS FAILING THAT ARE NOT EXPECTED TO IN THIS MODE:" + printf '%s\n' "$unexpected" + status=1 +fi +if [ "$status" = 0 ]; then + echo "parity images: every import renders as its baseline" +fi +exit "$status" From 57fb50ff7d6ccf97dad9410cc6a064c040ec10fb Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 21:46:59 +0100 Subject: [PATCH 13/95] scripts: import_parity.sh, large-scene parity against a recorded baseline `record` keeps the check report (import phases removed), the 16 spp EXR and the minimum peak memory and parse time over N runs; `check` compares report and image with the current build, exits 1 on a difference, and prints memory and time with their ratios without gating on them. Verified on the Cornell box: check exits 0, and 1 when the report differs. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/tasks.md | 2 +- scripts/import_parity.sh | 124 ++++++++++++++++++++++++++ 2 files changed, 125 insertions(+), 1 deletion(-) create mode 100755 scripts/import_parity.sh diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 3e001b90e..ca91b6a00 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -94,7 +94,7 @@ this group, and kept for the whole change. `scripts/parity_images.expected`, and the script passes when no import differs and no other test fails. Verify that the test lists every sample, and that `scripts/parity_images.sh` passes. -- [ ] 2.4 Add `scripts/import_parity.sh record|check [render flags]`. +- [x] 2.4 Add `scripts/import_parity.sh record|check [render flags]`. `record` renders the scene `-n` times at `-s 16 --indirect-clamp 0` with `--stats` and keeps the `crust check --json` report (timings removed), the EXR, and the peak memory and `Parse USD stage` time (the minimum over the runs) in ``. `check` does the diff --git a/scripts/import_parity.sh b/scripts/import_parity.sh new file mode 100755 index 000000000..7ca81e753 --- /dev/null +++ b/scripts/import_parity.sh @@ -0,0 +1,124 @@ +#!/usr/bin/env bash +# Import parity on one (large) scene: the current build against a baseline +# recorded from Crust's direct importer (the `moho-import` change, spec +# `import-parity`). This is how ALab and Moana are checked; the committed +# samples and the test fixtures are checked by `cargo test`. +# +# Usage: +# scripts/import_parity.sh record [render flags...] +# scripts/import_parity.sh check [render flags...] +# +# `record` keeps in : the `crust check --json` report with the import's +# phases (timings, memory) removed, the 16 spp EXR (`--indirect-clamp 0`), and +# the import's peak memory and `Parse USD stage` time — the minimum over N runs. +# `check` does the same with the current build and compares: it exits 1 when +# the report or the image differs (`crust diff`), and prints both builds' +# memory and time with their ratios. Memory and time are reported, never gated: +# as UsdImaging did when it moved onto scene indices, parity is the gate. +# +# Give `check` the render flags `record` was given. Environment: +# N= renders per side for the timings (default 1; the image and +# report come from the first) +# BIN= the binary (default target/release/crust, built if missing) +# +# Examples: +# scripts/import_parity.sh record ~/baselines/alab samples/ALab/entry.usda -f 1004 +# scripts/import_parity.sh check ~/baselines/alab samples/ALab/entry.usda -f 1004 +# scripts/import_parity.sh record ~/baselines/moana \ +# ~/Workspace/samples/island/usd/island.usda --camera /island/cam/shotCam + +set -euo pipefail + +MODE="${1:-}" +DIR="${2:-}" +SCENE="${3:-}" +EXTRA=("${@:4}") +N="${N:-1}" +BIN="${BIN:-target/release/crust}" + +if { [ "$MODE" != record ] && [ "$MODE" != check ]; } || [ -z "$DIR" ] || [ -z "$SCENE" ]; then + sed -n '2,27p' "$0" + exit 2 +fi +if [ ! -x "$BIN" ]; then + cargo build --release -p crust-render +fi + +mkdir -p "$DIR" +WORK="$(mktemp -d)" +trap 'rm -rf "$WORK"' EXIT + +# The report without its import phases, and with the scene's directory written +# `$DIR`, so it compares across builds and checkouts. +strip_report() { + python3 -I -c ' +import json, sys, os +report = json.load(open(sys.argv[1])) +report.pop("import", None) +text = json.dumps(report, indent=2, sort_keys=True) +text = text.replace(os.path.dirname(os.path.abspath(sys.argv[2])), "$DIR") +print(text) +' "$1" "$SCENE" +} + +# ` ` from a `crust-stats/1` report. +import_cost() { + python3 -I -c ' +import json, sys +s = json.load(open(sys.argv[1])) +parse = next(p for p in s["phases"] if p["name"] == "Parse USD stage") +peak = parse.get("peak_end") or s.get("peak_memory_bytes") or 0 +print(peak, parse["time_s"]) +' "$1" +} + +# Renders N times into $1 (a prefix), keeping the first image and the +# minimum peak memory and parse time. +measure() { + local out="$1" best_peak="" best_time="" + "$BIN" check -i "$SCENE" "${EXTRA[@]}" --json "$WORK/check.json" -l error >/dev/null + strip_report "$WORK/check.json" > "$out.check.json" + for i in $(seq 1 "$N"); do + "$BIN" render -i "$SCENE" "${EXTRA[@]}" -s 16 --indirect-clamp 0 \ + -o "$WORK/run$i.exr" --stats-json "$WORK/stats$i.json" -l error >/dev/null + read -r peak time < <(import_cost "$WORK/stats$i.json") + if [ -z "$best_peak" ] || [ "$peak" -lt "$best_peak" ]; then best_peak="$peak"; fi + if [ -z "$best_time" ] || python3 -I -c "import sys; sys.exit(not float('$time') < float('$best_time'))"; then + best_time="$time" + fi + done + cp "$WORK/run1.exr" "$out.exr" + echo "$best_peak $best_time" > "$out.cost" +} + +if [ "$MODE" = record ]; then + measure "$DIR/baseline" + read -r peak time < "$DIR/baseline.cost" + printf 'recorded %s: peak %.2f GiB, Parse USD stage %.2f s (min of %s)\n' \ + "$SCENE" "$(python3 -I -c "print($peak / 2**30)")" "$time" "$N" + exit 0 +fi + +measure "$WORK/current" +status=0 +if ! diff -u "$DIR/baseline.check.json" "$WORK/current.check.json" > "$WORK/report.diff"; then + echo "REPORT DIFFERS from $DIR/baseline.check.json:" + head -40 "$WORK/report.diff" + status=1 +fi +if ! "$BIN" diff "$DIR/baseline.exr" "$WORK/current.exr" >/dev/null 2>&1; then + echo "IMAGE DIFFERS from $DIR/baseline.exr" + status=1 +fi +read -r bpeak btime < "$DIR/baseline.cost" +read -r cpeak ctime < "$WORK/current.cost" +python3 -I -c " +b_peak, b_time, c_peak, c_time = $bpeak, $btime, $cpeak, $ctime +gib = 2**30 +print(f'peak memory: baseline {b_peak / gib:8.2f} GiB current {c_peak / gib:8.2f} GiB ratio {c_peak / max(b_peak, 1):.3f}') +print(f'Parse USD stage: baseline {b_time:8.2f} s current {c_time:8.2f} s ratio {c_time / max(b_time, 1e-9):.3f}') +" +if [ "$status" = 0 ]; then + echo "parity: report and image equal to the baseline" +fi +exit "$status" From 3ee92f7b9b8e19883f99ff65cd0b86b68fecf57c Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 22:08:27 +0100 Subject: [PATCH 14/95] parity: name the working space in the digest, not its interned id `Space` is an id interned per process in the order spaces are met, so the provenance's StageFacts printed `Space(6)` or `Space(7)` depending on which test ran first. The digests are re-recorded from the direct importer with the space's name. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- crates/crust-core/src/live.rs | 6 +- ...ancedMedCity_usd-951317bf2ce0f6ed-1.digest | 2 +- .../absorber_usda-e5a517b5b36fd7e1-1.digest | 2 +- ...ive_bounded_usda-871964d811713ece-1.digest | 2 +- ...e_unbounded_usda-6ab4975baebe18ef-1.digest | 2 +- ...ture_height_usda-9d28c7b3a9cad9f9-1.digest | 2 +- ...rture_width_usda-c50e2f84bef7e6b7-1.digest | 2 +- ...s_with_spec_usda-985ed763a0957571-1.digest | 2 +- .../anamorphic_usda-c23c78df222208eb-1.digest | 2 +- .../ancestor_usda-3171d13289efaaff-1.digest | 2 +- .../ancestor_usda-74843e3cc431dad3-1.digest | 2 +- ..._no_shutter_usda-dc5451565381429f-1.digest | 2 +- .../animated_usda-84baf2836991de3b-1.digest | 2 +- .../animated_usda-e242162a2dbef33a-1.digest | 2 +- .../animation_usda-0b34d79521209b48-1.digest | 2 +- .../animation_usda-5446fd76cda9ed55-1.digest | 2 +- .../animation_usda-7b809f697af333f7-1.digest | 2 +- .../animation_usda-87536adca26db1ce-1.digest | 2 +- .../animation_usda-a8098f0bc76c3026-1.digest | 2 +- .../animation_usda-b620cb992a2b7c7d-1.digest | 2 +- .../animation_usda-b620cb992a2b7c7d-2.digest | 2 +- .../animation_usda-beee1323479cf47f-1.digest | 2 +- .../animation_usda-cca20ab6197e3823-1.digest | 2 +- .../animation_usda-cfe8a27d275b06f7-1.digest | 2 +- .../animation_usda-d9cfa85be82eff7f-1.digest | 2 +- .../animation_usda-dc0987b1e9c0a44b-1.digest | 2 +- .../aov_format_usda-3d1985fd48e4fb2d-1.digest | 2 +- ...ovs_lookdev_usda-4a2c1502ba0a175e-1.digest | 2 +- ...ovs_lookdev_usda-5ec9a160b78f998f-1.digest | 2 +- ...ovs_lookdev_usda-6a98ab5ed25ffa78-1.digest | 2 +- ...ovs_lookdev_usda-6d6e4a8f31366652-1.digest | 2 +- ...ovs_lookdev_usda-803d9a5b24ae0e42-1.digest | 2 +- ...ovs_lookdev_usda-c88cebf77c02e1c8-1.digest | 2 +- .../aovs_lpe_usda-96034a4139733157-1.digest | 2 +- .../aovs_lpe_usda-a43dc2277f16c84f-1.digest | 2 +- .../aovs_lpe_usda-a43dc2277f16c84f-2.digest | 2 +- .../aovs_usda-8f7e50636c58d0eb-1.digest | 2 +- .../aovs_usda-8f7e50636c58d0eb-2.digest | 2 +- .../aovs_usda-90b4ce2557c1c46e-1.digest | 2 +- .../aovs_usda-cd31a05d6e49ceda-1.digest | 2 +- ...area_lights_usda-07bd34a97e44c0ab-1.digest | 2 +- ...area_lights_usda-6989a4d471c724cf-1.digest | 2 +- ...rea_nothing_usda-bf90dbc7327fa98c-1.digest | 2 +- ...ing_visible_usda-2f4e016170ad5820-1.digest | 2 +- ...set_lookdev_usda-3b3a8108b3e9fae9-1.digest | 2 +- ...set_lookdev_usda-41ce6942a2d54582-1.digest | 2 +- ...set_lookdev_usda-6567e83e5076f9db-1.digest | 2 +- ...set_lookdev_usda-9934bec515530278-1.digest | 2 +- ...set_lookdev_usda-e4930eb0174b9dd7-1.digest | 2 +- ...set_lookdev_usda-e7566c662eda92b2-1.digest | 2 +- ...set_lookdev_usda-ec05a5f1f38841c6-1.digest | 2 +- ...set_lookdev_usda-f9c370778b865b50-1.digest | 2 +- ...thored_only_usda-e3c97926a3d11ac4-1.digest | 2 +- ...ome_light_1_usda-bda39b6574f6f444-1.digest | 2 +- ...op_streamed_usda-5c630271a8fcfd44-1.digest | 2 +- .../backdrop_usda-2757fcfd84c07e64-1.digest | 2 +- .../backdrop_usda-3818c88f3ea1e994-1.digest | 2 +- .../backdrop_usda-e17ddb582cb97b8c-1.digest | 2 +- ...lit_diffuse_usda-3dfba11cda1cd7c6-1.digest | 2 +- ...acklit_hair_usda-59f16e3a1a4f9b6d-1.digest | 2 +- .../bad_length_usda-3ab7b93f882199a8-1.digest | 2 +- .../bad_volume_usda-00cc0d19953cb7f6-1.digest | 2 +- ...banded_dome_usda-03eaa43cee7b25ab-1.digest | 2 +- .../binding_usda-3ec3b212bbee4e90-1.digest | 2 +- .../black_usda-ca3475f9863dc283-1.digest | 2 +- ...body_acescg_usda-e4fe8984977e4dc5-1.digest | 2 +- ...lur_default_usda-d0c5474e0dfbe769-1.digest | 2 +- .../blur_false_usda-8f6712fd58e3e7dd-1.digest | 2 +- ...its_synonym_usda-8cbc9a895bc4da45-1.digest | 2 +- ...product_off_usda-ad5ae20ae0e9dd8e-1.digest | 2 +- ..._product_on_usda-9e081a22d073a61a-1.digest | 2 +- ...ucts_differ_usda-97d616ea3858dc6c-1.digest | 2 +- ...oducts_same_usda-f8c20e3d816829cd-1.digest | 2 +- ...s_spellings_usda-e53f8c9eb1fa898a-1.digest | 2 +- ...ttings_only_usda-57bf8b1f820d60e9-1.digest | 2 +- ...lur_synonym_usda-5c4201bf40a84766-1.digest | 2 +- ...ur_warnings_usda-560d69942e1e7771-1.digest | 2 +- .../blurred_usda-152a0fdff5c8c9a3-1.digest | 2 +- .../both_usda-4af15817dabdb39f-1.digest | 2 +- .../boundary_usda-85fcb2406c56d725-1.digest | 2 +- ...n_materials_usda-040c16d0365cbc63-1.digest | 2 +- ...broken_mesh_usda-217190c267ddf4a1-1.digest | 2 +- .../cage_three_usda-65204db7a7ccaed8-1.digest | 2 +- .../cam__W_B_usda-1827f96f8b5d0db1-1.digest | 2 +- .../cam__W_B_usda-1827f96f8b5d0db1-2.digest | 2 +- .../cam__W_B_usda-7a2f1b2d8ea63036-1.digest | 2 +- .../cam__W_B_usda-7a2f1b2d8ea63036-2.digest | 2 +- ...cam__W_Nope_usda-a6a9c22824149e8e-1.digest | 2 +- ...cam__W_Nope_usda-a6a9c22824149e8e-2.digest | 2 +- ...cam__W_Nope_usda-a6a9c22824149e8e-3.digest | 2 +- .../cam_narrow_usda-dcae36868790f279-1.digest | 2 +- .../cam_none_usda-1ef9fbd129b9560a-1.digest | 2 +- .../cam_none_usda-2cb27e460ee10e43-1.digest | 2 +- .../cam_wide_usda-098c8afc4872dbb7-1.digest | 2 +- .../camera_dof_usda-f69bc93db8900a0e-1.digest | 2 +- ...amera_ortho_usda-21d5879ec7de6dbf-1.digest | 2 +- ...ion_unknown_usda-8a8cac00719054ad-1.digest | 2 +- .../camera_rot_usda-c74e88c7205b56e5-1.digest | 2 +- .../camera_usda-2d8f34945903545d-1.digest | 2 +- ..._visibility_usda-0af373522188190d-1.digest | 2 +- ..._visibility_usda-5198be21d5bb35d1-1.digest | 2 +- ..._zero_focus_usda-ad065540da61feb4-1.digest | 2 +- .../capped_usda-de82c45ab5a80eb6-1.digest | 2 +- ...entred_both_usda-06ae7e6ad41f5b45-1.digest | 2 +- ...ntred_frame_usda-200d23d9927b7966-1.digest | 2 +- ...entred_open_usda-75e668aa9e5ecb2d-1.digest | 2 +- ..._constant_0_usda-16acce3a8ae23e69-1.digest | 2 +- ..._constant_2_usda-51380ed7a7ea4305-1.digest | 2 +- ...nauthored_0_usda-a6d6a93dda32caf2-1.digest | 2 +- ...nauthored_2_usda-bad2637a6a91c73a-1.digest | 2 +- ...p_uniform_0_usda-ffe6596ba2b6a108-1.digest | 2 +- ...p_uniform_2_usda-815f4bb2830bedd0-1.digest | 2 +- ...m_indexed_0_usda-a6e2151559aa05f1-1.digest | 2 +- ...m_indexed_2_usda-49181df1e2a2d359-1.digest | 2 +- .../clean_usda-d4e60f418d0e5485-1.digest | 2 +- .../clear_usda-487518c3a2bde507-1.digest | 2 +- .../closest_usda-b1b06704b4564b8c-1.digest | 2 +- ...r_space_api_usda-7258fb7a16ddde2f-1.digest | 2 +- ...erature_off_usda-d2963845fd5e72c4-1.digest | 2 +- ...temperature_usda-a7d9f5fccba89fff-1.digest | 2 +- ...ation_alias_usda-ea168514e7b00460-1.digest | 2 +- ...nsation_off_usda-37a366efa8d50980-1.digest | 2 +- ...nstant_cage_usda-6838009dc4d51123-1.digest | 2 +- ...nt_none_off_usda-4da7234b198fc34c-1.digest | 2 +- ...nstant_none_usda-3f38201b0c964211-1.digest | 2 +- .../convolve_usda-ae27710a0c217615-1.digest | 2 +- .../copper_usda-856b7fd7384c75f6-1.digest | 2 +- ...lbox_guided_usda-1f6a1535ca10a892-1.digest | 2 +- ...lbox_guided_usda-7da4bd79d2eda8bf-1.digest | 2 +- ...lbox_guided_usda-7da4bd79d2eda8bf-2.digest | 2 +- ...lbox_guided_usda-9ca98c606b8b14bb-1.digest | 2 +- ...lbox_guided_usda-9ca98c606b8b14bb-2.digest | 2 +- ...lbox_guided_usda-dddcb8fd2ce59c1f-1.digest | 2 +- ...box_lookdev_usda-28fa5fe21d50ecee-1.digest | 2 +- ...box_lookdev_usda-8e3a0cbcd6f4b7b0-1.digest | 2 +- ...box_lookdev_usda-937b5a30e0d1b2a9-1.digest | 2 +- ...box_lookdev_usda-a0bb21684d68d231-1.digest | 2 +- ...box_lookdev_usda-f5ac4ca7187d0afa-1.digest | 2 +- .../cornellbox_usda-015a68615622d007-1.digest | 2 +- .../cornellbox_usda-015a68615622d007-2.digest | 2 +- .../cornellbox_usda-021e0477d02e8b56-1.digest | 2 +- .../cornellbox_usda-08de1880a086a764-1.digest | 2 +- .../cornellbox_usda-0c23ef94659b6f93-1.digest | 2 +- .../cornellbox_usda-0c23ef94659b6f93-2.digest | 2 +- .../cornellbox_usda-108152a6f960262b-1.digest | 2 +- .../cornellbox_usda-108152a6f960262b-2.digest | 2 +- .../cornellbox_usda-15e73f9974620a1a-1.digest | 2 +- .../cornellbox_usda-16d2af5b91e595bd-1.digest | 2 +- .../cornellbox_usda-1aeeae0fba6dbe97-1.digest | 2 +- .../cornellbox_usda-211d55a31b3d62fa-1.digest | 2 +- .../cornellbox_usda-211d55a31b3d62fa-2.digest | 2 +- .../cornellbox_usda-248f67f6240f7680-1.digest | 2 +- .../cornellbox_usda-254e9b608e6c20f0-1.digest | 2 +- .../cornellbox_usda-265ef4c54c4d2534-1.digest | 2 +- .../cornellbox_usda-2711a47b10d83a96-1.digest | 2 +- .../cornellbox_usda-2772d706794ce66b-1.digest | 2 +- .../cornellbox_usda-2772d706794ce66b-2.digest | 2 +- .../cornellbox_usda-2772d706794ce66b-3.digest | 2 +- .../cornellbox_usda-2772d706794ce66b-4.digest | 2 +- .../cornellbox_usda-2772d706794ce66b-5.digest | 2 +- .../cornellbox_usda-2772d706794ce66b-6.digest | 2 +- .../cornellbox_usda-2cf51e7bf43f4fa8-1.digest | 2 +- .../cornellbox_usda-2dd566e6043ed6b0-1.digest | 2 +- .../cornellbox_usda-2dd566e6043ed6b0-2.digest | 2 +- .../cornellbox_usda-2dd566e6043ed6b0-3.digest | 2 +- .../cornellbox_usda-3a12e7835578a84e-1.digest | 2 +- .../cornellbox_usda-3a2af9f3e570b458-1.digest | 2 +- .../cornellbox_usda-3c316a1edd099ef0-1.digest | 2 +- .../cornellbox_usda-3c74fafa1c66c123-1.digest | 2 +- .../cornellbox_usda-3cac72b0550f05b3-1.digest | 2 +- .../cornellbox_usda-450b164daa4e0f80-1.digest | 2 +- .../cornellbox_usda-48a104b8a2799466-1.digest | 2 +- .../cornellbox_usda-518e1fd5063f7227-1.digest | 2 +- .../cornellbox_usda-563fb301d9f1f469-1.digest | 2 +- ...cornellbox_usda-563fb301d9f1f469-10.digest | 2 +- ...cornellbox_usda-563fb301d9f1f469-11.digest | 2 +- ...cornellbox_usda-563fb301d9f1f469-12.digest | 2 +- ...cornellbox_usda-563fb301d9f1f469-13.digest | 2 +- ...cornellbox_usda-563fb301d9f1f469-14.digest | 2 +- ...cornellbox_usda-563fb301d9f1f469-15.digest | 2 +- ...cornellbox_usda-563fb301d9f1f469-16.digest | 2 +- ...cornellbox_usda-563fb301d9f1f469-17.digest | 2 +- ...cornellbox_usda-563fb301d9f1f469-18.digest | 2 +- ...cornellbox_usda-563fb301d9f1f469-19.digest | 2 +- .../cornellbox_usda-563fb301d9f1f469-2.digest | 2 +- ...cornellbox_usda-563fb301d9f1f469-20.digest | 2 +- ...cornellbox_usda-563fb301d9f1f469-21.digest | 2 +- ...cornellbox_usda-563fb301d9f1f469-22.digest | 2 +- ...cornellbox_usda-563fb301d9f1f469-23.digest | 2 +- ...cornellbox_usda-563fb301d9f1f469-24.digest | 2 +- ...cornellbox_usda-563fb301d9f1f469-25.digest | 2 +- .../cornellbox_usda-563fb301d9f1f469-3.digest | 2 +- .../cornellbox_usda-563fb301d9f1f469-4.digest | 2 +- .../cornellbox_usda-563fb301d9f1f469-5.digest | 2 +- .../cornellbox_usda-563fb301d9f1f469-6.digest | 2 +- .../cornellbox_usda-563fb301d9f1f469-7.digest | 2 +- .../cornellbox_usda-563fb301d9f1f469-8.digest | 2 +- .../cornellbox_usda-563fb301d9f1f469-9.digest | 2 +- .../cornellbox_usda-5d064faa753e9d7b-1.digest | 2 +- .../cornellbox_usda-5e1b400d2f0d70bc-1.digest | 2 +- .../cornellbox_usda-5ff835103ecfad3e-1.digest | 2 +- .../cornellbox_usda-61a13a775605a0ce-1.digest | 2 +- .../cornellbox_usda-61e87f520a6a2dff-1.digest | 2 +- .../cornellbox_usda-63b1f6980e443f71-1.digest | 2 +- .../cornellbox_usda-67753350f4f997a4-1.digest | 2 +- .../cornellbox_usda-67d6afd449214b25-1.digest | 2 +- .../cornellbox_usda-7300aa94ecae6c37-1.digest | 2 +- .../cornellbox_usda-7478515f32354718-1.digest | 2 +- .../cornellbox_usda-7ba56e4f79d4195f-1.digest | 2 +- .../cornellbox_usda-7e55fcb3620f4663-1.digest | 2 +- .../cornellbox_usda-7f63dd70a33e2183-1.digest | 2 +- .../cornellbox_usda-816ed2710215c157-1.digest | 2 +- .../cornellbox_usda-816ed2710215c157-2.digest | 2 +- .../cornellbox_usda-816ed2710215c157-3.digest | 2 +- .../cornellbox_usda-816ed2710215c157-4.digest | 2 +- .../cornellbox_usda-88df24aa0618a335-1.digest | 2 +- .../cornellbox_usda-88e25ed80282bc79-1.digest | 2 +- .../cornellbox_usda-88eeabb6ac92eef4-1.digest | 2 +- .../cornellbox_usda-89c626c1e078ca38-1.digest | 2 +- .../cornellbox_usda-8d8e99f6790507a9-1.digest | 2 +- .../cornellbox_usda-8d8e99f6790507a9-2.digest | 2 +- .../cornellbox_usda-8e692f67a3c276f4-1.digest | 2 +- .../cornellbox_usda-8ecb1db3e29a9e13-1.digest | 2 +- .../cornellbox_usda-93e84687c267227a-1.digest | 2 +- .../cornellbox_usda-9514c8683d2c9e4d-1.digest | 2 +- .../cornellbox_usda-96761b8033e5fb3c-1.digest | 2 +- .../cornellbox_usda-987ee05acd715dfa-1.digest | 2 +- .../cornellbox_usda-99aef82ca410b677-1.digest | 2 +- .../cornellbox_usda-9a0515f0d918dd40-1.digest | 2 +- .../cornellbox_usda-9c84bf52ec0561b1-1.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-10.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-100.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-101.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-102.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-103.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-104.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-105.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-106.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-107.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-108.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-109.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-11.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-110.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-111.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-112.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-113.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-114.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-115.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-116.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-117.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-118.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-119.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-12.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-120.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-121.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-122.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-123.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-124.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-125.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-126.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-127.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-128.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-129.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-13.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-130.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-131.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-132.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-133.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-134.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-135.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-136.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-137.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-138.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-139.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-14.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-140.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-141.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-142.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-143.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-144.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-145.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-146.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-147.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-148.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-149.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-15.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-150.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-151.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-152.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-153.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-154.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-155.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-156.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-157.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-158.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-159.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-16.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-160.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-161.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-162.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-163.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-164.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-165.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-166.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-167.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-168.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-169.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-17.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-170.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-171.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-172.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-173.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-174.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-175.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-176.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-177.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-178.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-179.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-18.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-180.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-181.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-182.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-183.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-184.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-185.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-186.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-187.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-188.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-189.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-19.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-190.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-191.digest | 2 +- ...ornellbox_usda-9c84bf52ec0561b1-192.digest | 2 +- .../cornellbox_usda-9c84bf52ec0561b1-2.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-20.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-21.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-22.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-23.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-24.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-25.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-26.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-27.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-28.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-29.digest | 2 +- .../cornellbox_usda-9c84bf52ec0561b1-3.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-30.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-31.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-32.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-33.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-34.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-35.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-36.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-37.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-38.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-39.digest | 2 +- .../cornellbox_usda-9c84bf52ec0561b1-4.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-40.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-41.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-42.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-43.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-44.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-45.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-46.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-47.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-48.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-49.digest | 2 +- .../cornellbox_usda-9c84bf52ec0561b1-5.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-50.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-51.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-52.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-53.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-54.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-55.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-56.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-57.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-58.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-59.digest | 2 +- .../cornellbox_usda-9c84bf52ec0561b1-6.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-60.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-61.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-62.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-63.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-64.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-65.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-66.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-67.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-68.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-69.digest | 2 +- .../cornellbox_usda-9c84bf52ec0561b1-7.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-70.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-71.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-72.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-73.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-74.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-75.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-76.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-77.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-78.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-79.digest | 2 +- .../cornellbox_usda-9c84bf52ec0561b1-8.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-80.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-81.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-82.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-83.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-84.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-85.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-86.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-87.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-88.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-89.digest | 2 +- .../cornellbox_usda-9c84bf52ec0561b1-9.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-90.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-91.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-92.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-93.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-94.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-95.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-96.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-97.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-98.digest | 2 +- ...cornellbox_usda-9c84bf52ec0561b1-99.digest | 2 +- .../cornellbox_usda-a06c636245c00028-1.digest | 2 +- .../cornellbox_usda-a18d02fea0ac9ae3-1.digest | 2 +- .../cornellbox_usda-a18d02fea0ac9ae3-2.digest | 2 +- .../cornellbox_usda-a18d02fea0ac9ae3-3.digest | 2 +- .../cornellbox_usda-a18d02fea0ac9ae3-4.digest | 2 +- .../cornellbox_usda-a18d02fea0ac9ae3-5.digest | 2 +- .../cornellbox_usda-a18d02fea0ac9ae3-6.digest | 2 +- .../cornellbox_usda-a1b6b7b33175c629-1.digest | 2 +- .../cornellbox_usda-a6c99e7589fd5bbe-1.digest | 2 +- .../cornellbox_usda-b04eda6325f3cbbf-1.digest | 2 +- .../cornellbox_usda-b04eda6325f3cbbf-2.digest | 2 +- .../cornellbox_usda-b04eda6325f3cbbf-3.digest | 2 +- .../cornellbox_usda-b04eda6325f3cbbf-4.digest | 2 +- .../cornellbox_usda-b194c866668b8c75-1.digest | 2 +- .../cornellbox_usda-b32b870ba5ca59f9-1.digest | 2 +- .../cornellbox_usda-b3d2bc2ed9037c82-1.digest | 2 +- .../cornellbox_usda-b62de59b31ca0e80-1.digest | 2 +- .../cornellbox_usda-b6c7e44d8560abd5-1.digest | 2 +- .../cornellbox_usda-bb1cc653d4ac376a-1.digest | 2 +- .../cornellbox_usda-bb1cc653d4ac376a-2.digest | 2 +- .../cornellbox_usda-bb1cc653d4ac376a-3.digest | 2 +- .../cornellbox_usda-bb1cc653d4ac376a-4.digest | 2 +- .../cornellbox_usda-bb1cc653d4ac376a-5.digest | 2 +- .../cornellbox_usda-bba4bdda287871cf-1.digest | 2 +- .../cornellbox_usda-bba4bdda287871cf-2.digest | 2 +- .../cornellbox_usda-be34c0d526943796-1.digest | 2 +- .../cornellbox_usda-cb7b0dee2139a326-1.digest | 2 +- .../cornellbox_usda-cdab40c0e9cba23f-1.digest | 2 +- .../cornellbox_usda-cf47b345f0453895-1.digest | 2 +- .../cornellbox_usda-d3d144cf7b8b758b-1.digest | 2 +- .../cornellbox_usda-d5734d22b9c37571-1.digest | 2 +- .../cornellbox_usda-d5734d22b9c37571-2.digest | 2 +- .../cornellbox_usda-da1f2707813489ef-1.digest | 2 +- .../cornellbox_usda-df23dfac5ede9611-1.digest | 2 +- .../cornellbox_usda-df23dfac5ede9611-2.digest | 2 +- .../cornellbox_usda-df23dfac5ede9611-3.digest | 2 +- .../cornellbox_usda-e82204be97718dbd-1.digest | 2 +- .../cornellbox_usda-e82204be97718dbd-2.digest | 2 +- .../cornellbox_usda-e82204be97718dbd-3.digest | 2 +- .../cornellbox_usda-e82204be97718dbd-4.digest | 2 +- .../cornellbox_usda-ec6907d7b5edc24c-1.digest | 2 +- .../cornellbox_usda-ed05b9821202ec22-1.digest | 2 +- .../cornellbox_usda-efc8f2e410ea1edf-1.digest | 2 +- .../cornellbox_usda-f0235d211948c8ae-1.digest | 2 +- .../cornellbox_usda-f0d9751b5af0e124-1.digest | 2 +- .../cornellbox_usda-f3f2b534bfcc0db6-1.digest | 2 +- .../cornellbox_usda-f3f2b534bfcc0db6-2.digest | 2 +- .../cornellbox_usda-f3f2b534bfcc0db6-3.digest | 2 +- .../cornellbox_usda-f3f2b534bfcc0db6-4.digest | 2 +- .../cornellbox_usda-f52f4933a61a7b17-1.digest | 2 +- .../cornellbox_usda-f72ab0ee474423bf-1.digest | 2 +- .../cornellbox_usda-f74efd8c1a39793d-1.digest | 2 +- .../cornellbox_usda-f74efd8c1a39793d-2.digest | 2 +- .../cornellbox_usda-f74efd8c1a39793d-3.digest | 2 +- .../cornellbox_usda-f91ae1b4cc3a5130-1.digest | 2 +- .../cornellbox_usda-f91ae1b4cc3a5130-2.digest | 2 +- .../cornellbox_usda-f91ae1b4cc3a5130-3.digest | 2 +- .../cornellbox_usda-f91ae1b4cc3a5130-4.digest | 2 +- .../cornellbox_usda-fc498f82a9cb979f-1.digest | 2 +- .../counters_usda-4398822590228cb6-1.digest | 2 +- .../curves_usda-49b1041fa43b5df8-1.digest | 2 +- .../curves_usda-68ff2953cfbdeb73-1.digest | 2 +- .../curves_usda-68ff2953cfbdeb73-2.digest | 2 +- .../curves_usda-6c82e9cb233e7c1e-1.digest | 2 +- .../curves_usda-bf538717464b4055-1.digest | 2 +- .../curves_usda-e59f2a157a03b823-1.digest | 2 +- .../cycle_usda-6c5127dceb205457-1.digest | 2 +- .../cyl_far_usda-14bf93b40e3110ed-1.digest | 2 +- .../cyl_near_usda-8880b5f4401667ce-1.digest | 2 +- ...roto_nested_usda-337785a80bd25b4b-1.digest | 2 +- ..._proto_once_usda-5861fac834a9592e-1.digest | 2 +- ...proto_twice_usda-9d0b4387b8ae21e9-1.digest | 2 +- ...cyl_unnamed_usda-6b8943ce79ec798b-1.digest | 2 +- ...inder_light_usda-a8869b560165f646-1.digest | 2 +- .../dangling_usda-33cdcee1c03a3f62-1.digest | 2 +- ...fault_links_usda-fa4bfc17658672ca-1.digest | 2 +- ...rate_lights_usda-c119df2817a52e22-1.digest | 2 +- ...g_alone_ref_usda-ad2f6d6f9f5a6b34-1.digest | 2 +- ...icing_alone_usda-d2a904287b895157-1.digest | 2 +- ...dicing_near_usda-2b8cc53942e05573-1.digest | 2 +- ...ing_nothing_usda-02863a7cb9ea2edb-1.digest | 2 +- ...oduct_diced_usda-bde5502fcf67625f-1.digest | 2 +- ...uct_ref_cam_usda-206ed631706e669f-1.digest | 2 +- ...ct_ref_near_usda-a7f21d55b08b22eb-1.digest | 2 +- ...ing_product_usda-0fe0e77ccc289c1f-1.digest | 2 +- ...ng_property_usda-541c1a7591a9b5c0-1.digest | 2 +- .../dicing_ref_usda-450597df8121a96c-1.digest | 2 +- ...dicing_self_usda-9d54e5a1b138ff5e-1.digest | 2 +- ...hrough_near_usda-43e145636209967d-1.digest | 2 +- ..._unauthored_usda-d941af55d3f95425-1.digest | 2 +- ...ing_unnamed_usda-1911d7362c693947-1.digest | 2 +- ...icing_xform_usda-fdb39a50b9314e69-1.digest | 2 +- ...bled_broken_usda-3e31009d90ef26ec-1.digest | 2 +- .../disk_light_usda-720389dc27e2a4c4-1.digest | 2 +- ...placed_rest_usda-d70fe6fb257dd183-1.digest | 2 +- ...isplacement_usda-03e54e80075ba30c-1.digest | 2 +- ...isplacement_usda-180936ed9cbacb0b-1.digest | 2 +- ...isplacement_usda-4db664e792f21a27-1.digest | 2 +- ...isplacement_usda-5e2aa9f4f1dfd37e-1.digest | 2 +- ...isplacement_usda-f5f1d4dfaa9feea3-1.digest | 2 +- ...isplacement_usda-f5f1d4dfaa9feea3-2.digest | 2 +- ...efault_lens_usda-c199c396bb781cc0-1.digest | 2 +- ...dof_default_usda-57e78e0586982b2f-1.digest | 2 +- ...ed_bad_unit_usda-b76c543fc6398eaa-1.digest | 2 +- ...of_disabled_usda-420b407ea5317d3e-1.digest | 2 +- ...llback_lens_usda-bff40e44436746b1-1.digest | 2 +- ...ack_pinhole_usda-c69160a93b244f8f-1.digest | 2 +- ...product_off_usda-ec7655fdc64080b7-1.digest | 2 +- ..._product_on_usda-642bf95d97820f23-1.digest | 2 +- ..._product_on_usda-9b87c5f936703494-1.digest | 2 +- ...ducts_agree_usda-1f54c058d539370a-1.digest | 2 +- ...ucts_differ_usda-a379642f2edc4361-1.digest | 2 +- ...ts_disagree_usda-8e35ec3ea864f596-1.digest | 2 +- ...ttings_only_usda-dc3a7d2e89c34444-1.digest | 2 +- ...me_backdrop_usda-06f3801d332f35bd-1.digest | 2 +- ...me_backdrop_usda-1bbad8f86d8900fb-1.digest | 2 +- ...me_backdrop_usda-1bbad8f86d8900fb-2.digest | 2 +- ...me_backdrop_usda-2d5a500fad6dcfad-1.digest | 2 +- ...me_backdrop_usda-4222ab94f00b4ba4-1.digest | 2 +- ...me_backdrop_usda-43c08f98bb3b74e6-1.digest | 2 +- ...me_backdrop_usda-7b71c02186033a9a-1.digest | 2 +- ...me_backdrop_usda-88f2729f3b3188bb-1.digest | 2 +- ...me_backdrop_usda-9d834df56ca3b1ac-1.digest | 2 +- ...me_backdrop_usda-af5d67f7909dc65a-1.digest | 2 +- ...me_backdrop_usda-b592bc76e2706492-1.digest | 2 +- ...me_backdrop_usda-b9dc71e44c528187-1.digest | 2 +- ..._camera_off_usda-b5a9eac417c3bdbb-1.digest | 2 +- ..._crust_wins_usda-0bfe2eb5bc4f83c5-1.digest | 2 +- ...ome_default_usda-7c13b46b00b734f8-1.digest | 2 +- ...xclude_bsdf_usda-fb9c2dcc2b05783e-1.digest | 2 +- ...clude_power_usda-a488dc90e33bf33b-1.digest | 2 +- ..._scene_z_up_usda-4a3a839d045f42ae-1.digest | 2 +- ...0_reference_usda-e3c0f10234d60e6f-1.digest | 2 +- ...ht_1_pole_y_usda-b39274d8389c93ec-1.digest | 2 +- ...ht_1_pole_z_usda-3ab2d43568c3a9ca-1.digest | 2 +- ...t_1_rotated_usda-96a7a52ba96f792f-1.digest | 2 +- ...scene_no_up_usda-db7f3549433e3ca1-1.digest | 2 +- ..._scene_y_up_usda-cef3793797de068b-1.digest | 2 +- ...ome_light_1_usda-771e6d7e193401ac-1.digest | 2 +- ...ight_1_z_up_usda-d2385f77c8ec6eb4-1.digest | 2 +- .../dome_light_usda-f46a39c15abcc98f-1.digest | 2 +- ...e_no_assets_usda-b8800e7204db6d4a-1.digest | 2 +- .../dome_power_usda-abfbd64e964dc44d-1.digest | 2 +- ...e_ri_camera_usda-acf95ad397fe1930-1.digest | 2 +- .../domelight_usda-22dcdc7630c52071-1.digest | 2 +- .../domelight_usda-23290848cbd88d05-1.digest | 2 +- .../domelight_usda-23290848cbd88d05-2.digest | 2 +- .../domelight_usda-5a2a25c11957ed70-1.digest | 2 +- .../domelight_usda-5d8f200125b9fd09-1.digest | 2 +- .../domelight_usda-7f00a6c7fd4959fa-1.digest | 2 +- .../drop_usda-214f7b543bee6df1-1.digest | 2 +- .../drop_usda-4c62c449da4ae2d3-1.digest | 2 +- .../edge_false_usda-dfb19c6c90615a56-1.digest | 2 +- .../edge_true_usda-bddf6fe338522a86-1.digest | 2 +- .../edges_usda-9743a0d0ff86dafe-1.digest | 2 +- .../edits_usda-077b57f7b0804f19-1.digest | 2 +- .../edits_usda-085dfd17ac95282d-1.digest | 2 +- .../edits_usda-188f318a9146ce97-1.digest | 2 +- .../edits_usda-1966e17597c3de42-1.digest | 2 +- .../edits_usda-19a787b3bcc74617-1.digest | 2 +- .../edits_usda-23003ea81a2d2024-1.digest | 2 +- .../edits_usda-23fb1cff1e547a51-1.digest | 2 +- .../edits_usda-24cc8ef3649b336a-1.digest | 2 +- .../edits_usda-30c8f1f2b1117913-1.digest | 2 +- .../edits_usda-339a76e50715bbe3-1.digest | 2 +- .../edits_usda-3450a9d6105e89a6-1.digest | 2 +- .../edits_usda-411d0a61690b9e71-1.digest | 2 +- .../edits_usda-43a14b5e78154dda-1.digest | 2 +- .../edits_usda-483e16501c86632a-1.digest | 2 +- .../edits_usda-4966b50c696e8080-1.digest | 2 +- .../edits_usda-4cf921963a4325e9-1.digest | 2 +- .../edits_usda-4d3c65f04d4eaea9-1.digest | 2 +- .../edits_usda-4dd694c9b20daa77-1.digest | 2 +- .../edits_usda-516372ff4968411b-1.digest | 2 +- .../edits_usda-53a62fecc28e0de7-1.digest | 2 +- .../edits_usda-5521dd197a77f33e-1.digest | 2 +- .../edits_usda-57fa1e33af4efac6-1.digest | 2 +- .../edits_usda-5b418d865896d977-1.digest | 2 +- .../edits_usda-5b418d865896d977-2.digest | 2 +- .../edits_usda-5f2834619e774ab4-1.digest | 2 +- .../edits_usda-6019827f6d635824-1.digest | 2 +- .../edits_usda-65b79e09c14be76d-1.digest | 2 +- .../edits_usda-662e56b1a93d2d66-1.digest | 2 +- .../edits_usda-6deff31ef60f6033-1.digest | 2 +- .../edits_usda-7239cb83230ea59e-1.digest | 2 +- .../edits_usda-786eedaaaa2108bd-1.digest | 2 +- .../edits_usda-8f9cca718b125c47-1.digest | 2 +- .../edits_usda-8f9cca718b125c47-2.digest | 2 +- .../edits_usda-939ae62aa1013f1f-1.digest | 2 +- .../edits_usda-9785472850c84b20-1.digest | 2 +- .../edits_usda-9829e1b01f60d251-1.digest | 2 +- .../edits_usda-9829e1b01f60d251-2.digest | 2 +- .../edits_usda-9f3ec2b0f2000d47-1.digest | 2 +- .../edits_usda-a15a160797d16740-1.digest | 2 +- .../edits_usda-a15f50a6d270c4d6-1.digest | 2 +- .../edits_usda-a2d6c26d716466c1-1.digest | 2 +- .../edits_usda-a693bfb772c311e2-1.digest | 2 +- .../edits_usda-a9ea182c81eccd64-1.digest | 2 +- .../edits_usda-aafb5513a53fa62e-1.digest | 2 +- .../edits_usda-b0da370b544b77b5-1.digest | 2 +- .../edits_usda-b14405d5563d3059-1.digest | 2 +- .../edits_usda-b271371e2517722b-1.digest | 2 +- .../edits_usda-b80eb10c2ba34178-1.digest | 2 +- .../edits_usda-b8d0f20bfaa82329-1.digest | 2 +- .../edits_usda-c0b43128dd170a60-1.digest | 2 +- .../edits_usda-c1012e35073052d4-1.digest | 2 +- .../edits_usda-c5e06d108f13878a-1.digest | 2 +- .../edits_usda-c6a1743cb004bfc8-1.digest | 2 +- .../edits_usda-cfa1cdf26c62d04e-1.digest | 2 +- .../edits_usda-d51c63f9aa3e9706-1.digest | 2 +- .../edits_usda-d6c1dd24567db6e1-1.digest | 2 +- .../edits_usda-dcd2a1d09ecabfda-1.digest | 2 +- .../edits_usda-e3a820d4d01acabc-1.digest | 2 +- .../edits_usda-ea33d0579957ea29-1.digest | 2 +- .../edits_usda-ec4aae2ab8a0f13f-1.digest | 2 +- .../edits_usda-efadd5d5ae9b33c8-1.digest | 2 +- .../edits_usda-f437292a1baf4562-1.digest | 2 +- .../edits_usda-f7edbb7e619c3f5d-1.digest | 2 +- .../edits_usda-fdfde88486c6dc74-1.digest | 2 +- ...source_name_usda-acd517e82c0f53e1-1.digest | 2 +- .../empty_usda-c1bba32cb87c83e9-1.digest | 2 +- .../exposure_0_usda-c142af23c7dc6585-1.digest | 2 +- .../exposure_2_usda-1ae682494eb4e641-1.digest | 2 +- .../exposure_usda-0139c7326dc66b4b-1.digest | 2 +- .../expression_usda-843ebd908965795b-1.digest | 2 +- .../expression_usda-e90ffc3af7a5e58d-1.digest | 2 +- .../fallback_usda-0dcbe995ba9d33f5-1.digest | 2 +- .../fallbacks_usda-19de7bd844b31582-1.digest | 2 +- ...ght_blocked_usda-ad271da815e04f1e-1.digest | 2 +- ...light_clear_usda-4072c77a8d9198cd-1.digest | 2 +- ...ight_dimmed_usda-8a326222fcc01e51-1.digest | 2 +- .../filters_usda-c37f75b53580c4aa-1.digest | 2 +- .../five_usda-1346633108536d3b-1.digest | 2 +- .../five_usda-98f6c3806296ddf6-1.digest | 2 +- .../fog_a_usda-c25ea86ab9b74771-1.digest | 2 +- .../fog_b_usda-d165df586bcbb934-1.digest | 2 +- .../fog_bsdf_usda-240806b5ed98a443-1.digest | 2 +- ...cluded_bsdf_usda-9ebfc40e02ef831f-1.digest | 2 +- ...luded_power_usda-a0c514c4c53c3bc4-1.digest | 2 +- .../fog_light_usda-ac22cdb8dae42d75-1.digest | 2 +- ...og_lit_bsdf_usda-4f776a8e8b44bb17-1.digest | 2 +- ...g_lit_power_usda-cbade45198a3c38a-1.digest | 2 +- .../fog_power_usda-c8d64f5dff77f2e7-1.digest | 2 +- .../fog_usda-219213dd24619244-1.digest | 2 +- .../fog_usda-4d459b664a7ea673-1.digest | 2 +- .../fog_usda-4d459b664a7ea673-2.digest | 2 +- .../fog_usda-509c893b29b09cb4-1.digest | 2 +- .../fog_usda-54b48891484e98a0-1.digest | 2 +- .../fog_usda-643d53c126eee84d-1.digest | 2 +- .../fog_usda-85a4ccafddfcce6b-1.digest | 2 +- .../fog_usda-85a4ccafddfcce6b-2.digest | 2 +- .../fog_usda-85a4ccafddfcce6b-3.digest | 2 +- .../fog_usda-85a4ccafddfcce6b-4.digest | 2 +- .../fog_usda-85a4ccafddfcce6b-5.digest | 2 +- .../fog_usda-c4be6859ecb41784-1.digest | 2 +- .../fog_wall_usda-d41794b69bda1696-1.digest | 2 +- ...oreign_mtlx_usda-1e9da30a7325ba81-1.digest | 2 +- .../fov_cm_usda-aeeac260878050ff-1.digest | 2 +- .../fov_m_usda-b134eebe4c048026-1.digest | 2 +- .../frustum_usda-78a6eed72a138fc6-1.digest | 2 +- ...ght_s_shape_usda-ca8302fa13315ae0-1.digest | 2 +- ...a_transform_usda-b99d3970dc3191b0-1.digest | 2 +- ...iced_rotate_usda-e8c2998b278e7b4c-1.digest | 2 +- ...d_translate_usda-0b0bd3f1a63779cf-1.digest | 2 +- ...ve_exposure_usda-6a1bc74cbd2099fa-1.digest | 2 +- ...do_exposure_usda-8cd035220544928f-1.digest | 2 +- ...base_colour_usda-185573627cdcf2a6-1.digest | 2 +- ...carried_fog_usda-b5397418f77073c1-1.digest | 2 +- ...ged_on_disk_usda-0c8b6f9bfb68059a-1.digest | 2 +- ...lbox_rotate_usda-76b2e5fb271f6c0c-1.digest | 2 +- ...x_translate_usda-ab7177593fd6f36b-1.digest | 2 +- ..._demoted_K1_usda-e328a49ee95fd405-1.digest | 2 +- ..._demoted_K4_usda-d0354a764756e3b4-1.digest | 2 +- ...d__bad_unit_usda-bf5aa1ce7a54f9e2-1.digest | 2 +- ...th_of_field_usda-61f50bc7be824751-1.digest | 2 +- ...dden_rotate_usda-82abbe3ed6112a4c-1.digest | 2 +- ...n_translate_usda-a8196d9e2f17ecbf-1.digest | 2 +- ...ome_texture_usda-c3e04747e405ac6e-1.digest | 2 +- .../full_drop_usda-a61417609925c673-1.digest | 2 +- ...ll_exposure_usda-fe83c794ae61f2a2-1.digest | 2 +- .../full_fixed_usda-adb1781d64f694c8-1.digest | 2 +- ...base_colour_usda-dd47b7dff78ee58e-1.digest | 2 +- ...mvar_undone_usda-318d40a5ee9b02d7-1.digest | 2 +- ...its_primvar_usda-98bf5373a7d5697f-1.digest | 2 +- ...linked_Fill_usda-cb706e1f9f991794-1.digest | 2 +- ..._linked_Key_usda-db486cee2438fb3b-1.digest | 2 +- ..._linked_Rim_usda-2874a091d25b590b-1.digest | 2 +- ...d_undo_Fill_usda-a93137db50fd28c8-1.digest | 2 +- ...ed_undo_Key_usda-1239d0ab4241ef3f-1.digest | 2 +- ...ed_undo_Rim_usda-03ca7b9265c405f0-1.digest | 2 +- ...l_max_depth_usda-1164faed927e051e-1.digest | 2 +- ...shes_rotate_usda-402e98fde9a693c4-1.digest | 2 +- ...s_translate_usda-ee4192f2a802af39-1.digest | 2 +- ..._new_camera_usda-73f0dca6c14ef5d7-1.digest | 2 +- ...iced_rotate_usda-d7adb4497350da61-1.digest | 2 +- ...d_translate_usda-6bfd0fb9adcbe164-1.digest | 2 +- ...en_exposure_usda-b0790c819b4e0d97-1.digest | 2 +- ...do_exposure_usda-c40080b74d3fb5a6-1.digest | 2 +- ...d_rewritten_usda-03a6e3d1a01a5551-1.digest | 2 +- ...d_roughness_usda-498bc078c77be0a5-1.digest | 2 +- ...o_roughness_usda-7143361153e7f548-1.digest | 2 +- ...Pref_undone_usda-774a34f5226e3639-1.digest | 2 +- ...s_with_Pref_usda-8674ccd68263fd36-1.digest | 2 +- ...re_exported_usda-39edd0f167e79907-1.digest | 2 +- ..._rect_light_usda-efc21afcf05d7959-1.digest | 2 +- ...ll_reloaded_usda-5a765fd50dde24be-1.digest | 2 +- ...sform_stack_usda-38a53b23a8f224c2-1.digest | 2 +- ...ptive_scene_usda-bde6533023d6ccd8-1.digest | 2 +- ...ptive_scene_usda-721dc26887b364a7-1.digest | 2 +- ...duct_camera_usda-0a3badd9a91b1027-1.digest | 2 +- ...ings_camera_usda-2b1ab3b4034d45bb-1.digest | 2 +- ...ying_camera_usda-56381435fa6b51f5-1.digest | 2 +- ...l_roughness_usda-a1ffe89d435678bc-1.digest | 2 +- ...ull_sampler_usda-27ca674891cf7c52-1.digest | 2 +- ...ull_scatter_usda-80ff37fcf1ff9f3c-1.digest | 2 +- ...ared_shader_usda-bcebf475c7d9ca1f-1.digest | 2 +- ...t_the_frame_usda-06436b4d06eb2f5f-1.digest | 2 +- ...utter_close_usda-ce0b12427cfd435b-1.digest | 2 +- ...er_exposure_usda-36da172692d8936a-1.digest | 2 +- ...r_rewritten_usda-2e79c887f2d55e88-1.digest | 2 +- ...exture_file_usda-1fd2cfaf6e5de06c-1.digest | 2 +- ...ght_s_shape_usda-f05814080b96dca5-1.digest | 2 +- ...a_transform_usda-d26b3a02a093ce4f-1.digest | 2 +- ...base_colour_usda-d814da72eab3f116-1.digest | 2 +- ...d__bad_unit_usda-6419381399744bc7-1.digest | 2 +- ...th_of_field_usda-3ef9a9cb1855677e-1.digest | 2 +- ...ome_texture_usda-a17c02c0536bdc00-1.digest | 2 +- ...do_exposure_usda-c9169e83397e3561-1.digest | 2 +- ...o_max_depth_usda-a8a78eb6299a327a-1.digest | 2 +- ..._rect_light_usda-2d6a907009434890-1.digest | 2 +- ...o_roughness_usda-62c5e0d0879e604d-1.digest | 2 +- ...ndo_sampler_usda-0d28664679d41bef-1.digest | 2 +- ...utter_close_usda-f7c724218b21e98a-1.digest | 2 +- ...exture_file_usda-d5aef4a622503f01-1.digest | 2 +- ...ct_retarget_usda-1e1edebd41fde9bc-1.digest | 2 +- ...o_the_reset_usda-7e7c9dbebb517c2f-1.digest | 2 +- ..._the_rotate_usda-c1aa90b58073a573-1.digest | 2 +- ...fter_reload_usda-b19199733b99fec2-1.digest | 2 +- ...urnace_ball_usda-54ac5243ee332532-1.digest | 2 +- .../furnace_usda-bbc6fe1cb946780f-1.digest | 2 +- ...ar_bilinear_usda-8ca893f677c91586-1.digest | 2 +- .../fvar_loop_usda-855199bacac38db5-1.digest | 2 +- .../geometry_usda-3299cf85fca858a4-1.digest | 2 +- .../glass_usda-6ef57f18257a3d7a-1.digest | 2 +- ...sdf_false_1_usda-8cc43a3f4dae46fb-1.digest | 2 +- ...sdf_false_2_usda-ff99772c18e0997c-1.digest | 2 +- ...sdf_false_3_usda-8c8e2079502f800d-1.digest | 2 +- ...sdf_false_4_usda-76914e768885b3e6-1.digest | 2 +- ...ght_false_1_usda-7fde13de0abc769b-1.digest | 2 +- ...ght_false_2_usda-58c418a757f93b46-1.digest | 2 +- ...ght_false_3_usda-0e4d0c5d73f098b1-1.digest | 2 +- ...ght_false_4_usda-db6287c220d2329c-1.digest | 2 +- ...ight_true_1_usda-da25e07b06740551-1.digest | 2 +- ...ight_true_2_usda-ddbe5a176c05cba2-1.digest | 2 +- ...ight_true_3_usda-06ab9cf1d9f5303b-1.digest | 2 +- ...ight_true_4_usda-bae142df171828c4-1.digest | 2 +- ...wer_false_1_usda-8463e7fa7c167c7f-1.digest | 2 +- ...wer_false_2_usda-dcf0f8d60a6084ce-1.digest | 2 +- ...wer_false_3_usda-fedffe90ed130071-1.digest | 2 +- ...wer_false_4_usda-654bf9f6d4073ca8-1.digest | 2 +- ...sdf_false_1_usda-5434dbae8c19939f-1.digest | 2 +- ...sdf_false_2_usda-bb9d9ab32ead4e0e-1.digest | 2 +- ...sdf_false_3_usda-edc5ae56976f1ff1-1.digest | 2 +- ...sdf_false_4_usda-b2e4ed7db6e6d9c8-1.digest | 2 +- ...ght_false_1_usda-03a3c8316f39e87b-1.digest | 2 +- ...ght_false_2_usda-33306f5e5e7489a0-1.digest | 2 +- ...ght_false_3_usda-d3cf26f624795805-1.digest | 2 +- ...ght_false_4_usda-bc3c2cc49389e192-1.digest | 2 +- ...ight_true_1_usda-c5cb6d9f35a09a41-1.digest | 2 +- ...ight_true_2_usda-4db04417a2f553bc-1.digest | 2 +- ...ight_true_3_usda-8962360ec726337b-1.digest | 2 +- ...ight_true_4_usda-704837282362091e-1.digest | 2 +- ...wer_false_1_usda-b16be3e51935cdad-1.digest | 2 +- ...wer_false_2_usda-9bd601062d2922a2-1.digest | 2 +- ...wer_false_3_usda-af38f2deac1db5db-1.digest | 2 +- ...wer_false_4_usda-e07f6fc2b4bb4c68-1.digest | 2 +- ...var_light_1_usda-950756ddd9a80314-1.digest | 2 +- ...var_light_2_usda-6aede4cf281248af-1.digest | 2 +- ...var_power_1_usda-712adb9891f33818-1.digest | 2 +- ...var_power_2_usda-ccbbda539b6109ff-1.digest | 2 +- .../hair_usda-541c95fb5b2e8895-1.digest | 2 +- .../hair_usda-541c95fb5b2e8895-2.digest | 2 +- .../hair_usda-65dd84de0e473f00-1.digest | 2 +- ...r_variation_usda-4ab3c7f511466a98-1.digest | 2 +- ...r_variation_usda-921fbdca7fd9bc69-1.digest | 2 +- ...r_variation_usda-921fbdca7fd9bc69-2.digest | 2 +- ...r_variation_usda-aa2b773ff3d2e5c2-1.digest | 2 +- ...rce_classes_usda-a9259268854e750e-1.digest | 2 +- .../hidden_usda-9a2924a818f3fb98-1.digest | 2 +- ..._zero_scale_usda-a4193f9a6324f7d0-1.digest | 2 +- .../high_bits_usda-276acbda2859c899-1.digest | 2 +- .../holdout_usda-fcfa139ef12785fd-1.digest | 2 +- ...houdini_var_usda-c716d987aba001e4-1.digest | 2 +- .../huge_blur_usda-2cc6d64af71f20b3-1.digest | 2 +- ...huge_kernel_usda-a515683f6e1b404a-1.digest | 2 +- .../ies_light_usda-9afaa60e27f14926-1.digest | 2 +- ...ored_curves_usda-d8234281140f3b7d-1.digest | 2 +- ...nored_light_usda-26909110fbe92be4-1.digest | 2 +- ...d_prototype_usda-f94b3942ea16e527-1.digest | 2 +- ...ored_volume_usda-32845f161c65c4a9-1.digest | 2 +- ...t_Capsule_1_usda-751cd07d979a4d81-1.digest | 2 +- ...cit_Capsule_usda-3ad3fb7cdd9a1902-1.digest | 2 +- ...plicit_Cone_usda-024380e72d6d34a7-1.digest | 2 +- ...plicit_Cube_usda-4bb89de99da949b6-1.digest | 2 +- ..._Cylinder_1_usda-9964aa85919856f9-1.digest | 2 +- ...it_Cylinder_usda-bee0e5841f0acf39-1.digest | 2 +- ...licit_Plane_usda-77823213740cc6c2-1.digest | 2 +- ...t_displaced_usda-395a4477685bb193-1.digest | 2 +- ...licit_level_usda-e441bb0a849304c5-1.digest | 2 +- ...plicit_lone_usda-8c73fbc5c6234554-1.digest | 2 +- ...icit_moving_usda-2b9c98847f8ffdc5-1.digest | 2 +- ..._prototypes_usda-754c2247d4091e78-1.digest | 2 +- ...icit_scaled_usda-5918722b7152b9f3-1.digest | 2 +- ...cit_shading_usda-b3809be67678f20f-1.digest | 2 +- ...icit_shapes_usda-180b516d9253da53-1.digest | 2 +- ...icit_shapes_usda-180b516d9253da53-2.digest | 2 +- ...icit_shapes_usda-30852d50af72eb96-1.digest | 2 +- ...icit_shapes_usda-41169aa3c303f69f-1.digest | 2 +- ...licit_twins_usda-925c195d8a7f5a5c-1.digest | 2 +- ...mport_plain_usda-37ba4c8eb30aefb6-1.digest | 2 +- .../import_usda-a114cca514b1e2e9-1.digest | 2 +- ...rted_motion_usda-98baf8cfec165d96-1.digest | 2 +- .../inf_light_usda-fd28273b2a9da24d-1.digest | 2 +- .../infinite_usda-6e15312bf55ca148-1.digest | 2 +- .../inherits_usda-946600d02d8755e0-1.digest | 2 +- .../input_usda-39af7a7dd8ccc053-1.digest | 2 +- ...nced_curves_usda-4486def29adfc50e-1.digest | 2 +- ...cer_primvar_usda-6d97a3b7a8db1d2d-1.digest | 2 +- ...reset_child_usda-327d10b931ee4635-1.digest | 2 +- ..._root_xform_usda-824b2432496695f2-1.digest | 2 +- .../instancer_usda-24b4955bd587b7fc-1.digest | 2 +- .../instancer_usda-b5460e79ed990f95-1.digest | 2 +- .../instancer_usda-c51fcdc4de98cc87-1.digest | 2 +- .../instances_usda-0e86a3f92c8bc5d3-1.digest | 2 +- .../instances_usda-dd5f31a7c4515489-1.digest | 2 +- .../instancing_usda-046f52337fabb1a4-1.digest | 2 +- .../instancing_usda-1b870942bf28e01d-1.digest | 2 +- .../instancing_usda-37ed91a3e61701fe-1.digest | 2 +- .../instancing_usda-3c5cc93e1666982d-1.digest | 2 +- .../instancing_usda-3c5cc93e1666982d-2.digest | 2 +- .../instancing_usda-4c123aa1f400f41f-1.digest | 2 +- .../instancing_usda-4d15fe3f4f1fa7d2-1.digest | 2 +- .../instancing_usda-5aa111b242f25730-1.digest | 2 +- .../instancing_usda-8afb1b2336afd39d-1.digest | 2 +- .../instancing_usda-8afb1b2336afd39d-2.digest | 2 +- .../instancing_usda-bee611607d893be7-1.digest | 2 +- .../instancing_usda-c51a6942a8212cb9-1.digest | 2 +- ...stantaneous_usda-3e155a939a6cc6cd-1.digest | 2 +- .../int_id_usda-520c4dc179153d4f-1.digest | 2 +- ...light_sizes_usda-9c386d5a319bfe23-1.digest | 2 +- .../invalid_usda-d575a3c70872d8d6-1.digest | 2 +- ...ariant_0_05_usda-adfdce9489c2fe04-1.digest | 2 +- ...invariant_0_usda-4ea5be31deb326f6-1.digest | 2 +- .../leaf_usda-be27c43b70391f12-1.digest | 2 +- .../leaf_usda-be27c43b70391f12-2.digest | 2 +- .../leaf_usda-c026046b07c5fbb8-1.digest | 2 +- .../leaf_usda-d886c4e05035aaa7-1.digest | 2 +- .../leaf_usda-e14e254e24f8bc2e-1.digest | 2 +- ...anded_baked_usda-9363c3fa472cdcde-1.digest | 2 +- ...d_instanced_usda-f9d8d0fbabf00605-1.digest | 2 +- ...ed_mirrored_usda-b73e3433c9e6bccf-1.digest | 2 +- ..._subdivided_usda-bd37842befe48e18-1.digest | 2 +- ..._handed_tri_usda-ba795e2eb1c56aef-1.digest | 2 +- .../lens_cm_usda-73dbd961c243712e-1.digest | 2 +- .../lens_fstop_usda-da4d1cf71564d625-1.digest | 2 +- .../lens_m_usda-983a5a6e5f39e694-1.digest | 2 +- ..._unauthored_usda-24a6800a9f22c131-1.digest | 2 +- .../level_two_usda-9004a66abae4e107-1.digest | 2 +- ...ght_linking_usda-0a7e4d5176bc2b33-1.digest | 2 +- ...ght_linking_usda-0a7e4d5176bc2b33-2.digest | 2 +- ...ght_linking_usda-0df578a9208fb7cf-1.digest | 2 +- ...ght_linking_usda-84012730e231d407-1.digest | 2 +- ...ght_linking_usda-a83ba5cc073d5f22-1.digest | 2 +- ...les_default_usda-6242aa388fa102a1-1.digest | 2 +- ...amples_huge_usda-128d1881332e6fff-1.digest | 2 +- ...amples_zero_usda-516355bd0568c89e-1.digest | 2 +- ..._visibility_usda-01977678b305c007-1.digest | 2 +- ..._visibility_usda-01977678b305c007-2.digest | 2 +- ..._visibility_usda-2b8ba6eb3030d1ec-1.digest | 2 +- ..._visibility_usda-3ea0aa2435326544-1.digest | 2 +- ...d_bsdf_1024_usda-00c8472dfa9bd263-1.digest | 2 +- ...ked_bsdf_16_usda-f488614962bd77c6-1.digest | 2 +- ..._light_1024_usda-42bcc0ce33e153f3-1.digest | 2 +- ...ed_light_16_usda-94637210b45ab59a-1.digest | 2 +- ...ed_power_16_usda-eebb6febe29b133c-1.digest | 2 +- .../listing_usda-3efcced39a72eaa9-1.digest | 2 +- .../listing_usda-488ac4c542f2b8d8-1.digest | 2 +- .../listing_usda-f960655cad0d43f4-1.digest | 2 +- .../listing_usda-fd4c266bcdd26a9c-1.digest | 2 +- .../live_cube_usda-4cf5f22f20fef745-1.digest | 2 +- ...der_unnamed_usda-7b7e7a1709504194-1.digest | 2 +- ...ve_cylinder_usda-07218dcdd495ca91-1.digest | 2 +- ...moted_light_usda-16477f127e75566e-1.digest | 2 +- ...moted_light_usda-16477f127e75566e-2.digest | 2 +- ...dicing_none_usda-fde7cae55b0adc90-1.digest | 2 +- ...ng_retarget_usda-682d6c0fca1a4c12-1.digest | 2 +- ...live_dicing_usda-8bb261767fad5d1d-1.digest | 2 +- ...live_dicing_usda-c3c9ffc84677f809-1.digest | 2 +- ...ng_adaptive_usda-264a6722f87e2488-1.digest | 2 +- ...ive_framing_usda-21ec0fb4edc0e3e0-1.digest | 2 +- ...ive_framing_usda-6d7a1bccee33c035-1.digest | 2 +- ...ive_framing_usda-6d7a1bccee33c035-2.digest | 2 +- ...ar_warnings_usda-bb9c911d0ed38f94-1.digest | 2 +- ...rs_retarget_usda-59fb6cd49cb76e6b-1.digest | 2 +- ...rs_retarget_usda-f4742b8648291059-1.digest | 2 +- ...et_adaptive_usda-df276969e17c075b-1.digest | 2 +- ...arget_diced_usda-68dfaa2802aa4ba4-1.digest | 2 +- ...arget_diced_usda-91fe8df867e8f0cc-1.digest | 2 +- ...arget_empty_usda-6f96b70b05bd5238-1.digest | 2 +- ...etarget_rig_usda-c517fabd0cfe3025-1.digest | 2 +- ...target_slow_usda-abb2313197b2f2f6-1.digest | 2 +- ...get_unnamed_usda-11fb9c8dd8a6685f-1.digest | 2 +- ...ve_retarget_usda-443a3934a068f8e2-1.digest | 2 +- ...ve_retarget_usda-de7ad4a8e0eab00a-1.digest | 2 +- ...ve_retarget_usda-de7ad4a8e0eab00a-2.digest | 2 +- ...ve_retarget_usda-de7ad4a8e0eab00a-3.digest | 2 +- ...ve_retarget_usda-de7ad4a8e0eab00a-4.digest | 2 +- .../live_usda-99c94ab20e276ccd-1.digest | 2 +- .../live_usda-99c94ab20e276ccd-2.digest | 2 +- .../live_usda-b329c13621e10111-1.digest | 2 +- .../lookdev_usda-168fe99d44c7fbd8-1.digest | 2 +- .../lookdev_usda-17804c08eb02feff-1.digest | 2 +- .../lookdev_usda-17804c08eb02feff-2.digest | 2 +- .../lookdev_usda-2df588e196076e2d-1.digest | 2 +- .../lookdev_usda-37661541bc721de0-1.digest | 2 +- .../lookdev_usda-451cadfaa7f8e528-1.digest | 2 +- .../lookdev_usda-4e0b53f3e573c0d5-1.digest | 2 +- .../lookdev_usda-5b22641b5a20aa26-1.digest | 2 +- .../lookdev_usda-5b22641b5a20aa26-2.digest | 2 +- .../lookdev_usda-619dbb27dff03edb-1.digest | 2 +- .../lookdev_usda-6332af41b2f94037-1.digest | 2 +- .../lookdev_usda-66e64ab7da1be7a8-1.digest | 2 +- .../lookdev_usda-675a4c56d7da2e1a-1.digest | 2 +- .../lookdev_usda-6a91390c6e2e8f32-1.digest | 2 +- .../lookdev_usda-75d1c7f90fc366b6-1.digest | 2 +- .../lookdev_usda-7ce0ae0f49d396d8-1.digest | 2 +- .../lookdev_usda-7ed4ae42b2f80bd6-1.digest | 2 +- .../lookdev_usda-83b2bc40e66e8d90-1.digest | 2 +- .../lookdev_usda-84687138ca39f6d2-1.digest | 2 +- .../lookdev_usda-889e2ebeaf6f6f43-1.digest | 2 +- .../lookdev_usda-8bccb97f1cea35ce-1.digest | 2 +- .../lookdev_usda-8bccb97f1cea35ce-2.digest | 2 +- .../lookdev_usda-8e1d5d176c63c934-1.digest | 2 +- .../lookdev_usda-96a10d1a1b799db6-1.digest | 2 +- .../lookdev_usda-96b32b9e68a1ec9a-1.digest | 2 +- .../lookdev_usda-9b73e2f3385f85a2-1.digest | 2 +- .../lookdev_usda-a96810dec00d46d8-1.digest | 2 +- .../lookdev_usda-ad6a0ecf2cf3c658-1.digest | 2 +- .../lookdev_usda-b139810cbe0eac4c-1.digest | 2 +- .../lookdev_usda-b1d2ea509cf7ee23-1.digest | 2 +- .../lookdev_usda-b23ccdb4706d3d98-1.digest | 2 +- .../lookdev_usda-bdef936e454d02c5-1.digest | 2 +- .../lookdev_usda-c088c49aaf559905-1.digest | 2 +- .../lookdev_usda-c8874f17309d40f1-1.digest | 2 +- .../lookdev_usda-cab3bf60bc31d2f7-1.digest | 2 +- .../lookdev_usda-cae9785463ecddf6-1.digest | 2 +- .../lookdev_usda-d07bf630611d13b0-1.digest | 2 +- .../lookdev_usda-d977f122a6f754f5-1.digest | 2 +- .../lookdev_usda-da5095c5387fc6d5-1.digest | 2 +- .../lookdev_usda-ddd9a472681fe394-1.digest | 2 +- .../lookdev_usda-e6376a73c80d838f-1.digest | 2 +- .../lookdev_usda-f0ebb00d074c9c96-1.digest | 2 +- .../lookdev_usda-f374e5a4458830ba-1.digest | 2 +- .../lookdev_usda-f374e5a4458830ba-2.digest | 2 +- .../lookdev_usda-f4c4e13661091485-1.digest | 2 +- .../lookdev_usda-fa7c6612a51b87e4-1.digest | 2 +- .../lookdev_usda-fad17720e6382b8f-1.digest | 2 +- .../loop_plain_usda-47275a5a5923eb53-1.digest | 2 +- .../loop_ptex_usda-305da98d6891c0e8-1.digest | 2 +- ...too_complex_usda-d110af4b6d4f2169-1.digest | 2 +- ...pe_variance_usda-eb6b4998eed83db2-1.digest | 2 +- .../lpe_vars_usda-4a1166013a93c744-1.digest | 2 +- .../malformed_usda-6eca12ea39b96a60-1.digest | 2 +- ...many_lights_usda-2896f3594596fed9-1.digest | 2 +- ...many_lights_usda-492e76bd4d2bdc51-1.digest | 2 +- ...many_lights_usda-492e76bd4d2bdc51-2.digest | 2 +- .../marks_usda-92136ff2d6b2d34c-1.digest | 2 +- .../masks_usda-0b1d6cd46ef5aa7b-1.digest | 2 +- .../mass_spike_usda-41c01d82edccd4ad-1.digest | 2 +- .../mass_spike_usda-41c01d82edccd4ad-2.digest | 2 +- .../mass_spike_usda-dee5e21f531bb6c7-1.digest | 2 +- ...rialx_basic_usda-2113b612a3c1746f-1.digest | 2 +- ...rialx_basic_usda-2113b612a3c1746f-2.digest | 2 +- ...rialx_basic_usda-47f44502b8b66093-1.digest | 2 +- ...rialx_basic_usda-5e3c6402db738e98-1.digest | 2 +- ...rialx_basic_usda-605f278bcaf83bcb-1.digest | 2 +- ...rialx_basic_usda-7efe0aff05c6d47a-1.digest | 2 +- ...rialx_basic_usda-ee87ad7ab34333f5-1.digest | 2 +- ...ialx_cutout_usda-38de4138760ea72d-1.digest | 2 +- ...ialx_cutout_usda-38de4138760ea72d-2.digest | 2 +- ...ialx_cutout_usda-ae65df7de0c507fa-1.digest | 2 +- ...lx_emissive_usda-37e54478999af2b3-1.digest | 2 +- ...lx_emissive_usda-37e54478999af2b3-2.digest | 2 +- ...lx_emissive_usda-3c55abed0c2329af-1.digest | 2 +- ...lx_emissive_usda-746e6884e4aa1a13-1.digest | 2 +- ...lx_emissive_usda-8dd82f7591e605f2-1.digest | 2 +- ...erialx_lion_usda-a62e7b45a5b76dea-1.digest | 43 ----------- ...erialx_lion_usda-f3e8e29236c1c73f-1.digest | 2 +- ...erialx_lion_usda-f3e8e29236c1c73f-2.digest | 2 +- ...lx_showcase_usda-1e9e0f7089dbbfd5-1.digest | 73 ------------------- ...lx_showcase_usda-3aaa54bfab01739a-1.digest | 2 +- ...lx_showcase_usda-3aaa54bfab01739a-2.digest | 2 +- ..._subsurface_usda-218ab79fb5de55b5-1.digest | 2 +- ..._subsurface_usda-3b07bee1fa621b95-1.digest | 2 +- ..._subsurface_usda-3b07bee1fa621b95-2.digest | 2 +- ...lx_surfaces_usda-b446db21b7cb309b-1.digest | 2 +- ...lx_surfaces_usda-b446db21b7cb309b-2.digest | 2 +- ...lx_surfaces_usda-ca1ad78e541d4d41-1.digest | 2 +- ...ialx_teapot_usda-2d8b448afc9a82e2-1.digest | 2 +- ...ialx_teapot_usda-2d8b448afc9a82e2-2.digest | 2 +- ...ialx_teapot_usda-6ea1bea03dbe6c0d-1.digest | 49 ------------- ...ialx_volume_usda-0d615ee9e93f873e-1.digest | 2 +- ...ialx_volume_usda-dbd96c41f0cfcd9f-1.digest | 2 +- ...ialx_volume_usda-f4f640ec1f11b3d3-1.digest | 2 +- ...ialx_volume_usda-f4f640ec1f11b3d3-2.digest | 2 +- .../matrix_usda-9dd65c424c31f5e5-1.digest | 2 +- .../matte_dome_usda-942a3b1e6f8ce42b-1.digest | 2 +- .../matte_dome_usda-e3baadd4a9e3ffb7-1.digest | 2 +- ...th_negative_usda-eec4c585057974f1-1.digest | 2 +- ...x_depth_one_usda-0b2d301b9905817a-1.digest | 2 +- ..._depth_zero_usda-931745fbe0c2c985-1.digest | 2 +- .../membership_usda-e44fc1429c4b92d1-1.digest | 2 +- ...esh_blurred_usda-13d48869156e4433-1.digest | 2 +- .../mesh_both_usda-90fff2587206dcbe-1.digest | 2 +- .../mesh_sharp_usda-98679e56cacbfa24-1.digest | 2 +- .../mesh_track_usda-2da67447ace68ea3-1.digest | 2 +- ...0_1_power_1_usda-d5e924c1e43088a2-1.digest | 2 +- ...1_0_power_1_usda-0a224c171445c02a-1.digest | 2 +- ...1_1_power_1_usda-3e1ca1268dde29a1-1.digest | 2 +- .../mirror_usda-e5687a44290234b9-1.digest | 2 +- ...smatch_same_usda-36f547d4088a73c8-1.digest | 2 +- .../mismatch_usda-4938acb7109c81b3-1.digest | 2 +- .../mismatch_usda-e42c92f5d05f1fcf-1.digest | 2 +- .../missing_usda-048983dc2b7e8f66-1.digest | 2 +- ...ed_hair_ref_usda-1bf6615be167a70b-1.digest | 2 +- .../mixed_hair_usda-e643846eb6c6d950-1.digest | 2 +- .../motionblur_usda-2ad099074d244fc2-1.digest | 2 +- .../motionblur_usda-f2666f3e50d41453-1.digest | 2 +- .../motionblur_usda-f2666f3e50d41453-2.digest | 2 +- .../motionblur_usda-ff0d49c1a505d497-1.digest | 2 +- ...tor_aliases_usda-8852d8dcf38ecf0d-1.digest | 2 +- ...tor_blurred_usda-6d69c20d22e19877-1.digest | 2 +- ...ector_types_usda-d2a10e1c91de57de-1.digest | 2 +- ...otionvector_usda-0097c4dc99684b31-1.digest | 2 +- ...otionvector_usda-2921a3a583a7af01-1.digest | 2 +- ...otionvector_usda-37a40f3b6ac9aeab-1.digest | 2 +- ...otionvector_usda-37a40f3b6ac9aeab-2.digest | 2 +- ...otionvector_usda-43ed7e424bbaa4f7-1.digest | 2 +- ...otionvector_usda-6dec65e3aa55dc9d-1.digest | 2 +- ...otionvector_usda-c5f34f1e623349ba-1.digest | 2 +- .../multiply_usda-8736676f00161943-1.digest | 2 +- ...named_chart_usda-67761c5ec52139aa-1.digest | 2 +- .../named_usda-455967a7b376e998-1.digest | 2 +- .../named_usda-caf35125dfbdc7e1-1.digest | 2 +- .../named_usda-d1e9bde789e7233a-1.digest | 2 +- ...nan_shaping_usda-9e699df2d0518cc0-1.digest | 2 +- .../native_usda-48df729899939992-1.digest | 2 +- .../native_usda-aa00109a0de726bd-1.digest | 2 +- .../near_far_usda-378c724af4dad1fb-1.digest | 2 +- .../nearest_usda-01bca6fa7666b1f3-1.digest | 2 +- .../nearest_usda-6471e7e6d484d155-1.digest | 2 +- ...ive_min_spp_usda-f445ea0383fc1875-1.digest | 2 +- ...sted_direct_usda-e25d7da2b966c023-1.digest | 2 +- ...sted_hidden_usda-0ea71f61bc0a58d6-1.digest | 2 +- ..._root_xform_usda-95a505e1fa209779-1.digest | 2 +- ..._instancing_usda-39f09e1523375345-1.digest | 2 +- ..._instancing_usda-4b3ca108154f4935-1.digest | 2 +- ..._instancing_usda-4b3ca108154f4935-2.digest | 2 +- ..._instancing_usda-915b43a7369963b2-1.digest | 2 +- ..._instancing_usda-df6640aca1d2b235-1.digest | 2 +- ..._instancing_usda-e37604ffa926df8a-1.digest | 2 +- ..._instancing_usda-fda6a6f1c2f5b28e-1.digest | 2 +- ..._instancing_usda-fff87a8b52b8e069-1.digest | 2 +- ...ot_composed_usda-c0a020bf777d3f88-1.digest | 2 +- .../nested_one_usda-bc56793ff0720fdc-1.digest | 2 +- ...ted_scatter_usda-4724aa4d383273d2-1.digest | 2 +- ...d_translate_usda-31c01e41ce7e4eb3-1.digest | 2 +- .../nested_two_usda-0fad6a8ff7f8520a-1.digest | 2 +- .../nested_usda-dbe832b66063cf24-1.digest | 2 +- .../neural_usda-57a514ca820ab02c-1.digest | 2 +- .../ngon_usda-573da62ad402526c-1.digest | 2 +- ...form_lights_usda-181564afd75bc784-1.digest | 2 +- .../no_camera_usda-08eaf78e1847bdbe-1.digest | 2 +- .../no_camera_usda-2a7bfc7853b270c5-1.digest | 2 +- .../no_camera_usda-5507d24332d7f188-1.digest | 2 +- .../no_camera_usda-758b683c20791ceb-1.digest | 2 +- .../no_camera_usda-ac160dc389201eeb-1.digest | 2 +- .../no_camera_usda-af24412e492e9147-1.digest | 2 +- .../no_camera_usda-f2e322198f5a52d6-1.digest | 2 +- .../no_frame_usda-06c9736b1ee41555-1.digest | 2 +- .../no_kernel_usda-250e185a51aff6c5-1.digest | 2 +- ...no_products_usda-b2f39aa3f795faa2-1.digest | 2 +- ...ar_authored_usda-7c630c4e6b264297-1.digest | 2 +- ...no_var_bare_usda-0f6834e5d7411efd-1.digest | 2 +- .../non_finite_usda-b38223b4cd532638-1.digest | 2 +- .../none_usda-3500dce365c976fb-1.digest | 2 +- .../none_usda-8ca1039ef6a1af13-1.digest | 2 +- .../none_usda-b2626a5c29f30d06-1.digest | 2 +- ...ff_cylinder_usda-cad3a8a0bec58113-1.digest | 2 +- ...rm_off_disk_usda-d4ac49b171982a5d-1.digest | 2 +- ...rm_off_rect_usda-7ca0616652c56bb1-1.digest | 2 +- ..._off_sphere_usda-0abd6bba11da485f-1.digest | 2 +- ...on_cylinder_usda-f3dd54fd2e0d1929-1.digest | 2 +- ...orm_on_disk_usda-80da988892a29bff-1.digest | 2 +- ...orm_on_rect_usda-0fb0cae5dd5fa17f-1.digest | 2 +- ...m_on_sphere_usda-a4e34a4e4682e3b5-1.digest | 2 +- .../normals_usda-eb98f1adc17331b3-1.digest | 2 +- .../nothing_usda-05a76e84b550abac-1.digest | 2 +- ...nurbs_clean_usda-362cea70cf67e6cc-1.digest | 2 +- ...nurbs_empty_usda-af6c06cf5e078823-1.digest | 2 +- .../nurbs_full_usda-ee811943aa635f36-1.digest | 2 +- .../nurbs_half_usda-26730abe8461e1ee-1.digest | 2 +- ...s_malformed_usda-edaffca17525a0db-1.digest | 2 +- ...rbs_refused_usda-2cd12f986b06b3a5-1.digest | 2 +- .../on_camera_usda-0e1653405c0b04b8-1.digest | 2 +- ...once_direct_usda-87536582b2725522-1.digest | 2 +- ...e_instanced_usda-cfe757ff670cf1a4-1.digest | 2 +- .../opacity_usda-18ffcc13eb92677a-1.digest | 2 +- ...br_showcase_usda-0f7c1eaf15ef6726-1.digest | 2 +- ...br_showcase_usda-1dca66ecebc9d919-1.digest | 2 +- ...br_showcase_usda-1dca66ecebc9d919-2.digest | 2 +- ...br_showcase_usda-501b45e8f6131d21-1.digest | 2 +- .../openpbr_usda-876563da4aa0a57a-1.digest | 2 +- ...her_lookdev_usda-31ecdc884f3fb603-1.digest | 2 +- .../other_op_usda-7a2444b60f22a636-1.digest | 2 +- .../overflow_usda-c7dbcb2b55d9a450-1.digest | 2 +- .../override_usda-b67a66c0201ba59a-1.digest | 2 +- .../overrides_usda-e08388bc2f33304d-1.digest | 2 +- ...artial_link_usda-0b6b5eacc86557dc-1.digest | 2 +- ...ass_payload_usda-08d0e4051511c08a-1.digest | 2 +- ..._dome_twice_usda-0b80861de0309489-1.digest | 2 +- ..._dome_twice_usda-bdae79d96585e6fd-1.digest | 2 +- ..._dome_twice_usda-c05e0c1783414e94-1.digest | 2 +- ..._dome_twice_usda-e9d62fba57fc58f7-1.digest | 2 +- ...den_in_back_usda-5e69798956b67766-1.digest | 2 +- ...den_in_back_usda-5e69798956b67766-2.digest | 2 +- ...den_in_back_usda-ad65d77e744f59b2-1.digest | 2 +- ...den_in_back_usda-ad65d77e744f59b2-2.digest | 2 +- ...den_in_back_usda-e4f2c0c97dbe1a55-1.digest | 2 +- ...den_in_back_usda-e4f2c0c97dbe1a55-2.digest | 2 +- .../passes_usda-562a5b3a04949a47-1.digest | 2 +- .../passes_usda-aaa6ef1b16e7d6b6-1.digest | 2 +- ...load_camera_usda-ff33ccc1b50862a6-1.digest | 2 +- ...yload_links_usda-f941f0e5247354e6-1.digest | 2 +- ...photometric_usda-644b1d1ebbe4cb72-1.digest | 2 +- ..._unauthored_usda-ecde60dead7180c2-1.digest | 2 +- ...inhole_zero_usda-9f676d1852dc7168-1.digest | 2 +- ...pivot_stack_usda-eabcdb11552ea0a9-1.digest | 2 +- ...ixel_filter_usda-c618794e70f5ffe3-1.digest | 2 +- .../place_once_usda-66a0c16b42b4539e-1.digest | 2 +- ...place_twice_usda-c4ce4deb59d3727f-1.digest | 2 +- .../placed_usda-000d21c7a8ef61e5-1.digest | 2 +- .../placed_usda-0ba3af4ffa595294-1.digest | 2 +- .../placed_usda-503a8ea6d52670c0-1.digest | 2 +- .../placed_usda-63f0ce074fafa44d-1.digest | 2 +- .../placed_usda-6fa96be933bc04d8-1.digest | 2 +- .../placed_usda-7ad6f5aa95ba8499-1.digest | 2 +- .../placed_usda-7c35981b427daf53-1.digest | 2 +- .../placed_usda-7c35981b427daf53-2.digest | 2 +- .../placed_usda-85cdaaa611ddcfb8-1.digest | 2 +- .../placed_usda-94944664ab7e307d-1.digest | 2 +- .../placed_usda-97fbc0f3fbe2c018-1.digest | 2 +- .../placed_usda-b9e166293d4eb014-1.digest | 2 +- .../placed_usda-c1f420d2f8074d9e-1.digest | 2 +- .../placed_usda-c1f420d2f8074d9e-2.digest | 2 +- .../placed_usda-c1f420d2f8074d9e-3.digest | 2 +- .../placed_usda-c316df83883a2080-1.digest | 2 +- .../placed_usda-d17077acbffaca45-1.digest | 2 +- .../placed_usda-d4ecee5c0312cf96-1.digest | 2 +- .../placed_usda-dc7b9c4f6886cafa-1.digest | 2 +- .../placed_usda-f5c13f6f8bb66ab5-1.digest | 2 +- .../placements_usda-275bfd0cb4688e5d-1.digest | 2 +- .../plane_usda-e5035e45dccaf24c-1.digest | 2 +- .../planes_usda-b941e449ca4a031a-1.digest | 2 +- ..._0_1_bsdf_1_usda-bd800d4fcb330be2-1.digest | 2 +- ...0_1_light_1_usda-a03210c9831fba26-1.digest | 2 +- ...0_1_power_1_usda-482542fae980bf52-1.digest | 2 +- ...25_3_bsdf_1_usda-36e5cb22b2676a41-1.digest | 2 +- ...25_3_bsdf_1_usda-d38160b2be22e70c-1.digest | 2 +- ...25_3_bsdf_2_usda-78a7411a4858bc6b-1.digest | 2 +- ...25_3_bsdf_3_usda-f81a4b161903a8f2-1.digest | 2 +- ...25_3_bsdf_4_usda-87a5b5e826a38a61-1.digest | 2 +- ...5_3_light_1_usda-135d2f963daf2551-1.digest | 2 +- ...5_3_light_1_usda-cf1431b5a2f0391c-1.digest | 2 +- ...5_3_light_2_usda-c1e873bea9886ca9-1.digest | 2 +- ...5_3_light_3_usda-0dc30546dc7303fa-1.digest | 2 +- ...5_3_light_4_usda-306836af9dcd76c7-1.digest | 2 +- ...5_3_power_1_usda-aeace9cae6e95285-1.digest | 2 +- ...5_3_power_1_usda-f2feafce67b9cc18-1.digest | 2 +- ...5_3_power_2_usda-9558069a3a6cb6c1-1.digest | 2 +- ...5_3_power_3_usda-848bb8619ed104b2-1.digest | 2 +- ...5_3_power_4_usda-13781e826c793feb-1.digest | 2 +- ..._1_0_bsdf_1_usda-7392b4eece3d4ffa-1.digest | 2 +- ...1_0_light_1_usda-e29b88fff3b5eede-1.digest | 2 +- ...1_0_power_1_usda-db7be84c0c913b8a-1.digest | 2 +- ..._1_1_bsdf_1_usda-1a655ee8a457375b-1.digest | 2 +- ...1_1_light_1_usda-d608d0096c4c9293-1.digest | 2 +- ...1_1_power_1_usda-dad1612ee907e657-1.digest | 2 +- .../precomp_C_usda-ceae07fa5339bc4e-1.digest | 2 +- ..._look_final_usda-46848a8dcf6250e4-1.digest | 2 +- ...recomp_none_usda-749e88768dbe99b1-1.digest | 2 +- .../precomp_usda-33f481698c3a3ce7-1.digest | 2 +- .../precomp_usda-4339ddf5a07dea17-1.digest | 2 +- .../precomp_usda-886c8d8bef125a6d-1.digest | 2 +- .../precomp_usda-886c8d8bef125a6d-2.digest | 2 +- .../precomp_usda-9c591dbe4a6a2374-1.digest | 2 +- .../precomp_usda-d9d1e77cdf9ce71d-1.digest | 2 +- .../precomp_usda-e1a87b662c5109e8-1.digest | 2 +- .../precomp_usda-e28059e8e7dd2fb9-1.digest | 2 +- ...eview_plain_usda-56c5917475bdaa40-1.digest | 2 +- ...view_tagged_usda-21171eef0f915c9d-1.digest | 2 +- .../preview_usda-6fa33b5d399ba28d-1.digest | 2 +- ...rimvar_aovs_usda-1ceba2b5cd7da4fe-1.digest | 2 +- ...rimvar_aovs_usda-b5e76a14b4ccb3db-1.digest | 2 +- ...rimvar_aovs_usda-b5e76a14b4ccb3db-2.digest | 2 +- ...rimvar_aovs_usda-e0e162475fa824e5-1.digest | 2 +- ...ultisampled_usda-774c86244886ea5e-1.digest | 2 +- ...rimvar_vars_usda-f6787f7fdf1eebf3-1.digest | 2 +- ..._par_square_usda-6cb0d1de356675bd-1.digest | 2 +- ...al_par_wide_usda-e65d9f21a141c052-1.digest | 2 +- .../products_usda-e7ced79f762e48ff-1.digest | 2 +- .../prune_usda-3bf02286156e9774-1.digest | 2 +- .../prune_usda-d1a6b2f2900a3fc1-1.digest | 2 +- .../prune_usda-f5ce85341275f544-1.digest | 2 +- .../ptex_phase_usda-9d5b92d8c597babb-1.digest | 2 +- .../ptex_quads_usda-c2d1b0153068d224-1.digest | 2 +- .../ptex_quads_usda-ded3ea05445ff449-1.digest | 2 +- .../ptex_quads_usda-ded3ea05445ff449-2.digest | 2 +- ...se_bindings_usda-08709bdb4f451e59-1.digest | 2 +- ...se_bindings_usda-08709bdb4f451e59-2.digest | 2 +- ...se_bindings_usda-856ac5cdf233a681-1.digest | 2 +- .../purpose_usda-bf0c2e782a7f7633-1.digest | 2 +- ...xr_displace_usda-3eb2626e4111c003-1.digest | 2 +- ...xr_displace_usda-744b2066d6ee31b4-1.digest | 2 +- ...xr_displace_usda-aa614afb7e46c6eb-1.digest | 2 +- ...xr_displace_usda-aa614afb7e46c6eb-2.digest | 2 +- .../quad_usda-8a80e703a52aec63-1.digest | 2 +- ...uiet_curves_usda-c001d1e165c273d4-1.digest | 2 +- ...quiet_light_usda-c8a2428bb59d472f-1.digest | 2 +- ...t_prototype_usda-4ee6edc155c4ce34-1.digest | 2 +- ...uiet_volume_usda-5e752c5254e3ed36-1.digest | 2 +- .../range_far_usda-4ecb448a88a6c818-1.digest | 2 +- .../range_usda-bc6d3542e7333f02-1.digest | 2 +- .../raw_dome_usda-e8a6497f6f3c05ee-1.digest | 2 +- .../raw_light_usda-ea76f3df9a669477-1.digest | 2 +- ...t_light_far_usda-89364d5e280ec883-1.digest | 2 +- ..._light_near_usda-e8eb7549c9231ec8-1.digest | 2 +- .../rect_light_usda-eadf17e73fc59819-1.digest | 2 +- ...ect_texture_usda-fa043cce9d6338f4-1.digest | 2 +- .../rectlight_usda-3885e18a97e5845d-1.digest | 2 +- .../rectlight_usda-3885e18a97e5845d-2.digest | 2 +- .../rectlight_usda-5482f82d359615b0-1.digest | 2 +- .../rectlight_usda-e2a69198ab36729f-1.digest | 2 +- .../refusals_usda-e2a11260371695e9-1.digest | 2 +- .../refused_usda-0be9300cea6f944b-1.digest | 2 +- ...nder_passes_usda-109738cee49991a5-1.digest | 2 +- ...nder_passes_usda-109738cee49991a5-2.digest | 2 +- ...nder_passes_usda-109738cee49991a5-3.digest | 2 +- ...nder_passes_usda-15787cfcd05d1f32-1.digest | 2 +- ...nder_passes_usda-15787cfcd05d1f32-2.digest | 2 +- ...nder_passes_usda-2eed0231ac063823-1.digest | 2 +- ...nder_passes_usda-5d8d12e685ddd56c-1.digest | 2 +- ...nder_passes_usda-5d8d12e685ddd56c-2.digest | 2 +- ...nder_passes_usda-c03e7c6702e31ad3-1.digest | 2 +- ...nder_passes_usda-f5e51ff2422aa383-1.digest | 2 +- ...nder_passes_usda-f5e51ff2422aa383-2.digest | 2 +- ...nder_passes_usda-f98e72ee422221b6-1.digest | 2 +- ...urce_camera_usda-d46ae988f6d9241c-1.digest | 2 +- ...nder_source_usda-131b801caa122c43-1.digest | 2 +- ...nder_source_usda-749a95594e279116-1.digest | 2 +- ...nder_source_usda-b15267a29d9e4616-1.digest | 2 +- .../reset_disk_usda-6e0b5adab74a3b7a-1.digest | 2 +- ...on_negative_usda-0d18504e846cea31-1.digest | 2 +- ...lution_zero_usda-e3f58678deb9aa30-1.digest | 2 +- .../rest_usda-feaaa720bb9a30d2-1.digest | 2 +- .../root_usda-00dd7b68b86c7168-1.digest | 2 +- .../root_usda-00e8d0d9a2f465b9-1.digest | 2 +- .../root_usda-1ddeac0a2964315c-1.digest | 2 +- .../root_usda-2f86c31117cc8b58-1.digest | 2 +- .../root_usda-43c385d7a2a21d1e-1.digest | 2 +- .../root_usda-4aa136053cd56402-1.digest | 2 +- .../root_usda-4b8c79cf557cf378-1.digest | 2 +- .../root_usda-5042b0d1011805d6-1.digest | 2 +- .../root_usda-5c84bdb62972ba25-1.digest | 2 +- .../root_usda-63552b8e06717f62-1.digest | 2 +- .../root_usda-642eeb8c5780c872-1.digest | 2 +- .../root_usda-65bf0b61fd007f62-1.digest | 2 +- .../root_usda-67d463deb3cd2295-1.digest | 2 +- .../root_usda-7781d1893e2e23fd-1.digest | 2 +- .../root_usda-7eba3de4e6efbf15-1.digest | 2 +- .../root_usda-8099cbe59e22c4ff-1.digest | 2 +- .../root_usda-834306f0b405a977-1.digest | 2 +- .../root_usda-8c6dbffe8bcc7f5d-1.digest | 2 +- .../root_usda-921d5e21a6ec411f-1.digest | 2 +- .../root_usda-9d7d0e6b748bbe2f-1.digest | 2 +- .../root_usda-a0c411ed1048de1a-1.digest | 2 +- .../root_usda-a95c3cfeafbe744e-1.digest | 2 +- .../root_usda-aa094b9d362ee4b9-1.digest | 2 +- .../root_usda-bedb2af78f4c965d-1.digest | 2 +- .../root_usda-bfc3cfdc3fb023a6-1.digest | 2 +- .../root_usda-c51fa0d84e7325f7-1.digest | 2 +- .../root_usda-c6c9d5036fcf5e6d-1.digest | 2 +- .../root_usda-c6c9d5036fcf5e6d-2.digest | 2 +- .../root_usda-c78a3b1a4bb10072-1.digest | 2 +- .../root_usda-cc0a74d0f1a22c6a-1.digest | 2 +- .../root_usda-ccefc9342ef07f81-1.digest | 2 +- .../root_usda-ce726227b7d02261-1.digest | 2 +- .../root_usda-cef90a6ad595b1b4-1.digest | 2 +- .../root_usda-d2c312942e13c754-1.digest | 2 +- .../root_usda-dcc0d192c2504171-1.digest | 2 +- .../root_usda-df9ad38a08c60f60-1.digest | 2 +- .../root_usda-e227181a4d86cdde-1.digest | 2 +- .../root_usda-f3eca4e5e1cfc428-1.digest | 2 +- .../root_usda-f3eca4e5e1cfc428-2.digest | 2 +- .../root_usda-f4c8b443da714046-1.digest | 2 +- .../root_usda-f7df8a9705f0748f-1.digest | 2 +- ...tate_parent_usda-a0cc7d7c189a5bba-1.digest | 2 +- .../s_usda-0006d97926014c1b-1.digest | 2 +- ...ler_default_usda-6c4e4e80bde0b7e5-1.digest | 2 +- ...pler_halton_usda-bcb88dc4e7395359-1.digest | 2 +- ...ler_lattice_usda-83017538d7bb844b-1.digest | 2 +- ...phere_light_usda-2dabd5a9f4c0f98e-1.digest | 2 +- .../scaled_usda-308f36ce00bb3ea8-1.digest | 2 +- .../scatter_usda-08c435043fb988f9-1.digest | 2 +- .../scatter_usda-e62e321631ee4219-1.digest | 2 +- ...color_space_usda-acd6f59e656731c0-1.digest | 2 +- .../settings_usda-58e4038727242b7e-1.digest | 2 +- .../settings_usda-8c1bce0acc8c2aa3-1.digest | 2 +- ...all_blocked_usda-7a4aa722cf803335-1.digest | 2 +- ...ll_excluded_usda-97e5af329ccc1a04-1.digest | 2 +- ...fog_blocked_usda-02a2d7c4f4baa106-1.digest | 2 +- ...og_excluded_usda-0f89cfc00df34be3-1.digest | 2 +- ...shadow_open_usda-43f52a9430038a59-1.digest | 2 +- ...shaped_rect_usda-2479a47c7797a66c-1.digest | 2 +- ...ping_absent_usda-59ac6c6c6ed71036-1.digest | 2 +- ...ing_applied_usda-b1b65b90122da6f7-1.digest | 2 +- ...ared_points_usda-b97fa4512d46ed74-1.digest | 2 +- .../shared_usda-9209cd8eb954e389-1.digest | 2 +- .../shared_usda-b9af19ac4c829153-1.digest | 2 +- .../sharp_usda-9bf0a09f5df9236e-1.digest | 2 +- ...hot_lookdev_usda-13a3dd4f11de39b9-1.digest | 2 +- ...hot_lookdev_usda-27651d6a015b04ab-1.digest | 2 +- ...hot_lookdev_usda-369c0d66f45d39b9-1.digest | 2 +- ...hot_lookdev_usda-6f33035f56110470-1.digest | 2 +- ...hot_lookdev_usda-7003167a7a70688d-1.digest | 2 +- ...hot_lookdev_usda-b26fdb3392c1eac3-1.digest | 2 +- ...hot_lookdev_usda-bc9d89b7ffc91e9b-1.digest | 2 +- ...hot_lookdev_usda-cac7cb8da11a9b99-1.digest | 2 +- ...hot_lookdev_usda-e785595b364179c9-1.digest | 2 +- ...hot_lookdev_usda-e82a725344733609-1.digest | 2 +- ...hot_lookdev_usda-eaf3eeced61f0581-1.digest | 2 +- ...hot_lookdev_usda-f697274eb781e181-1.digest | 2 +- .../shot_usda-bc277892832ac542-1.digest | 2 +- .../sibling_usda-ec40564c6bb9a56d-1.digest | 2 +- .../single_usda-472ac6d4e19ff814-1.digest | 2 +- .../smoke_grid_usda-64f278d7126815e0-1.digest | 2 +- .../smoke_usda-8b219b9873531af2-1.digest | 2 +- .../smoke_usda-c485b4550b7ac78b-1.digest | 2 +- .../smoke_usda-e1b03a141b55e173-1.digest | 2 +- .../smoke_usda-e1b03a141b55e173-2.digest | 2 +- .../snapshot_usda-48d0c43b60eb99bd-1.digest | 2 +- ...re_and_mesh_usda-0e0815d93400ffb5-1.digest | 2 +- ...sphere_both_usda-e02008707f44acbc-1.digest | 2 +- ..._crust_wins_usda-cfeb9931008a7ea6-1.digest | 2 +- ...re_defaults_usda-8b8f061019318106-1.digest | 2 +- ...phere_light_usda-4886e72703716517-1.digest | 2 +- ...iform_scale_usda-4a3711274af76a73-1.digest | 2 +- ...sphere_only_usda-71bd2f6a8198f0b8-1.digest | 2 +- ...e_ri_camera_usda-47b1274be8232510-1.digest | 2 +- ..._tiny_scale_usda-7eb2c16e3f3404d7-1.digest | 2 +- ...phere_track_usda-9c13bacd8c4d2d91-1.digest | 2 +- ...iform_scale_usda-afcce7d5fa243629-1.digest | 2 +- .../sphere_usda-8366b90874a02778-1.digest | 2 +- ..._zero_scale_usda-ac3436d07948ddb2-1.digest | 2 +- ...ed_cylinder_usda-6bfde315320c4111-1.digest | 2 +- ...uashed_disk_usda-e4a3093a38518998-1.digest | 2 +- ...shed_sphere_usda-7bcbaa3c83aaf92c-1.digest | 2 +- .../stack_0_usda-2dad0f5ec97c10b8-1.digest | 2 +- .../stack_150_usda-9fc28daf7efcde9e-1.digest | 2 +- .../stage_usda-0695b3612208bcf5-1.digest | 2 +- .../stage_usda-08451a086997d754-1.digest | 2 +- .../stage_usda-08f2605aa76f8c5a-1.digest | 2 +- .../stage_usda-0a9a4fefc79d0b59-1.digest | 2 +- .../stage_usda-0dae1afcf6927089-1.digest | 2 +- .../stage_usda-137bf5b9bbcbaa09-1.digest | 2 +- .../stage_usda-15ab0320e4168a3a-1.digest | 2 +- .../stage_usda-1780ae5d9b4706f3-1.digest | 2 +- .../stage_usda-18576b421133666c-1.digest | 2 +- .../stage_usda-18d4c3c27061d1e0-1.digest | 2 +- .../stage_usda-19c958e4224602c7-1.digest | 2 +- .../stage_usda-1ad9de82b394044d-1.digest | 2 +- .../stage_usda-22dd31756ff245fc-1.digest | 2 +- .../stage_usda-22e94b531779cff1-1.digest | 2 +- .../stage_usda-24ad7c66559e9c80-1.digest | 2 +- .../stage_usda-26105365b1fd8dbc-1.digest | 2 +- .../stage_usda-2912eb63656b3371-1.digest | 2 +- .../stage_usda-2c5736e1f1ba1f8d-1.digest | 2 +- .../stage_usda-2c8067fb553f81df-1.digest | 2 +- .../stage_usda-2ce486f3dc966042-1.digest | 2 +- .../stage_usda-2ffe73dbb471510a-1.digest | 2 +- .../stage_usda-323a3e02a1f4d7b0-1.digest | 2 +- .../stage_usda-340b07ebab8f9091-1.digest | 2 +- .../stage_usda-3622e7d90bc81d34-1.digest | 2 +- .../stage_usda-370b26846e2e31bd-1.digest | 2 +- .../stage_usda-370b26846e2e31bd-2.digest | 2 +- .../stage_usda-37a86d28c7d197ed-1.digest | 2 +- .../stage_usda-3c67a25a0a341efb-1.digest | 2 +- .../stage_usda-3effc82524d047c7-1.digest | 2 +- .../stage_usda-3f9cd9ed5581414a-1.digest | 2 +- .../stage_usda-41ded1a4c5604d81-1.digest | 2 +- .../stage_usda-41ded1a4c5604d81-2.digest | 2 +- .../stage_usda-48e70f6118b1f181-1.digest | 2 +- .../stage_usda-49f9cb3e8a3fb9fb-1.digest | 2 +- .../stage_usda-4a064c9610d45212-1.digest | 2 +- .../stage_usda-4f30830cd0cff6cf-1.digest | 2 +- .../stage_usda-520aa0db2cddfe4a-1.digest | 2 +- .../stage_usda-54895eac26b3d68b-1.digest | 2 +- .../stage_usda-5842de9c4816f088-1.digest | 2 +- .../stage_usda-591315737502029a-1.digest | 2 +- .../stage_usda-592ba3007488df6d-1.digest | 2 +- .../stage_usda-59354f1aad350085-1.digest | 2 +- .../stage_usda-5b237a71fd087753-1.digest | 2 +- .../stage_usda-5cc80e16451809c9-1.digest | 2 +- .../stage_usda-5dc19c72025a0150-1.digest | 2 +- .../stage_usda-5f7140cec32f4f07-1.digest | 2 +- .../stage_usda-604932e0d3e70494-1.digest | 2 +- .../stage_usda-64b7039b1d43e540-1.digest | 2 +- .../stage_usda-65ee13ae526ffeea-1.digest | 2 +- .../stage_usda-67247fa59107a671-1.digest | 2 +- .../stage_usda-6bf959c4a9ccd0b3-1.digest | 2 +- .../stage_usda-6d5fe86af042b6e1-1.digest | 2 +- .../stage_usda-71054a8e0c511721-1.digest | 2 +- .../stage_usda-7c770edd10f5907e-1.digest | 2 +- .../stage_usda-8088e3bfe6185392-1.digest | 2 +- .../stage_usda-80aabe25c21585c0-1.digest | 2 +- .../stage_usda-82538c264d2a03ab-1.digest | 2 +- .../stage_usda-82538c264d2a03ab-2.digest | 2 +- .../stage_usda-82a10c399a16cdfe-1.digest | 2 +- .../stage_usda-8330e4bc297d2c11-1.digest | 2 +- .../stage_usda-888072d0abcb4b7c-1.digest | 2 +- .../stage_usda-8a23f56494af42b0-1.digest | 2 +- .../stage_usda-8b53eb2ddb581089-1.digest | 2 +- .../stage_usda-8bc1102225447b76-1.digest | 2 +- .../stage_usda-8bcafd97dd44d415-1.digest | 2 +- .../stage_usda-8c1801ab78070f29-1.digest | 2 +- .../stage_usda-8cceeaf3cdd2ee51-1.digest | 2 +- .../stage_usda-91c6c701cea6760c-1.digest | 2 +- .../stage_usda-93b962ab026b22b8-1.digest | 2 +- .../stage_usda-976234e8d4ff9d44-1.digest | 2 +- .../stage_usda-9a4d212002571295-1.digest | 2 +- .../stage_usda-9af3795f55319fa5-1.digest | 2 +- .../stage_usda-9f427c13a5c51892-1.digest | 2 +- .../stage_usda-a366debd179e59ca-1.digest | 2 +- .../stage_usda-a5b1d711f3b9ea59-1.digest | 2 +- .../stage_usda-a74b5f3cf6bce97e-1.digest | 2 +- .../stage_usda-a7f91b5a6640999a-1.digest | 2 +- .../stage_usda-a87fd805403755dc-1.digest | 2 +- .../stage_usda-abb589be134471f7-1.digest | 2 +- .../stage_usda-abeca91af484e4eb-1.digest | 2 +- .../stage_usda-b0726246200d796c-1.digest | 2 +- .../stage_usda-b091ac35593cb491-1.digest | 2 +- .../stage_usda-b8974322f9c3c9a8-1.digest | 2 +- .../stage_usda-bb51bbccac634602-1.digest | 2 +- .../stage_usda-bc2640abb95a8689-1.digest | 2 +- .../stage_usda-bdce5005dd991897-1.digest | 2 +- .../stage_usda-c3555672a13627c7-1.digest | 2 +- .../stage_usda-c469a696e567b939-1.digest | 2 +- .../stage_usda-c7b4569174f0eec0-1.digest | 2 +- .../stage_usda-cd83faa181eb1fd7-1.digest | 2 +- .../stage_usda-cf6459f3f81ccc47-1.digest | 2 +- .../stage_usda-cf8a4ab339090107-1.digest | 2 +- .../stage_usda-d2ee2497345d697d-1.digest | 2 +- .../stage_usda-d72f3f29bbbe2aac-1.digest | 2 +- .../stage_usda-db5313ef5e73713b-1.digest | 2 +- .../stage_usda-dbe57a2b9b304f79-1.digest | 2 +- .../stage_usda-dc3f3fbeccf7b47a-1.digest | 2 +- .../stage_usda-df6e87952da2ef59-1.digest | 2 +- .../stage_usda-dfcbe85c1522e1a0-1.digest | 2 +- .../stage_usda-e0281d61316ee28c-1.digest | 2 +- .../stage_usda-e190342a381695b4-1.digest | 2 +- .../stage_usda-e4221ab681d9d69c-1.digest | 2 +- .../stage_usda-e515f767109d59fd-1.digest | 2 +- .../stage_usda-e6a49698324053cb-1.digest | 2 +- .../stage_usda-e725f8fd7bc55370-1.digest | 2 +- .../stage_usda-eae49fc2a8ca60e5-1.digest | 2 +- .../stage_usda-eb49e61d600c4d7e-1.digest | 2 +- .../stage_usda-ebf6853a9256b461-1.digest | 2 +- .../stage_usda-ef8a900692712be4-1.digest | 2 +- .../stage_usda-f1cbf14d6569cda8-1.digest | 2 +- .../stage_usda-f3300bdef5e06140-1.digest | 2 +- .../stage_usda-f33567936d2468ed-1.digest | 2 +- .../stage_usda-fbc457cd2253b427-1.digest | 2 +- .../stage_usda-fec7a3f24112f4ad-1.digest | 2 +- .../stage_usda-ffdbda6eb16c3b7d-1.digest | 2 +- ...tic_vectors_usda-fae85e3b03a2883e-1.digest | 2 +- ...static_with_usda-9af9d7b39f92f260-1.digest | 2 +- ...tic_without_usda-cd73d9530ee2de09-1.digest | 2 +- .../stats_usda-00e508bd2c5eb608-1.digest | 2 +- .../stops_usda-f48d13a255e8b51e-1.digest | 2 +- ...egy_balance_usda-bdbde883917b565d-1.digest | 2 +- ...ategy_bogus_usda-ab14768d89b4fe10-1.digest | 2 +- ...rategy_bsdf_usda-f7c53ec9f704be37-1.digest | 2 +- ...ategy_light_usda-ec65e0dfb065b1f1-1.digest | 2 +- ...ategy_power_usda-03788414ab51c35f-1.digest | 2 +- .../streamed_usda-08988239fcd84b0c-1.digest | 2 +- .../streamed_usda-274e7e68b089c3ac-1.digest | 2 +- .../string_id_usda-4ef78239c4d0e1cc-1.digest | 2 +- .../string_usda-edd62f0c52a0bd52-1.digest | 2 +- ...trip_cracks_usda-5cdf0130b2848b76-1.digest | 2 +- .../strip_usda-a747742859825b3a-1.digest | 2 +- .../subdiv_0_usda-6db126ded01c4707-1.digest | 2 +- .../subdiv_1_usda-bde0e042f33df4a5-1.digest | 2 +- .../subdiv_2_usda-47f822571f7427d3-1.digest | 2 +- ...iv_bilinear_usda-287ba8f91aef206f-1.digest | 2 +- ...subdiv_cage_usda-17f666e1e5c6d08f-1.digest | 2 +- ...div_clamped_usda-01685ab19e968980-1.digest | 2 +- ...div_default_usda-be76976c79a95643-1.digest | 2 +- ...ceted_first_usda-510113487f701e14-1.digest | 2 +- ...mooth_first_usda-9375effdf17e1f42-1.digest | 2 +- ...bdiv_legacy_usda-e769c33757ced97c-1.digest | 2 +- ...bdiv_level0_usda-436132ac852dd08e-1.digest | 2 +- ..._loop_quads_usda-1e8f941ca190d506-1.digest | 2 +- ...one_faceted_usda-7ad44c4961677420-1.digest | 2 +- ...subdiv_none_usda-38f763827a18343d-1.digest | 2 +- ...subdiv_none_usda-aea9b45539bdf216-1.digest | 2 +- ...iv_override_usda-347cb15990d5b2db-1.digest | 2 +- ...iv_override_usda-4180b38ea57c9096-1.digest | 2 +- ...iv_override_usda-633f8e7fec39c727-1.digest | 2 +- ...div_rest_15_usda-dcdc5eeb73b7d3e8-1.digest | 2 +- ...bdiv_rest_8_usda-c9f6f9ef6bd5e50d-1.digest | 2 +- ...iv_rule_all_usda-7c4745bac0fe1ad7-1.digest | 2 +- ..._boundaries_usda-3c0d79de547dbc49-1.digest | 2 +- ...cornersOnly_usda-3a7940237cbe0a3d-1.digest | 2 +- ...ornersPlus1_usda-10da8f737cfaea1d-1.digest | 2 +- ...ornersPlus2_usda-7ab350be92df8201-1.digest | 2 +- ...v_rule_none_usda-86622a148177c839-1.digest | 2 +- ...bdiv_smooth_usda-ecacf29cbe8c3a69-1.digest | 2 +- ...iv_streamed_usda-6897e2d021bbe857-1.digest | 2 +- ..._unauthored_usda-1f8d567cba520aee-1.digest | 2 +- ...ubdiv_uv_fv_usda-5e00e8c1f3e1cc34-1.digest | 2 +- ...v_uv_vertex_usda-b6cc7115ae3418dd-1.digest | 2 +- ...on_adaptive_usda-4b5883574262488d-1.digest | 2 +- ...on_adaptive_usda-8765a889a888ae6b-1.digest | 2 +- ...on_adaptive_usda-95a3e0a9db67a1fb-1.digest | 2 +- ...on_adaptive_usda-de7625b66c9d664b-1.digest | 2 +- ...on_adaptive_usda-de7625b66c9d664b-2.digest | 2 +- ...subdivision_usda-093423ee46de2ab4-1.digest | 2 +- ...subdivision_usda-59b7fc0fc3af435b-1.digest | 2 +- ...subdivision_usda-59b7fc0fc3af435b-2.digest | 2 +- ...subdivision_usda-c1e09f9374aaab81-1.digest | 2 +- .../sun_delta_usda-ea8cdfc115606b89-1.digest | 2 +- .../sun_lux_usda-f3cb39d866e6c449-1.digest | 2 +- .../sun_narrow_usda-cc46151e1eb78ebf-1.digest | 2 +- .../sun_nits_usda-8ccba3be0d36785e-1.digest | 2 +- ...orted_types_usda-5cac3f5a887f68e8-1.digest | 2 +- .../synonym_a_usda-c8543088a0bca8e3-1.digest | 2 +- .../synonym_b_usda-5b26c8cc28a6baa8-1.digest | 2 +- .../textured_usda-addde73d309fca5e-1.digest | 2 +- ...thin_window_usda-61e111e4ca995610-1.digest | 2 +- ...thin_window_usda-9e0a6257872a8f5f-1.digest | 2 +- ...thin_window_usda-da2b075160721507-1.digest | 2 +- ...thin_window_usda-da2b075160721507-2.digest | 2 +- .../tiles_usda-63de672cd360cf69-1.digest | 2 +- ...e_sampled_1_usda-ee3787d0222ab673-1.digest | 2 +- ...e_sampled_2_usda-4dad1e9703710b97-1.digest | 2 +- .../time_usda-a4ea088a5cd5b4c7-1.digest | 2 +- ...nce_default_usda-3a112890c553cc1b-1.digest | 2 +- ...lerance_nan_usda-22547c2684ba9e8c-1.digest | 2 +- ...lerance_off_usda-f5f012b4db29329d-1.digest | 2 +- ...slate_scale_usda-f3698f1a1411c8b2-1.digest | 2 +- ...atex_curves_usda-65ef3846123d9b35-1.digest | 2 +- ...slatex_disk_usda-9d38522639915278-1.digest | 2 +- ...tuft_shadow_usda-1baacafb4242e12e-1.digest | 2 +- .../twice_a_usda-0f943c80bd7e2c65-1.digest | 2 +- .../twice_b_usda-b96b0ece9c5875aa-1.digest | 2 +- ...roken_first_usda-3cb7946e1e445b8e-1.digest | 2 +- ..._shot_first_usda-a7d808f7cd7c7a83-1.digest | 2 +- ..._instancers_usda-287c7bdad0690e3b-1.digest | 2 +- .../unauthored_usda-1a04ae4ebcf35cb8-1.digest | 2 +- .../unauthored_usda-9a9d89c801b1b740-1.digest | 2 +- .../unbindable_usda-a5d47f8d674e7ddd-1.digest | 2 +- .../unbound_usda-19c17e4f548a50df-1.digest | 2 +- .../unbound_usda-4ae577ca0b682f0f-1.digest | 2 +- ...iform_cages_usda-2c90ea028524eadd-1.digest | 2 +- ...iform_cages_usda-b6490d10d0de391f-1.digest | 2 +- ...iform_cages_usda-d12f6f58167b27f9-1.digest | 2 +- ...iform_cages_usda-d982dbb48b0da21b-1.digest | 2 +- ...form_colour_usda-6a475987121a1476-1.digest | 2 +- ...t_tiny_lens_usda-aa2efc45eecd1493-1.digest | 2 +- ...unit_volume_usda-693980b7090e37bf-1.digest | 2 +- ...t_zero_lens_usda-d1f56221f44bb692-1.digest | 2 +- ..._zero_named_usda-9847ffecfd9df22b-1.digest | 2 +- ...ero_pinhole_usda-af47867eeabcfd70-1.digest | 2 +- ...own_display_usda-e75f3f3b8d756ec8-1.digest | 2 +- ...nown_filter_usda-ed678783aa9ef74d-1.digest | 2 +- .../unknown_op_usda-954c2bfc62b12357-1.digest | 2 +- ...nknown_type_usda-d0386e0b10524625-1.digest | 2 +- .../unnamed_usda-ed6b84994bc45537-1.digest | 2 +- ...able_winner_usda-514f97ffe2814294-1.digest | 2 +- ...n_prototype_usda-d2aca9633823884e-1.digest | 2 +- ...ed_type_one_usda-61236dabf0bd2054-1.digest | 2 +- ...orted_types_usda-4026b0fff876b77b-1.digest | 2 +- ...unsupported_usda-25a7c1709e68a39b-1.digest | 2 +- ...ble_texture_usda-0a21b6baa96879e3-1.digest | 2 +- .../usdlux_usda-0d6669b552eae2be-1.digest | 2 +- .../usdlux_usda-39cf98150f7f0d03-1.digest | 2 +- .../usdlux_usda-39cf98150f7f0d03-2.digest | 2 +- ...ew_textured_usda-36a3119df926a1de-1.digest | 2 +- ...ew_textured_usda-7e17862f6c19bca4-1.digest | 2 +- ...ew_textured_usda-ae16aa06d4e182b3-1.digest | 2 +- ...ew_textured_usda-ae16aa06d4e182b3-2.digest | 2 +- .../uv2_usda-a9136787dec77f95-1.digest | 2 +- ..._dedup_same_usda-9ef71121455e022c-1.digest | 2 +- .../uv_dedup_usda-3e327caf2288bcc5-1.digest | 2 +- ...ar_authored_usda-30d82aafae5b77cb-1.digest | 2 +- .../veach_mis_usda-30c729cf3e421f8c-1.digest | 2 +- .../veach_mis_usda-30c729cf3e421f8c-2.digest | 2 +- .../veach_mis_usda-324cce08805da6ff-1.digest | 2 +- .../veach_mis_usda-3b12df225993b91b-1.digest | 2 +- .../veach_mis_usda-3b12df225993b91b-2.digest | 2 +- .../veach_mis_usda-3d8992b3ea4a144d-1.digest | 2 +- .../veach_mis_usda-3fdc201d13c79fac-1.digest | 2 +- .../veach_mis_usda-4f2fb0dc74121654-1.digest | 2 +- .../veach_mis_usda-4f2fb0dc74121654-2.digest | 2 +- .../veach_mis_usda-4f2fb0dc74121654-3.digest | 2 +- .../veach_mis_usda-4f2fb0dc74121654-4.digest | 2 +- .../veach_mis_usda-6dae75008d5ac94f-1.digest | 2 +- .../veach_mis_usda-6dae75008d5ac94f-2.digest | 2 +- .../veach_mis_usda-6dae75008d5ac94f-3.digest | 2 +- .../veach_mis_usda-6dae75008d5ac94f-4.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-1.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-10.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-11.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-12.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-13.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-14.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-15.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-16.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-17.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-18.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-19.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-2.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-20.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-21.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-22.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-23.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-24.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-25.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-3.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-4.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-5.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-6.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-7.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-8.digest | 2 +- .../veach_mis_usda-70c995e092ab1d61-9.digest | 2 +- .../veach_mis_usda-7b2ec235dd7d06ba-1.digest | 2 +- .../veach_mis_usda-8251e3de3f3f6069-1.digest | 2 +- .../veach_mis_usda-8251e3de3f3f6069-10.digest | 2 +- .../veach_mis_usda-8251e3de3f3f6069-11.digest | 2 +- .../veach_mis_usda-8251e3de3f3f6069-2.digest | 2 +- .../veach_mis_usda-8251e3de3f3f6069-3.digest | 2 +- .../veach_mis_usda-8251e3de3f3f6069-4.digest | 2 +- .../veach_mis_usda-8251e3de3f3f6069-5.digest | 2 +- .../veach_mis_usda-8251e3de3f3f6069-6.digest | 2 +- .../veach_mis_usda-8251e3de3f3f6069-7.digest | 2 +- .../veach_mis_usda-8251e3de3f3f6069-8.digest | 2 +- .../veach_mis_usda-8251e3de3f3f6069-9.digest | 2 +- .../veach_mis_usda-918cd4cfc31f23ae-1.digest | 2 +- .../veach_mis_usda-c455222f332b9874-1.digest | 2 +- .../veach_mis_usda-c455222f332b9874-2.digest | 2 +- .../veach_mis_usda-c455222f332b9874-3.digest | 2 +- .../veach_mis_usda-ecedf2e2c801d4c5-1.digest | 2 +- .../veach_mis_usda-ecedf2e2c801d4c5-2.digest | 2 +- .../veach_mis_usda-ecedf2e2c801d4c5-3.digest | 2 +- .../veach_mis_usda-eeb660d07679d619-1.digest | 2 +- .../veach_mis_usda-f7c825bf3b0bac82-1.digest | 2 +- .../visibility_usda-0f9ed9fc0b62a02c-1.digest | 2 +- .../visibility_usda-2bf7c45881effd3f-1.digest | 2 +- .../visibility_usda-d0c678c9c1d6a069-1.digest | 2 +- .../visibility_usda-f7d5c6c9644dd6bb-1.digest | 2 +- ...sible_light_usda-c593161971da5ec4-1.digest | 2 +- ...n_prototype_usda-d6406b3b1214ee81-1.digest | 2 +- .../volume_usda-a8034cd85e6f3de3-1.digest | 2 +- .../volume_usda-bac87085eea27fa2-1.digest | 2 +- .../volume_usda-dc3452b116e9581a-1.digest | 2 +- .../wide_ok_usda-07bfe44a3376f28e-1.digest | 2 +- .../wide_usda-98ba41961b37bb34-1.digest | 2 +- ...tom_quarter_usda-3769adf96d53a2f1-1.digest | 2 +- ..._boundaries_usda-8ec00fd05808f90e-1.digest | 2 +- ...dow_centres_usda-5b25bbbab727a81b-1.digest | 2 +- ...dow_default_usda-1d0d1bbb6d0e388d-1.digest | 2 +- ...indow_empty_usda-c239bdc771be269c-1.digest | 2 +- ..._unauthored_usda-6f84b7cb89845fa4-1.digest | 2 +- ...ow_honoured_usda-0e440c93c494db71-1.digest | 2 +- ...no_products_usda-9317bad8a6d2e63d-1.digest | 2 +- ...w_off_frame_usda-0e5c269b6dd24fb6-1.digest | 2 +- ...w_one_pixel_usda-66ddf756a5e443fe-1.digest | 2 +- ...ow_overscan_usda-c27e01fde4009f5e-1.digest | 2 +- ...t_overrides_usda-bb3b29ebf7dd99a8-1.digest | 2 +- ...ucts_differ_usda-78414609fe85fc23-1.digest | 2 +- ..._right_half_usda-c5f5b85f1946cb91-1.digest | 2 +- ..._unauthored_usda-5d663894090b1282-1.digest | 2 +- ...king_acescg_usda-453466808888f80c-1.digest | 2 +- ...ing_default_usda-5aec729f1efbcf98-1.digest | 2 +- ...orking_host_usda-964cb93fefda7817-1.digest | 2 +- ...orking_srgb_usda-8fdff51064dc58c9-1.digest | 2 +- .../x_usda-4b3ed4428fa191c7-1.digest | 2 +- .../x_usda-4f6345f399f0a5af-1.digest | 2 +- .../x_usda-a701d438407a1ca1-1.digest | 2 +- .../x_usda-d5611726aa414464-1.digest | 2 +- 1731 files changed, 1732 insertions(+), 1893 deletions(-) delete mode 100644 crates/crust-core/tests/data/import_baselines/materialx_lion_usda-a62e7b45a5b76dea-1.digest delete mode 100644 crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-1e9e0f7089dbbfd5-1.digest delete mode 100644 crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-6ea1bea03dbe6c0d-1.digest diff --git a/crates/crust-core/src/live.rs b/crates/crust-core/src/live.rs index 7bc4c87af..66d4793e2 100644 --- a/crates/crust-core/src/live.rs +++ b/crates/crust-core/src/live.rs @@ -118,7 +118,11 @@ impl Provenance { } let _ = writeln!(out, "provenance spheres: {:?}", self.spheres); let _ = writeln!(out, "provenance volumes: {:?}", self.volumes); - let _ = writeln!(out, "provenance stage: {:?}", self.stage); + // The working space by name: `Space` is an id interned per process, + // in whatever order the process met the spaces. + let mut stage = self.stage.clone(); + let working = stage.working.take().map(|w| w.name().to_owned()); + let _ = writeln!(out, "provenance stage: {stage:?} working {working:?}"); } } diff --git a/crates/crust-core/tests/data/import_baselines/PointInstancedMedCity_usd-951317bf2ce0f6ed-1.digest b/crates/crust-core/tests/data/import_baselines/PointInstancedMedCity_usd-951317bf2ce0f6ed-1.digest index e45f1a654..7ad74d6cf 100644 --- a/crates/crust-core/tests/data/import_baselines/PointInstancedMedCity_usd-951317bf2ce0f6ed-1.digest +++ b/crates/crust-core/tests/data/import_baselines/PointInstancedMedCity_usd-951317bf2ce0f6ed-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/Cameras/main_cam"), cameras: ["/Cameras/main_cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/Cameras/main_cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/Cameras/main_cam"), cameras: ["/Cameras/main_cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/Cameras/main_cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/absorber_usda-e5a517b5b36fd7e1-1.digest b/crates/crust-core/tests/data/import_baselines/absorber_usda-e5a517b5b36fd7e1-1.digest index 11726be65..d5a034e45 100644 --- a/crates/crust-core/tests/data/import_baselines/absorber_usda-e5a517b5b36fd7e1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/absorber_usda-e5a517b5b36fd7e1-1.digest @@ -19,4 +19,4 @@ provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/adaptive_bounded_usda-871964d811713ece-1.digest b/crates/crust-core/tests/data/import_baselines/adaptive_bounded_usda-871964d811713ece-1.digest index 47c72e2a8..13d96c40f 100644 --- a/crates/crust-core/tests/data/import_baselines/adaptive_bounded_usda-871964d811713ece-1.digest +++ b/crates/crust-core/tests/data/import_baselines/adaptive_bounded_usda-871964d811713ece-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11414414559242978054, n_points: 81, n_indices: 384, n_uvs: Some(81), smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1142105526, 0, 0, 0, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1082130432, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1142105526, 0, 0, 0, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1082130432, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/adaptive_unbounded_usda-6ab4975baebe18ef-1.digest b/crates/crust-core/tests/data/import_baselines/adaptive_unbounded_usda-6ab4975baebe18ef-1.digest index b62f73461..643a0ebf9 100644 --- a/crates/crust-core/tests/data/import_baselines/adaptive_unbounded_usda-6ab4975baebe18ef-1.digest +++ b/crates/crust-core/tests/data/import_baselines/adaptive_unbounded_usda-6ab4975baebe18ef-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11414414559242978054, n_points: 81, n_indices: 384, n_uvs: Some(81), smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1142105526, 0, 0, 0, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1082130432, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1142105526, 0, 0, 0, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1082130432, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/adjust_aperture_height_usda-9d28c7b3a9cad9f9-1.digest b/crates/crust-core/tests/data/import_baselines/adjust_aperture_height_usda-9d28c7b3a9cad9f9-1.digest index 49d57fe56..092de087f 100644 --- a/crates/crust-core/tests/data/import_baselines/adjust_aperture_height_usda-9d28c7b3a9cad9f9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/adjust_aperture_height_usda-9d28c7b3a9cad9f9-1.digest @@ -27,4 +27,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/adjust_aperture_width_usda-c50e2f84bef7e6b7-1.digest b/crates/crust-core/tests/data/import_baselines/adjust_aperture_width_usda-c50e2f84bef7e6b7-1.digest index acc1902c7..c709b09e2 100644 --- a/crates/crust-core/tests/data/import_baselines/adjust_aperture_width_usda-c50e2f84bef7e6b7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/adjust_aperture_width_usda-c50e2f84bef7e6b7-1.digest @@ -27,4 +27,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/agrees_with_spec_usda-985ed763a0957571-1.digest b/crates/crust-core/tests/data/import_baselines/agrees_with_spec_usda-985ed763a0957571-1.digest index 0ca641702..ee108c98f 100644 --- a/crates/crust-core/tests/data/import_baselines/agrees_with_spec_usda-985ed763a0957571-1.digest +++ b/crates/crust-core/tests/data/import_baselines/agrees_with_spec_usda-985ed763a0957571-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/anamorphic_usda-c23c78df222208eb-1.digest b/crates/crust-core/tests/data/import_baselines/anamorphic_usda-c23c78df222208eb-1.digest index ed41785b3..d040507a6 100644 --- a/crates/crust-core/tests/data/import_baselines/anamorphic_usda-c23c78df222208eb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/anamorphic_usda-c23c78df222208eb-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/ancestor_usda-3171d13289efaaff-1.digest b/crates/crust-core/tests/data/import_baselines/ancestor_usda-3171d13289efaaff-1.digest index 8b0e0251e..5e5703414 100644 --- a/crates/crust-core/tests/data/import_baselines/ancestor_usda-3171d13289efaaff-1.digest +++ b/crates/crust-core/tests/data/import_baselines/ancestor_usda-3171d13289efaaff-1.digest @@ -24,4 +24,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16274 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15356501520211640585, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("objectId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("objectId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/ancestor_usda-74843e3cc431dad3-1.digest b/crates/crust-core/tests/data/import_baselines/ancestor_usda-74843e3cc431dad3-1.digest index 8e31943ce..d3dcb2f69 100644 --- a/crates/crust-core/tests/data/import_baselines/ancestor_usda-74843e3cc431dad3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/ancestor_usda-74843e3cc431dad3-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: true } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/animated_no_shutter_usda-dc5451565381429f-1.digest b/crates/crust-core/tests/data/import_baselines/animated_no_shutter_usda-dc5451565381429f-1.digest index 2662c649f..6515fb9c9 100644 --- a/crates/crust-core/tests/data/import_baselines/animated_no_shutter_usda-dc5451565381429f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/animated_no_shutter_usda-dc5451565381429f-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/animated_usda-84baf2836991de3b-1.digest b/crates/crust-core/tests/data/import_baselines/animated_usda-84baf2836991de3b-1.digest index 6264b819c..90a282557 100644 --- a/crates/crust-core/tests/data/import_baselines/animated_usda-84baf2836991de3b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/animated_usda-84baf2836991de3b-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(1.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(1.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/animated_usda-e242162a2dbef33a-1.digest b/crates/crust-core/tests/data/import_baselines/animated_usda-e242162a2dbef33a-1.digest index f0c9f65a0..22cffd98d 100644 --- a/crates/crust-core/tests/data/import_baselines/animated_usda-e242162a2dbef33a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/animated_usda-e242162a2dbef33a-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(2.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(2.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-0b34d79521209b48-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-0b34d79521209b48-1.digest index d12bccbc7..b00d760a3 100644 --- a/crates/crust-core/tests/data/import_baselines/animation_usda-0b34d79521209b48-1.digest +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-0b34d79521209b48-1.digest @@ -30,4 +30,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 84162 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16017878447611219219, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-5446fd76cda9ed55-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-5446fd76cda9ed55-1.digest index 575330a44..d14ea802e 100644 --- a/crates/crust-core/tests/data/import_baselines/animation_usda-5446fd76cda9ed55-1.digest +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-5446fd76cda9ed55-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-7b809f697af333f7-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-7b809f697af333f7-1.digest index ecae148f9..46f1a4b2e 100644 --- a/crates/crust-core/tests/data/import_baselines/animation_usda-7b809f697af333f7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-7b809f697af333f7-1.digest @@ -31,4 +31,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 84162 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 646954679051529708, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(25.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(25.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-87536adca26db1ce-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-87536adca26db1ce-1.digest index 12988ccf3..75511bc67 100644 --- a/crates/crust-core/tests/data/import_baselines/animation_usda-87536adca26db1ce-1.digest +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-87536adca26db1ce-1.digest @@ -25,4 +25,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-a8098f0bc76c3026-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-a8098f0bc76c3026-1.digest index 62f7818bd..b344a2714 100644 --- a/crates/crust-core/tests/data/import_baselines/animation_usda-a8098f0bc76c3026-1.digest +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-a8098f0bc76c3026-1.digest @@ -31,4 +31,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 84162 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6200305205315686865, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(-3.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(-3.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-1.digest index 575330a44..d14ea802e 100644 --- a/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-2.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-2.digest index 575330a44..d14ea802e 100644 --- a/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-2.digest +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-b620cb992a2b7c7d-2.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-beee1323479cf47f-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-beee1323479cf47f-1.digest index 61b99cdfe..e4788880c 100644 --- a/crates/crust-core/tests/data/import_baselines/animation_usda-beee1323479cf47f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-beee1323479cf47f-1.digest @@ -30,4 +30,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 84162 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6253865641669692558, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(7.75), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(7.75), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-cca20ab6197e3823-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-cca20ab6197e3823-1.digest index e5c3821c0..51cfeff6f 100644 --- a/crates/crust-core/tests/data/import_baselines/animation_usda-cca20ab6197e3823-1.digest +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-cca20ab6197e3823-1.digest @@ -30,4 +30,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 84162 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6200305205315686865, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(1.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(1.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-cfe8a27d275b06f7-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-cfe8a27d275b06f7-1.digest index 575330a44..d14ea802e 100644 --- a/crates/crust-core/tests/data/import_baselines/animation_usda-cfe8a27d275b06f7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-cfe8a27d275b06f7-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-d9cfa85be82eff7f-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-d9cfa85be82eff7f-1.digest index c71d6ee87..0e45c5aad 100644 --- a/crates/crust-core/tests/data/import_baselines/animation_usda-d9cfa85be82eff7f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-d9cfa85be82eff7f-1.digest @@ -30,4 +30,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 84162 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16263365991131358083, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(7.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(7.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/animation_usda-dc0987b1e9c0a44b-1.digest b/crates/crust-core/tests/data/import_baselines/animation_usda-dc0987b1e9c0a44b-1.digest index 7ca7e6051..3a51c1026 100644 --- a/crates/crust-core/tests/data/import_baselines/animation_usda-dc0987b1e9c0a44b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/animation_usda-dc0987b1e9c0a44b-1.digest @@ -30,4 +30,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 84162 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 646954679051529708, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/aov_format_usda-3d1985fd48e4fb2d-1.digest b/crates/crust-core/tests/data/import_baselines/aov_format_usda-3d1985fd48e4fb2d-1.digest index ea3b065ba..3b9960028 100644 --- a/crates/crust-core/tests/data/import_baselines/aov_format_usda-3d1985fd48e4fb2d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/aov_format_usda-3d1985fd48e4fb2d-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14779366758744255248, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-4a2c1502ba0a175e-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-4a2c1502ba0a175e-1.digest index c65ee423b..69d9d3121 100644 --- a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-4a2c1502ba0a175e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-4a2c1502ba0a175e-1.digest @@ -27,4 +27,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-5ec9a160b78f998f-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-5ec9a160b78f998f-1.digest index c65ee423b..69d9d3121 100644 --- a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-5ec9a160b78f998f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-5ec9a160b78f998f-1.digest @@ -27,4 +27,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6a98ab5ed25ffa78-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6a98ab5ed25ffa78-1.digest index c18f48374..ce8292a79 100644 --- a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6a98ab5ed25ffa78-1.digest +++ b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6a98ab5ed25ffa78-1.digest @@ -27,4 +27,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6d6e4a8f31366652-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6d6e4a8f31366652-1.digest index c8402ace0..1228f3b29 100644 --- a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6d6e4a8f31366652-1.digest +++ b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-6d6e4a8f31366652-1.digest @@ -27,4 +27,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-803d9a5b24ae0e42-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-803d9a5b24ae0e42-1.digest index f2ac85eb6..21529408d 100644 --- a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-803d9a5b24ae0e42-1.digest +++ b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-803d9a5b24ae0e42-1.digest @@ -27,4 +27,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-c88cebf77c02e1c8-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-c88cebf77c02e1c8-1.digest index a30640158..1bf86a093 100644 --- a/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-c88cebf77c02e1c8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/aovs_lookdev_usda-c88cebf77c02e1c8-1.digest @@ -27,4 +27,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-96034a4139733157-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-96034a4139733157-1.digest index 0d9ae696a..2d93e233b 100644 --- a/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-96034a4139733157-1.digest +++ b/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-96034a4139733157-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 5, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4179031546807817238, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2, 3, 4] provenance volumes: ["/World/Haze"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-1.digest index 4bfb827a2..86f91b38e 100644 --- a/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 5, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4179031546807817238, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2, 3, 4] provenance volumes: ["/World/Haze"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-2.digest b/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-2.digest index 4bfb827a2..86f91b38e 100644 --- a/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-2.digest +++ b/crates/crust-core/tests/data/import_baselines/aovs_lpe_usda-a43dc2277f16c84f-2.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 5, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4179031546807817238, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2, 3, 4] provenance volumes: ["/World/Haze"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-1.digest index 7a03945e7..6897e3dda 100644 --- a/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-2.digest b/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-2.digest index 7a03945e7..6897e3dda 100644 --- a/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-2.digest +++ b/crates/crust-core/tests/data/import_baselines/aovs_usda-8f7e50636c58d0eb-2.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/aovs_usda-90b4ce2557c1c46e-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_usda-90b4ce2557c1c46e-1.digest index 0a3623409..26aae38c9 100644 --- a/crates/crust-core/tests/data/import_baselines/aovs_usda-90b4ce2557c1c46e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/aovs_usda-90b4ce2557c1c46e-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/aovs_usda-cd31a05d6e49ceda-1.digest b/crates/crust-core/tests/data/import_baselines/aovs_usda-cd31a05d6e49ceda-1.digest index 0a3623409..26aae38c9 100644 --- a/crates/crust-core/tests/data/import_baselines/aovs_usda-cd31a05d6e49ceda-1.digest +++ b/crates/crust-core/tests/data/import_baselines/aovs_usda-cd31a05d6e49ceda-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/area_lights_usda-07bd34a97e44c0ab-1.digest b/crates/crust-core/tests/data/import_baselines/area_lights_usda-07bd34a97e44c0ab-1.digest index e301ab85a..498a07026 100644 --- a/crates/crust-core/tests/data/import_baselines/area_lights_usda-07bd34a97e44c0ab-1.digest +++ b/crates/crust-core/tests/data/import_baselines/area_lights_usda-07bd34a97e44c0ab-1.digest @@ -22,4 +22,4 @@ provenance geometry 0..1: /World/Panel provenance geometry 1..2: /World/Bulb provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/area_lights_usda-6989a4d471c724cf-1.digest b/crates/crust-core/tests/data/import_baselines/area_lights_usda-6989a4d471c724cf-1.digest index cf82e1b31..ef7dd66d0 100644 --- a/crates/crust-core/tests/data/import_baselines/area_lights_usda-6989a4d471c724cf-1.digest +++ b/crates/crust-core/tests/data/import_baselines/area_lights_usda-6989a4d471c724cf-1.digest @@ -22,4 +22,4 @@ provenance geometry 0..1: /World/Panel provenance geometry 1..2: /World/Bulb provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pass"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pass"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/area_nothing_usda-bf90dbc7327fa98c-1.digest b/crates/crust-core/tests/data/import_baselines/area_nothing_usda-bf90dbc7327fa98c-1.digest index dd4afc79e..1bf70920a 100644 --- a/crates/crust-core/tests/data/import_baselines/area_nothing_usda-bf90dbc7327fa98c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/area_nothing_usda-bf90dbc7327fa98c-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false provenance geometry 0..1: /World/L provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/area_nothing_visible_usda-2f4e016170ad5820-1.digest b/crates/crust-core/tests/data/import_baselines/area_nothing_visible_usda-2f4e016170ad5820-1.digest index 783a5dcdf..705c451f0 100644 --- a/crates/crust-core/tests/data/import_baselines/area_nothing_visible_usda-2f4e016170ad5820-1.digest +++ b/crates/crust-core/tests/data/import_baselines/area_nothing_visible_usda-2f4e016170ad5820-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false provenance geometry 0..1: /World/L provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-3b3a8108b3e9fae9-1.digest b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-3b3a8108b3e9fae9-1.digest index 4c032d717..a5693df91 100644 --- a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-3b3a8108b3e9fae9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-3b3a8108b3e9fae9-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/key provenance geometry 1..2: /World/asset/ball provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-41ce6942a2d54582-1.digest b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-41ce6942a2d54582-1.digest index 5716a34c0..4222e7b03 100644 --- a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-41ce6942a2d54582-1.digest +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-41ce6942a2d54582-1.digest @@ -22,4 +22,4 @@ provenance geometry 0..1: /World/key provenance geometry 1..2: /World/asset/ball provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-6567e83e5076f9db-1.digest b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-6567e83e5076f9db-1.digest index 1e699680b..fdf0c5ee6 100644 --- a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-6567e83e5076f9db-1.digest +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-6567e83e5076f9db-1.digest @@ -22,4 +22,4 @@ provenance geometry 0..1: /World/key provenance geometry 1..2: /World/asset/ball provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-9934bec515530278-1.digest b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-9934bec515530278-1.digest index 4c032d717..a5693df91 100644 --- a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-9934bec515530278-1.digest +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-9934bec515530278-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/key provenance geometry 1..2: /World/asset/ball provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e4930eb0174b9dd7-1.digest b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e4930eb0174b9dd7-1.digest index 242a43b5b..e13862933 100644 --- a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e4930eb0174b9dd7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e4930eb0174b9dd7-1.digest @@ -18,4 +18,4 @@ provenance material /World/Looks/red: MaterialOrigin { slots: [0], displaced: fa provenance geometry 0..1: /World/asset/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e7566c662eda92b2-1.digest b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e7566c662eda92b2-1.digest index 4c032d717..a5693df91 100644 --- a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e7566c662eda92b2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-e7566c662eda92b2-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/key provenance geometry 1..2: /World/asset/ball provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-ec05a5f1f38841c6-1.digest b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-ec05a5f1f38841c6-1.digest index 0409f2474..d8230e235 100644 --- a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-ec05a5f1f38841c6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-ec05a5f1f38841c6-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/key provenance geometry 1..2: /World/asset/ball provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-f9c370778b865b50-1.digest b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-f9c370778b865b50-1.digest index 4c032d717..a5693df91 100644 --- a/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-f9c370778b865b50-1.digest +++ b/crates/crust-core/tests/data/import_baselines/asset_lookdev_usda-f9c370778b865b50-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/key provenance geometry 1..2: /World/asset/ball provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/authored_only_usda-e3c97926a3d11ac4-1.digest b/crates/crust-core/tests/data/import_baselines/authored_only_usda-e3c97926a3d11ac4-1.digest index 0a5d62ba2..87dae797f 100644 --- a/crates/crust-core/tests/data/import_baselines/authored_only_usda-e3c97926a3d11ac4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/authored_only_usda-e3c97926a3d11ac4-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: true } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/backdrop_dome_light_1_usda-bda39b6574f6f444-1.digest b/crates/crust-core/tests/data/import_baselines/backdrop_dome_light_1_usda-bda39b6574f6f444-1.digest index 46dd93186..3775c660c 100644 --- a/crates/crust-core/tests/data/import_baselines/backdrop_dome_light_1_usda-bda39b6574f6f444-1.digest +++ b/crates/crust-core/tests/data/import_baselines/backdrop_dome_light_1_usda-bda39b6574f6f444-1.digest @@ -18,4 +18,4 @@ provenance light /World/Hdri: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/backdrop_streamed_usda-5c630271a8fcfd44-1.digest b/crates/crust-core/tests/data/import_baselines/backdrop_streamed_usda-5c630271a8fcfd44-1.digest index 39817ac02..b6765cca6 100644 --- a/crates/crust-core/tests/data/import_baselines/backdrop_streamed_usda-5c630271a8fcfd44-1.digest +++ b/crates/crust-core/tests/data/import_baselines/backdrop_streamed_usda-5c630271a8fcfd44-1.digest @@ -20,4 +20,4 @@ provenance geometry 1..2: /World/B provenance geometry 2..3: /World/C/Deep provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/backdrop_usda-2757fcfd84c07e64-1.digest b/crates/crust-core/tests/data/import_baselines/backdrop_usda-2757fcfd84c07e64-1.digest index 5ed30dfce..5ba599c70 100644 --- a/crates/crust-core/tests/data/import_baselines/backdrop_usda-2757fcfd84c07e64-1.digest +++ b/crates/crust-core/tests/data/import_baselines/backdrop_usda-2757fcfd84c07e64-1.digest @@ -18,4 +18,4 @@ provenance light /World/Hdri: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/backdrop_usda-3818c88f3ea1e994-1.digest b/crates/crust-core/tests/data/import_baselines/backdrop_usda-3818c88f3ea1e994-1.digest index f06173dfa..0f2c330a2 100644 --- a/crates/crust-core/tests/data/import_baselines/backdrop_usda-3818c88f3ea1e994-1.digest +++ b/crates/crust-core/tests/data/import_baselines/backdrop_usda-3818c88f3ea1e994-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11147341635340358220, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pass"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pass"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/backdrop_usda-e17ddb582cb97b8c-1.digest b/crates/crust-core/tests/data/import_baselines/backdrop_usda-e17ddb582cb97b8c-1.digest index 62da037cd..036db1a5d 100644 --- a/crates/crust-core/tests/data/import_baselines/backdrop_usda-e17ddb582cb97b8c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/backdrop_usda-e17ddb582cb97b8c-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11147341635340358220, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/backlit_diffuse_usda-3dfba11cda1cd7c6-1.digest b/crates/crust-core/tests/data/import_baselines/backlit_diffuse_usda-3dfba11cda1cd7c6-1.digest index 285e1f2c6..90b8dc415 100644 --- a/crates/crust-core/tests/data/import_baselines/backlit_diffuse_usda-3dfba11cda1cd7c6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/backlit_diffuse_usda-3dfba11cda1cd7c6-1.digest @@ -21,4 +21,4 @@ provenance geometry 0..1: /World/Back provenance geometry 1..2: /World/Strand provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/backlit_hair_usda-59f16e3a1a4f9b6d-1.digest b/crates/crust-core/tests/data/import_baselines/backlit_hair_usda-59f16e3a1a4f9b6d-1.digest index a72dfa718..7b6f24032 100644 --- a/crates/crust-core/tests/data/import_baselines/backlit_hair_usda-59f16e3a1a4f9b6d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/backlit_hair_usda-59f16e3a1a4f9b6d-1.digest @@ -21,4 +21,4 @@ provenance geometry 0..1: /World/Back provenance geometry 1..2: /World/Strand provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/bad_length_usda-3ab7b93f882199a8-1.digest b/crates/crust-core/tests/data/import_baselines/bad_length_usda-3ab7b93f882199a8-1.digest index 3463c4149..386038672 100644 --- a/crates/crust-core/tests/data/import_baselines/bad_length_usda-3ab7b93f882199a8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/bad_length_usda-3ab7b93f882199a8-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/bad_volume_usda-00cc0d19953cb7f6-1.digest b/crates/crust-core/tests/data/import_baselines/bad_volume_usda-00cc0d19953cb7f6-1.digest index fc5e41aee..eeb533a21 100644 --- a/crates/crust-core/tests/data/import_baselines/bad_volume_usda-00cc0d19953cb7f6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/bad_volume_usda-00cc0d19953cb7f6-1.digest @@ -15,4 +15,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/banded_dome_usda-03eaa43cee7b25ab-1.digest b/crates/crust-core/tests/data/import_baselines/banded_dome_usda-03eaa43cee7b25ab-1.digest index 104ad9195..8a4d7a9ea 100644 --- a/crates/crust-core/tests/data/import_baselines/banded_dome_usda-03eaa43cee7b25ab-1.digest +++ b/crates/crust-core/tests/data/import_baselines/banded_dome_usda-03eaa43cee7b25ab-1.digest @@ -16,4 +16,4 @@ world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cy provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/binding_usda-3ec3b212bbee4e90-1.digest b/crates/crust-core/tests/data/import_baselines/binding_usda-3ec3b212bbee4e90-1.digest index 2bb2c8dd7..3cecf73c6 100644 --- a/crates/crust-core/tests/data/import_baselines/binding_usda-3ec3b212bbee4e90-1.digest +++ b/crates/crust-core/tests/data/import_baselines/binding_usda-3ec3b212bbee4e90-1.digest @@ -24,4 +24,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 20484 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4700795505077783238, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/black_usda-ca3475f9863dc283-1.digest b/crates/crust-core/tests/data/import_baselines/black_usda-ca3475f9863dc283-1.digest index 310de3af2..fa0fddf0b 100644 --- a/crates/crust-core/tests/data/import_baselines/black_usda-ca3475f9863dc283-1.digest +++ b/crates/crust-core/tests/data/import_baselines/black_usda-ca3475f9863dc283-1.digest @@ -22,4 +22,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/blackbody_acescg_usda-e4fe8984977e4dc5-1.digest b/crates/crust-core/tests/data/import_baselines/blackbody_acescg_usda-e4fe8984977e4dc5-1.digest index d3ff07924..4adec143c 100644 --- a/crates/crust-core/tests/data/import_baselines/blackbody_acescg_usda-e4fe8984977e4dc5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/blackbody_acescg_usda-e4fe8984977e4dc5-1.digest @@ -18,4 +18,4 @@ provenance light /World/S: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/S provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(5)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("ACEScg") diff --git a/crates/crust-core/tests/data/import_baselines/blur_default_usda-d0c5474e0dfbe769-1.digest b/crates/crust-core/tests/data/import_baselines/blur_default_usda-d0c5474e0dfbe769-1.digest index 3a93b155b..e7f58e4e1 100644 --- a/crates/crust-core/tests/data/import_baselines/blur_default_usda-d0c5474e0dfbe769-1.digest +++ b/crates/crust-core/tests/data/import_baselines/blur_default_usda-d0c5474e0dfbe769-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/blur_false_usda-8f6712fd58e3e7dd-1.digest b/crates/crust-core/tests/data/import_baselines/blur_false_usda-8f6712fd58e3e7dd-1.digest index 8318070e4..317de2cb9 100644 --- a/crates/crust-core/tests/data/import_baselines/blur_false_usda-8f6712fd58e3e7dd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/blur_false_usda-8f6712fd58e3e7dd-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/blur_product_inherits_synonym_usda-8cbc9a895bc4da45-1.digest b/crates/crust-core/tests/data/import_baselines/blur_product_inherits_synonym_usda-8cbc9a895bc4da45-1.digest index 574271ef2..1ad54cd5c 100644 --- a/crates/crust-core/tests/data/import_baselines/blur_product_inherits_synonym_usda-8cbc9a895bc4da45-1.digest +++ b/crates/crust-core/tests/data/import_baselines/blur_product_inherits_synonym_usda-8cbc9a895bc4da45-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/blur_product_off_usda-ad5ae20ae0e9dd8e-1.digest b/crates/crust-core/tests/data/import_baselines/blur_product_off_usda-ad5ae20ae0e9dd8e-1.digest index 9168cac4c..527fc1321 100644 --- a/crates/crust-core/tests/data/import_baselines/blur_product_off_usda-ad5ae20ae0e9dd8e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/blur_product_off_usda-ad5ae20ae0e9dd8e-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/blur_product_on_usda-9e081a22d073a61a-1.digest b/crates/crust-core/tests/data/import_baselines/blur_product_on_usda-9e081a22d073a61a-1.digest index fc19598c3..ffa781874 100644 --- a/crates/crust-core/tests/data/import_baselines/blur_product_on_usda-9e081a22d073a61a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/blur_product_on_usda-9e081a22d073a61a-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/blur_products_differ_usda-97d616ea3858dc6c-1.digest b/crates/crust-core/tests/data/import_baselines/blur_products_differ_usda-97d616ea3858dc6c-1.digest index e927887ec..b27431614 100644 --- a/crates/crust-core/tests/data/import_baselines/blur_products_differ_usda-97d616ea3858dc6c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/blur_products_differ_usda-97d616ea3858dc6c-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/blur_products_same_usda-f8c20e3d816829cd-1.digest b/crates/crust-core/tests/data/import_baselines/blur_products_same_usda-f8c20e3d816829cd-1.digest index e3ad3d35d..f0247a8a5 100644 --- a/crates/crust-core/tests/data/import_baselines/blur_products_same_usda-f8c20e3d816829cd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/blur_products_same_usda-f8c20e3d816829cd-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/blur_products_spellings_usda-e53f8c9eb1fa898a-1.digest b/crates/crust-core/tests/data/import_baselines/blur_products_spellings_usda-e53f8c9eb1fa898a-1.digest index 39c529102..25e16c075 100644 --- a/crates/crust-core/tests/data/import_baselines/blur_products_spellings_usda-e53f8c9eb1fa898a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/blur_products_spellings_usda-e53f8c9eb1fa898a-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/blur_settings_only_usda-57bf8b1f820d60e9-1.digest b/crates/crust-core/tests/data/import_baselines/blur_settings_only_usda-57bf8b1f820d60e9-1.digest index 44168fd2a..52dee1753 100644 --- a/crates/crust-core/tests/data/import_baselines/blur_settings_only_usda-57bf8b1f820d60e9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/blur_settings_only_usda-57bf8b1f820d60e9-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/blur_synonym_usda-5c4201bf40a84766-1.digest b/crates/crust-core/tests/data/import_baselines/blur_synonym_usda-5c4201bf40a84766-1.digest index 68b1c1120..cc795c609 100644 --- a/crates/crust-core/tests/data/import_baselines/blur_synonym_usda-5c4201bf40a84766-1.digest +++ b/crates/crust-core/tests/data/import_baselines/blur_synonym_usda-5c4201bf40a84766-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/blur_warnings_usda-560d69942e1e7771-1.digest b/crates/crust-core/tests/data/import_baselines/blur_warnings_usda-560d69942e1e7771-1.digest index 282c5568a..595616bde 100644 --- a/crates/crust-core/tests/data/import_baselines/blur_warnings_usda-560d69942e1e7771-1.digest +++ b/crates/crust-core/tests/data/import_baselines/blur_warnings_usda-560d69942e1e7771-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/blurred_usda-152a0fdff5c8c9a3-1.digest b/crates/crust-core/tests/data/import_baselines/blurred_usda-152a0fdff5c8c9a3-1.digest index 35016cca1..6b0c9bce5 100644 --- a/crates/crust-core/tests/data/import_baselines/blurred_usda-152a0fdff5c8c9a3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/blurred_usda-152a0fdff5c8c9a3-1.digest @@ -16,4 +16,4 @@ provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } provenance geometry 0..1: /World/Mover provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/both_usda-4af15817dabdb39f-1.digest b/crates/crust-core/tests/data/import_baselines/both_usda-4af15817dabdb39f-1.digest index 30d407247..f319cb4bf 100644 --- a/crates/crust-core/tests/data/import_baselines/both_usda-4af15817dabdb39f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/both_usda-4af15817dabdb39f-1.digest @@ -17,4 +17,4 @@ provenance material /World/Both: MaterialOrigin { slots: [0], displaced: false } provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/boundary_usda-85fcb2406c56d725-1.digest b/crates/crust-core/tests/data/import_baselines/boundary_usda-85fcb2406c56d725-1.digest index 5a24d7a48..4895f97e8 100644 --- a/crates/crust-core/tests/data/import_baselines/boundary_usda-85fcb2406c56d725-1.digest +++ b/crates/crust-core/tests/data/import_baselines/boundary_usda-85fcb2406c56d725-1.digest @@ -19,4 +19,4 @@ provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/broken_materials_usda-040c16d0365cbc63-1.digest b/crates/crust-core/tests/data/import_baselines/broken_materials_usda-040c16d0365cbc63-1.digest index 6e861c8c5..4c090a95e 100644 --- a/crates/crust-core/tests/data/import_baselines/broken_materials_usda-040c16d0365cbc63-1.digest +++ b/crates/crust-core/tests/data/import_baselines/broken_materials_usda-040c16d0365cbc63-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/a provenance geometry 1..2: /World/b provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/broken_mesh_usda-217190c267ddf4a1-1.digest b/crates/crust-core/tests/data/import_baselines/broken_mesh_usda-217190c267ddf4a1-1.digest index f903341a7..f0fb66160 100644 --- a/crates/crust-core/tests/data/import_baselines/broken_mesh_usda-217190c267ddf4a1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/broken_mesh_usda-217190c267ddf4a1-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/Ok provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cage_three_usda-65204db7a7ccaed8-1.digest b/crates/crust-core/tests/data/import_baselines/cage_three_usda-65204db7a7ccaed8-1.digest index ea3b49d21..e48da2d2c 100644 --- a/crates/crust-core/tests/data/import_baselines/cage_three_usda-65204db7a7ccaed8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cage_three_usda-65204db7a7ccaed8-1.digest @@ -28,4 +28,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14276 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6133730724842206255, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-1.digest b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-1.digest index d97396533..5c1ffce6e 100644 --- a/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/A"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/A"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/A"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/A"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/A"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/A"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-2.digest b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-2.digest index d97396533..5c1ffce6e 100644 --- a/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-1827f96f8b5d0db1-2.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/A"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/A"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/A"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/A"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/A"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/A"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-1.digest b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-1.digest index d0c9e8294..9da28e9b0 100644 --- a/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/B"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/B"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/B"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/B"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-2.digest b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-2.digest index d0c9e8294..9da28e9b0 100644 --- a/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cam__W_B_usda-7a2f1b2d8ea63036-2.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/B"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/B"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/B"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/B"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-1.digest b/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-1.digest index 6f4270177..931f5341d 100644 --- a/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/B"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/B"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/B"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/B"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-2.digest b/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-2.digest index 6f4270177..931f5341d 100644 --- a/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-2.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/B"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/B"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/B"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/B"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-3.digest b/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-3.digest index 6f4270177..931f5341d 100644 --- a/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-3.digest +++ b/crates/crust-core/tests/data/import_baselines/cam__W_Nope_usda-a6a9c22824149e8e-3.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/B"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/B"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/B"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/B"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cam_narrow_usda-dcae36868790f279-1.digest b/crates/crust-core/tests/data/import_baselines/cam_narrow_usda-dcae36868790f279-1.digest index c26416acd..c1060c608 100644 --- a/crates/crust-core/tests/data/import_baselines/cam_narrow_usda-dcae36868790f279-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cam_narrow_usda-dcae36868790f279-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cam_none_usda-1ef9fbd129b9560a-1.digest b/crates/crust-core/tests/data/import_baselines/cam_none_usda-1ef9fbd129b9560a-1.digest index 488ce537e..aa822f30e 100644 --- a/crates/crust-core/tests/data/import_baselines/cam_none_usda-1ef9fbd129b9560a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cam_none_usda-1ef9fbd129b9560a-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/A"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/A"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/A"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/A"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/A"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/A"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cam_none_usda-2cb27e460ee10e43-1.digest b/crates/crust-core/tests/data/import_baselines/cam_none_usda-2cb27e460ee10e43-1.digest index 9c2f299e7..e820afd2f 100644 --- a/crates/crust-core/tests/data/import_baselines/cam_none_usda-2cb27e460ee10e43-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cam_none_usda-2cb27e460ee10e43-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/B"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/B"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/B"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/B"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/B"), cameras: ["/W/B", "/W/A"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/B"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cam_wide_usda-098c8afc4872dbb7-1.digest b/crates/crust-core/tests/data/import_baselines/cam_wide_usda-098c8afc4872dbb7-1.digest index 7f9fce58d..8dd2e4994 100644 --- a/crates/crust-core/tests/data/import_baselines/cam_wide_usda-098c8afc4872dbb7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cam_wide_usda-098c8afc4872dbb7-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/camera_dof_usda-f69bc93db8900a0e-1.digest b/crates/crust-core/tests/data/import_baselines/camera_dof_usda-f69bc93db8900a0e-1.digest index f9f287d5f..adee31fd1 100644 --- a/crates/crust-core/tests/data/import_baselines/camera_dof_usda-f69bc93db8900a0e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/camera_dof_usda-f69bc93db8900a0e-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/camera_ortho_usda-21d5879ec7de6dbf-1.digest b/crates/crust-core/tests/data/import_baselines/camera_ortho_usda-21d5879ec7de6dbf-1.digest index 6c07f82ea..ea702a9b5 100644 --- a/crates/crust-core/tests/data/import_baselines/camera_ortho_usda-21d5879ec7de6dbf-1.digest +++ b/crates/crust-core/tests/data/import_baselines/camera_ortho_usda-21d5879ec7de6dbf-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/top"), cameras: ["/World/top"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/top"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/top"), cameras: ["/World/top"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/top"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/camera_projection_unknown_usda-8a8cac00719054ad-1.digest b/crates/crust-core/tests/data/import_baselines/camera_projection_unknown_usda-8a8cac00719054ad-1.digest index b74e6fd8d..74e9b4b7b 100644 --- a/crates/crust-core/tests/data/import_baselines/camera_projection_unknown_usda-8a8cac00719054ad-1.digest +++ b/crates/crust-core/tests/data/import_baselines/camera_projection_unknown_usda-8a8cac00719054ad-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/camera_rot_usda-c74e88c7205b56e5-1.digest b/crates/crust-core/tests/data/import_baselines/camera_rot_usda-c74e88c7205b56e5-1.digest index 347b0c70d..ae96aa02b 100644 --- a/crates/crust-core/tests/data/import_baselines/camera_rot_usda-c74e88c7205b56e5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/camera_rot_usda-c74e88c7205b56e5-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/camera_usda-2d8f34945903545d-1.digest b/crates/crust-core/tests/data/import_baselines/camera_usda-2d8f34945903545d-1.digest index eaae3e559..ddacf1095 100644 --- a/crates/crust-core/tests/data/import_baselines/camera_usda-2d8f34945903545d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/camera_usda-2d8f34945903545d-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-0af373522188190d-1.digest b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-0af373522188190d-1.digest index a3a724906..7b7f56655 100644 --- a/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-0af373522188190d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-0af373522188190d-1.digest @@ -18,4 +18,4 @@ provenance geometry 0..1: /World/Masked provenance geometry 1..2: /World/Blocker provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pass"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pass"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-5198be21d5bb35d1-1.digest b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-5198be21d5bb35d1-1.digest index 1ddd822d2..bc11ae453 100644 --- a/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-5198be21d5bb35d1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-5198be21d5bb35d1-1.digest @@ -18,4 +18,4 @@ provenance geometry 0..1: /World/Masked provenance geometry 1..2: /World/Blocker provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/camera_zero_focus_usda-ad065540da61feb4-1.digest b/crates/crust-core/tests/data/import_baselines/camera_zero_focus_usda-ad065540da61feb4-1.digest index 0d5fbc354..c989f1ca9 100644 --- a/crates/crust-core/tests/data/import_baselines/camera_zero_focus_usda-ad065540da61feb4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/camera_zero_focus_usda-ad065540da61feb4-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/capped_usda-de82c45ab5a80eb6-1.digest b/crates/crust-core/tests/data/import_baselines/capped_usda-de82c45ab5a80eb6-1.digest index 1b3ebed9d..3ecd14628 100644 --- a/crates/crust-core/tests/data/import_baselines/capped_usda-de82c45ab5a80eb6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/capped_usda-de82c45ab5a80eb6-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: Some(2.0), skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 2])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: Some(2.0), skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 2])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/centred_both_usda-06ae7e6ad41f5b45-1.digest b/crates/crust-core/tests/data/import_baselines/centred_both_usda-06ae7e6ad41f5b45-1.digest index 5883eb627..c89d6c4d1 100644 --- a/crates/crust-core/tests/data/import_baselines/centred_both_usda-06ae7e6ad41f5b45-1.digest +++ b/crates/crust-core/tests/data/import_baselines/centred_both_usda-06ae7e6ad41f5b45-1.digest @@ -16,4 +16,4 @@ provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } provenance geometry 0..1: /World/Ball provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [13821547256400052224, 4598175219545276416], interval: Some([4617034042984890368, 4617596992938311680]), query: true, frame_pose: true } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [13821547256400052224, 4598175219545276416], interval: Some([4617034042984890368, 4617596992938311680]), query: true, frame_pose: true } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/centred_frame_usda-200d23d9927b7966-1.digest b/crates/crust-core/tests/data/import_baselines/centred_frame_usda-200d23d9927b7966-1.digest index 6491403bb..cab1f4b21 100644 --- a/crates/crust-core/tests/data/import_baselines/centred_frame_usda-200d23d9927b7966-1.digest +++ b/crates/crust-core/tests/data/import_baselines/centred_frame_usda-200d23d9927b7966-1.digest @@ -16,4 +16,4 @@ provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } provenance geometry 0..1: /World/Ball provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [13821547256400052224, 4598175219545276416], interval: Some([4617034042984890368, 4617596992938311680]), query: true, frame_pose: true } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [13821547256400052224, 4598175219545276416], interval: Some([4617034042984890368, 4617596992938311680]), query: true, frame_pose: true } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/centred_open_usda-75e668aa9e5ecb2d-1.digest b/crates/crust-core/tests/data/import_baselines/centred_open_usda-75e668aa9e5ecb2d-1.digest index 649c42ba0..f8d4b5dea 100644 --- a/crates/crust-core/tests/data/import_baselines/centred_open_usda-75e668aa9e5ecb2d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/centred_open_usda-75e668aa9e5ecb2d-1.digest @@ -16,4 +16,4 @@ provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } provenance geometry 0..1: /World/Ball provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [13821547256400052224, 4598175219545276416], interval: Some([4617034042984890368, 4617596992938311680]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [13821547256400052224, 4598175219545276416], interval: Some([4617034042984890368, 4617596992938311680]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_constant_0_usda-16acce3a8ae23e69-1.digest b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_0_usda-16acce3a8ae23e69-1.digest index 09c828675..9597c6bfe 100644 --- a/crates/crust-core/tests/data/import_baselines/chart_interp_constant_0_usda-16acce3a8ae23e69-1.digest +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_0_usda-16acce3a8ae23e69-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5101156695740804468, n_points: 6, n_indices: 8, n_uvs: Some(1), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_constant_2_usda-51380ed7a7ea4305-1.digest b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_2_usda-51380ed7a7ea4305-1.digest index 5df971f57..bb14f0beb 100644 --- a/crates/crust-core/tests/data/import_baselines/chart_interp_constant_2_usda-51380ed7a7ea4305-1.digest +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_2_usda-51380ed7a7ea4305-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10918591713586360571, n_points: 45, n_indices: 128, n_uvs: Some(45), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_0_usda-a6d6a93dda32caf2-1.digest b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_0_usda-a6d6a93dda32caf2-1.digest index c2762f869..2b3d83009 100644 --- a/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_0_usda-a6d6a93dda32caf2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_0_usda-a6d6a93dda32caf2-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7809041330809037802, n_points: 6, n_indices: 8, n_uvs: Some(1), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_2_usda-bad2637a6a91c73a-1.digest b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_2_usda-bad2637a6a91c73a-1.digest index 0af313428..da1ae17a0 100644 --- a/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_2_usda-bad2637a6a91c73a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_constant_unauthored_2_usda-bad2637a6a91c73a-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7344855212322573385, n_points: 45, n_indices: 128, n_uvs: Some(45), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_0_usda-ffe6596ba2b6a108-1.digest b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_0_usda-ffe6596ba2b6a108-1.digest index f02b7fcec..a7634a54f 100644 --- a/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_0_usda-ffe6596ba2b6a108-1.digest +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_0_usda-ffe6596ba2b6a108-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13034384031579772522, n_points: 6, n_indices: 8, n_uvs: Some(2), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_2_usda-815f4bb2830bedd0-1.digest b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_2_usda-815f4bb2830bedd0-1.digest index 64d3d038a..49adc8497 100644 --- a/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_2_usda-815f4bb2830bedd0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_2_usda-815f4bb2830bedd0-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3987959077027510578, n_points: 45, n_indices: 128, n_uvs: Some(50), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_0_usda-a6e2151559aa05f1-1.digest b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_0_usda-a6e2151559aa05f1-1.digest index ba61972af..4113d826c 100644 --- a/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_0_usda-a6e2151559aa05f1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_0_usda-a6e2151559aa05f1-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8720951475160740329, n_points: 6, n_indices: 8, n_uvs: Some(2), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_2_usda-49181df1e2a2d359-1.digest b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_2_usda-49181df1e2a2d359-1.digest index 79a827dbb..c4c660a6d 100644 --- a/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_2_usda-49181df1e2a2d359-1.digest +++ b/crates/crust-core/tests/data/import_baselines/chart_interp_uniform_indexed_2_usda-49181df1e2a2d359-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9116079468203776378, n_points: 45, n_indices: 128, n_uvs: Some(50), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/clean_usda-d4e60f418d0e5485-1.digest b/crates/crust-core/tests/data/import_baselines/clean_usda-d4e60f418d0e5485-1.digest index 0e5cf4f0b..ba2fcee2b 100644 --- a/crates/crust-core/tests/data/import_baselines/clean_usda-d4e60f418d0e5485-1.digest +++ b/crates/crust-core/tests/data/import_baselines/clean_usda-d4e60f418d0e5485-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/clear_usda-487518c3a2bde507-1.digest b/crates/crust-core/tests/data/import_baselines/clear_usda-487518c3a2bde507-1.digest index c4e1aa2ff..13b103bd9 100644 --- a/crates/crust-core/tests/data/import_baselines/clear_usda-487518c3a2bde507-1.digest +++ b/crates/crust-core/tests/data/import_baselines/clear_usda-487518c3a2bde507-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 81334 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9785711415941569612, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/closest_usda-b1b06704b4564b8c-1.digest b/crates/crust-core/tests/data/import_baselines/closest_usda-b1b06704b4564b8c-1.digest index 61e4cb26c..d67788a54 100644 --- a/crates/crust-core/tests/data/import_baselines/closest_usda-b1b06704b4564b8c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/closest_usda-b1b06704b4564b8c-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/color_space_api_usda-7258fb7a16ddde2f-1.digest b/crates/crust-core/tests/data/import_baselines/color_space_api_usda-7258fb7a16ddde2f-1.digest index 34fde441c..2c6d2e26b 100644 --- a/crates/crust-core/tests/data/import_baselines/color_space_api_usda-7258fb7a16ddde2f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/color_space_api_usda-7258fb7a16ddde2f-1.digest @@ -22,4 +22,4 @@ provenance geometry 0..1: /World/Rec709Rig/Inner/Overrides provenance geometry 1..2: /World/Rec709Rig/Inner/Inherits provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(5)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("ACEScg") diff --git a/crates/crust-core/tests/data/import_baselines/color_temperature_off_usda-d2963845fd5e72c4-1.digest b/crates/crust-core/tests/data/import_baselines/color_temperature_off_usda-d2963845fd5e72c4-1.digest index 6b8a5e51d..7dfc2e1df 100644 --- a/crates/crust-core/tests/data/import_baselines/color_temperature_off_usda-d2963845fd5e72c4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/color_temperature_off_usda-d2963845fd5e72c4-1.digest @@ -18,4 +18,4 @@ provenance light /World/S: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/S provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/color_temperature_usda-a7d9f5fccba89fff-1.digest b/crates/crust-core/tests/data/import_baselines/color_temperature_usda-a7d9f5fccba89fff-1.digest index ccaf679d0..1f3639200 100644 --- a/crates/crust-core/tests/data/import_baselines/color_temperature_usda-a7d9f5fccba89fff-1.digest +++ b/crates/crust-core/tests/data/import_baselines/color_temperature_usda-a7d9f5fccba89fff-1.digest @@ -18,4 +18,4 @@ provenance light /World/S: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/S provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/compensation_alias_usda-ea168514e7b00460-1.digest b/crates/crust-core/tests/data/import_baselines/compensation_alias_usda-ea168514e7b00460-1.digest index f79f645ea..446d7527d 100644 --- a/crates/crust-core/tests/data/import_baselines/compensation_alias_usda-ea168514e7b00460-1.digest +++ b/crates/crust-core/tests/data/import_baselines/compensation_alias_usda-ea168514e7b00460-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/compensation_off_usda-37a366efa8d50980-1.digest b/crates/crust-core/tests/data/import_baselines/compensation_off_usda-37a366efa8d50980-1.digest index e8750991b..9821654eb 100644 --- a/crates/crust-core/tests/data/import_baselines/compensation_off_usda-37a366efa8d50980-1.digest +++ b/crates/crust-core/tests/data/import_baselines/compensation_off_usda-37a366efa8d50980-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/constant_cage_usda-6838009dc4d51123-1.digest b/crates/crust-core/tests/data/import_baselines/constant_cage_usda-6838009dc4d51123-1.digest index 54048fc2a..a934816be 100644 --- a/crates/crust-core/tests/data/import_baselines/constant_cage_usda-6838009dc4d51123-1.digest +++ b/crates/crust-core/tests/data/import_baselines/constant_cage_usda-6838009dc4d51123-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17961869511521861346, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/constant_none_off_usda-4da7234b198fc34c-1.digest b/crates/crust-core/tests/data/import_baselines/constant_none_off_usda-4da7234b198fc34c-1.digest index 1be488529..c4a4a5af8 100644 --- a/crates/crust-core/tests/data/import_baselines/constant_none_off_usda-4da7234b198fc34c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/constant_none_off_usda-4da7234b198fc34c-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17961869511521861346, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/constant_none_usda-3f38201b0c964211-1.digest b/crates/crust-core/tests/data/import_baselines/constant_none_usda-3f38201b0c964211-1.digest index 33b9a535a..ebe84066f 100644 --- a/crates/crust-core/tests/data/import_baselines/constant_none_usda-3f38201b0c964211-1.digest +++ b/crates/crust-core/tests/data/import_baselines/constant_none_usda-3f38201b0c964211-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8084853767877771290, n_points: 25, n_indices: 64, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/convolve_usda-ae27710a0c217615-1.digest b/crates/crust-core/tests/data/import_baselines/convolve_usda-ae27710a0c217615-1.digest index 6dcacac14..bb3773d01 100644 --- a/crates/crust-core/tests/data/import_baselines/convolve_usda-ae27710a0c217615-1.digest +++ b/crates/crust-core/tests/data/import_baselines/convolve_usda-ae27710a0c217615-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/copper_usda-856b7fd7384c75f6-1.digest b/crates/crust-core/tests/data/import_baselines/copper_usda-856b7fd7384c75f6-1.digest index 2bea292a5..699cb80e1 100644 --- a/crates/crust-core/tests/data/import_baselines/copper_usda-856b7fd7384c75f6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/copper_usda-856b7fd7384c75f6-1.digest @@ -17,4 +17,4 @@ provenance material /World/Copper: MaterialOrigin { slots: [0], displaced: false provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-1f6a1535ca10a892-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-1f6a1535ca10a892-1.digest index b3f94a4c4..34ad6fd62 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-1f6a1535ca10a892-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-1f6a1535ca10a892-1.digest @@ -52,4 +52,4 @@ provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16903 provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2685769528314553797, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-1.digest index f0e9111c0..c391fb6e3 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-1.digest @@ -52,4 +52,4 @@ provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16903 provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2685769528314553797, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-2.digest index f0e9111c0..c391fb6e3 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-7da4bd79d2eda8bf-2.digest @@ -52,4 +52,4 @@ provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16903 provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2685769528314553797, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-1.digest index f0e9111c0..c391fb6e3 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-1.digest @@ -52,4 +52,4 @@ provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16903 provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2685769528314553797, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-2.digest index f0e9111c0..c391fb6e3 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-9ca98c606b8b14bb-2.digest @@ -52,4 +52,4 @@ provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16903 provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2685769528314553797, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-dddcb8fd2ce59c1f-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-dddcb8fd2ce59c1f-1.digest index f0e9111c0..c391fb6e3 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-dddcb8fd2ce59c1f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_guided_usda-dddcb8fd2ce59c1f-1.digest @@ -52,4 +52,4 @@ provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16903 provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2685769528314553797, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-28fa5fe21d50ecee-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-28fa5fe21d50ecee-1.digest index 32d801135..2c1284f4b 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-28fa5fe21d50ecee-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-28fa5fe21d50ecee-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-8e3a0cbcd6f4b7b0-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-8e3a0cbcd6f4b7b0-1.digest index 4aa5e56c4..e89d728d4 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-8e3a0cbcd6f4b7b0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-8e3a0cbcd6f4b7b0-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-937b5a30e0d1b2a9-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-937b5a30e0d1b2a9-1.digest index e3ee26e2b..c7d7c52c1 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-937b5a30e0d1b2a9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-937b5a30e0d1b2a9-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-a0bb21684d68d231-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-a0bb21684d68d231-1.digest index e3ee26e2b..c7d7c52c1 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-a0bb21684d68d231-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-a0bb21684d68d231-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-f5ac4ca7187d0afa-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-f5ac4ca7187d0afa-1.digest index b4c98896c..2a84f68ff 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-f5ac4ca7187d0afa-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_lookdev_usda-f5ac4ca7187d0afa-1.digest @@ -41,4 +41,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-015a68615622d007-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-021e0477d02e8b56-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-021e0477d02e8b56-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-021e0477d02e8b56-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-021e0477d02e8b56-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-08de1880a086a764-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-08de1880a086a764-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-08de1880a086a764-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-08de1880a086a764-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-0c23ef94659b6f93-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-108152a6f960262b-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-15e73f9974620a1a-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-15e73f9974620a1a-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-15e73f9974620a1a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-15e73f9974620a1a-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-16d2af5b91e595bd-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-16d2af5b91e595bd-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-16d2af5b91e595bd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-16d2af5b91e595bd-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-1aeeae0fba6dbe97-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-1aeeae0fba6dbe97-1.digest index 23ff98f56..8d3bb0b40 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-1aeeae0fba6dbe97-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-1aeeae0fba6dbe97-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-211d55a31b3d62fa-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-248f67f6240f7680-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-248f67f6240f7680-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-248f67f6240f7680-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-248f67f6240f7680-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-254e9b608e6c20f0-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-254e9b608e6c20f0-1.digest index 953b46543..1acaeaed9 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-254e9b608e6c20f0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-254e9b608e6c20f0-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("lin_rec709") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-265ef4c54c4d2534-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-265ef4c54c4d2534-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-265ef4c54c4d2534-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-265ef4c54c4d2534-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2711a47b10d83a96-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2711a47b10d83a96-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2711a47b10d83a96-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2711a47b10d83a96-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-3.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-3.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-3.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-4.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-4.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-4.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-5.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-5.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-5.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-5.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-6.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-6.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-6.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2772d706794ce66b-6.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2cf51e7bf43f4fa8-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2cf51e7bf43f4fa8-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2cf51e7bf43f4fa8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2cf51e7bf43f4fa8-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-3.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-3.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-2dd566e6043ed6b0-3.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a12e7835578a84e-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a12e7835578a84e-1.digest index 99a6fa0f0..ed09acff1 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a12e7835578a84e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a12e7835578a84e-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a2af9f3e570b458-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a2af9f3e570b458-1.digest index 7ab7c87a1..10c3b5af3 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a2af9f3e570b458-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3a2af9f3e570b458-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c316a1edd099ef0-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c316a1edd099ef0-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c316a1edd099ef0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c316a1edd099ef0-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c74fafa1c66c123-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c74fafa1c66c123-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c74fafa1c66c123-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3c74fafa1c66c123-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3cac72b0550f05b3-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3cac72b0550f05b3-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3cac72b0550f05b3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-3cac72b0550f05b3-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-450b164daa4e0f80-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-450b164daa4e0f80-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-450b164daa4e0f80-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-450b164daa4e0f80-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-48a104b8a2799466-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-48a104b8a2799466-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-48a104b8a2799466-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-48a104b8a2799466-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-518e1fd5063f7227-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-518e1fd5063f7227-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-518e1fd5063f7227-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-518e1fd5063f7227-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-10.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-10.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-10.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-10.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-11.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-11.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-11.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-11.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-12.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-12.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-12.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-12.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-13.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-13.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-13.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-13.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-14.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-14.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-14.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-14.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-15.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-15.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-15.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-15.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-16.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-16.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-16.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-16.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-17.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-17.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-17.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-17.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-18.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-18.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-18.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-18.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-19.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-19.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-19.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-19.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-20.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-20.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-20.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-20.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-21.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-21.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-21.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-21.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-22.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-22.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-22.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-22.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-23.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-23.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-23.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-23.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-24.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-24.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-24.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-24.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-25.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-25.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-25.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-25.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-3.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-3.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-3.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-4.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-4.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-4.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-5.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-5.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-5.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-5.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-6.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-6.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-6.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-6.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-7.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-7.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-7.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-7.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-8.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-8.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-8.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-8.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-9.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-9.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-9.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-563fb301d9f1f469-9.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5d064faa753e9d7b-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5d064faa753e9d7b-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5d064faa753e9d7b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5d064faa753e9d7b-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5e1b400d2f0d70bc-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5e1b400d2f0d70bc-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5e1b400d2f0d70bc-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5e1b400d2f0d70bc-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5ff835103ecfad3e-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5ff835103ecfad3e-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5ff835103ecfad3e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-5ff835103ecfad3e-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61a13a775605a0ce-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61a13a775605a0ce-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61a13a775605a0ce-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61a13a775605a0ce-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61e87f520a6a2dff-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61e87f520a6a2dff-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61e87f520a6a2dff-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-61e87f520a6a2dff-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-63b1f6980e443f71-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-63b1f6980e443f71-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-63b1f6980e443f71-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-63b1f6980e443f71-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67753350f4f997a4-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67753350f4f997a4-1.digest index 9d760267f..46d40cedd 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67753350f4f997a4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67753350f4f997a4-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [NodeDef { name: "studio_mix", node: "studio_mix", inputs: [DefInput { name: "fg_color", type_name: "color3", value: Some(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 3 }), text: Some("0, 0, 0") }, DefInput { name: "bg_color", type_name: "color3", value: Some(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 3 }), text: Some("0, 0, 0") }, DefInput { name: "amount", type_name: "float", value: Some(Val { v: [0.5, 0.5, 0.5, 0.5], arity: 1 }), text: Some("0.5") }], outputs: [DefOutput { name: "blended", type_name: "color3" }], inherit: None, version: None, default_version: false }], by_name: {"studio_mix": 0}, impls: {"studio_mix": Implementation { name: "NG_studio_mix", nodedef: "studio_mix", nodes: [Node { category: "mix", name: "mix", type_name: "color3", inputs: [Input { name: "bg", type_name: "color3", source: Value(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 1 }), colorspace: None, text: None, interface: Some("bg_color") }, Input { name: "fg", type_name: "color3", source: Value(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 1 }), colorspace: None, text: None, interface: Some("fg_color") }, Input { name: "mix", type_name: "float", source: Value(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 1 }), colorspace: None, text: None, interface: Some("amount") }], graph: Some("NG_studio_mix"), version: None, colorspace: None }], outputs: [ImplOutput { name: "blended", type_name: "color3", node: "mix", output: None }] }}, files: ["$TMP/crust_check_cli/mtlx_library/lib/studio/studio_nodes.mtlx"] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [NodeDef { name: "studio_mix", node: "studio_mix", inputs: [DefInput { name: "fg_color", type_name: "color3", value: Some(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 3 }), text: Some("0, 0, 0") }, DefInput { name: "bg_color", type_name: "color3", value: Some(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 3 }), text: Some("0, 0, 0") }, DefInput { name: "amount", type_name: "float", value: Some(Val { v: [0.5, 0.5, 0.5, 0.5], arity: 1 }), text: Some("0.5") }], outputs: [DefOutput { name: "blended", type_name: "color3" }], inherit: None, version: None, default_version: false }], by_name: {"studio_mix": 0}, impls: {"studio_mix": Implementation { name: "NG_studio_mix", nodedef: "studio_mix", nodes: [Node { category: "mix", name: "mix", type_name: "color3", inputs: [Input { name: "bg", type_name: "color3", source: Value(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 1 }), colorspace: None, text: None, interface: Some("bg_color") }, Input { name: "fg", type_name: "color3", source: Value(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 1 }), colorspace: None, text: None, interface: Some("fg_color") }, Input { name: "mix", type_name: "float", source: Value(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 1 }), colorspace: None, text: None, interface: Some("amount") }], graph: Some("NG_studio_mix"), version: None, colorspace: None }], outputs: [ImplOutput { name: "blended", type_name: "color3", node: "mix", output: None }] }}, files: ["$TMP/crust_check_cli/mtlx_library/lib/studio/studio_nodes.mtlx"] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67d6afd449214b25-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67d6afd449214b25-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67d6afd449214b25-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-67d6afd449214b25-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7300aa94ecae6c37-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7300aa94ecae6c37-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7300aa94ecae6c37-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7300aa94ecae6c37-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7478515f32354718-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7478515f32354718-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7478515f32354718-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7478515f32354718-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7ba56e4f79d4195f-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7ba56e4f79d4195f-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7ba56e4f79d4195f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7ba56e4f79d4195f-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7e55fcb3620f4663-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7e55fcb3620f4663-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7e55fcb3620f4663-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7e55fcb3620f4663-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7f63dd70a33e2183-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7f63dd70a33e2183-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7f63dd70a33e2183-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-7f63dd70a33e2183-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-3.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-3.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-3.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-4.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-4.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-816ed2710215c157-4.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88df24aa0618a335-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88df24aa0618a335-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88df24aa0618a335-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88df24aa0618a335-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88e25ed80282bc79-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88e25ed80282bc79-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88e25ed80282bc79-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88e25ed80282bc79-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88eeabb6ac92eef4-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88eeabb6ac92eef4-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88eeabb6ac92eef4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-88eeabb6ac92eef4-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-89c626c1e078ca38-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-89c626c1e078ca38-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-89c626c1e078ca38-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-89c626c1e078ca38-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8d8e99f6790507a9-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8e692f67a3c276f4-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8e692f67a3c276f4-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8e692f67a3c276f4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8e692f67a3c276f4-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8ecb1db3e29a9e13-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8ecb1db3e29a9e13-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8ecb1db3e29a9e13-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-8ecb1db3e29a9e13-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-93e84687c267227a-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-93e84687c267227a-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-93e84687c267227a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-93e84687c267227a-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9514c8683d2c9e4d-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9514c8683d2c9e4d-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9514c8683d2c9e4d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9514c8683d2c9e4d-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-96761b8033e5fb3c-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-96761b8033e5fb3c-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-96761b8033e5fb3c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-96761b8033e5fb3c-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-987ee05acd715dfa-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-987ee05acd715dfa-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-987ee05acd715dfa-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-987ee05acd715dfa-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-99aef82ca410b677-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-99aef82ca410b677-1.digest index 35aa92aab..be9190bf7 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-99aef82ca410b677-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-99aef82ca410b677-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(42.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(42.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9a0515f0d918dd40-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9a0515f0d918dd40-1.digest index db8cffa50..0b46339e4 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9a0515f0d918dd40-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9a0515f0d918dd40-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-10.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-10.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-10.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-10.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-100.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-100.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-100.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-100.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-101.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-101.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-101.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-101.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-102.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-102.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-102.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-102.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-103.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-103.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-103.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-103.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-104.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-104.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-104.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-104.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-105.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-105.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-105.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-105.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-106.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-106.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-106.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-106.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-107.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-107.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-107.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-107.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-108.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-108.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-108.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-108.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-109.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-109.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-109.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-109.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-11.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-11.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-11.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-11.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-110.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-110.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-110.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-110.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-111.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-111.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-111.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-111.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-112.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-112.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-112.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-112.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-113.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-113.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-113.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-113.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-114.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-114.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-114.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-114.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-115.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-115.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-115.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-115.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-116.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-116.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-116.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-116.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-117.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-117.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-117.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-117.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-118.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-118.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-118.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-118.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-119.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-119.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-119.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-119.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-12.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-12.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-12.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-12.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-120.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-120.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-120.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-120.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-121.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-121.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-121.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-121.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-122.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-122.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-122.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-122.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-123.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-123.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-123.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-123.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-124.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-124.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-124.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-124.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-125.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-125.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-125.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-125.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-126.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-126.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-126.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-126.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-127.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-127.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-127.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-127.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-128.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-128.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-128.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-128.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-129.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-129.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-129.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-129.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-13.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-13.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-13.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-13.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-130.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-130.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-130.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-130.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-131.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-131.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-131.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-131.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-132.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-132.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-132.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-132.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-133.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-133.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-133.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-133.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-134.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-134.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-134.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-134.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-135.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-135.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-135.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-135.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-136.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-136.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-136.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-136.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-137.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-137.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-137.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-137.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-138.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-138.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-138.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-138.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-139.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-139.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-139.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-139.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-14.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-14.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-14.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-14.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-140.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-140.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-140.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-140.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-141.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-141.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-141.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-141.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-142.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-142.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-142.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-142.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-143.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-143.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-143.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-143.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-144.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-144.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-144.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-144.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-145.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-145.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-145.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-145.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-146.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-146.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-146.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-146.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-147.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-147.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-147.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-147.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-148.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-148.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-148.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-148.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-149.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-149.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-149.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-149.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-15.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-15.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-15.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-15.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-150.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-150.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-150.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-150.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-151.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-151.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-151.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-151.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-152.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-152.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-152.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-152.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-153.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-153.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-153.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-153.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-154.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-154.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-154.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-154.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-155.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-155.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-155.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-155.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-156.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-156.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-156.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-156.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-157.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-157.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-157.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-157.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-158.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-158.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-158.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-158.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-159.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-159.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-159.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-159.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-16.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-16.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-16.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-16.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-160.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-160.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-160.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-160.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-161.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-161.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-161.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-161.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-162.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-162.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-162.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-162.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-163.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-163.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-163.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-163.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-164.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-164.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-164.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-164.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-165.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-165.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-165.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-165.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-166.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-166.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-166.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-166.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-167.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-167.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-167.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-167.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-168.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-168.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-168.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-168.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-169.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-169.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-169.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-169.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-17.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-17.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-17.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-17.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-170.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-170.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-170.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-170.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-171.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-171.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-171.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-171.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-172.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-172.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-172.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-172.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-173.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-173.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-173.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-173.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-174.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-174.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-174.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-174.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-175.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-175.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-175.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-175.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-176.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-176.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-176.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-176.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-177.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-177.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-177.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-177.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-178.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-178.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-178.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-178.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-179.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-179.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-179.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-179.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-18.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-18.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-18.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-18.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-180.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-180.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-180.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-180.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-181.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-181.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-181.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-181.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-182.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-182.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-182.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-182.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-183.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-183.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-183.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-183.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-184.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-184.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-184.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-184.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-185.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-185.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-185.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-185.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-186.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-186.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-186.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-186.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-187.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-187.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-187.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-187.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-188.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-188.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-188.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-188.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-189.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-189.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-189.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-189.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-19.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-19.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-19.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-19.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-190.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-190.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-190.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-190.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-191.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-191.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-191.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-191.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-192.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-192.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-192.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-192.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-20.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-20.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-20.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-20.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-21.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-21.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-21.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-21.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-22.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-22.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-22.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-22.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-23.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-23.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-23.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-23.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-24.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-24.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-24.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-24.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-25.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-25.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-25.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-25.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-26.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-26.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-26.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-26.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-27.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-27.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-27.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-27.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-28.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-28.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-28.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-28.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-29.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-29.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-29.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-29.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-3.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-3.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-3.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-30.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-30.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-30.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-30.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-31.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-31.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-31.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-31.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-32.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-32.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-32.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-32.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-33.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-33.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-33.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-33.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-34.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-34.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-34.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-34.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-35.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-35.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-35.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-35.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-36.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-36.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-36.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-36.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-37.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-37.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-37.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-37.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-38.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-38.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-38.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-38.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-39.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-39.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-39.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-39.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-4.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-4.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-4.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-40.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-40.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-40.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-40.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-41.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-41.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-41.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-41.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-42.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-42.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-42.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-42.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-43.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-43.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-43.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-43.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-44.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-44.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-44.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-44.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-45.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-45.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-45.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-45.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-46.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-46.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-46.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-46.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-47.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-47.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-47.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-47.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-48.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-48.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-48.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-48.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-49.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-49.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-49.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-49.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-5.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-5.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-5.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-5.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-50.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-50.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-50.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-50.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-51.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-51.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-51.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-51.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-52.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-52.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-52.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-52.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-53.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-53.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-53.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-53.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-54.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-54.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-54.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-54.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-55.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-55.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-55.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-55.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-56.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-56.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-56.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-56.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-57.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-57.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-57.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-57.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-58.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-58.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-58.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-58.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-59.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-59.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-59.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-59.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-6.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-6.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-6.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-6.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-60.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-60.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-60.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-60.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-61.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-61.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-61.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-61.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-62.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-62.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-62.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-62.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-63.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-63.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-63.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-63.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-64.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-64.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-64.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-64.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-65.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-65.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-65.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-65.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-66.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-66.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-66.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-66.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-67.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-67.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-67.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-67.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-68.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-68.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-68.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-68.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-69.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-69.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-69.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-69.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-7.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-7.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-7.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-7.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-70.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-70.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-70.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-70.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-71.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-71.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-71.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-71.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-72.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-72.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-72.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-72.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-73.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-73.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-73.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-73.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-74.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-74.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-74.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-74.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-75.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-75.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-75.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-75.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-76.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-76.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-76.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-76.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-77.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-77.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-77.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-77.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-78.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-78.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-78.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-78.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-79.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-79.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-79.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-79.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-8.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-8.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-8.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-8.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-80.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-80.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-80.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-80.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-81.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-81.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-81.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-81.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-82.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-82.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-82.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-82.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-83.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-83.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-83.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-83.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-84.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-84.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-84.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-84.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-85.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-85.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-85.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-85.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-86.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-86.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-86.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-86.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-87.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-87.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-87.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-87.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-88.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-88.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-88.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-88.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-89.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-89.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-89.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-89.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-9.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-9.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-9.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-9.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-90.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-90.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-90.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-90.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-91.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-91.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-91.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-91.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-92.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-92.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-92.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-92.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-93.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-93.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-93.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-93.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-94.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-94.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-94.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-94.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-95.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-95.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-95.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-95.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-96.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-96.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-96.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-96.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-97.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-97.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-97.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-97.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-98.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-98.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-98.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-98.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-99.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-99.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-99.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-9c84bf52ec0561b1-99.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a06c636245c00028-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a06c636245c00028-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a06c636245c00028-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a06c636245c00028-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-3.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-3.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-3.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-4.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-4.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-4.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-5.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-5.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-5.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-5.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-6.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-6.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-6.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a18d02fea0ac9ae3-6.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a1b6b7b33175c629-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a1b6b7b33175c629-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a1b6b7b33175c629-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a1b6b7b33175c629-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a6c99e7589fd5bbe-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a6c99e7589fd5bbe-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a6c99e7589fd5bbe-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-a6c99e7589fd5bbe-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-3.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-3.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-3.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-4.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-4.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b04eda6325f3cbbf-4.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b194c866668b8c75-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b194c866668b8c75-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b194c866668b8c75-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b194c866668b8c75-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b32b870ba5ca59f9-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b32b870ba5ca59f9-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b32b870ba5ca59f9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b32b870ba5ca59f9-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b3d2bc2ed9037c82-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b3d2bc2ed9037c82-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b3d2bc2ed9037c82-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b3d2bc2ed9037c82-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b62de59b31ca0e80-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b62de59b31ca0e80-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b62de59b31ca0e80-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b62de59b31ca0e80-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b6c7e44d8560abd5-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b6c7e44d8560abd5-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b6c7e44d8560abd5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-b6c7e44d8560abd5-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-3.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-3.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-3.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-4.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-4.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-4.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-5.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-5.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-5.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bb1cc653d4ac376a-5.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-bba4bdda287871cf-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-be34c0d526943796-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-be34c0d526943796-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-be34c0d526943796-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-be34c0d526943796-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cb7b0dee2139a326-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cb7b0dee2139a326-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cb7b0dee2139a326-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cb7b0dee2139a326-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cdab40c0e9cba23f-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cdab40c0e9cba23f-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cdab40c0e9cba23f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cdab40c0e9cba23f-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cf47b345f0453895-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cf47b345f0453895-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cf47b345f0453895-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-cf47b345f0453895-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d3d144cf7b8b758b-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d3d144cf7b8b758b-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d3d144cf7b8b758b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d3d144cf7b8b758b-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-d5734d22b9c37571-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-da1f2707813489ef-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-da1f2707813489ef-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-da1f2707813489ef-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-da1f2707813489ef-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-3.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-3.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-df23dfac5ede9611-3.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-3.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-3.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-3.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-4.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-4.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-e82204be97718dbd-4.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ec6907d7b5edc24c-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ec6907d7b5edc24c-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ec6907d7b5edc24c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ec6907d7b5edc24c-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ed05b9821202ec22-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ed05b9821202ec22-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ed05b9821202ec22-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-ed05b9821202ec22-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-efc8f2e410ea1edf-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-efc8f2e410ea1edf-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-efc8f2e410ea1edf-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-efc8f2e410ea1edf-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0235d211948c8ae-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0235d211948c8ae-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0235d211948c8ae-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0235d211948c8ae-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0d9751b5af0e124-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0d9751b5af0e124-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0d9751b5af0e124-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f0d9751b5af0e124-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-3.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-3.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-3.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-4.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-4.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f3f2b534bfcc0db6-4.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f52f4933a61a7b17-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f52f4933a61a7b17-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f52f4933a61a7b17-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f52f4933a61a7b17-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f72ab0ee474423bf-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f72ab0ee474423bf-1.digest index e24e32db9..1d5ab0cab 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f72ab0ee474423bf-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f72ab0ee474423bf-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-3.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-3.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f74efd8c1a39793d-3.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-2.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-2.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-2.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-2.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-3.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-3.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-3.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-3.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-4.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-4.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-4.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-f91ae1b4cc3a5130-4.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-fc498f82a9cb979f-1.digest b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-fc498f82a9cb979f-1.digest index 96a44f5fd..0e859a952 100644 --- a/crates/crust-core/tests/data/import_baselines/cornellbox_usda-fc498f82a9cb979f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cornellbox_usda-fc498f82a9cb979f-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/counters_usda-4398822590228cb6-1.digest b/crates/crust-core/tests/data/import_baselines/counters_usda-4398822590228cb6-1.digest index ec3270392..57e7ef23e 100644 --- a/crates/crust-core/tests/data/import_baselines/counters_usda-4398822590228cb6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/counters_usda-4398822590228cb6-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/curves_usda-49b1041fa43b5df8-1.digest b/crates/crust-core/tests/data/import_baselines/curves_usda-49b1041fa43b5df8-1.digest index b652b8b8a..87c0dbdd8 100644 --- a/crates/crust-core/tests/data/import_baselines/curves_usda-49b1041fa43b5df8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/curves_usda-49b1041fa43b5df8-1.digest @@ -17,4 +17,4 @@ provenance light /World/dome: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/hair provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-1.digest b/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-1.digest index d627e2603..6bc3c9d8e 100644 --- a/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-1.digest +++ b/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-1.digest @@ -28,4 +28,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-2.digest b/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-2.digest index d627e2603..6bc3c9d8e 100644 --- a/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-2.digest +++ b/crates/crust-core/tests/data/import_baselines/curves_usda-68ff2953cfbdeb73-2.digest @@ -28,4 +28,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/curves_usda-6c82e9cb233e7c1e-1.digest b/crates/crust-core/tests/data/import_baselines/curves_usda-6c82e9cb233e7c1e-1.digest index d627e2603..6bc3c9d8e 100644 --- a/crates/crust-core/tests/data/import_baselines/curves_usda-6c82e9cb233e7c1e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/curves_usda-6c82e9cb233e7c1e-1.digest @@ -28,4 +28,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/curves_usda-bf538717464b4055-1.digest b/crates/crust-core/tests/data/import_baselines/curves_usda-bf538717464b4055-1.digest index d627e2603..6bc3c9d8e 100644 --- a/crates/crust-core/tests/data/import_baselines/curves_usda-bf538717464b4055-1.digest +++ b/crates/crust-core/tests/data/import_baselines/curves_usda-bf538717464b4055-1.digest @@ -28,4 +28,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/curves_usda-e59f2a157a03b823-1.digest b/crates/crust-core/tests/data/import_baselines/curves_usda-e59f2a157a03b823-1.digest index 717e1fe49..3532a6e9a 100644 --- a/crates/crust-core/tests/data/import_baselines/curves_usda-e59f2a157a03b823-1.digest +++ b/crates/crust-core/tests/data/import_baselines/curves_usda-e59f2a157a03b823-1.digest @@ -27,4 +27,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cycle_usda-6c5127dceb205457-1.digest b/crates/crust-core/tests/data/import_baselines/cycle_usda-6c5127dceb205457-1.digest index eb99622bc..02b4f6b47 100644 --- a/crates/crust-core/tests/data/import_baselines/cycle_usda-6c5127dceb205457-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cycle_usda-6c5127dceb205457-1.digest @@ -24,4 +24,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cyl_far_usda-14bf93b40e3110ed-1.digest b/crates/crust-core/tests/data/import_baselines/cyl_far_usda-14bf93b40e3110ed-1.digest index 7bc29c051..808770534 100644 --- a/crates/crust-core/tests/data/import_baselines/cyl_far_usda-14bf93b40e3110ed-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cyl_far_usda-14bf93b40e3110ed-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13212365895451826409, n_points: 66, n_indices: 160, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cyl_near_usda-8880b5f4401667ce-1.digest b/crates/crust-core/tests/data/import_baselines/cyl_near_usda-8880b5f4401667ce-1.digest index a648382ff..6c56f4986 100644 --- a/crates/crust-core/tests/data/import_baselines/cyl_near_usda-8880b5f4401667ce-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cyl_near_usda-8880b5f4401667ce-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14166617919414075720, n_points: 166, n_indices: 410, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cyl_proto_nested_usda-337785a80bd25b4b-1.digest b/crates/crust-core/tests/data/import_baselines/cyl_proto_nested_usda-337785a80bd25b4b-1.digest index 5f14ac9a3..172221ebf 100644 --- a/crates/crust-core/tests/data/import_baselines/cyl_proto_nested_usda-337785a80bd25b4b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cyl_proto_nested_usda-337785a80bd25b4b-1.digest @@ -18,4 +18,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 68771 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14166617919414075720, n_points: 166, n_indices: 410, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cyl_proto_once_usda-5861fac834a9592e-1.digest b/crates/crust-core/tests/data/import_baselines/cyl_proto_once_usda-5861fac834a9592e-1.digest index 676d3b247..9888192cd 100644 --- a/crates/crust-core/tests/data/import_baselines/cyl_proto_once_usda-5861fac834a9592e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cyl_proto_once_usda-5861fac834a9592e-1.digest @@ -16,4 +16,4 @@ provenance geometry 0..1: /W/A provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14166617919414075720, n_points: 166, n_indices: 410, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cyl_proto_twice_usda-9d0b4387b8ae21e9-1.digest b/crates/crust-core/tests/data/import_baselines/cyl_proto_twice_usda-9d0b4387b8ae21e9-1.digest index 0e06e22fd..b22eab114 100644 --- a/crates/crust-core/tests/data/import_baselines/cyl_proto_twice_usda-9d0b4387b8ae21e9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cyl_proto_twice_usda-9d0b4387b8ae21e9-1.digest @@ -18,4 +18,4 @@ provenance geometry 1..2: /W/A provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6877125351767401758, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cyl_unnamed_usda-6b8943ce79ec798b-1.digest b/crates/crust-core/tests/data/import_baselines/cyl_unnamed_usda-6b8943ce79ec798b-1.digest index 3f596d5e1..29d7230d1 100644 --- a/crates/crust-core/tests/data/import_baselines/cyl_unnamed_usda-6b8943ce79ec798b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cyl_unnamed_usda-6b8943ce79ec798b-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6877125351767401758, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/cylinder_light_usda-a8869b560165f646-1.digest b/crates/crust-core/tests/data/import_baselines/cylinder_light_usda-a8869b560165f646-1.digest index 6d10d8b76..2962d84b5 100644 --- a/crates/crust-core/tests/data/import_baselines/cylinder_light_usda-a8869b560165f646-1.digest +++ b/crates/crust-core/tests/data/import_baselines/cylinder_light_usda-a8869b560165f646-1.digest @@ -18,4 +18,4 @@ provenance light /World/C: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dangling_usda-33cdcee1c03a3f62-1.digest b/crates/crust-core/tests/data/import_baselines/dangling_usda-33cdcee1c03a3f62-1.digest index 761cc2fbb..e761806d5 100644 --- a/crates/crust-core/tests/data/import_baselines/dangling_usda-33cdcee1c03a3f62-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dangling_usda-33cdcee1c03a3f62-1.digest @@ -18,4 +18,4 @@ provenance material /World/Nope: MaterialOrigin { slots: [0], displaced: false } provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/default_links_usda-fa4bfc17658672ca-1.digest b/crates/crust-core/tests/data/import_baselines/default_links_usda-fa4bfc17658672ca-1.digest index 0432e7c6c..1717f562a 100644 --- a/crates/crust-core/tests/data/import_baselines/default_links_usda-fa4bfc17658672ca-1.digest +++ b/crates/crust-core/tests/data/import_baselines/default_links_usda-fa4bfc17658672ca-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/L provenance geometry 1..2: /World/Ball provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/degenerate_lights_usda-c119df2817a52e22-1.digest b/crates/crust-core/tests/data/import_baselines/degenerate_lights_usda-c119df2817a52e22-1.digest index 7298948f9..5de87a653 100644 --- a/crates/crust-core/tests/data/import_baselines/degenerate_lights_usda-c119df2817a52e22-1.digest +++ b/crates/crust-core/tests/data/import_baselines/degenerate_lights_usda-c119df2817a52e22-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dicing_alone_ref_usda-ad2f6d6f9f5a6b34-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_alone_ref_usda-ad2f6d6f9f5a6b34-1.digest index 2c62796f7..21ebb66d4 100644 --- a/crates/crust-core/tests/data/import_baselines/dicing_alone_ref_usda-ad2f6d6f9f5a6b34-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dicing_alone_ref_usda-ad2f6d6f9f5a6b34-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 3281387520, 1150494134, 0, 0, 3281387520, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 3281387520, 1150494134, 0, 0, 3281387520, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dicing_alone_usda-d2a904287b895157-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_alone_usda-d2a904287b895157-1.digest index 4fd04aa9d..1915243f3 100644 --- a/crates/crust-core/tests/data/import_baselines/dicing_alone_usda-d2a904287b895157-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dicing_alone_usda-d2a904287b895157-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 3281387520, 1150494134, 0, 0, 3281387520, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: Some("/W/Near"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 3281387520, 1150494134, 0, 0, 3281387520, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: Some("/W/Near"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dicing_near_usda-2b8cc53942e05573-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_near_usda-2b8cc53942e05573-1.digest index 82581e465..7dbd7eb96 100644 --- a/crates/crust-core/tests/data/import_baselines/dicing_near_usda-2b8cc53942e05573-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dicing_near_usda-2b8cc53942e05573-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 3281387520, 1150494134, 0, 0, 3281387520, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: Some("/W/Near"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 3281387520, 1150494134, 0, 0, 3281387520, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: Some("/W/Near"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dicing_nothing_usda-02863a7cb9ea2edb-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_nothing_usda-02863a7cb9ea2edb-1.digest index b06487ea6..3449a9f41 100644 --- a/crates/crust-core/tests/data/import_baselines/dicing_nothing_usda-02863a7cb9ea2edb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dicing_nothing_usda-02863a7cb9ea2edb-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11641728572909156760, n_points: 56, n_indices: 324, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dicing_product_diced_usda-bde5502fcf67625f-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_product_diced_usda-bde5502fcf67625f-1.digest index 455e0eb32..0dbca6a10 100644 --- a/crates/crust-core/tests/data/import_baselines/dicing_product_diced_usda-bde5502fcf67625f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dicing_product_diced_usda-bde5502fcf67625f-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11641728572909156760, n_points: 56, n_indices: 324, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: Some("/W/Cam"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: Some("/W/Cam"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dicing_product_ref_cam_usda-206ed631706e669f-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_product_ref_cam_usda-206ed631706e669f-1.digest index e14a68e9c..175e3540f 100644 --- a/crates/crust-core/tests/data/import_baselines/dicing_product_ref_cam_usda-206ed631706e669f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dicing_product_ref_cam_usda-206ed631706e669f-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11641728572909156760, n_points: 56, n_indices: 324, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dicing_product_ref_near_usda-a7f21d55b08b22eb-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_product_ref_near_usda-a7f21d55b08b22eb-1.digest index dc7477ae9..cc03c0006 100644 --- a/crates/crust-core/tests/data/import_baselines/dicing_product_ref_near_usda-a7f21d55b08b22eb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dicing_product_ref_near_usda-a7f21d55b08b22eb-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 3281387520, 1150494134, 0, 0, 3281387520, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 3281387520, 1150494134, 0, 0, 3281387520, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dicing_product_usda-0fe0e77ccc289c1f-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_product_usda-0fe0e77ccc289c1f-1.digest index 3e58474a9..d26df9e3e 100644 --- a/crates/crust-core/tests/data/import_baselines/dicing_product_usda-0fe0e77ccc289c1f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dicing_product_usda-0fe0e77ccc289c1f-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 3281387520, 1150494134, 0, 0, 3281387520, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 3281387520, 1150494134, 0, 0, 3281387520, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dicing_property_usda-541c1a7591a9b5c0-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_property_usda-541c1a7591a9b5c0-1.digest index 68ea3c0be..c41fc55dd 100644 --- a/crates/crust-core/tests/data/import_baselines/dicing_property_usda-541c1a7591a9b5c0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dicing_property_usda-541c1a7591a9b5c0-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11641728572909156760, n_points: 56, n_indices: 324, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dicing_ref_usda-450597df8121a96c-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_ref_usda-450597df8121a96c-1.digest index 2c38b4ef7..afa104d52 100644 --- a/crates/crust-core/tests/data/import_baselines/dicing_ref_usda-450597df8121a96c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dicing_ref_usda-450597df8121a96c-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11641728572909156760, n_points: 56, n_indices: 324, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dicing_self_usda-9d54e5a1b138ff5e-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_self_usda-9d54e5a1b138ff5e-1.digest index 80e6dbc91..ff6d9f3d5 100644 --- a/crates/crust-core/tests/data/import_baselines/dicing_self_usda-9d54e5a1b138ff5e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dicing_self_usda-9d54e5a1b138ff5e-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11641728572909156760, n_points: 56, n_indices: 324, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: Some("/W/Cam"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: Some("/W/Cam"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dicing_through_near_usda-43e145636209967d-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_through_near_usda-43e145636209967d-1.digest index bea575464..3db10d1dc 100644 --- a/crates/crust-core/tests/data/import_baselines/dicing_through_near_usda-43e145636209967d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dicing_through_near_usda-43e145636209967d-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 3281387520, 1150494134, 0, 0, 3281387520, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 3281387520, 1150494134, 0, 0, 3281387520, 3212836864, 0, 3196792357, 1065353216, 0, 3196792357, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dicing_unauthored_usda-d941af55d3f95425-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_unauthored_usda-d941af55d3f95425-1.digest index c3c8a3542..3d245b101 100644 --- a/crates/crust-core/tests/data/import_baselines/dicing_unauthored_usda-d941af55d3f95425-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dicing_unauthored_usda-d941af55d3f95425-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11641728572909156760, n_points: 56, n_indices: 324, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dicing_unnamed_usda-1911d7362c693947-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_unnamed_usda-1911d7362c693947-1.digest index d3de539bc..736239a92 100644 --- a/crates/crust-core/tests/data/import_baselines/dicing_unnamed_usda-1911d7362c693947-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dicing_unnamed_usda-1911d7362c693947-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Near"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Near"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dicing_xform_usda-fdb39a50b9314e69-1.digest b/crates/crust-core/tests/data/import_baselines/dicing_xform_usda-fdb39a50b9314e69-1.digest index 3e6b1f02c..a2227193c 100644 --- a/crates/crust-core/tests/data/import_baselines/dicing_xform_usda-fdb39a50b9314e69-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dicing_xform_usda-fdb39a50b9314e69-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11641728572909156760, n_points: 56, n_indices: 324, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Near", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/disabled_broken_usda-3e31009d90ef26ec-1.digest b/crates/crust-core/tests/data/import_baselines/disabled_broken_usda-3e31009d90ef26ec-1.digest index 4ee360dda..887fecd54 100644 --- a/crates/crust-core/tests/data/import_baselines/disabled_broken_usda-3e31009d90ef26ec-1.digest +++ b/crates/crust-core/tests/data/import_baselines/disabled_broken_usda-3e31009d90ef26ec-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/disk_light_usda-720389dc27e2a4c4-1.digest b/crates/crust-core/tests/data/import_baselines/disk_light_usda-720389dc27e2a4c4-1.digest index 67ca82991..d9df96fad 100644 --- a/crates/crust-core/tests/data/import_baselines/disk_light_usda-720389dc27e2a4c4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/disk_light_usda-720389dc27e2a4c4-1.digest @@ -18,4 +18,4 @@ provenance light /World/D: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/D provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/displaced_rest_usda-d70fe6fb257dd183-1.digest b/crates/crust-core/tests/data/import_baselines/displaced_rest_usda-d70fe6fb257dd183-1.digest index 512e9c172..fb70dea79 100644 --- a/crates/crust-core/tests/data/import_baselines/displaced_rest_usda-d70fe6fb257dd183-1.digest +++ b/crates/crust-core/tests/data/import_baselines/displaced_rest_usda-d70fe6fb257dd183-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 890298128050539104, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/displacement_usda-03e54e80075ba30c-1.digest b/crates/crust-core/tests/data/import_baselines/displacement_usda-03e54e80075ba30c-1.digest index a85c42864..f05b4a6c0 100644 --- a/crates/crust-core/tests/data/import_baselines/displacement_usda-03e54e80075ba30c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/displacement_usda-03e54e80075ba30c-1.digest @@ -33,4 +33,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 33658 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/displacement_usda-180936ed9cbacb0b-1.digest b/crates/crust-core/tests/data/import_baselines/displacement_usda-180936ed9cbacb0b-1.digest index 7d657948e..2ec73a63f 100644 --- a/crates/crust-core/tests/data/import_baselines/displacement_usda-180936ed9cbacb0b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/displacement_usda-180936ed9cbacb0b-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 33658 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3365857826316044740, n_points: 4225, n_indices: 16384, n_uvs: Some(4225), smooth: true, material: 2 }), placements: 1, shared: false, displaced: true } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/displacement_usda-4db664e792f21a27-1.digest b/crates/crust-core/tests/data/import_baselines/displacement_usda-4db664e792f21a27-1.digest index 7d657948e..2ec73a63f 100644 --- a/crates/crust-core/tests/data/import_baselines/displacement_usda-4db664e792f21a27-1.digest +++ b/crates/crust-core/tests/data/import_baselines/displacement_usda-4db664e792f21a27-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 33658 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3365857826316044740, n_points: 4225, n_indices: 16384, n_uvs: Some(4225), smooth: true, material: 2 }), placements: 1, shared: false, displaced: true } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/displacement_usda-5e2aa9f4f1dfd37e-1.digest b/crates/crust-core/tests/data/import_baselines/displacement_usda-5e2aa9f4f1dfd37e-1.digest index c8e5f687d..f6a02c518 100644 --- a/crates/crust-core/tests/data/import_baselines/displacement_usda-5e2aa9f4f1dfd37e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/displacement_usda-5e2aa9f4f1dfd37e-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 33658 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3365857826316044740, n_points: 4225, n_indices: 16384, n_uvs: Some(4225), smooth: true, material: 2 }), placements: 1, shared: false, displaced: true } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-1.digest b/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-1.digest index a85c42864..f05b4a6c0 100644 --- a/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-1.digest @@ -33,4 +33,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 33658 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-2.digest b/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-2.digest index a85c42864..f05b4a6c0 100644 --- a/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-2.digest +++ b/crates/crust-core/tests/data/import_baselines/displacement_usda-f5f1d4dfaa9feea3-2.digest @@ -33,4 +33,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 33658 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dof_default_lens_usda-c199c396bb781cc0-1.digest b/crates/crust-core/tests/data/import_baselines/dof_default_lens_usda-c199c396bb781cc0-1.digest index c21d5c753..a431e868d 100644 --- a/crates/crust-core/tests/data/import_baselines/dof_default_lens_usda-c199c396bb781cc0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dof_default_lens_usda-c199c396bb781cc0-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dof_default_usda-57e78e0586982b2f-1.digest b/crates/crust-core/tests/data/import_baselines/dof_default_usda-57e78e0586982b2f-1.digest index 3242cf3d9..c1e7bd7a0 100644 --- a/crates/crust-core/tests/data/import_baselines/dof_default_usda-57e78e0586982b2f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dof_default_usda-57e78e0586982b2f-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dof_disabled_bad_unit_usda-b76c543fc6398eaa-1.digest b/crates/crust-core/tests/data/import_baselines/dof_disabled_bad_unit_usda-b76c543fc6398eaa-1.digest index 40c8de369..c296e7543 100644 --- a/crates/crust-core/tests/data/import_baselines/dof_disabled_bad_unit_usda-b76c543fc6398eaa-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dof_disabled_bad_unit_usda-b76c543fc6398eaa-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dof_disabled_usda-420b407ea5317d3e-1.digest b/crates/crust-core/tests/data/import_baselines/dof_disabled_usda-420b407ea5317d3e-1.digest index 10234998b..c6a02a34b 100644 --- a/crates/crust-core/tests/data/import_baselines/dof_disabled_usda-420b407ea5317d3e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dof_disabled_usda-420b407ea5317d3e-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dof_fallback_lens_usda-bff40e44436746b1-1.digest b/crates/crust-core/tests/data/import_baselines/dof_fallback_lens_usda-bff40e44436746b1-1.digest index 51357adca..2276aa891 100644 --- a/crates/crust-core/tests/data/import_baselines/dof_fallback_lens_usda-bff40e44436746b1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dof_fallback_lens_usda-bff40e44436746b1-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dof_fallback_pinhole_usda-c69160a93b244f8f-1.digest b/crates/crust-core/tests/data/import_baselines/dof_fallback_pinhole_usda-c69160a93b244f8f-1.digest index 5e45ca3ab..b76376859 100644 --- a/crates/crust-core/tests/data/import_baselines/dof_fallback_pinhole_usda-c69160a93b244f8f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dof_fallback_pinhole_usda-c69160a93b244f8f-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dof_product_off_usda-ec7655fdc64080b7-1.digest b/crates/crust-core/tests/data/import_baselines/dof_product_off_usda-ec7655fdc64080b7-1.digest index f50e6a904..75a90a322 100644 --- a/crates/crust-core/tests/data/import_baselines/dof_product_off_usda-ec7655fdc64080b7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dof_product_off_usda-ec7655fdc64080b7-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-642bf95d97820f23-1.digest b/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-642bf95d97820f23-1.digest index 01132337f..03b31a02e 100644 --- a/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-642bf95d97820f23-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-642bf95d97820f23-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-9b87c5f936703494-1.digest b/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-9b87c5f936703494-1.digest index 315c35a5f..eb2340070 100644 --- a/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-9b87c5f936703494-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dof_product_on_usda-9b87c5f936703494-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dof_products_agree_usda-1f54c058d539370a-1.digest b/crates/crust-core/tests/data/import_baselines/dof_products_agree_usda-1f54c058d539370a-1.digest index 4cb8f46f0..8daef5239 100644 --- a/crates/crust-core/tests/data/import_baselines/dof_products_agree_usda-1f54c058d539370a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dof_products_agree_usda-1f54c058d539370a-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dof_products_differ_usda-a379642f2edc4361-1.digest b/crates/crust-core/tests/data/import_baselines/dof_products_differ_usda-a379642f2edc4361-1.digest index ea609ddd0..57d3195ae 100644 --- a/crates/crust-core/tests/data/import_baselines/dof_products_differ_usda-a379642f2edc4361-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dof_products_differ_usda-a379642f2edc4361-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dof_products_disagree_usda-8e35ec3ea864f596-1.digest b/crates/crust-core/tests/data/import_baselines/dof_products_disagree_usda-8e35ec3ea864f596-1.digest index 5a9c1d2c7..3c34085ef 100644 --- a/crates/crust-core/tests/data/import_baselines/dof_products_disagree_usda-8e35ec3ea864f596-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dof_products_disagree_usda-8e35ec3ea864f596-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dof_settings_only_usda-dc3a7d2e89c34444-1.digest b/crates/crust-core/tests/data/import_baselines/dof_settings_only_usda-dc3a7d2e89c34444-1.digest index 2ba1d431e..1a14abb6b 100644 --- a/crates/crust-core/tests/data/import_baselines/dof_settings_only_usda-dc3a7d2e89c34444-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dof_settings_only_usda-dc3a7d2e89c34444-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-06f3801d332f35bd-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-06f3801d332f35bd-1.digest index acc63c7f4..af517a334 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-06f3801d332f35bd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-06f3801d332f35bd-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-1.digest index a91eef8e2..0e1bd65b7 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-2.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-2.digest index a91eef8e2..0e1bd65b7 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-2.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-1bbad8f86d8900fb-2.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-2d5a500fad6dcfad-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-2d5a500fad6dcfad-1.digest index a91eef8e2..0e1bd65b7 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-2d5a500fad6dcfad-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-2d5a500fad6dcfad-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-4222ab94f00b4ba4-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-4222ab94f00b4ba4-1.digest index acc63c7f4..af517a334 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-4222ab94f00b4ba4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-4222ab94f00b4ba4-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-43c08f98bb3b74e6-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-43c08f98bb3b74e6-1.digest index c5da7ab37..2e942df65 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-43c08f98bb3b74e6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-43c08f98bb3b74e6-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(12.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(12.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-7b71c02186033a9a-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-7b71c02186033a9a-1.digest index acc63c7f4..af517a334 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-7b71c02186033a9a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-7b71c02186033a9a-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-88f2729f3b3188bb-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-88f2729f3b3188bb-1.digest index acc63c7f4..af517a334 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-88f2729f3b3188bb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-88f2729f3b3188bb-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-9d834df56ca3b1ac-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-9d834df56ca3b1ac-1.digest index acc63c7f4..af517a334 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-9d834df56ca3b1ac-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-9d834df56ca3b1ac-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-af5d67f7909dc65a-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-af5d67f7909dc65a-1.digest index 26478964d..865be4d90 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-af5d67f7909dc65a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-af5d67f7909dc65a-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(12.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(12.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b592bc76e2706492-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b592bc76e2706492-1.digest index acc63c7f4..af517a334 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b592bc76e2706492-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b592bc76e2706492-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b9dc71e44c528187-1.digest b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b9dc71e44c528187-1.digest index acc63c7f4..af517a334 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b9dc71e44c528187-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_backdrop_usda-b9dc71e44c528187-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_camera_off_usda-b5a9eac417c3bdbb-1.digest b/crates/crust-core/tests/data/import_baselines/dome_camera_off_usda-b5a9eac417c3bdbb-1.digest index 54fe43883..d1f76e73d 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_camera_off_usda-b5a9eac417c3bdbb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_camera_off_usda-b5a9eac417c3bdbb-1.digest @@ -18,4 +18,4 @@ provenance light /World/Hdri: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: false, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: false, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_crust_wins_usda-0bfe2eb5bc4f83c5-1.digest b/crates/crust-core/tests/data/import_baselines/dome_crust_wins_usda-0bfe2eb5bc4f83c5-1.digest index 02f521add..7e1210abd 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_crust_wins_usda-0bfe2eb5bc4f83c5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_crust_wins_usda-0bfe2eb5bc4f83c5-1.digest @@ -16,4 +16,4 @@ world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cy provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_default_usda-7c13b46b00b734f8-1.digest b/crates/crust-core/tests/data/import_baselines/dome_default_usda-7c13b46b00b734f8-1.digest index fd88df02d..4b0007ceb 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_default_usda-7c13b46b00b734f8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_default_usda-7c13b46b00b734f8-1.digest @@ -16,4 +16,4 @@ world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cy provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_exclude_bsdf_usda-fb9c2dcc2b05783e-1.digest b/crates/crust-core/tests/data/import_baselines/dome_exclude_bsdf_usda-fb9c2dcc2b05783e-1.digest index 051489a44..afb82c116 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_exclude_bsdf_usda-fb9c2dcc2b05783e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_exclude_bsdf_usda-fb9c2dcc2b05783e-1.digest @@ -19,4 +19,4 @@ provenance geometry 0..1: /World/Prop provenance geometry 1..2: /World/Set provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_exclude_power_usda-a488dc90e33bf33b-1.digest b/crates/crust-core/tests/data/import_baselines/dome_exclude_power_usda-a488dc90e33bf33b-1.digest index 17f10a3e3..45a41ce7f 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_exclude_power_usda-a488dc90e33bf33b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_exclude_power_usda-a488dc90e33bf33b-1.digest @@ -19,4 +19,4 @@ provenance geometry 0..1: /World/Prop provenance geometry 1..2: /World/Set provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_0_pole_scene_z_up_usda-4a3a839d045f42ae-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_0_pole_scene_z_up_usda-4a3a839d045f42ae-1.digest index 2acced9da..5fc171df7 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_light_0_pole_scene_z_up_usda-4a3a839d045f42ae-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_light_0_pole_scene_z_up_usda-4a3a839d045f42ae-1.digest @@ -16,4 +16,4 @@ world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cy provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_0_reference_usda-e3c0f10234d60e6f-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_0_reference_usda-e3c0f10234d60e6f-1.digest index c6202d3a4..0098cd728 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_light_0_reference_usda-e3c0f10234d60e6f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_light_0_reference_usda-e3c0f10234d60e6f-1.digest @@ -16,4 +16,4 @@ world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cy provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_y_usda-b39274d8389c93ec-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_y_usda-b39274d8389c93ec-1.digest index d82ff7fbd..d4c92c1c2 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_y_usda-b39274d8389c93ec-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_y_usda-b39274d8389c93ec-1.digest @@ -16,4 +16,4 @@ world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cy provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_z_usda-3ab2d43568c3a9ca-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_z_usda-3ab2d43568c3a9ca-1.digest index 8af76698d..535e7be72 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_z_usda-3ab2d43568c3a9ca-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_pole_z_usda-3ab2d43568c3a9ca-1.digest @@ -16,4 +16,4 @@ world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cy provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_rotated_usda-96a7a52ba96f792f-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_1_rotated_usda-96a7a52ba96f792f-1.digest index 8a8b94f7a..bf12355cc 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_light_1_rotated_usda-96a7a52ba96f792f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_rotated_usda-96a7a52ba96f792f-1.digest @@ -16,4 +16,4 @@ world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cy provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_no_up_usda-db7f3549433e3ca1-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_no_up_usda-db7f3549433e3ca1-1.digest index d05002b53..9b9d99f01 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_no_up_usda-db7f3549433e3ca1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_no_up_usda-db7f3549433e3ca1-1.digest @@ -16,4 +16,4 @@ world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cy provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_y_up_usda-cef3793797de068b-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_y_up_usda-cef3793797de068b-1.digest index 9f1131968..221c34b18 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_y_up_usda-cef3793797de068b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_scene_y_up_usda-cef3793797de068b-1.digest @@ -16,4 +16,4 @@ world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cy provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_usda-771e6d7e193401ac-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_1_usda-771e6d7e193401ac-1.digest index 8cb5239fd..5ef186158 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_light_1_usda-771e6d7e193401ac-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_usda-771e6d7e193401ac-1.digest @@ -16,4 +16,4 @@ world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cy provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_1_z_up_usda-d2385f77c8ec6eb4-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_1_z_up_usda-d2385f77c8ec6eb4-1.digest index b10e7ab90..d55243435 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_light_1_z_up_usda-d2385f77c8ec6eb4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_light_1_z_up_usda-d2385f77c8ec6eb4-1.digest @@ -16,4 +16,4 @@ world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cy provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_light_usda-f46a39c15abcc98f-1.digest b/crates/crust-core/tests/data/import_baselines/dome_light_usda-f46a39c15abcc98f-1.digest index 8b9025359..41de9251f 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_light_usda-f46a39c15abcc98f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_light_usda-f46a39c15abcc98f-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_no_assets_usda-b8800e7204db6d4a-1.digest b/crates/crust-core/tests/data/import_baselines/dome_no_assets_usda-b8800e7204db6d4a-1.digest index 9ed719983..2332511eb 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_no_assets_usda-b8800e7204db6d4a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_no_assets_usda-b8800e7204db6d4a-1.digest @@ -16,4 +16,4 @@ world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cy provenance light /World/sky: LightOrigin { index: 0, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_power_usda-abfbd64e964dc44d-1.digest b/crates/crust-core/tests/data/import_baselines/dome_power_usda-abfbd64e964dc44d-1.digest index 55742063a..6d2981eb4 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_power_usda-abfbd64e964dc44d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_power_usda-abfbd64e964dc44d-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/dome_ri_camera_usda-acf95ad397fe1930-1.digest b/crates/crust-core/tests/data/import_baselines/dome_ri_camera_usda-acf95ad397fe1930-1.digest index bcfcda011..57b9cc7f2 100644 --- a/crates/crust-core/tests/data/import_baselines/dome_ri_camera_usda-acf95ad397fe1930-1.digest +++ b/crates/crust-core/tests/data/import_baselines/dome_ri_camera_usda-acf95ad397fe1930-1.digest @@ -16,4 +16,4 @@ world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cy provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/domelight_usda-22dcdc7630c52071-1.digest b/crates/crust-core/tests/data/import_baselines/domelight_usda-22dcdc7630c52071-1.digest index 23ae81285..73e383a14 100644 --- a/crates/crust-core/tests/data/import_baselines/domelight_usda-22dcdc7630c52071-1.digest +++ b/crates/crust-core/tests/data/import_baselines/domelight_usda-22dcdc7630c52071-1.digest @@ -28,4 +28,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-1.digest b/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-1.digest index d78d040a7..f9f1a5e16 100644 --- a/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-1.digest +++ b/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-1.digest @@ -29,4 +29,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-2.digest b/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-2.digest index d78d040a7..f9f1a5e16 100644 --- a/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-2.digest +++ b/crates/crust-core/tests/data/import_baselines/domelight_usda-23290848cbd88d05-2.digest @@ -29,4 +29,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/domelight_usda-5a2a25c11957ed70-1.digest b/crates/crust-core/tests/data/import_baselines/domelight_usda-5a2a25c11957ed70-1.digest index d78d040a7..f9f1a5e16 100644 --- a/crates/crust-core/tests/data/import_baselines/domelight_usda-5a2a25c11957ed70-1.digest +++ b/crates/crust-core/tests/data/import_baselines/domelight_usda-5a2a25c11957ed70-1.digest @@ -29,4 +29,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/domelight_usda-5d8f200125b9fd09-1.digest b/crates/crust-core/tests/data/import_baselines/domelight_usda-5d8f200125b9fd09-1.digest index 2c665bd36..2b8ebaa7d 100644 --- a/crates/crust-core/tests/data/import_baselines/domelight_usda-5d8f200125b9fd09-1.digest +++ b/crates/crust-core/tests/data/import_baselines/domelight_usda-5d8f200125b9fd09-1.digest @@ -28,4 +28,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/domelight_usda-7f00a6c7fd4959fa-1.digest b/crates/crust-core/tests/data/import_baselines/domelight_usda-7f00a6c7fd4959fa-1.digest index d78d040a7..f9f1a5e16 100644 --- a/crates/crust-core/tests/data/import_baselines/domelight_usda-7f00a6c7fd4959fa-1.digest +++ b/crates/crust-core/tests/data/import_baselines/domelight_usda-7f00a6c7fd4959fa-1.digest @@ -29,4 +29,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/drop_usda-214f7b543bee6df1-1.digest b/crates/crust-core/tests/data/import_baselines/drop_usda-214f7b543bee6df1-1.digest index 9a24d11c0..5c76bb370 100644 --- a/crates/crust-core/tests/data/import_baselines/drop_usda-214f7b543bee6df1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/drop_usda-214f7b543bee6df1-1.digest @@ -57,4 +57,4 @@ provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095 provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/drop_usda-4c62c449da4ae2d3-1.digest b/crates/crust-core/tests/data/import_baselines/drop_usda-4c62c449da4ae2d3-1.digest index 9a24d11c0..5c76bb370 100644 --- a/crates/crust-core/tests/data/import_baselines/drop_usda-4c62c449da4ae2d3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/drop_usda-4c62c449da4ae2d3-1.digest @@ -57,4 +57,4 @@ provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095 provenance mesh slot 7: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edge_false_usda-dfb19c6c90615a56-1.digest b/crates/crust-core/tests/data/import_baselines/edge_false_usda-dfb19c6c90615a56-1.digest index 4b1dee8a7..a00b4d25d 100644 --- a/crates/crust-core/tests/data/import_baselines/edge_false_usda-dfb19c6c90615a56-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edge_false_usda-dfb19c6c90615a56-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edge_true_usda-bddf6fe338522a86-1.digest b/crates/crust-core/tests/data/import_baselines/edge_true_usda-bddf6fe338522a86-1.digest index 4c54105c1..bb55ff6c7 100644 --- a/crates/crust-core/tests/data/import_baselines/edge_true_usda-bddf6fe338522a86-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edge_true_usda-bddf6fe338522a86-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edges_usda-9743a0d0ff86dafe-1.digest b/crates/crust-core/tests/data/import_baselines/edges_usda-9743a0d0ff86dafe-1.digest index ddd008de4..800e6eeeb 100644 --- a/crates/crust-core/tests/data/import_baselines/edges_usda-9743a0d0ff86dafe-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edges_usda-9743a0d0ff86dafe-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 76276 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15030511554815353325, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-077b57f7b0804f19-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-077b57f7b0804f19-1.digest index f875d9dbf..adf8344c0 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-077b57f7b0804f19-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-077b57f7b0804f19-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-085dfd17ac95282d-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-085dfd17ac95282d-1.digest index e73c3f9cc..8889914b1 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-085dfd17ac95282d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-085dfd17ac95282d-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-188f318a9146ce97-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-188f318a9146ce97-1.digest index 88cdbb47b..96531cef6 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-188f318a9146ce97-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-188f318a9146ce97-1.digest @@ -19,4 +19,4 @@ provenance light /World/Sky: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Groom provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-1966e17597c3de42-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-1966e17597c3de42-1.digest index 6c4aef6df..303f35cc5 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-1966e17597c3de42-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-1966e17597c3de42-1.digest @@ -19,4 +19,4 @@ provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Mover provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [13821547256400052224, 4598175219545276416], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [13821547256400052224, 4598175219545276416], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-19a787b3bcc74617-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-19a787b3bcc74617-1.digest index be088b136..dfaf03a7a 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-19a787b3bcc74617-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-19a787b3bcc74617-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 26340 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8873273216732545453, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-23003ea81a2d2024-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-23003ea81a2d2024-1.digest index 10852c65c..eb0356809 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-23003ea81a2d2024-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-23003ea81a2d2024-1.digest @@ -42,4 +42,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8434524658645368605, n_points: 56, n_indices: 324, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1117804534, 0, 1056964608, 0, 3212836864, 0, 3197715800, 1065353216, 0, 3197715800, 0, 3212836864, 3190582786, 0, 1065353216, 3190582786, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1117804534, 0, 1056964608, 0, 3212836864, 0, 3197715800, 1065353216, 0, 3197715800, 0, 3212836864, 3190582786, 0, 1065353216, 3190582786, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-23fb1cff1e547a51-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-23fb1cff1e547a51-1.digest index 16cf9d202..03691cd00 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-23fb1cff1e547a51-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-23fb1cff1e547a51-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/Far provenance geometry 1..2: /World/Near provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-24cc8ef3649b336a-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-24cc8ef3649b336a-1.digest index c069bb154..247bef0aa 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-24cc8ef3649b336a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-24cc8ef3649b336a-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-30c8f1f2b1117913-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-30c8f1f2b1117913-1.digest index 2ba90181d..d75b9961a 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-30c8f1f2b1117913-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-30c8f1f2b1117913-1.digest @@ -43,4 +43,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 91251 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13090063996844779502, n_points: 122, n_indices: 720, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-339a76e50715bbe3-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-339a76e50715bbe3-1.digest index ab8612929..f7e3773a8 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-339a76e50715bbe3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-339a76e50715bbe3-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/Far provenance geometry 1..2: /World/Near provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-3450a9d6105e89a6-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-3450a9d6105e89a6-1.digest index f85da3618..b40dd0e4a 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-3450a9d6105e89a6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-3450a9d6105e89a6-1.digest @@ -42,4 +42,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9125125757038733368, n_points: 26, n_indices: 144, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([1069547520, 1065353216, 1084227584, 1115108637, 1069547520, 1065353216, 1084227584, 3213371458, 3173401642, 3188195590, 1063287320, 3173401642, 3206405490, 3168756112, 3212982450, 3185572784, 3181341822, 1064878233, 3198147198, 3195428598, 3184923397, 3212249332, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([1069547520, 1065353216, 1084227584, 1115108637, 1069547520, 1065353216, 1084227584, 3213371458, 3173401642, 3188195590, 1063287320, 3173401642, 3206405490, 3168756112, 3212982450, 3185572784, 3181341822, 1064878233, 3198147198, 3195428598, 3184923397, 3212249332, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-411d0a61690b9e71-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-411d0a61690b9e71-1.digest index 817c70bb5..e706b3ed9 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-411d0a61690b9e71-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-411d0a61690b9e71-1.digest @@ -19,4 +19,4 @@ provenance light /World/Sky: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Groom provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-43a14b5e78154dda-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-43a14b5e78154dda-1.digest index ecd3028df..50396a919 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-43a14b5e78154dda-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-43a14b5e78154dda-1.digest @@ -41,4 +41,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 20799 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 5, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 1086324736, 1110016897, 0, 1056964608, 1086324736, 3212836864, 0, 3205561020, 1065353216, 0, 3205561020, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 1086324736, 1110016897, 0, 1056964608, 1086324736, 3212836864, 0, 3205561020, 1065353216, 0, 3205561020, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-483e16501c86632a-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-483e16501c86632a-1.digest index 9e918f442..311357ef4 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-483e16501c86632a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-483e16501c86632a-1.digest @@ -41,4 +41,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 20799 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 5, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 1082130432, 1110016897, 0, 1056964608, 1082130432, 3212836864, 0, 3205561020, 1065353216, 0, 3205561020, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 1082130432, 1110016897, 0, 1056964608, 1082130432, 3212836864, 0, 3205561020, 1065353216, 0, 3205561020, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-4966b50c696e8080-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-4966b50c696e8080-1.digest index 3cdb49ab9..6031b7771 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-4966b50c696e8080-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-4966b50c696e8080-1.digest @@ -27,4 +27,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: ["/World/Cam/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-4cf921963a4325e9-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-4cf921963a4325e9-1.digest index e845d450d..5c9908515 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-4cf921963a4325e9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-4cf921963a4325e9-1.digest @@ -43,4 +43,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 91251 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13090063996844779502, n_points: 122, n_indices: 720, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-4d3c65f04d4eaea9-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-4d3c65f04d4eaea9-1.digest index f7cff2875..d7766433d 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-4d3c65f04d4eaea9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-4d3c65f04d4eaea9-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13212365895451826409, n_points: 66, n_indices: 160, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 1086324736, 1116896842, 0, 0, 1086324736, 3212836864, 0, 3198665485, 1065353216, 0, 3198665485, 0, 3212836864, 3193941692, 0, 1065353216, 3193941692, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 1086324736, 1116896842, 0, 0, 1086324736, 3212836864, 0, 3198665485, 1065353216, 0, 3198665485, 0, 3212836864, 3193941692, 0, 1065353216, 3193941692, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-4dd694c9b20daa77-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-4dd694c9b20daa77-1.digest index 87b472408..46d302ff4 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-4dd694c9b20daa77-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-4dd694c9b20daa77-1.digest @@ -27,4 +27,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-516372ff4968411b-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-516372ff4968411b-1.digest index f64391e4c..0478e28d9 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-516372ff4968411b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-516372ff4968411b-1.digest @@ -27,4 +27,4 @@ provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-53a62fecc28e0de7-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-53a62fecc28e0de7-1.digest index f64391e4c..0478e28d9 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-53a62fecc28e0de7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-53a62fecc28e0de7-1.digest @@ -27,4 +27,4 @@ provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-5521dd197a77f33e-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-5521dd197a77f33e-1.digest index 58049b42d..55c5de5ea 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-5521dd197a77f33e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-5521dd197a77f33e-1.digest @@ -36,4 +36,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-57fa1e33af4efac6-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-57fa1e33af4efac6-1.digest index b6fcd917b..01fe77a4d 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-57fa1e33af4efac6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-57fa1e33af4efac6-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: false, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: false, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-1.digest index 00ea31e7f..62dd37c3d 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-1.digest @@ -21,4 +21,4 @@ provenance geometry 0..1: /World/Far provenance geometry 1..2: /World/Near provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-2.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-2.digest index 00ea31e7f..62dd37c3d 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-2.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-5b418d865896d977-2.digest @@ -21,4 +21,4 @@ provenance geometry 0..1: /World/Far provenance geometry 1..2: /World/Near provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-5f2834619e774ab4-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-5f2834619e774ab4-1.digest index 9bacadd81..c986b6298 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-5f2834619e774ab4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-5f2834619e774ab4-1.digest @@ -27,4 +27,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-6019827f6d635824-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-6019827f6d635824-1.digest index fd9d95635..9d44e21b0 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-6019827f6d635824-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-6019827f6d635824-1.digest @@ -30,4 +30,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 80010 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-65b79e09c14be76d-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-65b79e09c14be76d-1.digest index e6354d69f..23feb8bdd 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-65b79e09c14be76d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-65b79e09c14be76d-1.digest @@ -27,4 +27,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: ["/World/Cam/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-662e56b1a93d2d66-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-662e56b1a93d2d66-1.digest index 4074e6205..0df7e35e1 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-662e56b1a93d2d66-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-662e56b1a93d2d66-1.digest @@ -41,4 +41,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 86399 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [4, 5, 6] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-6deff31ef60f6033-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-6deff31ef60f6033-1.digest index d20e76071..63d82da21 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-6deff31ef60f6033-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-6deff31ef60f6033-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/Far provenance geometry 1..2: /World/Near provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-7239cb83230ea59e-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-7239cb83230ea59e-1.digest index 5a45a15d8..8aff24b20 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-7239cb83230ea59e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-7239cb83230ea59e-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11801363609627443368, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-786eedaaaa2108bd-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-786eedaaaa2108bd-1.digest index 0c45ed242..d2e4d6a80 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-786eedaaaa2108bd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-786eedaaaa2108bd-1.digest @@ -19,4 +19,4 @@ provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Mover provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [13821547256400052224, 4598175219545276416], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [13821547256400052224, 4598175219545276416], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-1.digest index ab434bd60..f38737448 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-2.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-2.digest index ab434bd60..f38737448 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-2.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-8f9cca718b125c47-2.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-939ae62aa1013f1f-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-939ae62aa1013f1f-1.digest index e73c3f9cc..8889914b1 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-939ae62aa1013f1f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-939ae62aa1013f1f-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-9785472850c84b20-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-9785472850c84b20-1.digest index 070edeb80..52b464e0a 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-9785472850c84b20-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-9785472850c84b20-1.digest @@ -27,4 +27,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-9829e1b01f60d251-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-9829e1b01f60d251-1.digest index ba8474f91..9c5e60cf2 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-9829e1b01f60d251-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-9829e1b01f60d251-1.digest @@ -40,4 +40,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10519 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11939811521305294379, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-9829e1b01f60d251-2.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-9829e1b01f60d251-2.digest index ba8474f91..9c5e60cf2 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-9829e1b01f60d251-2.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-9829e1b01f60d251-2.digest @@ -40,4 +40,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10519 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11939811521305294379, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-9f3ec2b0f2000d47-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-9f3ec2b0f2000d47-1.digest index 45e183fad..2d6e3ec2f 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-9f3ec2b0f2000d47-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-9f3ec2b0f2000d47-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/Far provenance geometry 1..2: /World/Near provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-a15a160797d16740-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-a15a160797d16740-1.digest index bac2c4b8a..fdd13644b 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-a15a160797d16740-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-a15a160797d16740-1.digest @@ -27,4 +27,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-a15f50a6d270c4d6-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-a15f50a6d270c4d6-1.digest index 26efd4a6e..5c6ed5bf9 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-a15f50a6d270c4d6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-a15f50a6d270c4d6-1.digest @@ -30,4 +30,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 80010 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-a2d6c26d716466c1-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-a2d6c26d716466c1-1.digest index 540d7e8dd..f86e51ae7 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-a2d6c26d716466c1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-a2d6c26d716466c1-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-a693bfb772c311e2-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-a693bfb772c311e2-1.digest index e6ceee2cb..fa09a9079 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-a693bfb772c311e2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-a693bfb772c311e2-1.digest @@ -18,4 +18,4 @@ provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Mover provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-a9ea182c81eccd64-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-a9ea182c81eccd64-1.digest index 688008e01..bb5fe7b38 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-a9ea182c81eccd64-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-a9ea182c81eccd64-1.digest @@ -42,4 +42,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1096032668800489466, n_points: 49, n_indices: 282, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([1050253722, 1058642330, 1085276160, 1122308081, 1050253722, 1058642330, 1085276160, 3212974206, 3161423387, 3184767365, 1064894717, 3161423387, 3198154212, 3148075556, 3212885404, 3175273688, 3164629877, 1065174400, 3191785816, 3184889222, 3180256379, 3212704312, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([1050253722, 1058642330, 1085276160, 1122308081, 1050253722, 1058642330, 1085276160, 3212974206, 3161423387, 3184767365, 1064894717, 3161423387, 3198154212, 3148075556, 3212885404, 3175273688, 3164629877, 1065174400, 3191785816, 3184889222, 3180256379, 3212704312, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-aafb5513a53fa62e-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-aafb5513a53fa62e-1.digest index 39eaaca7a..0775026cc 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-aafb5513a53fa62e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-aafb5513a53fa62e-1.digest @@ -43,4 +43,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 91251 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13090063996844779502, n_points: 122, n_indices: 720, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: Some("/World/Cam"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: Some("/World/Cam"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-b0da370b544b77b5-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-b0da370b544b77b5-1.digest index 1e5ef8ebe..937b6e9ed 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-b0da370b544b77b5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-b0da370b544b77b5-1.digest @@ -43,4 +43,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 91251 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13090063996844779502, n_points: 122, n_indices: 720, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-b14405d5563d3059-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-b14405d5563d3059-1.digest index 5eb1bc8f1..b0541ef1b 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-b14405d5563d3059-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-b14405d5563d3059-1.digest @@ -27,4 +27,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: ["/World/Cam/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-b271371e2517722b-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-b271371e2517722b-1.digest index e995c4891..045d2222a 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-b271371e2517722b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-b271371e2517722b-1.digest @@ -27,4 +27,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-b80eb10c2ba34178-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-b80eb10c2ba34178-1.digest index 887261cad..979d67211 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-b80eb10c2ba34178-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-b80eb10c2ba34178-1.digest @@ -30,4 +30,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 80010 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-b8d0f20bfaa82329-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-b8d0f20bfaa82329-1.digest index c68257502..73979f397 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-b8d0f20bfaa82329-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-b8d0f20bfaa82329-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13212365895451826409, n_points: 66, n_indices: 160, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: Some(ScreenKey([0, 1056964608, 1086324736, 1112074166, 0, 1056964608, 1086324736, 3212836864, 0, 3203704606, 1065353216, 0, 3203704606, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: Some(ScreenKey([0, 1056964608, 1086324736, 1112074166, 0, 1056964608, 1086324736, 3212836864, 0, 3203704606, 1065353216, 0, 3203704606, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-c0b43128dd170a60-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-c0b43128dd170a60-1.digest index 88cdbb47b..96531cef6 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-c0b43128dd170a60-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-c0b43128dd170a60-1.digest @@ -19,4 +19,4 @@ provenance light /World/Sky: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Groom provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-c1012e35073052d4-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-c1012e35073052d4-1.digest index b0f7e26e3..3d2d26e5f 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-c1012e35073052d4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-c1012e35073052d4-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13212365895451826409, n_points: 66, n_indices: 160, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 1086324736, 1112074166, 0, 0, 1086324736, 3212836864, 0, 3203704606, 1065353216, 0, 3203704606, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 1086324736, 1112074166, 0, 0, 1086324736, 3212836864, 0, 3203704606, 1065353216, 0, 3203704606, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-c5e06d108f13878a-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-c5e06d108f13878a-1.digest index e73c3f9cc..8889914b1 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-c5e06d108f13878a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-c5e06d108f13878a-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-c6a1743cb004bfc8-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-c6a1743cb004bfc8-1.digest index d466a3d58..45e59524e 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-c6a1743cb004bfc8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-c6a1743cb004bfc8-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-cfa1cdf26c62d04e-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-cfa1cdf26c62d04e-1.digest index b4d39b8ca..2e2c37ef2 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-cfa1cdf26c62d04e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-cfa1cdf26c62d04e-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-d51c63f9aa3e9706-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-d51c63f9aa3e9706-1.digest index 58049b42d..55c5de5ea 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-d51c63f9aa3e9706-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-d51c63f9aa3e9706-1.digest @@ -36,4 +36,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-d6c1dd24567db6e1-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-d6c1dd24567db6e1-1.digest index e19f7d0c9..222da59df 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-d6c1dd24567db6e1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-d6c1dd24567db6e1-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/Far provenance geometry 1..2: /World/Near provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-dcd2a1d09ecabfda-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-dcd2a1d09ecabfda-1.digest index d28b73071..962db375c 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-dcd2a1d09ecabfda-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-dcd2a1d09ecabfda-1.digest @@ -42,4 +42,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1096032668800489466, n_points: 49, n_indices: 282, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([1050253722, 1058642330, 1085276160, 1122308081, 1050253722, 1058642330, 1085276160, 3212974206, 3161423387, 3184767365, 1064894717, 3161423387, 3198154212, 3148075556, 3212885404, 3175273688, 3164629877, 1065174400, 3191785816, 3184889222, 3180256379, 3212704312, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Cam"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([1050253722, 1058642330, 1085276160, 1122308081, 1050253722, 1058642330, 1085276160, 3212974206, 3161423387, 3184767365, 1064894717, 3161423387, 3198154212, 3148075556, 3212885404, 3175273688, 3164629877, 1065174400, 3191785816, 3184889222, 3180256379, 3212704312, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Cam"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-e3a820d4d01acabc-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-e3a820d4d01acabc-1.digest index 141062fd1..1527caa23 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-e3a820d4d01acabc-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-e3a820d4d01acabc-1.digest @@ -42,4 +42,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1096032668800489466, n_points: 49, n_indices: 282, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([1050253722, 1058642330, 1085276160, 1122308081, 1050253722, 1058642330, 1085276160, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([1050253722, 1058642330, 1085276160, 1122308081, 1050253722, 1058642330, 1085276160, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-ea33d0579957ea29-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-ea33d0579957ea29-1.digest index be2debf61..8105afd6d 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-ea33d0579957ea29-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-ea33d0579957ea29-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-ec4aae2ab8a0f13f-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-ec4aae2ab8a0f13f-1.digest index 507820571..0b27394fa 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-ec4aae2ab8a0f13f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-ec4aae2ab8a0f13f-1.digest @@ -30,4 +30,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 80010 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-efadd5d5ae9b33c8-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-efadd5d5ae9b33c8-1.digest index 2f920c19b..a4deec7b1 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-efadd5d5ae9b33c8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-efadd5d5ae9b33c8-1.digest @@ -19,4 +19,4 @@ provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Mover provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4602678819172646912], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4602678819172646912], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-f437292a1baf4562-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-f437292a1baf4562-1.digest index c231b4380..770ad5d69 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-f437292a1baf4562-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-f437292a1baf4562-1.digest @@ -30,4 +30,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 80010 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-f7edbb7e619c3f5d-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-f7edbb7e619c3f5d-1.digest index ab8612929..f7e3773a8 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-f7edbb7e619c3f5d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-f7edbb7e619c3f5d-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/Far provenance geometry 1..2: /World/Near provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/edits_usda-fdfde88486c6dc74-1.digest b/crates/crust-core/tests/data/import_baselines/edits_usda-fdfde88486c6dc74-1.digest index 71fb47f98..89a09ab3e 100644 --- a/crates/crust-core/tests/data/import_baselines/edits_usda-fdfde88486c6dc74-1.digest +++ b/crates/crust-core/tests/data/import_baselines/edits_usda-fdfde88486c6dc74-1.digest @@ -18,4 +18,4 @@ provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Mover provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/empty_source_name_usda-acd517e82c0f53e1-1.digest b/crates/crust-core/tests/data/import_baselines/empty_source_name_usda-acd517e82c0f53e1-1.digest index 61d4192e8..0deb57243 100644 --- a/crates/crust-core/tests/data/import_baselines/empty_source_name_usda-acd517e82c0f53e1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/empty_source_name_usda-acd517e82c0f53e1-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/empty_usda-c1bba32cb87c83e9-1.digest b/crates/crust-core/tests/data/import_baselines/empty_usda-c1bba32cb87c83e9-1.digest index 0f4fd560f..5d67798a9 100644 --- a/crates/crust-core/tests/data/import_baselines/empty_usda-c1bba32cb87c83e9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/empty_usda-c1bba32cb87c83e9-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/exposure_0_usda-c142af23c7dc6585-1.digest b/crates/crust-core/tests/data/import_baselines/exposure_0_usda-c142af23c7dc6585-1.digest index 1f222376e..1feb821ea 100644 --- a/crates/crust-core/tests/data/import_baselines/exposure_0_usda-c142af23c7dc6585-1.digest +++ b/crates/crust-core/tests/data/import_baselines/exposure_0_usda-c142af23c7dc6585-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/exposure_2_usda-1ae682494eb4e641-1.digest b/crates/crust-core/tests/data/import_baselines/exposure_2_usda-1ae682494eb4e641-1.digest index 572a6c797..54b643148 100644 --- a/crates/crust-core/tests/data/import_baselines/exposure_2_usda-1ae682494eb4e641-1.digest +++ b/crates/crust-core/tests/data/import_baselines/exposure_2_usda-1ae682494eb4e641-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/exposure_usda-0139c7326dc66b4b-1.digest b/crates/crust-core/tests/data/import_baselines/exposure_usda-0139c7326dc66b4b-1.digest index 2f458dbd9..303ab6b25 100644 --- a/crates/crust-core/tests/data/import_baselines/exposure_usda-0139c7326dc66b4b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/exposure_usda-0139c7326dc66b4b-1.digest @@ -18,4 +18,4 @@ provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/L provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/expression_usda-843ebd908965795b-1.digest b/crates/crust-core/tests/data/import_baselines/expression_usda-843ebd908965795b-1.digest index ab1a9f5d0..1b055536a 100644 --- a/crates/crust-core/tests/data/import_baselines/expression_usda-843ebd908965795b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/expression_usda-843ebd908965795b-1.digest @@ -29,4 +29,4 @@ provenance mesh: MeshOrigin { geom_id: 5, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2, 3, 4] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/meshes"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/meshes"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/expression_usda-e90ffc3af7a5e58d-1.digest b/crates/crust-core/tests/data/import_baselines/expression_usda-e90ffc3af7a5e58d-1.digest index 3c7af9dc4..ef2ee146d 100644 --- a/crates/crust-core/tests/data/import_baselines/expression_usda-e90ffc3af7a5e58d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/expression_usda-e90ffc3af7a5e58d-1.digest @@ -29,4 +29,4 @@ provenance mesh: MeshOrigin { geom_id: 5, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2, 3, 4] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/chars"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/chars"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fallback_usda-0dcbe995ba9d33f5-1.digest b/crates/crust-core/tests/data/import_baselines/fallback_usda-0dcbe995ba9d33f5-1.digest index 278c736c9..d6fd2926d 100644 --- a/crates/crust-core/tests/data/import_baselines/fallback_usda-0dcbe995ba9d33f5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fallback_usda-0dcbe995ba9d33f5-1.digest @@ -29,4 +29,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13714 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7102539751037723505, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fallbacks_usda-19de7bd844b31582-1.digest b/crates/crust-core/tests/data/import_baselines/fallbacks_usda-19de7bd844b31582-1.digest index f33bacca3..e15b69408 100644 --- a/crates/crust-core/tests/data/import_baselines/fallbacks_usda-19de7bd844b31582-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fallbacks_usda-19de7bd844b31582-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16884 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16045738747203913522, n_points: 81, n_indices: 384, n_uvs: Some(81), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/far_light_blocked_usda-ad271da815e04f1e-1.digest b/crates/crust-core/tests/data/import_baselines/far_light_blocked_usda-ad271da815e04f1e-1.digest index 72fe248a8..4890dc992 100644 --- a/crates/crust-core/tests/data/import_baselines/far_light_blocked_usda-ad271da815e04f1e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/far_light_blocked_usda-ad271da815e04f1e-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17572 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/far_light_clear_usda-4072c77a8d9198cd-1.digest b/crates/crust-core/tests/data/import_baselines/far_light_clear_usda-4072c77a8d9198cd-1.digest index fbb905d3b..083232e69 100644 --- a/crates/crust-core/tests/data/import_baselines/far_light_clear_usda-4072c77a8d9198cd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/far_light_clear_usda-4072c77a8d9198cd-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/far_light_dimmed_usda-8a326222fcc01e51-1.digest b/crates/crust-core/tests/data/import_baselines/far_light_dimmed_usda-8a326222fcc01e51-1.digest index 3976f76c1..a2e33490f 100644 --- a/crates/crust-core/tests/data/import_baselines/far_light_dimmed_usda-8a326222fcc01e51-1.digest +++ b/crates/crust-core/tests/data/import_baselines/far_light_dimmed_usda-8a326222fcc01e51-1.digest @@ -23,4 +23,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: ["/World/Haze"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/filters_usda-c37f75b53580c4aa-1.digest b/crates/crust-core/tests/data/import_baselines/filters_usda-c37f75b53580c4aa-1.digest index 3fe25006b..e762aa27a 100644 --- a/crates/crust-core/tests/data/import_baselines/filters_usda-c37f75b53580c4aa-1.digest +++ b/crates/crust-core/tests/data/import_baselines/filters_usda-c37f75b53580c4aa-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/five_usda-1346633108536d3b-1.digest b/crates/crust-core/tests/data/import_baselines/five_usda-1346633108536d3b-1.digest index 37e57d52a..e59cfc881 100644 --- a/crates/crust-core/tests/data/import_baselines/five_usda-1346633108536d3b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/five_usda-1346633108536d3b-1.digest @@ -23,4 +23,4 @@ provenance geometry 3..4: /World/S3 provenance geometry 4..5: /World/S4 provenance spheres: [0, 1, 2, 3, 4] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/five_usda-98f6c3806296ddf6-1.digest b/crates/crust-core/tests/data/import_baselines/five_usda-98f6c3806296ddf6-1.digest index 35b15b4bb..b11d4e202 100644 --- a/crates/crust-core/tests/data/import_baselines/five_usda-98f6c3806296ddf6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/five_usda-98f6c3806296ddf6-1.digest @@ -23,4 +23,4 @@ provenance geometry 3..4: /World/S3 provenance geometry 4..5: /World/S4 provenance spheres: [0, 1, 2, 3, 4] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_a_usda-c25ea86ab9b74771-1.digest b/crates/crust-core/tests/data/import_baselines/fog_a_usda-c25ea86ab9b74771-1.digest index 9bac3a46c..20eba1f7b 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_a_usda-c25ea86ab9b74771-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_a_usda-c25ea86ab9b74771-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_b_usda-d165df586bcbb934-1.digest b/crates/crust-core/tests/data/import_baselines/fog_b_usda-d165df586bcbb934-1.digest index 33c308da7..8db889420 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_b_usda-d165df586bcbb934-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_b_usda-d165df586bcbb934-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_bsdf_usda-240806b5ed98a443-1.digest b/crates/crust-core/tests/data/import_baselines/fog_bsdf_usda-240806b5ed98a443-1.digest index 32e5efc1c..49d71bbd3 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_bsdf_usda-240806b5ed98a443-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_bsdf_usda-240806b5ed98a443-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_excluded_bsdf_usda-9ebfc40e02ef831f-1.digest b/crates/crust-core/tests/data/import_baselines/fog_excluded_bsdf_usda-9ebfc40e02ef831f-1.digest index 2ba724bbf..e1a567cda 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_excluded_bsdf_usda-9ebfc40e02ef831f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_excluded_bsdf_usda-9ebfc40e02ef831f-1.digest @@ -18,4 +18,4 @@ provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/Key provenance spheres: [] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_excluded_power_usda-a0c514c4c53c3bc4-1.digest b/crates/crust-core/tests/data/import_baselines/fog_excluded_power_usda-a0c514c4c53c3bc4-1.digest index c3f4b5325..dde3b9bd8 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_excluded_power_usda-a0c514c4c53c3bc4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_excluded_power_usda-a0c514c4c53c3bc4-1.digest @@ -18,4 +18,4 @@ provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/Key provenance spheres: [] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_light_usda-ac22cdb8dae42d75-1.digest b/crates/crust-core/tests/data/import_baselines/fog_light_usda-ac22cdb8dae42d75-1.digest index 630af6a23..d36886dc3 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_light_usda-ac22cdb8dae42d75-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_light_usda-ac22cdb8dae42d75-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_lit_bsdf_usda-4f776a8e8b44bb17-1.digest b/crates/crust-core/tests/data/import_baselines/fog_lit_bsdf_usda-4f776a8e8b44bb17-1.digest index 86b486db6..c02734bf5 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_lit_bsdf_usda-4f776a8e8b44bb17-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_lit_bsdf_usda-4f776a8e8b44bb17-1.digest @@ -18,4 +18,4 @@ provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/Key provenance spheres: [] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_lit_power_usda-cbade45198a3c38a-1.digest b/crates/crust-core/tests/data/import_baselines/fog_lit_power_usda-cbade45198a3c38a-1.digest index a3b9ec32a..8e470f88b 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_lit_power_usda-cbade45198a3c38a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_lit_power_usda-cbade45198a3c38a-1.digest @@ -18,4 +18,4 @@ provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/Key provenance spheres: [] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_power_usda-c8d64f5dff77f2e7-1.digest b/crates/crust-core/tests/data/import_baselines/fog_power_usda-c8d64f5dff77f2e7-1.digest index 57bf78019..90963c089 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_power_usda-c8d64f5dff77f2e7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_power_usda-c8d64f5dff77f2e7-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-219213dd24619244-1.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-219213dd24619244-1.digest index 3cc2e75dd..1776a5421 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_usda-219213dd24619244-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-219213dd24619244-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-1.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-1.digest index 3cc2e75dd..1776a5421 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-2.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-2.digest index 3cc2e75dd..1776a5421 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-2.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-4d459b664a7ea673-2.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-509c893b29b09cb4-1.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-509c893b29b09cb4-1.digest index be8829312..b42f91589 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_usda-509c893b29b09cb4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-509c893b29b09cb4-1.digest @@ -15,4 +15,4 @@ volume 0: sigma_s Vec3A(1.0, 1.0, 1.0) sigma_a Vec3A(0.2, 0.4, 0.6) g 0.3 emissi world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-54b48891484e98a0-1.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-54b48891484e98a0-1.digest index 3cc2e75dd..1776a5421 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_usda-54b48891484e98a0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-54b48891484e98a0-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-643d53c126eee84d-1.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-643d53c126eee84d-1.digest index 9611f7364..7fe15c69f 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_usda-643d53c126eee84d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-643d53c126eee84d-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-1.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-1.digest index 3cc2e75dd..1776a5421 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-2.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-2.digest index 3cc2e75dd..1776a5421 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-2.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-2.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-3.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-3.digest index 3cc2e75dd..1776a5421 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-3.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-3.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-4.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-4.digest index 3cc2e75dd..1776a5421 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-4.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-4.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-5.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-5.digest index 3cc2e75dd..1776a5421 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-5.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-85a4ccafddfcce6b-5.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_usda-c4be6859ecb41784-1.digest b/crates/crust-core/tests/data/import_baselines/fog_usda-c4be6859ecb41784-1.digest index 3cc2e75dd..1776a5421 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_usda-c4be6859ecb41784-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_usda-c4be6859ecb41784-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fog_wall_usda-d41794b69bda1696-1.digest b/crates/crust-core/tests/data/import_baselines/fog_wall_usda-d41794b69bda1696-1.digest index edc0bb693..7fad2fdee 100644 --- a/crates/crust-core/tests/data/import_baselines/fog_wall_usda-d41794b69bda1696-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fog_wall_usda-d41794b69bda1696-1.digest @@ -30,4 +30,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13313 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 360626586407720226, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/foreign_mtlx_usda-1e9da30a7325ba81-1.digest b/crates/crust-core/tests/data/import_baselines/foreign_mtlx_usda-1e9da30a7325ba81-1.digest index f1d49f4d6..80de3a950 100644 --- a/crates/crust-core/tests/data/import_baselines/foreign_mtlx_usda-1e9da30a7325ba81-1.digest +++ b/crates/crust-core/tests/data/import_baselines/foreign_mtlx_usda-1e9da30a7325ba81-1.digest @@ -17,4 +17,4 @@ provenance material /World/Glass: MaterialOrigin { slots: [0], displaced: false provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fov_cm_usda-aeeac260878050ff-1.digest b/crates/crust-core/tests/data/import_baselines/fov_cm_usda-aeeac260878050ff-1.digest index 85cfd4ee5..5216ed6b1 100644 --- a/crates/crust-core/tests/data/import_baselines/fov_cm_usda-aeeac260878050ff-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fov_cm_usda-aeeac260878050ff-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fov_m_usda-b134eebe4c048026-1.digest b/crates/crust-core/tests/data/import_baselines/fov_m_usda-b134eebe4c048026-1.digest index e32cec368..b23b2b7b7 100644 --- a/crates/crust-core/tests/data/import_baselines/fov_m_usda-b134eebe4c048026-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fov_m_usda-b134eebe4c048026-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/frustum_usda-78a6eed72a138fc6-1.digest b/crates/crust-core/tests/data/import_baselines/frustum_usda-78a6eed72a138fc6-1.digest index 7a9156f35..b7627c20a 100644 --- a/crates/crust-core/tests/data/import_baselines/frustum_usda-78a6eed72a138fc6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/frustum_usda-78a6eed72a138fc6-1.digest @@ -21,4 +21,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18253 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13487480004083563611, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_a_light_s_shape_usda-ca8302fa13315ae0-1.digest b/crates/crust-core/tests/data/import_baselines/full_a_light_s_shape_usda-ca8302fa13315ae0-1.digest index e1d91f076..c77d87e88 100644 --- a/crates/crust-core/tests/data/import_baselines/full_a_light_s_shape_usda-ca8302fa13315ae0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_a_light_s_shape_usda-ca8302fa13315ae0-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_a_transform_usda-b99d3970dc3191b0-1.digest b/crates/crust-core/tests/data/import_baselines/full_a_transform_usda-b99d3970dc3191b0-1.digest index 241d791f4..6f583b1bd 100644 --- a/crates/crust-core/tests/data/import_baselines/full_a_transform_usda-b99d3970dc3191b0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_a_transform_usda-b99d3970dc3191b0-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_rotate_usda-e8c2998b278e7b4c-1.digest b/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_rotate_usda-e8c2998b278e7b4c-1.digest index fb95d3305..684378bf8 100644 --- a/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_rotate_usda-e8c2998b278e7b4c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_rotate_usda-e8c2998b278e7b4c-1.digest @@ -41,4 +41,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 20799 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 5, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 1086324736, 1110016897, 0, 1056964608, 1086324736, 3212836864, 0, 3205561020, 1065353216, 0, 3205561020, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 1086324736, 1110016897, 0, 1056964608, 1086324736, 3212836864, 0, 3205561020, 1065353216, 0, 3205561020, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_translate_usda-0b0bd3f1a63779cf-1.digest b/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_translate_usda-0b0bd3f1a63779cf-1.digest index c228c69e5..5b5c72ed0 100644 --- a/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_translate_usda-0b0bd3f1a63779cf-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_adaptive_diced_translate_usda-0b0bd3f1a63779cf-1.digest @@ -41,4 +41,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 20799 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825702510234920227, n_points: 8, n_indices: 36, n_uvs: None, smooth: true, material: 1 }), placements: 5, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 1086324736, 1110016897, 0, 1056964608, 1086324736, 3212836864, 0, 3205561020, 1065353216, 0, 3205561020, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 1086324736, 1110016897, 0, 1056964608, 1086324736, 3212836864, 0, 3205561020, 1065353216, 0, 3205561020, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_adaptive_exposure_usda-6a1bc74cbd2099fa-1.digest b/crates/crust-core/tests/data/import_baselines/full_adaptive_exposure_usda-6a1bc74cbd2099fa-1.digest index ff7dc3aa5..0933e9e0b 100644 --- a/crates/crust-core/tests/data/import_baselines/full_adaptive_exposure_usda-6a1bc74cbd2099fa-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_adaptive_exposure_usda-6a1bc74cbd2099fa-1.digest @@ -43,4 +43,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 91251 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13090063996844779502, n_points: 122, n_indices: 720, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_adaptive_undo_exposure_usda-8cd035220544928f-1.digest b/crates/crust-core/tests/data/import_baselines/full_adaptive_undo_exposure_usda-8cd035220544928f-1.digest index 9221cb0ac..f67425cdf 100644 --- a/crates/crust-core/tests/data/import_baselines/full_adaptive_undo_exposure_usda-8cd035220544928f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_adaptive_undo_exposure_usda-8cd035220544928f-1.digest @@ -43,4 +43,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 91251 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13090063996844779502, n_points: 122, n_indices: 720, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_base_colour_usda-185573627cdcf2a6-1.digest b/crates/crust-core/tests/data/import_baselines/full_base_colour_usda-185573627cdcf2a6-1.digest index 22f178ee7..f76425d9a 100644 --- a/crates/crust-core/tests/data/import_baselines/full_base_colour_usda-185573627cdcf2a6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_base_colour_usda-185573627cdcf2a6-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_carried_fog_usda-b5397418f77073c1-1.digest b/crates/crust-core/tests/data/import_baselines/full_carried_fog_usda-b5397418f77073c1-1.digest index 9544371b5..3e75cb560 100644 --- a/crates/crust-core/tests/data/import_baselines/full_carried_fog_usda-b5397418f77073c1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_carried_fog_usda-b5397418f77073c1-1.digest @@ -27,4 +27,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: ["/World/Cam/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_changed_on_disk_usda-0c8b6f9bfb68059a-1.digest b/crates/crust-core/tests/data/import_baselines/full_changed_on_disk_usda-0c8b6f9bfb68059a-1.digest index 5626614d3..8202d7dc0 100644 --- a/crates/crust-core/tests/data/import_baselines/full_changed_on_disk_usda-0c8b6f9bfb68059a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_changed_on_disk_usda-0c8b6f9bfb68059a-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_cornellbox_rotate_usda-76b2e5fb271f6c0c-1.digest b/crates/crust-core/tests/data/import_baselines/full_cornellbox_rotate_usda-76b2e5fb271f6c0c-1.digest index db73b6764..3cc2104bd 100644 --- a/crates/crust-core/tests/data/import_baselines/full_cornellbox_rotate_usda-76b2e5fb271f6c0c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_cornellbox_rotate_usda-76b2e5fb271f6c0c-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_cornellbox_translate_usda-ab7177593fd6f36b-1.digest b/crates/crust-core/tests/data/import_baselines/full_cornellbox_translate_usda-ab7177593fd6f36b-1.digest index a0248f671..e4754c500 100644 --- a/crates/crust-core/tests/data/import_baselines/full_cornellbox_translate_usda-ab7177593fd6f36b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_cornellbox_translate_usda-ab7177593fd6f36b-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_demoted_K1_usda-e328a49ee95fd405-1.digest b/crates/crust-core/tests/data/import_baselines/full_demoted_K1_usda-e328a49ee95fd405-1.digest index ab421a6b4..613fd55d7 100644 --- a/crates/crust-core/tests/data/import_baselines/full_demoted_K1_usda-e328a49ee95fd405-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_demoted_K1_usda-e328a49ee95fd405-1.digest @@ -36,4 +36,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_demoted_K4_usda-d0354a764756e3b4-1.digest b/crates/crust-core/tests/data/import_baselines/full_demoted_K4_usda-d0354a764756e3b4-1.digest index 4f55874b2..51344b194 100644 --- a/crates/crust-core/tests/data/import_baselines/full_demoted_K4_usda-d0354a764756e3b4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_demoted_K4_usda-d0354a764756e3b4-1.digest @@ -36,4 +36,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field__bad_unit_usda-bf5aa1ce7a54f9e2-1.digest b/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field__bad_unit_usda-bf5aa1ce7a54f9e2-1.digest index 309247148..43710bb74 100644 --- a/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field__bad_unit_usda-bf5aa1ce7a54f9e2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field__bad_unit_usda-bf5aa1ce7a54f9e2-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/Far provenance geometry 1..2: /World/Near provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field_usda-61f50bc7be824751-1.digest b/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field_usda-61f50bc7be824751-1.digest index aa08e66b4..7d975fc56 100644 --- a/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field_usda-61f50bc7be824751-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_disable_depth_of_field_usda-61f50bc7be824751-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/Far provenance geometry 1..2: /World/Near provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_dome_hidden_rotate_usda-82abbe3ed6112a4c-1.digest b/crates/crust-core/tests/data/import_baselines/full_dome_hidden_rotate_usda-82abbe3ed6112a4c-1.digest index 3f189da51..60cac1c84 100644 --- a/crates/crust-core/tests/data/import_baselines/full_dome_hidden_rotate_usda-82abbe3ed6112a4c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_dome_hidden_rotate_usda-82abbe3ed6112a4c-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: false, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: false, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_dome_hidden_translate_usda-a8196d9e2f17ecbf-1.digest b/crates/crust-core/tests/data/import_baselines/full_dome_hidden_translate_usda-a8196d9e2f17ecbf-1.digest index ad18f45ff..997cfee3f 100644 --- a/crates/crust-core/tests/data/import_baselines/full_dome_hidden_translate_usda-a8196d9e2f17ecbf-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_dome_hidden_translate_usda-a8196d9e2f17ecbf-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: false, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: false, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_dome_texture_usda-c3e04747e405ac6e-1.digest b/crates/crust-core/tests/data/import_baselines/full_dome_texture_usda-c3e04747e405ac6e-1.digest index d2300bec0..2d5122104 100644 --- a/crates/crust-core/tests/data/import_baselines/full_dome_texture_usda-c3e04747e405ac6e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_dome_texture_usda-c3e04747e405ac6e-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_drop_usda-a61417609925c673-1.digest b/crates/crust-core/tests/data/import_baselines/full_drop_usda-a61417609925c673-1.digest index f7eca19d2..aaa487db6 100644 --- a/crates/crust-core/tests/data/import_baselines/full_drop_usda-a61417609925c673-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_drop_usda-a61417609925c673-1.digest @@ -75,4 +75,4 @@ provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002 provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_exposure_usda-fe83c794ae61f2a2-1.digest b/crates/crust-core/tests/data/import_baselines/full_exposure_usda-fe83c794ae61f2a2-1.digest index 8db448dc5..1509b51a3 100644 --- a/crates/crust-core/tests/data/import_baselines/full_exposure_usda-fe83c794ae61f2a2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_exposure_usda-fe83c794ae61f2a2-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_fixed_usda-adb1781d64f694c8-1.digest b/crates/crust-core/tests/data/import_baselines/full_fixed_usda-adb1781d64f694c8-1.digest index 9d088b3c7..517bc7e97 100644 --- a/crates/crust-core/tests/data/import_baselines/full_fixed_usda-adb1781d64f694c8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_fixed_usda-adb1781d64f694c8-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_groom_base_colour_usda-dd47b7dff78ee58e-1.digest b/crates/crust-core/tests/data/import_baselines/full_groom_base_colour_usda-dd47b7dff78ee58e-1.digest index 9dadd726d..2ff63b60c 100644 --- a/crates/crust-core/tests/data/import_baselines/full_groom_base_colour_usda-dd47b7dff78ee58e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_groom_base_colour_usda-dd47b7dff78ee58e-1.digest @@ -19,4 +19,4 @@ provenance light /World/Sky: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Groom provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_groom_primvar_undone_usda-318d40a5ee9b02d7-1.digest b/crates/crust-core/tests/data/import_baselines/full_groom_primvar_undone_usda-318d40a5ee9b02d7-1.digest index ee9e398eb..f62e3270a 100644 --- a/crates/crust-core/tests/data/import_baselines/full_groom_primvar_undone_usda-318d40a5ee9b02d7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_groom_primvar_undone_usda-318d40a5ee9b02d7-1.digest @@ -19,4 +19,4 @@ provenance light /World/Sky: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Groom provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_groom_reads_its_primvar_usda-98bf5373a7d5697f-1.digest b/crates/crust-core/tests/data/import_baselines/full_groom_reads_its_primvar_usda-98bf5373a7d5697f-1.digest index e7d283f34..b5b09819d 100644 --- a/crates/crust-core/tests/data/import_baselines/full_groom_reads_its_primvar_usda-98bf5373a7d5697f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_groom_reads_its_primvar_usda-98bf5373a7d5697f-1.digest @@ -19,4 +19,4 @@ provenance light /World/Sky: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Groom provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_linked_Fill_usda-cb706e1f9f991794-1.digest b/crates/crust-core/tests/data/import_baselines/full_linked_Fill_usda-cb706e1f9f991794-1.digest index eb5b86aeb..945c4d73c 100644 --- a/crates/crust-core/tests/data/import_baselines/full_linked_Fill_usda-cb706e1f9f991794-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_linked_Fill_usda-cb706e1f9f991794-1.digest @@ -41,4 +41,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 86399 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [4, 5, 6] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_linked_Key_usda-db486cee2438fb3b-1.digest b/crates/crust-core/tests/data/import_baselines/full_linked_Key_usda-db486cee2438fb3b-1.digest index 712325462..e8db91496 100644 --- a/crates/crust-core/tests/data/import_baselines/full_linked_Key_usda-db486cee2438fb3b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_linked_Key_usda-db486cee2438fb3b-1.digest @@ -41,4 +41,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 86399 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [4, 5, 6] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_linked_Rim_usda-2874a091d25b590b-1.digest b/crates/crust-core/tests/data/import_baselines/full_linked_Rim_usda-2874a091d25b590b-1.digest index 1e4cdec0d..70de0609b 100644 --- a/crates/crust-core/tests/data/import_baselines/full_linked_Rim_usda-2874a091d25b590b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_linked_Rim_usda-2874a091d25b590b-1.digest @@ -41,4 +41,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 86399 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [4, 5, 6] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_linked_undo_Fill_usda-a93137db50fd28c8-1.digest b/crates/crust-core/tests/data/import_baselines/full_linked_undo_Fill_usda-a93137db50fd28c8-1.digest index 505a26cc1..149b2edce 100644 --- a/crates/crust-core/tests/data/import_baselines/full_linked_undo_Fill_usda-a93137db50fd28c8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_linked_undo_Fill_usda-a93137db50fd28c8-1.digest @@ -41,4 +41,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 86399 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [4, 5, 6] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_linked_undo_Key_usda-1239d0ab4241ef3f-1.digest b/crates/crust-core/tests/data/import_baselines/full_linked_undo_Key_usda-1239d0ab4241ef3f-1.digest index 8e4104e7c..3d09e5a1c 100644 --- a/crates/crust-core/tests/data/import_baselines/full_linked_undo_Key_usda-1239d0ab4241ef3f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_linked_undo_Key_usda-1239d0ab4241ef3f-1.digest @@ -41,4 +41,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 86399 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [4, 5, 6] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_linked_undo_Rim_usda-03ca7b9265c405f0-1.digest b/crates/crust-core/tests/data/import_baselines/full_linked_undo_Rim_usda-03ca7b9265c405f0-1.digest index 5df32ad6b..814c25c07 100644 --- a/crates/crust-core/tests/data/import_baselines/full_linked_undo_Rim_usda-03ca7b9265c405f0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_linked_undo_Rim_usda-03ca7b9265c405f0-1.digest @@ -41,4 +41,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 86399 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [4, 5, 6] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_max_depth_usda-1164faed927e051e-1.digest b/crates/crust-core/tests/data/import_baselines/full_max_depth_usda-1164faed927e051e-1.digest index 22b46a50a..1842b0abc 100644 --- a/crates/crust-core/tests/data/import_baselines/full_max_depth_usda-1164faed927e051e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_max_depth_usda-1164faed927e051e-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_meshes_rotate_usda-402e98fde9a693c4-1.digest b/crates/crust-core/tests/data/import_baselines/full_meshes_rotate_usda-402e98fde9a693c4-1.digest index ad42eb47b..881f0a5de 100644 --- a/crates/crust-core/tests/data/import_baselines/full_meshes_rotate_usda-402e98fde9a693c4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_meshes_rotate_usda-402e98fde9a693c4-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_meshes_translate_usda-ee4192f2a802af39-1.digest b/crates/crust-core/tests/data/import_baselines/full_meshes_translate_usda-ee4192f2a802af39-1.digest index 54e254a9d..1f6cbdd4b 100644 --- a/crates/crust-core/tests/data/import_baselines/full_meshes_translate_usda-ee4192f2a802af39-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_meshes_translate_usda-ee4192f2a802af39-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_move_the_new_camera_usda-73f0dca6c14ef5d7-1.digest b/crates/crust-core/tests/data/import_baselines/full_move_the_new_camera_usda-73f0dca6c14ef5d7-1.digest index 9331b4dab..50e5e470b 100644 --- a/crates/crust-core/tests/data/import_baselines/full_move_the_new_camera_usda-73f0dca6c14ef5d7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_move_the_new_camera_usda-73f0dca6c14ef5d7-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_rotate_usda-d7adb4497350da61-1.digest b/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_rotate_usda-d7adb4497350da61-1.digest index 285ef5fdb..4420fe954 100644 --- a/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_rotate_usda-d7adb4497350da61-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_rotate_usda-d7adb4497350da61-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13212365895451826409, n_points: 66, n_indices: 160, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: Some(ScreenKey([0, 1056964608, 1086324736, 1112074166, 0, 1056964608, 1086324736, 3212836864, 0, 3203704606, 1065353216, 0, 3203704606, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: Some(ScreenKey([0, 1056964608, 1086324736, 1112074166, 0, 1056964608, 1086324736, 3212836864, 0, 3203704606, 1065353216, 0, 3203704606, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_translate_usda-6bfd0fb9adcbe164-1.digest b/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_translate_usda-6bfd0fb9adcbe164-1.digest index e649e2b33..f9854cc3d 100644 --- a/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_translate_usda-6bfd0fb9adcbe164-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_on_screen_diced_translate_usda-6bfd0fb9adcbe164-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13212365895451826409, n_points: 66, n_indices: 160, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: Some(ScreenKey([0, 1056964608, 1086324736, 1112074166, 0, 1056964608, 1086324736, 3212836864, 0, 3203704606, 1065353216, 0, 3203704606, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Dicer", "/World/Cam"], dicing: Some("/World/Dicer"), on_screen_shapes: Some(ScreenKey([0, 1056964608, 1086324736, 1112074166, 0, 1056964608, 1086324736, 3212836864, 0, 3203704606, 1065353216, 0, 3203704606, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_on_screen_exposure_usda-b0790c819b4e0d97-1.digest b/crates/crust-core/tests/data/import_baselines/full_on_screen_exposure_usda-b0790c819b4e0d97-1.digest index 4dc4919ef..846626cbd 100644 --- a/crates/crust-core/tests/data/import_baselines/full_on_screen_exposure_usda-b0790c819b4e0d97-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_on_screen_exposure_usda-b0790c819b4e0d97-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13212365895451826409, n_points: 66, n_indices: 160, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 1086324736, 1112074166, 0, 0, 1086324736, 3212836864, 0, 3203704606, 1065353216, 0, 3203704606, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 1086324736, 1112074166, 0, 0, 1086324736, 3212836864, 0, 3203704606, 1065353216, 0, 3203704606, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_on_screen_undo_exposure_usda-c40080b74d3fb5a6-1.digest b/crates/crust-core/tests/data/import_baselines/full_on_screen_undo_exposure_usda-c40080b74d3fb5a6-1.digest index 3a8ad2da4..f032c98ba 100644 --- a/crates/crust-core/tests/data/import_baselines/full_on_screen_undo_exposure_usda-c40080b74d3fb5a6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_on_screen_undo_exposure_usda-c40080b74d3fb5a6-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13212365895451826409, n_points: 66, n_indices: 160, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 1086324736, 1112074166, 0, 0, 1086324736, 3212836864, 0, 3203704606, 1065353216, 0, 3203704606, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 1086324736, 1112074166, 0, 0, 1086324736, 3212836864, 0, 3203704606, 1065353216, 0, 3203704606, 0, 3212836864, 3198360084, 0, 1065353216, 3198360084, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_payload_rewritten_usda-03a6e3d1a01a5551-1.digest b/crates/crust-core/tests/data/import_baselines/full_payload_rewritten_usda-03a6e3d1a01a5551-1.digest index a4c9e0162..764264623 100644 --- a/crates/crust-core/tests/data/import_baselines/full_payload_rewritten_usda-03a6e3d1a01a5551-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_payload_rewritten_usda-03a6e3d1a01a5551-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_payload_roughness_usda-498bc078c77be0a5-1.digest b/crates/crust-core/tests/data/import_baselines/full_payload_roughness_usda-498bc078c77be0a5-1.digest index c3b1039da..ef3f2fb08 100644 --- a/crates/crust-core/tests/data/import_baselines/full_payload_roughness_usda-498bc078c77be0a5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_payload_roughness_usda-498bc078c77be0a5-1.digest @@ -27,4 +27,4 @@ provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_payload_undo_roughness_usda-7143361153e7f548-1.digest b/crates/crust-core/tests/data/import_baselines/full_payload_undo_roughness_usda-7143361153e7f548-1.digest index 0cc639e2b..622101a69 100644 --- a/crates/crust-core/tests/data/import_baselines/full_payload_undo_roughness_usda-7143361153e7f548-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_payload_undo_roughness_usda-7143361153e7f548-1.digest @@ -27,4 +27,4 @@ provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_undone_usda-774a34f5226e3639-1.digest b/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_undone_usda-774a34f5226e3639-1.digest index 576a365be..15fb92e14 100644 --- a/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_undone_usda-774a34f5226e3639-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_undone_usda-774a34f5226e3639-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_usda-8674ccd68263fd36-1.digest b/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_usda-8674ccd68263fd36-1.digest index 276c9d1a3..4d8d67147 100644 --- a/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_usda-8674ccd68263fd36-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_products_with_Pref_usda-8674ccd68263fd36-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11801363609627443368, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_re_exported_usda-39edd0f167e79907-1.digest b/crates/crust-core/tests/data/import_baselines/full_re_exported_usda-39edd0f167e79907-1.digest index 2676dfc27..768e03301 100644 --- a/crates/crust-core/tests/data/import_baselines/full_re_exported_usda-39edd0f167e79907-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_re_exported_usda-39edd0f167e79907-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_rect_light_usda-efc21afcf05d7959-1.digest b/crates/crust-core/tests/data/import_baselines/full_rect_light_usda-efc21afcf05d7959-1.digest index bac6840c6..388d14fcc 100644 --- a/crates/crust-core/tests/data/import_baselines/full_rect_light_usda-efc21afcf05d7959-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_rect_light_usda-efc21afcf05d7959-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_reloaded_usda-5a765fd50dde24be-1.digest b/crates/crust-core/tests/data/import_baselines/full_reloaded_usda-5a765fd50dde24be-1.digest index df083cabc..4c7f0906d 100644 --- a/crates/crust-core/tests/data/import_baselines/full_reloaded_usda-5a765fd50dde24be-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_reloaded_usda-5a765fd50dde24be-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_reset_the_camera_s_transform_stack_usda-38a53b23a8f224c2-1.digest b/crates/crust-core/tests/data/import_baselines/full_reset_the_camera_s_transform_stack_usda-38a53b23a8f224c2-1.digest index 473eb8351..5280e409d 100644 --- a/crates/crust-core/tests/data/import_baselines/full_reset_the_camera_s_transform_stack_usda-38a53b23a8f224c2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_reset_the_camera_s_transform_stack_usda-38a53b23a8f224c2-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_retarget_a_diced_adaptive_scene_usda-bde6533023d6ccd8-1.digest b/crates/crust-core/tests/data/import_baselines/full_retarget_a_diced_adaptive_scene_usda-bde6533023d6ccd8-1.digest index 332afaa28..7dce6a32d 100644 --- a/crates/crust-core/tests/data/import_baselines/full_retarget_a_diced_adaptive_scene_usda-bde6533023d6ccd8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_retarget_a_diced_adaptive_scene_usda-bde6533023d6ccd8-1.digest @@ -43,4 +43,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 91251 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13090063996844779502, n_points: 122, n_indices: 720, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: Some("/World/Cam"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1122308081, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: Some("/World/Cam"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_retarget_an_adaptive_scene_usda-721dc26887b364a7-1.digest b/crates/crust-core/tests/data/import_baselines/full_retarget_an_adaptive_scene_usda-721dc26887b364a7-1.digest index 498f55340..7b0a25bd1 100644 --- a/crates/crust-core/tests/data/import_baselines/full_retarget_an_adaptive_scene_usda-721dc26887b364a7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_retarget_an_adaptive_scene_usda-721dc26887b364a7-1.digest @@ -42,4 +42,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16825 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9125125757038733368, n_points: 26, n_indices: 144, n_uvs: None, smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([1069547520, 1065353216, 1084227584, 1115108637, 1069547520, 1065353216, 1084227584, 3213371458, 3173401642, 3188195590, 1063287320, 3173401642, 3206405490, 3168756112, 3212982450, 3185572784, 3181341822, 1064878233, 3198147198, 3195428598, 3184923397, 3212249332, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([1069547520, 1065353216, 1084227584, 1115108637, 1069547520, 1065353216, 1084227584, 3213371458, 3173401642, 3188195590, 1063287320, 3173401642, 3206405490, 3168756112, 3212982450, 3185572784, 3181341822, 1064878233, 3198147198, 3195428598, 3184923397, 3212249332, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_retarget_the_product_camera_usda-0a3badd9a91b1027-1.digest b/crates/crust-core/tests/data/import_baselines/full_retarget_the_product_camera_usda-0a3badd9a91b1027-1.digest index 6404a6970..3afd99fc2 100644 --- a/crates/crust-core/tests/data/import_baselines/full_retarget_the_product_camera_usda-0a3badd9a91b1027-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_retarget_the_product_camera_usda-0a3badd9a91b1027-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_retarget_the_settings_camera_usda-2b1ab3b4034d45bb-1.digest b/crates/crust-core/tests/data/import_baselines/full_retarget_the_settings_camera_usda-2b1ab3b4034d45bb-1.digest index 665a65ac5..8dd471e62 100644 --- a/crates/crust-core/tests/data/import_baselines/full_retarget_the_settings_camera_usda-2b1ab3b4034d45bb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_retarget_the_settings_camera_usda-2b1ab3b4034d45bb-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_retarget_to_a_carrying_camera_usda-56381435fa6b51f5-1.digest b/crates/crust-core/tests/data/import_baselines/full_retarget_to_a_carrying_camera_usda-56381435fa6b51f5-1.digest index 875d2e777..90c55f4bd 100644 --- a/crates/crust-core/tests/data/import_baselines/full_retarget_to_a_carrying_camera_usda-56381435fa6b51f5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_retarget_to_a_carrying_camera_usda-56381435fa6b51f5-1.digest @@ -30,4 +30,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 80010 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam2"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_roughness_usda-a1ffe89d435678bc-1.digest b/crates/crust-core/tests/data/import_baselines/full_roughness_usda-a1ffe89d435678bc-1.digest index 5bf2a17f1..b73e66b99 100644 --- a/crates/crust-core/tests/data/import_baselines/full_roughness_usda-a1ffe89d435678bc-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_roughness_usda-a1ffe89d435678bc-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_sampler_usda-27ca674891cf7c52-1.digest b/crates/crust-core/tests/data/import_baselines/full_sampler_usda-27ca674891cf7c52-1.digest index 4700cb815..eb585b16b 100644 --- a/crates/crust-core/tests/data/import_baselines/full_sampler_usda-27ca674891cf7c52-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_sampler_usda-27ca674891cf7c52-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_scatter_usda-80ff37fcf1ff9f3c-1.digest b/crates/crust-core/tests/data/import_baselines/full_scatter_usda-80ff37fcf1ff9f3c-1.digest index a2ac041a0..ce74fc480 100644 --- a/crates/crust-core/tests/data/import_baselines/full_scatter_usda-80ff37fcf1ff9f3c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_scatter_usda-80ff37fcf1ff9f3c-1.digest @@ -582,4 +582,4 @@ provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1400 provenance mesh slot 11: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_shared_shader_usda-bcebf475c7d9ca1f-1.digest b/crates/crust-core/tests/data/import_baselines/full_shared_shader_usda-bcebf475c7d9ca1f-1.digest index 8adfd2654..4a9729ea6 100644 --- a/crates/crust-core/tests/data/import_baselines/full_shared_shader_usda-bcebf475c7d9ca1f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_shared_shader_usda-bcebf475c7d9ca1f-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_sharp_at_the_frame_usda-06436b4d06eb2f5f-1.digest b/crates/crust-core/tests/data/import_baselines/full_sharp_at_the_frame_usda-06436b4d06eb2f5f-1.digest index c167a1fa8..9d6fb13ae 100644 --- a/crates/crust-core/tests/data/import_baselines/full_sharp_at_the_frame_usda-06436b4d06eb2f5f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_sharp_at_the_frame_usda-06436b4d06eb2f5f-1.digest @@ -19,4 +19,4 @@ provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Mover provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [13821547256400052224, 4598175219545276416], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [13821547256400052224, 4598175219545276416], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_shutter_close_usda-ce0b12427cfd435b-1.digest b/crates/crust-core/tests/data/import_baselines/full_shutter_close_usda-ce0b12427cfd435b-1.digest index ca302dde7..89db1d644 100644 --- a/crates/crust-core/tests/data/import_baselines/full_shutter_close_usda-ce0b12427cfd435b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_shutter_close_usda-ce0b12427cfd435b-1.digest @@ -19,4 +19,4 @@ provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Mover provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4602678819172646912], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4602678819172646912], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_shutter_exposure_usda-36da172692d8936a-1.digest b/crates/crust-core/tests/data/import_baselines/full_shutter_exposure_usda-36da172692d8936a-1.digest index e32ad8840..89209d169 100644 --- a/crates/crust-core/tests/data/import_baselines/full_shutter_exposure_usda-36da172692d8936a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_shutter_exposure_usda-36da172692d8936a-1.digest @@ -18,4 +18,4 @@ provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Mover provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_sublayer_rewritten_usda-2e79c887f2d55e88-1.digest b/crates/crust-core/tests/data/import_baselines/full_sublayer_rewritten_usda-2e79c887f2d55e88-1.digest index c6e2c4f3d..e2f5461aa 100644 --- a/crates/crust-core/tests/data/import_baselines/full_sublayer_rewritten_usda-2e79c887f2d55e88-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_sublayer_rewritten_usda-2e79c887f2d55e88-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_texture_file_usda-1fd2cfaf6e5de06c-1.digest b/crates/crust-core/tests/data/import_baselines/full_texture_file_usda-1fd2cfaf6e5de06c-1.digest index 02fb6ba16..caabce948 100644 --- a/crates/crust-core/tests/data/import_baselines/full_texture_file_usda-1fd2cfaf6e5de06c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_texture_file_usda-1fd2cfaf6e5de06c-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_a_light_s_shape_usda-f05814080b96dca5-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_a_light_s_shape_usda-f05814080b96dca5-1.digest index b31e818f7..a5097f206 100644 --- a/crates/crust-core/tests/data/import_baselines/full_undo_a_light_s_shape_usda-f05814080b96dca5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_undo_a_light_s_shape_usda-f05814080b96dca5-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_a_transform_usda-d26b3a02a093ce4f-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_a_transform_usda-d26b3a02a093ce4f-1.digest index 4519bcd2e..32d892d91 100644 --- a/crates/crust-core/tests/data/import_baselines/full_undo_a_transform_usda-d26b3a02a093ce4f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_undo_a_transform_usda-d26b3a02a093ce4f-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_base_colour_usda-d814da72eab3f116-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_base_colour_usda-d814da72eab3f116-1.digest index 58d3633ac..09b6bc51c 100644 --- a/crates/crust-core/tests/data/import_baselines/full_undo_base_colour_usda-d814da72eab3f116-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_undo_base_colour_usda-d814da72eab3f116-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field__bad_unit_usda-6419381399744bc7-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field__bad_unit_usda-6419381399744bc7-1.digest index d27c7a647..70982821d 100644 --- a/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field__bad_unit_usda-6419381399744bc7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field__bad_unit_usda-6419381399744bc7-1.digest @@ -21,4 +21,4 @@ provenance geometry 0..1: /World/Far provenance geometry 1..2: /World/Near provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field_usda-3ef9a9cb1855677e-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field_usda-3ef9a9cb1855677e-1.digest index 381ea2f44..0799f9bbd 100644 --- a/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field_usda-3ef9a9cb1855677e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_undo_disable_depth_of_field_usda-3ef9a9cb1855677e-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/Far provenance geometry 1..2: /World/Near provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_dome_texture_usda-a17c02c0536bdc00-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_dome_texture_usda-a17c02c0536bdc00-1.digest index 2ccbd16c5..0c3c62f42 100644 --- a/crates/crust-core/tests/data/import_baselines/full_undo_dome_texture_usda-a17c02c0536bdc00-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_undo_dome_texture_usda-a17c02c0536bdc00-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_exposure_usda-c9169e83397e3561-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_exposure_usda-c9169e83397e3561-1.digest index 52de650b9..e48539684 100644 --- a/crates/crust-core/tests/data/import_baselines/full_undo_exposure_usda-c9169e83397e3561-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_undo_exposure_usda-c9169e83397e3561-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_max_depth_usda-a8a78eb6299a327a-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_max_depth_usda-a8a78eb6299a327a-1.digest index a3cd0e48d..8c9f18d7d 100644 --- a/crates/crust-core/tests/data/import_baselines/full_undo_max_depth_usda-a8a78eb6299a327a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_undo_max_depth_usda-a8a78eb6299a327a-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_rect_light_usda-2d6a907009434890-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_rect_light_usda-2d6a907009434890-1.digest index 9072622c3..09a0c929d 100644 --- a/crates/crust-core/tests/data/import_baselines/full_undo_rect_light_usda-2d6a907009434890-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_undo_rect_light_usda-2d6a907009434890-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_roughness_usda-62c5e0d0879e604d-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_roughness_usda-62c5e0d0879e604d-1.digest index 08897939a..369a85ff6 100644 --- a/crates/crust-core/tests/data/import_baselines/full_undo_roughness_usda-62c5e0d0879e604d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_undo_roughness_usda-62c5e0d0879e604d-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_sampler_usda-0d28664679d41bef-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_sampler_usda-0d28664679d41bef-1.digest index add49df5c..1b1434263 100644 --- a/crates/crust-core/tests/data/import_baselines/full_undo_sampler_usda-0d28664679d41bef-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_undo_sampler_usda-0d28664679d41bef-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_shutter_close_usda-f7c724218b21e98a-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_shutter_close_usda-f7c724218b21e98a-1.digest index 0aa4755ba..f1d87266b 100644 --- a/crates/crust-core/tests/data/import_baselines/full_undo_shutter_close_usda-f7c724218b21e98a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_undo_shutter_close_usda-f7c724218b21e98a-1.digest @@ -18,4 +18,4 @@ provenance light /World/Sun: LightOrigin { index: 0, geoms: 1..1 } provenance geometry 0..1: /World/Mover provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_texture_file_usda-d5aef4a622503f01-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_texture_file_usda-d5aef4a622503f01-1.digest index 358047340..983c220d9 100644 --- a/crates/crust-core/tests/data/import_baselines/full_undo_texture_file_usda-d5aef4a622503f01-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_undo_texture_file_usda-d5aef4a622503f01-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_the_product_retarget_usda-1e1edebd41fde9bc-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_the_product_retarget_usda-1e1edebd41fde9bc-1.digest index 489bd81c8..fa0bd821e 100644 --- a/crates/crust-core/tests/data/import_baselines/full_undo_the_product_retarget_usda-1e1edebd41fde9bc-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_undo_the_product_retarget_usda-1e1edebd41fde9bc-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam2", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_the_reset_usda-7e7c9dbebb517c2f-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_the_reset_usda-7e7c9dbebb517c2f-1.digest index 0a57e9a08..b5576391e 100644 --- a/crates/crust-core/tests/data/import_baselines/full_undo_the_reset_usda-7e7c9dbebb517c2f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_undo_the_reset_usda-7e7c9dbebb517c2f-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_undo_the_rotate_usda-c1aa90b58073a573-1.digest b/crates/crust-core/tests/data/import_baselines/full_undo_the_rotate_usda-c1aa90b58073a573-1.digest index 481177ad6..91b9aa621 100644 --- a/crates/crust-core/tests/data/import_baselines/full_undo_the_rotate_usda-c1aa90b58073a573-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_undo_the_rotate_usda-c1aa90b58073a573-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/full_undone_after_reload_usda-b19199733b99fec2-1.digest b/crates/crust-core/tests/data/import_baselines/full_undone_after_reload_usda-b19199733b99fec2-1.digest index 81d73eccb..eb8d7bba3 100644 --- a/crates/crust-core/tests/data/import_baselines/full_undone_after_reload_usda-b19199733b99fec2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/full_undone_after_reload_usda-b19199733b99fec2-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/furnace_ball_usda-54ac5243ee332532-1.digest b/crates/crust-core/tests/data/import_baselines/furnace_ball_usda-54ac5243ee332532-1.digest index 49d11ed7b..261a738ea 100644 --- a/crates/crust-core/tests/data/import_baselines/furnace_ball_usda-54ac5243ee332532-1.digest +++ b/crates/crust-core/tests/data/import_baselines/furnace_ball_usda-54ac5243ee332532-1.digest @@ -22,4 +22,4 @@ provenance geometry 0..1: /World/Geo/Ball provenance geometry 1..2: /World/Geo/Haze provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/furnace_usda-bbc6fe1cb946780f-1.digest b/crates/crust-core/tests/data/import_baselines/furnace_usda-bbc6fe1cb946780f-1.digest index 06ae8ce1c..7f75ad665 100644 --- a/crates/crust-core/tests/data/import_baselines/furnace_usda-bbc6fe1cb946780f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/furnace_usda-bbc6fe1cb946780f-1.digest @@ -19,4 +19,4 @@ provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fvar_bilinear_usda-8ca893f677c91586-1.digest b/crates/crust-core/tests/data/import_baselines/fvar_bilinear_usda-8ca893f677c91586-1.digest index cf1848c0b..2181c94bd 100644 --- a/crates/crust-core/tests/data/import_baselines/fvar_bilinear_usda-8ca893f677c91586-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fvar_bilinear_usda-8ca893f677c91586-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17387146745673654341, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("xy", 2)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("xy", 2)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/fvar_loop_usda-855199bacac38db5-1.digest b/crates/crust-core/tests/data/import_baselines/fvar_loop_usda-855199bacac38db5-1.digest index 042b02722..fd5077f98 100644 --- a/crates/crust-core/tests/data/import_baselines/fvar_loop_usda-855199bacac38db5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/fvar_loop_usda-855199bacac38db5-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7831137738973469772, n_points: 66, n_indices: 384, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("xy", 2)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("xy", 2)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/geometry_usda-3299cf85fca858a4-1.digest b/crates/crust-core/tests/data/import_baselines/geometry_usda-3299cf85fca858a4-1.digest index 8e5d5d26e..603c846dc 100644 --- a/crates/crust-core/tests/data/import_baselines/geometry_usda-3299cf85fca858a4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/geometry_usda-3299cf85fca858a4-1.digest @@ -16,4 +16,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glass_usda-6ef57f18257a3d7a-1.digest b/crates/crust-core/tests/data/import_baselines/glass_usda-6ef57f18257a3d7a-1.digest index 9c105c9ad..f1d227da2 100644 --- a/crates/crust-core/tests/data/import_baselines/glass_usda-6ef57f18257a3d7a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glass_usda-6ef57f18257a3d7a-1.digest @@ -17,4 +17,4 @@ provenance material /World/Glass: MaterialOrigin { slots: [0], displaced: false provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_1_usda-8cc43a3f4dae46fb-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_1_usda-8cc43a3f4dae46fb-1.digest index e02826a90..b2391e41f 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_1_usda-8cc43a3f4dae46fb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_1_usda-8cc43a3f4dae46fb-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_2_usda-ff99772c18e0997c-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_2_usda-ff99772c18e0997c-1.digest index 7fb9c6824..24e68e7da 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_2_usda-ff99772c18e0997c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_2_usda-ff99772c18e0997c-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_3_usda-8c8e2079502f800d-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_3_usda-8c8e2079502f800d-1.digest index c2c4b6ed2..19e716bb6 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_3_usda-8c8e2079502f800d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_3_usda-8c8e2079502f800d-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_4_usda-76914e768885b3e6-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_4_usda-76914e768885b3e6-1.digest index 2c9eddf2a..ccfa5381d 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_4_usda-76914e768885b3e6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_bsdf_false_4_usda-76914e768885b3e6-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_1_usda-7fde13de0abc769b-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_1_usda-7fde13de0abc769b-1.digest index bc3d09891..05c655811 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_1_usda-7fde13de0abc769b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_1_usda-7fde13de0abc769b-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_2_usda-58c418a757f93b46-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_2_usda-58c418a757f93b46-1.digest index 4f1a94a77..ad74a7cac 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_2_usda-58c418a757f93b46-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_2_usda-58c418a757f93b46-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_3_usda-0e4d0c5d73f098b1-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_3_usda-0e4d0c5d73f098b1-1.digest index 48923d22c..f744ca02a 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_3_usda-0e4d0c5d73f098b1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_3_usda-0e4d0c5d73f098b1-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_4_usda-db6287c220d2329c-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_4_usda-db6287c220d2329c-1.digest index 1b11723d3..a6d479d81 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_4_usda-db6287c220d2329c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_false_4_usda-db6287c220d2329c-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_1_usda-da25e07b06740551-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_1_usda-da25e07b06740551-1.digest index e297d1ded..3a55ee414 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_1_usda-da25e07b06740551-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_1_usda-da25e07b06740551-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_2_usda-ddbe5a176c05cba2-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_2_usda-ddbe5a176c05cba2-1.digest index 67b0136a4..51aa27631 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_2_usda-ddbe5a176c05cba2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_2_usda-ddbe5a176c05cba2-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_3_usda-06ab9cf1d9f5303b-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_3_usda-06ab9cf1d9f5303b-1.digest index 02a6babf4..bb4c40118 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_3_usda-06ab9cf1d9f5303b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_3_usda-06ab9cf1d9f5303b-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_4_usda-bae142df171828c4-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_4_usda-bae142df171828c4-1.digest index 7b0c04612..55bdd67be 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_4_usda-bae142df171828c4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_light_true_4_usda-bae142df171828c4-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_1_usda-8463e7fa7c167c7f-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_1_usda-8463e7fa7c167c7f-1.digest index 48e5db969..5eb54b705 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_1_usda-8463e7fa7c167c7f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_1_usda-8463e7fa7c167c7f-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_2_usda-dcf0f8d60a6084ce-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_2_usda-dcf0f8d60a6084ce-1.digest index 02d528101..1938da6d6 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_2_usda-dcf0f8d60a6084ce-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_2_usda-dcf0f8d60a6084ce-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_3_usda-fedffe90ed130071-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_3_usda-fedffe90ed130071-1.digest index 28f21773e..84cc01ec2 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_3_usda-fedffe90ed130071-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_3_usda-fedffe90ed130071-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_4_usda-654bf9f6d4073ca8-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_4_usda-654bf9f6d4073ca8-1.digest index 8037df370..f9a8c9be0 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_4_usda-654bf9f6d4073ca8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sphere_power_false_4_usda-654bf9f6d4073ca8-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_1_usda-5434dbae8c19939f-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_1_usda-5434dbae8c19939f-1.digest index 74fb7b7e4..0d357f25d 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_1_usda-5434dbae8c19939f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_1_usda-5434dbae8c19939f-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_2_usda-bb9d9ab32ead4e0e-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_2_usda-bb9d9ab32ead4e0e-1.digest index bdc342105..c62a031b2 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_2_usda-bb9d9ab32ead4e0e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_2_usda-bb9d9ab32ead4e0e-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_3_usda-edc5ae56976f1ff1-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_3_usda-edc5ae56976f1ff1-1.digest index 439a3471e..915d438b2 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_3_usda-edc5ae56976f1ff1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_3_usda-edc5ae56976f1ff1-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_4_usda-b2e4ed7db6e6d9c8-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_4_usda-b2e4ed7db6e6d9c8-1.digest index 254eb098b..3120cf89d 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_4_usda-b2e4ed7db6e6d9c8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_bsdf_false_4_usda-b2e4ed7db6e6d9c8-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_1_usda-03a3c8316f39e87b-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_1_usda-03a3c8316f39e87b-1.digest index fb391d113..5067a46c0 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_1_usda-03a3c8316f39e87b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_1_usda-03a3c8316f39e87b-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_2_usda-33306f5e5e7489a0-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_2_usda-33306f5e5e7489a0-1.digest index 6d15fd311..1aaad75c8 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_2_usda-33306f5e5e7489a0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_2_usda-33306f5e5e7489a0-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_3_usda-d3cf26f624795805-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_3_usda-d3cf26f624795805-1.digest index c498778f7..2a7a251c1 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_3_usda-d3cf26f624795805-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_3_usda-d3cf26f624795805-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_4_usda-bc3c2cc49389e192-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_4_usda-bc3c2cc49389e192-1.digest index cead490ea..3c23d16bb 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_4_usda-bc3c2cc49389e192-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_false_4_usda-bc3c2cc49389e192-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_1_usda-c5cb6d9f35a09a41-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_1_usda-c5cb6d9f35a09a41-1.digest index efb19d9ff..cb4f3b106 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_1_usda-c5cb6d9f35a09a41-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_1_usda-c5cb6d9f35a09a41-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_2_usda-4db04417a2f553bc-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_2_usda-4db04417a2f553bc-1.digest index 5cdff8904..bc6f0269c 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_2_usda-4db04417a2f553bc-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_2_usda-4db04417a2f553bc-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_3_usda-8962360ec726337b-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_3_usda-8962360ec726337b-1.digest index 15b5d6593..c0d742666 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_3_usda-8962360ec726337b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_3_usda-8962360ec726337b-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_4_usda-704837282362091e-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_4_usda-704837282362091e-1.digest index 0fc9f0d22..d80b31dd3 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_4_usda-704837282362091e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_light_true_4_usda-704837282362091e-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_1_usda-b16be3e51935cdad-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_1_usda-b16be3e51935cdad-1.digest index 3ad673cf1..26c7b25be 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_1_usda-b16be3e51935cdad-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_1_usda-b16be3e51935cdad-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_2_usda-9bd601062d2922a2-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_2_usda-9bd601062d2922a2-1.digest index c9fa59308..92359b486 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_2_usda-9bd601062d2922a2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_2_usda-9bd601062d2922a2-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_3_usda-af38f2deac1db5db-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_3_usda-af38f2deac1db5db-1.digest index 353f221e1..f6de94a87 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_3_usda-af38f2deac1db5db-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_3_usda-af38f2deac1db5db-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_4_usda-e07f6fc2b4bb4c68-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_4_usda-e07f6fc2b4bb4c68-1.digest index c2a7aff56..8882259ba 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_4_usda-e07f6fc2b4bb4c68-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_sun_power_false_4_usda-e07f6fc2b4bb4c68-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_var_light_1_usda-950756ddd9a80314-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_var_light_1_usda-950756ddd9a80314-1.digest index c9bc7e560..2075e4909 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_var_light_1_usda-950756ddd9a80314-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_var_light_1_usda-950756ddd9a80314-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_var_light_2_usda-6aede4cf281248af-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_var_light_2_usda-6aede4cf281248af-1.digest index df1e7593d..30167b086 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_var_light_2_usda-6aede4cf281248af-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_var_light_2_usda-6aede4cf281248af-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_var_power_1_usda-712adb9891f33818-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_var_power_1_usda-712adb9891f33818-1.digest index 53e91c123..7b1e58073 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_var_power_1_usda-712adb9891f33818-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_var_power_1_usda-712adb9891f33818-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/glossy_var_power_2_usda-ccbbda539b6109ff-1.digest b/crates/crust-core/tests/data/import_baselines/glossy_var_power_2_usda-ccbbda539b6109ff-1.digest index 52164880f..3a56a2537 100644 --- a/crates/crust-core/tests/data/import_baselines/glossy_var_power_2_usda-ccbbda539b6109ff-1.digest +++ b/crates/crust-core/tests/data/import_baselines/glossy_var_power_2_usda-ccbbda539b6109ff-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-1.digest b/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-1.digest index 48db54931..f30fa8623 100644 --- a/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-1.digest +++ b/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-1.digest @@ -50,4 +50,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-2.digest b/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-2.digest index 48db54931..f30fa8623 100644 --- a/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-2.digest +++ b/crates/crust-core/tests/data/import_baselines/hair_usda-541c95fb5b2e8895-2.digest @@ -50,4 +50,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/hair_usda-65dd84de0e473f00-1.digest b/crates/crust-core/tests/data/import_baselines/hair_usda-65dd84de0e473f00-1.digest index 2c77d3c1b..c9508ef36 100644 --- a/crates/crust-core/tests/data/import_baselines/hair_usda-65dd84de0e473f00-1.digest +++ b/crates/crust-core/tests/data/import_baselines/hair_usda-65dd84de0e473f00-1.digest @@ -49,4 +49,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/hair_variation_usda-4ab3c7f511466a98-1.digest b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-4ab3c7f511466a98-1.digest index 023fe9776..b0e4d7803 100644 --- a/crates/crust-core/tests/data/import_baselines/hair_variation_usda-4ab3c7f511466a98-1.digest +++ b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-4ab3c7f511466a98-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-1.digest b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-1.digest index 023fe9776..b0e4d7803 100644 --- a/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-1.digest +++ b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-2.digest b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-2.digest index 023fe9776..b0e4d7803 100644 --- a/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-2.digest +++ b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-921fbdca7fd9bc69-2.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/hair_variation_usda-aa2b773ff3d2e5c2-1.digest b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-aa2b773ff3d2e5c2-1.digest index e06be62aa..5aa7fbcf9 100644 --- a/crates/crust-core/tests/data/import_baselines/hair_variation_usda-aa2b773ff3d2e5c2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/hair_variation_usda-aa2b773ff3d2e5c2-1.digest @@ -31,4 +31,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/hidden_source_classes_usda-a9259268854e750e-1.digest b/crates/crust-core/tests/data/import_baselines/hidden_source_classes_usda-a9259268854e750e-1.digest index ddbc63505..8b4e3c5d0 100644 --- a/crates/crust-core/tests/data/import_baselines/hidden_source_classes_usda-a9259268854e750e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/hidden_source_classes_usda-a9259268854e750e-1.digest @@ -34,4 +34,4 @@ provenance geometry 4..5: /World/Hidden provenance geometry 5..6: /World/Visible provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/hidden_usda-9a2924a818f3fb98-1.digest b/crates/crust-core/tests/data/import_baselines/hidden_usda-9a2924a818f3fb98-1.digest index cbe07e67a..1a95340ae 100644 --- a/crates/crust-core/tests/data/import_baselines/hidden_usda-9a2924a818f3fb98-1.digest +++ b/crates/crust-core/tests/data/import_baselines/hidden_usda-9a2924a818f3fb98-1.digest @@ -87,4 +87,4 @@ provenance mesh slot 68: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7728 provenance mesh slot 69: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12950018545620570054, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/hidden_zero_scale_usda-a4193f9a6324f7d0-1.digest b/crates/crust-core/tests/data/import_baselines/hidden_zero_scale_usda-a4193f9a6324f7d0-1.digest index 414e1016c..0e93e9032 100644 --- a/crates/crust-core/tests/data/import_baselines/hidden_zero_scale_usda-a4193f9a6324f7d0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/hidden_zero_scale_usda-a4193f9a6324f7d0-1.digest @@ -16,4 +16,4 @@ provenance geometry 0..1: /W/Scatter provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13487480004083563611, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/high_bits_usda-276acbda2859c899-1.digest b/crates/crust-core/tests/data/import_baselines/high_bits_usda-276acbda2859c899-1.digest index 96128830f..738067748 100644 --- a/crates/crust-core/tests/data/import_baselines/high_bits_usda-276acbda2859c899-1.digest +++ b/crates/crust-core/tests/data/import_baselines/high_bits_usda-276acbda2859c899-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/holdout_usda-fcfa139ef12785fd-1.digest b/crates/crust-core/tests/data/import_baselines/holdout_usda-fcfa139ef12785fd-1.digest index 0fc858c20..30ebc7c70 100644 --- a/crates/crust-core/tests/data/import_baselines/holdout_usda-fcfa139ef12785fd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/holdout_usda-fcfa139ef12785fd-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/hold"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/hold"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/houdini_var_usda-c716d987aba001e4-1.digest b/crates/crust-core/tests/data/import_baselines/houdini_var_usda-c716d987aba001e4-1.digest index 8d4b87d10..ce7255a44 100644 --- a/crates/crust-core/tests/data/import_baselines/houdini_var_usda-c716d987aba001e4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/houdini_var_usda-c716d987aba001e4-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/huge_blur_usda-2cc6d64af71f20b3-1.digest b/crates/crust-core/tests/data/import_baselines/huge_blur_usda-2cc6d64af71f20b3-1.digest index 70a037a30..369be51df 100644 --- a/crates/crust-core/tests/data/import_baselines/huge_blur_usda-2cc6d64af71f20b3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/huge_blur_usda-2cc6d64af71f20b3-1.digest @@ -24,4 +24,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/huge_kernel_usda-a515683f6e1b404a-1.digest b/crates/crust-core/tests/data/import_baselines/huge_kernel_usda-a515683f6e1b404a-1.digest index 4f18e9913..329891ad6 100644 --- a/crates/crust-core/tests/data/import_baselines/huge_kernel_usda-a515683f6e1b404a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/huge_kernel_usda-a515683f6e1b404a-1.digest @@ -24,4 +24,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/ies_light_usda-9afaa60e27f14926-1.digest b/crates/crust-core/tests/data/import_baselines/ies_light_usda-9afaa60e27f14926-1.digest index 6d8c74e20..2b07825a8 100644 --- a/crates/crust-core/tests/data/import_baselines/ies_light_usda-9afaa60e27f14926-1.digest +++ b/crates/crust-core/tests/data/import_baselines/ies_light_usda-9afaa60e27f14926-1.digest @@ -18,4 +18,4 @@ provenance light /Spot: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /Spot provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/ignored_curves_usda-d8234281140f3b7d-1.digest b/crates/crust-core/tests/data/import_baselines/ignored_curves_usda-d8234281140f3b7d-1.digest index 37a862029..6503f664b 100644 --- a/crates/crust-core/tests/data/import_baselines/ignored_curves_usda-d8234281140f3b7d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/ignored_curves_usda-d8234281140f3b7d-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/Hair provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/ignored_light_usda-26909110fbe92be4-1.digest b/crates/crust-core/tests/data/import_baselines/ignored_light_usda-26909110fbe92be4-1.digest index 367e6a598..814638aac 100644 --- a/crates/crust-core/tests/data/import_baselines/ignored_light_usda-26909110fbe92be4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/ignored_light_usda-26909110fbe92be4-1.digest @@ -18,4 +18,4 @@ provenance light /World/Lamp: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/Lamp provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/ignored_prototype_usda-f94b3942ea16e527-1.digest b/crates/crust-core/tests/data/import_baselines/ignored_prototype_usda-f94b3942ea16e527-1.digest index 36f9da6e5..847594123 100644 --- a/crates/crust-core/tests/data/import_baselines/ignored_prototype_usda-f94b3942ea16e527-1.digest +++ b/crates/crust-core/tests/data/import_baselines/ignored_prototype_usda-f94b3942ea16e527-1.digest @@ -18,4 +18,4 @@ provenance geometry 0..1: /World/Copy provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/ignored_volume_usda-32845f161c65c4a9-1.digest b/crates/crust-core/tests/data/import_baselines/ignored_volume_usda-32845f161c65c4a9-1.digest index 9c26b306a..6c44a8f64 100644 --- a/crates/crust-core/tests/data/import_baselines/ignored_volume_usda-32845f161c65c4a9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/ignored_volume_usda-32845f161c65c4a9-1.digest @@ -15,4 +15,4 @@ volume 0: sigma_s Vec3A(0.1, 0.1, 0.1) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emissi world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Capsule_1_usda-751cd07d979a4d81-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_Capsule_1_usda-751cd07d979a4d81-1.digest index da062312a..8b2872c79 100644 --- a/crates/crust-core/tests/data/import_baselines/implicit_Capsule_1_usda-751cd07d979a4d81-1.digest +++ b/crates/crust-core/tests/data/import_baselines/implicit_Capsule_1_usda-751cd07d979a4d81-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3706818291284699303, n_points: 1154, n_indices: 4704, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Capsule_usda-3ad3fb7cdd9a1902-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_Capsule_usda-3ad3fb7cdd9a1902-1.digest index 6cd44f5cd..8bd809d5f 100644 --- a/crates/crust-core/tests/data/import_baselines/implicit_Capsule_usda-3ad3fb7cdd9a1902-1.digest +++ b/crates/crust-core/tests/data/import_baselines/implicit_Capsule_usda-3ad3fb7cdd9a1902-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5116155558073966183, n_points: 1154, n_indices: 4704, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Cone_usda-024380e72d6d34a7-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_Cone_usda-024380e72d6d34a7-1.digest index 24b3ed7d0..56f860efd 100644 --- a/crates/crust-core/tests/data/import_baselines/implicit_Cone_usda-024380e72d6d34a7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/implicit_Cone_usda-024380e72d6d34a7-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8087259199450112797, n_points: 145, n_indices: 336, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Cube_usda-4bb89de99da949b6-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_Cube_usda-4bb89de99da949b6-1.digest index 157d06d78..2c0be1db2 100644 --- a/crates/crust-core/tests/data/import_baselines/implicit_Cube_usda-4bb89de99da949b6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/implicit_Cube_usda-4bb89de99da949b6-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8921584896192100385, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_1_usda-9964aa85919856f9-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_1_usda-9964aa85919856f9-1.digest index 175759b30..2bc44f4b2 100644 --- a/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_1_usda-9964aa85919856f9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_1_usda-9964aa85919856f9-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7979101772752456078, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_usda-bee0e5841f0acf39-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_usda-bee0e5841f0acf39-1.digest index b1df84f38..065e2bbea 100644 --- a/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_usda-bee0e5841f0acf39-1.digest +++ b/crates/crust-core/tests/data/import_baselines/implicit_Cylinder_usda-bee0e5841f0acf39-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18025274944887440505, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/implicit_Plane_usda-77823213740cc6c2-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_Plane_usda-77823213740cc6c2-1.digest index e124d133f..f732001ad 100644 --- a/crates/crust-core/tests/data/import_baselines/implicit_Plane_usda-77823213740cc6c2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/implicit_Plane_usda-77823213740cc6c2-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 714069445534044474, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/implicit_displaced_usda-395a4477685bb193-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_displaced_usda-395a4477685bb193-1.digest index 8e2231343..ab5a1ae6d 100644 --- a/crates/crust-core/tests/data/import_baselines/implicit_displaced_usda-395a4477685bb193-1.digest +++ b/crates/crust-core/tests/data/import_baselines/implicit_displaced_usda-395a4477685bb193-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9204403525635746283, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/implicit_level_usda-e441bb0a849304c5-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_level_usda-e441bb0a849304c5-1.digest index 251662640..a9c9bdc1e 100644 --- a/crates/crust-core/tests/data/import_baselines/implicit_level_usda-e441bb0a849304c5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/implicit_level_usda-e441bb0a849304c5-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6877125351767401758, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/implicit_lone_usda-8c73fbc5c6234554-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_lone_usda-8c73fbc5c6234554-1.digest index 400c78d56..fe30f720c 100644 --- a/crates/crust-core/tests/data/import_baselines/implicit_lone_usda-8c73fbc5c6234554-1.digest +++ b/crates/crust-core/tests/data/import_baselines/implicit_lone_usda-8c73fbc5c6234554-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6877125351767401758, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/implicit_moving_usda-2b9c98847f8ffdc5-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_moving_usda-2b9c98847f8ffdc5-1.digest index bc9a97f06..e9912634d 100644 --- a/crates/crust-core/tests/data/import_baselines/implicit_moving_usda-2b9c98847f8ffdc5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/implicit_moving_usda-2b9c98847f8ffdc5-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: true } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9204403525635746283, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/implicit_prototypes_usda-754c2247d4091e78-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_prototypes_usda-754c2247d4091e78-1.digest index cbcb083be..eb95a2262 100644 --- a/crates/crust-core/tests/data/import_baselines/implicit_prototypes_usda-754c2247d4091e78-1.digest +++ b/crates/crust-core/tests/data/import_baselines/implicit_prototypes_usda-754c2247d4091e78-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16627 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8382128429536916275, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/implicit_scaled_usda-5918722b7152b9f3-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_scaled_usda-5918722b7152b9f3-1.digest index f873a7104..e3255b0a7 100644 --- a/crates/crust-core/tests/data/import_baselines/implicit_scaled_usda-5918722b7152b9f3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/implicit_scaled_usda-5918722b7152b9f3-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9204403525635746283, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/implicit_shading_usda-b3809be67678f20f-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_shading_usda-b3809be67678f20f-1.digest index 7914c141d..4e6d819b8 100644 --- a/crates/crust-core/tests/data/import_baselines/implicit_shading_usda-b3809be67678f20f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/implicit_shading_usda-b3809be67678f20f-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6877125351767401758, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-1.digest index b5124a3d6..f939dc1ee 100644 --- a/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-1.digest +++ b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-1.digest @@ -65,4 +65,4 @@ provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10327 provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11540092840794327159, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 1075419546, 1091043328, 1146348642, 0, 1075419546, 1091043328, 3212836864, 3185397406, 3205386455, 1065353216, 3185397406, 3205386455, 0, 3213192633, 3187254502, 0, 1064025188, 3204507220, 0, 3192087409, 3212528621])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 1075419546, 1091043328, 1146348642, 0, 1075419546, 1091043328, 3212836864, 3185397406, 3205386455, 1065353216, 3185397406, 3205386455, 0, 3213192633, 3187254502, 0, 1064025188, 3204507220, 0, 3192087409, 3212528621])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-2.digest b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-2.digest index b5124a3d6..f939dc1ee 100644 --- a/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-2.digest +++ b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-180b516d9253da53-2.digest @@ -65,4 +65,4 @@ provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10327 provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11540092840794327159, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 1075419546, 1091043328, 1146348642, 0, 1075419546, 1091043328, 3212836864, 3185397406, 3205386455, 1065353216, 3185397406, 3205386455, 0, 3213192633, 3187254502, 0, 1064025188, 3204507220, 0, 3192087409, 3212528621])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 1075419546, 1091043328, 1146348642, 0, 1075419546, 1091043328, 3212836864, 3185397406, 3205386455, 1065353216, 3185397406, 3205386455, 0, 3213192633, 3187254502, 0, 1064025188, 3204507220, 0, 3192087409, 3212528621])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-30852d50af72eb96-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-30852d50af72eb96-1.digest index b5124a3d6..f939dc1ee 100644 --- a/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-30852d50af72eb96-1.digest +++ b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-30852d50af72eb96-1.digest @@ -65,4 +65,4 @@ provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10327 provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11540092840794327159, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 1075419546, 1091043328, 1146348642, 0, 1075419546, 1091043328, 3212836864, 3185397406, 3205386455, 1065353216, 3185397406, 3205386455, 0, 3213192633, 3187254502, 0, 1064025188, 3204507220, 0, 3192087409, 3212528621])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 1075419546, 1091043328, 1146348642, 0, 1075419546, 1091043328, 3212836864, 3185397406, 3205386455, 1065353216, 3185397406, 3205386455, 0, 3213192633, 3187254502, 0, 1064025188, 3204507220, 0, 3192087409, 3212528621])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-41169aa3c303f69f-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-41169aa3c303f69f-1.digest index 17c490d15..ba33bf450 100644 --- a/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-41169aa3c303f69f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/implicit_shapes_usda-41169aa3c303f69f-1.digest @@ -65,4 +65,4 @@ provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10327 provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11540092840794327159, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 1075419546, 1091043328, 1146348642, 0, 1075419546, 1091043328, 3212836864, 3185397406, 3205386455, 1065353216, 3185397406, 3205386455, 0, 3213192633, 3187254502, 0, 1064025188, 3204507220, 0, 3192087409, 3212528621])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 1075419546, 1091043328, 1146348642, 0, 1075419546, 1091043328, 3212836864, 3185397406, 3205386455, 1065353216, 3185397406, 3205386455, 0, 3213192633, 3187254502, 0, 1064025188, 3204507220, 0, 3192087409, 3212528621])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/implicit_twins_usda-925c195d8a7f5a5c-1.digest b/crates/crust-core/tests/data/import_baselines/implicit_twins_usda-925c195d8a7f5a5c-1.digest index 64b96fba9..8ffc6ca06 100644 --- a/crates/crust-core/tests/data/import_baselines/implicit_twins_usda-925c195d8a7f5a5c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/implicit_twins_usda-925c195d8a7f5a5c-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16571705108045419501, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/import_plain_usda-37ba4c8eb30aefb6-1.digest b/crates/crust-core/tests/data/import_baselines/import_plain_usda-37ba4c8eb30aefb6-1.digest index 16efa55f0..0fa932abc 100644 --- a/crates/crust-core/tests/data/import_baselines/import_plain_usda-37ba4c8eb30aefb6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/import_plain_usda-37ba4c8eb30aefb6-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/import_usda-a114cca514b1e2e9-1.digest b/crates/crust-core/tests/data/import_baselines/import_usda-a114cca514b1e2e9-1.digest index 2e3769a51..d348dd3cc 100644 --- a/crates/crust-core/tests/data/import_baselines/import_usda-a114cca514b1e2e9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/import_usda-a114cca514b1e2e9-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/imported_motion_usda-98baf8cfec165d96-1.digest b/crates/crust-core/tests/data/import_baselines/imported_motion_usda-98baf8cfec165d96-1.digest index c87ed765a..3871b6125 100644 --- a/crates/crust-core/tests/data/import_baselines/imported_motion_usda-98baf8cfec165d96-1.digest +++ b/crates/crust-core/tests/data/import_baselines/imported_motion_usda-98baf8cfec165d96-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: true } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/inf_light_usda-fd28273b2a9da24d-1.digest b/crates/crust-core/tests/data/import_baselines/inf_light_usda-fd28273b2a9da24d-1.digest index e2f524a92..7c87dec0b 100644 --- a/crates/crust-core/tests/data/import_baselines/inf_light_usda-fd28273b2a9da24d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/inf_light_usda-fd28273b2a9da24d-1.digest @@ -18,4 +18,4 @@ provenance light /World/hot: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/hot provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/infinite_usda-6e15312bf55ca148-1.digest b/crates/crust-core/tests/data/import_baselines/infinite_usda-6e15312bf55ca148-1.digest index 21de6950f..e9e278f04 100644 --- a/crates/crust-core/tests/data/import_baselines/infinite_usda-6e15312bf55ca148-1.digest +++ b/crates/crust-core/tests/data/import_baselines/infinite_usda-6e15312bf55ca148-1.digest @@ -18,4 +18,4 @@ provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance light /World/Sun: LightOrigin { index: 1, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/inherits_usda-946600d02d8755e0-1.digest b/crates/crust-core/tests/data/import_baselines/inherits_usda-946600d02d8755e0-1.digest index 64c1c77a1..78e780c03 100644 --- a/crates/crust-core/tests/data/import_baselines/inherits_usda-946600d02d8755e0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/inherits_usda-946600d02d8755e0-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/input_usda-39af7a7dd8ccc053-1.digest b/crates/crust-core/tests/data/import_baselines/input_usda-39af7a7dd8ccc053-1.digest index dbf5c11bc..48bb6fdb1 100644 --- a/crates/crust-core/tests/data/import_baselines/input_usda-39af7a7dd8ccc053-1.digest +++ b/crates/crust-core/tests/data/import_baselines/input_usda-39af7a7dd8ccc053-1.digest @@ -19,4 +19,4 @@ provenance geometry 0..1: /World/Far provenance geometry 1..2: /World/Near provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instanced_curves_usda-4486def29adfc50e-1.digest b/crates/crust-core/tests/data/import_baselines/instanced_curves_usda-4486def29adfc50e-1.digest index 2ef008eeb..eb02048c8 100644 --- a/crates/crust-core/tests/data/import_baselines/instanced_curves_usda-4486def29adfc50e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instanced_curves_usda-4486def29adfc50e-1.digest @@ -17,4 +17,4 @@ geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..2: /World/Fur provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instancer_primvar_usda-6d97a3b7a8db1d2d-1.digest b/crates/crust-core/tests/data/import_baselines/instancer_primvar_usda-6d97a3b7a8db1d2d-1.digest index ccbcbee0e..2cf1dde9e 100644 --- a/crates/crust-core/tests/data/import_baselines/instancer_primvar_usda-6d97a3b7a8db1d2d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instancer_primvar_usda-6d97a3b7a8db1d2d-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11528 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14255589192073905558, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("objectId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("objectId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instancer_proto_root_reset_child_usda-327d10b931ee4635-1.digest b/crates/crust-core/tests/data/import_baselines/instancer_proto_root_reset_child_usda-327d10b931ee4635-1.digest index 0d304254f..bdde6b57b 100644 --- a/crates/crust-core/tests/data/import_baselines/instancer_proto_root_reset_child_usda-327d10b931ee4635-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instancer_proto_root_reset_child_usda-327d10b931ee4635-1.digest @@ -18,4 +18,4 @@ geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..3: /World/Scatter provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instancer_proto_root_xform_usda-824b2432496695f2-1.digest b/crates/crust-core/tests/data/import_baselines/instancer_proto_root_xform_usda-824b2432496695f2-1.digest index b82da3769..64af82cac 100644 --- a/crates/crust-core/tests/data/import_baselines/instancer_proto_root_xform_usda-824b2432496695f2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instancer_proto_root_xform_usda-824b2432496695f2-1.digest @@ -17,4 +17,4 @@ geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..2: /World/Scatter provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instancer_usda-24b4955bd587b7fc-1.digest b/crates/crust-core/tests/data/import_baselines/instancer_usda-24b4955bd587b7fc-1.digest index f34c45c13..69fc132cf 100644 --- a/crates/crust-core/tests/data/import_baselines/instancer_usda-24b4955bd587b7fc-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instancer_usda-24b4955bd587b7fc-1.digest @@ -24,4 +24,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 1 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instancer_usda-b5460e79ed990f95-1.digest b/crates/crust-core/tests/data/import_baselines/instancer_usda-b5460e79ed990f95-1.digest index 6f4cf90f6..4c56169ea 100644 --- a/crates/crust-core/tests/data/import_baselines/instancer_usda-b5460e79ed990f95-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instancer_usda-b5460e79ed990f95-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instancer_usda-c51fcdc4de98cc87-1.digest b/crates/crust-core/tests/data/import_baselines/instancer_usda-c51fcdc4de98cc87-1.digest index facc372df..0e42a41aa 100644 --- a/crates/crust-core/tests/data/import_baselines/instancer_usda-c51fcdc4de98cc87-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instancer_usda-c51fcdc4de98cc87-1.digest @@ -18,4 +18,4 @@ provenance material /World/Glow: MaterialOrigin { slots: [0, 1, 2], displaced: f provenance geometry 0..3: /World/Scatter provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instances_usda-0e86a3f92c8bc5d3-1.digest b/crates/crust-core/tests/data/import_baselines/instances_usda-0e86a3f92c8bc5d3-1.digest index d2ad13581..d0e7a2361 100644 --- a/crates/crust-core/tests/data/import_baselines/instances_usda-0e86a3f92c8bc5d3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instances_usda-0e86a3f92c8bc5d3-1.digest @@ -19,4 +19,4 @@ provenance geometry 0..2: /World/Scatter provenance geometry 2..3: /World/Rock provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/scatter"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/scatter"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instances_usda-dd5f31a7c4515489-1.digest b/crates/crust-core/tests/data/import_baselines/instances_usda-dd5f31a7c4515489-1.digest index 48d244f28..8246ad853 100644 --- a/crates/crust-core/tests/data/import_baselines/instances_usda-dd5f31a7c4515489-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instances_usda-dd5f31a7c4515489-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..2: /World/Scatter provenance geometry 2..3: /World/Rock provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/inside"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/inside"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-046f52337fabb1a4-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-046f52337fabb1a4-1.digest index 114dabb43..f32db1622 100644 --- a/crates/crust-core/tests/data/import_baselines/instancing_usda-046f52337fabb1a4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-046f52337fabb1a4-1.digest @@ -45,4 +45,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 20050 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-1b870942bf28e01d-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-1b870942bf28e01d-1.digest index 114dabb43..f32db1622 100644 --- a/crates/crust-core/tests/data/import_baselines/instancing_usda-1b870942bf28e01d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-1b870942bf28e01d-1.digest @@ -45,4 +45,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 20050 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-37ed91a3e61701fe-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-37ed91a3e61701fe-1.digest index 114dabb43..f32db1622 100644 --- a/crates/crust-core/tests/data/import_baselines/instancing_usda-37ed91a3e61701fe-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-37ed91a3e61701fe-1.digest @@ -45,4 +45,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 20050 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-1.digest index 114dabb43..f32db1622 100644 --- a/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-1.digest @@ -45,4 +45,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 20050 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-2.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-2.digest index 114dabb43..f32db1622 100644 --- a/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-2.digest +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-3c5cc93e1666982d-2.digest @@ -45,4 +45,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 20050 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-4c123aa1f400f41f-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-4c123aa1f400f41f-1.digest index 114dabb43..f32db1622 100644 --- a/crates/crust-core/tests/data/import_baselines/instancing_usda-4c123aa1f400f41f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-4c123aa1f400f41f-1.digest @@ -45,4 +45,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 20050 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-4d15fe3f4f1fa7d2-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-4d15fe3f4f1fa7d2-1.digest index 114dabb43..f32db1622 100644 --- a/crates/crust-core/tests/data/import_baselines/instancing_usda-4d15fe3f4f1fa7d2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-4d15fe3f4f1fa7d2-1.digest @@ -45,4 +45,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 20050 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-5aa111b242f25730-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-5aa111b242f25730-1.digest index cb5e3ab96..6b9eaee23 100644 --- a/crates/crust-core/tests/data/import_baselines/instancing_usda-5aa111b242f25730-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-5aa111b242f25730-1.digest @@ -44,4 +44,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 20050 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-1.digest index 114dabb43..f32db1622 100644 --- a/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-1.digest @@ -45,4 +45,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 20050 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-2.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-2.digest index 114dabb43..f32db1622 100644 --- a/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-2.digest +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-8afb1b2336afd39d-2.digest @@ -45,4 +45,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 20050 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-bee611607d893be7-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-bee611607d893be7-1.digest index 114dabb43..f32db1622 100644 --- a/crates/crust-core/tests/data/import_baselines/instancing_usda-bee611607d893be7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-bee611607d893be7-1.digest @@ -45,4 +45,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 20050 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-c51a6942a8212cb9-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-c51a6942a8212cb9-1.digest index 114dabb43..f32db1622 100644 --- a/crates/crust-core/tests/data/import_baselines/instancing_usda-c51a6942a8212cb9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-c51a6942a8212cb9-1.digest @@ -45,4 +45,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 20050 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instantaneous_usda-3e155a939a6cc6cd-1.digest b/crates/crust-core/tests/data/import_baselines/instantaneous_usda-3e155a939a6cc6cd-1.digest index 9b1002bfa..025ee853d 100644 --- a/crates/crust-core/tests/data/import_baselines/instantaneous_usda-3e155a939a6cc6cd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/instantaneous_usda-3e155a939a6cc6cd-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 84162 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16680805309457723353, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/int_id_usda-520c4dc179153d4f-1.digest b/crates/crust-core/tests/data/import_baselines/int_id_usda-520c4dc179153d4f-1.digest index b1d62184a..cf0cf338f 100644 --- a/crates/crust-core/tests/data/import_baselines/int_id_usda-520c4dc179153d4f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/int_id_usda-520c4dc179153d4f-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18307585920983551366, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("objectId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("objectId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/invalid_light_sizes_usda-9c386d5a319bfe23-1.digest b/crates/crust-core/tests/data/import_baselines/invalid_light_sizes_usda-9c386d5a319bfe23-1.digest index 63ab49294..374ec438d 100644 --- a/crates/crust-core/tests/data/import_baselines/invalid_light_sizes_usda-9c386d5a319bfe23-1.digest +++ b/crates/crust-core/tests/data/import_baselines/invalid_light_sizes_usda-9c386d5a319bfe23-1.digest @@ -19,4 +19,4 @@ provenance light /World/Fine: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/Fine provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/invalid_usda-d575a3c70872d8d6-1.digest b/crates/crust-core/tests/data/import_baselines/invalid_usda-d575a3c70872d8d6-1.digest index 65f3712b6..8f1d08709 100644 --- a/crates/crust-core/tests/data/import_baselines/invalid_usda-d575a3c70872d8d6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/invalid_usda-d575a3c70872d8d6-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/invariant_0_05_usda-adfdce9489c2fe04-1.digest b/crates/crust-core/tests/data/import_baselines/invariant_0_05_usda-adfdce9489c2fe04-1.digest index 5595d0219..9585caf43 100644 --- a/crates/crust-core/tests/data/import_baselines/invariant_0_05_usda-adfdce9489c2fe04-1.digest +++ b/crates/crust-core/tests/data/import_baselines/invariant_0_05_usda-adfdce9489c2fe04-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/invariant_0_usda-4ea5be31deb326f6-1.digest b/crates/crust-core/tests/data/import_baselines/invariant_0_usda-4ea5be31deb326f6-1.digest index cb55ae95b..0ccae4fdb 100644 --- a/crates/crust-core/tests/data/import_baselines/invariant_0_usda-4ea5be31deb326f6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/invariant_0_usda-4ea5be31deb326f6-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-1.digest b/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-1.digest index cf9c6951a..fbe1322a0 100644 --- a/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-1.digest +++ b/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17822791014403781691, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-2.digest b/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-2.digest index cf9c6951a..fbe1322a0 100644 --- a/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-2.digest +++ b/crates/crust-core/tests/data/import_baselines/leaf_usda-be27c43b70391f12-2.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17822791014403781691, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/leaf_usda-c026046b07c5fbb8-1.digest b/crates/crust-core/tests/data/import_baselines/leaf_usda-c026046b07c5fbb8-1.digest index cf9c6951a..fbe1322a0 100644 --- a/crates/crust-core/tests/data/import_baselines/leaf_usda-c026046b07c5fbb8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/leaf_usda-c026046b07c5fbb8-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17822791014403781691, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/leaf_usda-d886c4e05035aaa7-1.digest b/crates/crust-core/tests/data/import_baselines/leaf_usda-d886c4e05035aaa7-1.digest index cf9c6951a..fbe1322a0 100644 --- a/crates/crust-core/tests/data/import_baselines/leaf_usda-d886c4e05035aaa7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/leaf_usda-d886c4e05035aaa7-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17822791014403781691, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/leaf_usda-e14e254e24f8bc2e-1.digest b/crates/crust-core/tests/data/import_baselines/leaf_usda-e14e254e24f8bc2e-1.digest index cf9c6951a..fbe1322a0 100644 --- a/crates/crust-core/tests/data/import_baselines/leaf_usda-e14e254e24f8bc2e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/leaf_usda-e14e254e24f8bc2e-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17822791014403781691, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/left_handed_baked_usda-9363c3fa472cdcde-1.digest b/crates/crust-core/tests/data/import_baselines/left_handed_baked_usda-9363c3fa472cdcde-1.digest index 15c62a422..07dc11f34 100644 --- a/crates/crust-core/tests/data/import_baselines/left_handed_baked_usda-9363c3fa472cdcde-1.digest +++ b/crates/crust-core/tests/data/import_baselines/left_handed_baked_usda-9363c3fa472cdcde-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12696385469104175492, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/left_handed_instanced_usda-f9d8d0fbabf00605-1.digest b/crates/crust-core/tests/data/import_baselines/left_handed_instanced_usda-f9d8d0fbabf00605-1.digest index c83ca308b..2d9a77793 100644 --- a/crates/crust-core/tests/data/import_baselines/left_handed_instanced_usda-f9d8d0fbabf00605-1.digest +++ b/crates/crust-core/tests/data/import_baselines/left_handed_instanced_usda-f9d8d0fbabf00605-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12696385469104175492, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/left_handed_mirrored_usda-b73e3433c9e6bccf-1.digest b/crates/crust-core/tests/data/import_baselines/left_handed_mirrored_usda-b73e3433c9e6bccf-1.digest index 01ff8fac8..888ef6323 100644 --- a/crates/crust-core/tests/data/import_baselines/left_handed_mirrored_usda-b73e3433c9e6bccf-1.digest +++ b/crates/crust-core/tests/data/import_baselines/left_handed_mirrored_usda-b73e3433c9e6bccf-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12696385469104175492, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/left_handed_subdivided_usda-bd37842befe48e18-1.digest b/crates/crust-core/tests/data/import_baselines/left_handed_subdivided_usda-bd37842befe48e18-1.digest index 1e3123fd9..ee1d59a46 100644 --- a/crates/crust-core/tests/data/import_baselines/left_handed_subdivided_usda-bd37842befe48e18-1.digest +++ b/crates/crust-core/tests/data/import_baselines/left_handed_subdivided_usda-bd37842befe48e18-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1634387286851437130, n_points: 25, n_indices: 64, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/left_handed_tri_usda-ba795e2eb1c56aef-1.digest b/crates/crust-core/tests/data/import_baselines/left_handed_tri_usda-ba795e2eb1c56aef-1.digest index 8be440cbe..2989f157b 100644 --- a/crates/crust-core/tests/data/import_baselines/left_handed_tri_usda-ba795e2eb1c56aef-1.digest +++ b/crates/crust-core/tests/data/import_baselines/left_handed_tri_usda-ba795e2eb1c56aef-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4650619398470359651, n_points: 3, n_indices: 3, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lens_cm_usda-73dbd961c243712e-1.digest b/crates/crust-core/tests/data/import_baselines/lens_cm_usda-73dbd961c243712e-1.digest index c574d87f4..c14e04888 100644 --- a/crates/crust-core/tests/data/import_baselines/lens_cm_usda-73dbd961c243712e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lens_cm_usda-73dbd961c243712e-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lens_fstop_usda-da4d1cf71564d625-1.digest b/crates/crust-core/tests/data/import_baselines/lens_fstop_usda-da4d1cf71564d625-1.digest index 480e27f8a..b316aad64 100644 --- a/crates/crust-core/tests/data/import_baselines/lens_fstop_usda-da4d1cf71564d625-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lens_fstop_usda-da4d1cf71564d625-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lens_m_usda-983a5a6e5f39e694-1.digest b/crates/crust-core/tests/data/import_baselines/lens_m_usda-983a5a6e5f39e694-1.digest index 21ceeef75..f9cc719f6 100644 --- a/crates/crust-core/tests/data/import_baselines/lens_m_usda-983a5a6e5f39e694-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lens_m_usda-983a5a6e5f39e694-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lens_unauthored_usda-24a6800a9f22c131-1.digest b/crates/crust-core/tests/data/import_baselines/lens_unauthored_usda-24a6800a9f22c131-1.digest index 0516643d1..5a44150ec 100644 --- a/crates/crust-core/tests/data/import_baselines/lens_unauthored_usda-24a6800a9f22c131-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lens_unauthored_usda-24a6800a9f22c131-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/level_two_usda-9004a66abae4e107-1.digest b/crates/crust-core/tests/data/import_baselines/level_two_usda-9004a66abae4e107-1.digest index 4323c7401..d08f5daea 100644 --- a/crates/crust-core/tests/data/import_baselines/level_two_usda-9004a66abae4e107-1.digest +++ b/crates/crust-core/tests/data/import_baselines/level_two_usda-9004a66abae4e107-1.digest @@ -21,4 +21,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 57898 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: Some(2.0), skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 2])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: Some(2.0), skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 2])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-1.digest b/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-1.digest index 17cde0f45..a2d5f6e6d 100644 --- a/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-1.digest +++ b/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-1.digest @@ -39,4 +39,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 86399 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [4, 5, 6] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-2.digest b/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-2.digest index 17cde0f45..a2d5f6e6d 100644 --- a/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-2.digest +++ b/crates/crust-core/tests/data/import_baselines/light_linking_usda-0a7e4d5176bc2b33-2.digest @@ -39,4 +39,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 86399 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [4, 5, 6] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/light_linking_usda-0df578a9208fb7cf-1.digest b/crates/crust-core/tests/data/import_baselines/light_linking_usda-0df578a9208fb7cf-1.digest index 17cde0f45..a2d5f6e6d 100644 --- a/crates/crust-core/tests/data/import_baselines/light_linking_usda-0df578a9208fb7cf-1.digest +++ b/crates/crust-core/tests/data/import_baselines/light_linking_usda-0df578a9208fb7cf-1.digest @@ -39,4 +39,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 86399 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [4, 5, 6] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/light_linking_usda-84012730e231d407-1.digest b/crates/crust-core/tests/data/import_baselines/light_linking_usda-84012730e231d407-1.digest index 17cde0f45..a2d5f6e6d 100644 --- a/crates/crust-core/tests/data/import_baselines/light_linking_usda-84012730e231d407-1.digest +++ b/crates/crust-core/tests/data/import_baselines/light_linking_usda-84012730e231d407-1.digest @@ -39,4 +39,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 86399 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [4, 5, 6] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/light_linking_usda-a83ba5cc073d5f22-1.digest b/crates/crust-core/tests/data/import_baselines/light_linking_usda-a83ba5cc073d5f22-1.digest index 18cd31ad2..eee1625dd 100644 --- a/crates/crust-core/tests/data/import_baselines/light_linking_usda-a83ba5cc073d5f22-1.digest +++ b/crates/crust-core/tests/data/import_baselines/light_linking_usda-a83ba5cc073d5f22-1.digest @@ -39,4 +39,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 86399 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [4, 5, 6] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/light_samples_default_usda-6242aa388fa102a1-1.digest b/crates/crust-core/tests/data/import_baselines/light_samples_default_usda-6242aa388fa102a1-1.digest index c11fdc76d..f6a19d439 100644 --- a/crates/crust-core/tests/data/import_baselines/light_samples_default_usda-6242aa388fa102a1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/light_samples_default_usda-6242aa388fa102a1-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/light_samples_huge_usda-128d1881332e6fff-1.digest b/crates/crust-core/tests/data/import_baselines/light_samples_huge_usda-128d1881332e6fff-1.digest index 5cf508152..e43357683 100644 --- a/crates/crust-core/tests/data/import_baselines/light_samples_huge_usda-128d1881332e6fff-1.digest +++ b/crates/crust-core/tests/data/import_baselines/light_samples_huge_usda-128d1881332e6fff-1.digest @@ -15,4 +15,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/light_samples_zero_usda-516355bd0568c89e-1.digest b/crates/crust-core/tests/data/import_baselines/light_samples_zero_usda-516355bd0568c89e-1.digest index 21dd07674..8c73cc245 100644 --- a/crates/crust-core/tests/data/import_baselines/light_samples_zero_usda-516355bd0568c89e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/light_samples_zero_usda-516355bd0568c89e-1.digest @@ -15,4 +15,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-1.digest b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-1.digest index f67135ef8..64f31fa30 100644 --- a/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-1.digest +++ b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-1.digest @@ -29,4 +29,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-2.digest b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-2.digest index f67135ef8..64f31fa30 100644 --- a/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-2.digest +++ b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-01977678b305c007-2.digest @@ -29,4 +29,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/light_visibility_usda-2b8ba6eb3030d1ec-1.digest b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-2b8ba6eb3030d1ec-1.digest index f67135ef8..64f31fa30 100644 --- a/crates/crust-core/tests/data/import_baselines/light_visibility_usda-2b8ba6eb3030d1ec-1.digest +++ b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-2b8ba6eb3030d1ec-1.digest @@ -29,4 +29,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/light_visibility_usda-3ea0aa2435326544-1.digest b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-3ea0aa2435326544-1.digest index a255a52c9..9b3600838 100644 --- a/crates/crust-core/tests/data/import_baselines/light_visibility_usda-3ea0aa2435326544-1.digest +++ b/crates/crust-core/tests/data/import_baselines/light_visibility_usda-3ea0aa2435326544-1.digest @@ -29,4 +29,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/linked_bsdf_1024_usda-00c8472dfa9bd263-1.digest b/crates/crust-core/tests/data/import_baselines/linked_bsdf_1024_usda-00c8472dfa9bd263-1.digest index 071d302aa..2705a9eec 100644 --- a/crates/crust-core/tests/data/import_baselines/linked_bsdf_1024_usda-00c8472dfa9bd263-1.digest +++ b/crates/crust-core/tests/data/import_baselines/linked_bsdf_1024_usda-00c8472dfa9bd263-1.digest @@ -23,4 +23,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/linked_bsdf_16_usda-f488614962bd77c6-1.digest b/crates/crust-core/tests/data/import_baselines/linked_bsdf_16_usda-f488614962bd77c6-1.digest index 577ce4328..aa1e6a582 100644 --- a/crates/crust-core/tests/data/import_baselines/linked_bsdf_16_usda-f488614962bd77c6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/linked_bsdf_16_usda-f488614962bd77c6-1.digest @@ -23,4 +23,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/linked_light_1024_usda-42bcc0ce33e153f3-1.digest b/crates/crust-core/tests/data/import_baselines/linked_light_1024_usda-42bcc0ce33e153f3-1.digest index 9f008ef28..0023fe246 100644 --- a/crates/crust-core/tests/data/import_baselines/linked_light_1024_usda-42bcc0ce33e153f3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/linked_light_1024_usda-42bcc0ce33e153f3-1.digest @@ -23,4 +23,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/linked_light_16_usda-94637210b45ab59a-1.digest b/crates/crust-core/tests/data/import_baselines/linked_light_16_usda-94637210b45ab59a-1.digest index 0e75d92c9..e5a24c29b 100644 --- a/crates/crust-core/tests/data/import_baselines/linked_light_16_usda-94637210b45ab59a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/linked_light_16_usda-94637210b45ab59a-1.digest @@ -23,4 +23,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/linked_power_16_usda-eebb6febe29b133c-1.digest b/crates/crust-core/tests/data/import_baselines/linked_power_16_usda-eebb6febe29b133c-1.digest index 8c395cb23..5136f5dac 100644 --- a/crates/crust-core/tests/data/import_baselines/linked_power_16_usda-eebb6febe29b133c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/linked_power_16_usda-eebb6febe29b133c-1.digest @@ -23,4 +23,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/listing_usda-3efcced39a72eaa9-1.digest b/crates/crust-core/tests/data/import_baselines/listing_usda-3efcced39a72eaa9-1.digest index 7426a04f6..85354656b 100644 --- a/crates/crust-core/tests/data/import_baselines/listing_usda-3efcced39a72eaa9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/listing_usda-3efcced39a72eaa9-1.digest @@ -21,4 +21,4 @@ provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance geometry 0..1: /W/Key provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/Main"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Main"), cameras: ["/W/Last", "/W/Hidden/Witness", "/W/Main"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Main"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/Main"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Main"), cameras: ["/W/Last", "/W/Hidden/Witness", "/W/Main"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Main"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/listing_usda-488ac4c542f2b8d8-1.digest b/crates/crust-core/tests/data/import_baselines/listing_usda-488ac4c542f2b8d8-1.digest index 05ae52e5f..8f010715a 100644 --- a/crates/crust-core/tests/data/import_baselines/listing_usda-488ac4c542f2b8d8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/listing_usda-488ac4c542f2b8d8-1.digest @@ -21,4 +21,4 @@ provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance geometry 0..1: /W/Key provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Last"), cameras: ["/W/Last", "/W/Hidden/Witness", "/W/Main"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Last"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Last"), cameras: ["/W/Last", "/W/Hidden/Witness", "/W/Main"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Last"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/listing_usda-f960655cad0d43f4-1.digest b/crates/crust-core/tests/data/import_baselines/listing_usda-f960655cad0d43f4-1.digest index 2b5bbb45e..fa0a2bf25 100644 --- a/crates/crust-core/tests/data/import_baselines/listing_usda-f960655cad0d43f4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/listing_usda-f960655cad0d43f4-1.digest @@ -21,4 +21,4 @@ provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance geometry 0..1: /W/Key provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/Hidden/Witness"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Hidden/Witness"), cameras: ["/W/Last", "/W/Hidden/Witness", "/W/Main"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Hidden/Witness"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/Hidden/Witness"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Hidden/Witness"), cameras: ["/W/Last", "/W/Hidden/Witness", "/W/Main"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Hidden/Witness"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/listing_usda-fd4c266bcdd26a9c-1.digest b/crates/crust-core/tests/data/import_baselines/listing_usda-fd4c266bcdd26a9c-1.digest index 3e288428f..502030976 100644 --- a/crates/crust-core/tests/data/import_baselines/listing_usda-fd4c266bcdd26a9c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/listing_usda-fd4c266bcdd26a9c-1.digest @@ -21,4 +21,4 @@ provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance geometry 0..1: /W/Key provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/Last"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Last"), cameras: ["/W/Last", "/W/Hidden/Witness", "/W/Main"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Last"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/Last"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Last"), cameras: ["/W/Last", "/W/Hidden/Witness", "/W/Main"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Last"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_cube_usda-4cf5f22f20fef745-1.digest b/crates/crust-core/tests/data/import_baselines/live_cube_usda-4cf5f22f20fef745-1.digest index a60135693..d6c877c5b 100644 --- a/crates/crust-core/tests/data/import_baselines/live_cube_usda-4cf5f22f20fef745-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_cube_usda-4cf5f22f20fef745-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9204403525635746283, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_cylinder_unnamed_usda-7b7e7a1709504194-1.digest b/crates/crust-core/tests/data/import_baselines/live_cylinder_unnamed_usda-7b7e7a1709504194-1.digest index 3e7966f56..c5f62472b 100644 --- a/crates/crust-core/tests/data/import_baselines/live_cylinder_unnamed_usda-7b7e7a1709504194-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_cylinder_unnamed_usda-7b7e7a1709504194-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6877125351767401758, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_cylinder_usda-07218dcdd495ca91-1.digest b/crates/crust-core/tests/data/import_baselines/live_cylinder_usda-07218dcdd495ca91-1.digest index 11a050ceb..af464f03c 100644 --- a/crates/crust-core/tests/data/import_baselines/live_cylinder_usda-07218dcdd495ca91-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_cylinder_usda-07218dcdd495ca91-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13212365895451826409, n_points: 66, n_indices: 160, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 1092616192, 1121011379, 0, 0, 1092616192, 3212836864, 0, 3197932522, 1065353216, 0, 3197932522, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: Some(ScreenKey([0, 0, 1092616192, 1121011379, 0, 0, 1092616192, 3212836864, 0, 3197932522, 1065353216, 0, 3197932522, 0, 3212836864, 3189543914, 0, 1065353216, 3189543914, 0, 0, 3212836864])), unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-1.digest b/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-1.digest index c19cac6d4..8d74f6522 100644 --- a/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-1.digest @@ -36,4 +36,4 @@ provenance mesh: MeshOrigin { geom_id: 5, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-2.digest b/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-2.digest index c19cac6d4..8d74f6522 100644 --- a/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-2.digest +++ b/crates/crust-core/tests/data/import_baselines/live_demoted_light_usda-16477f127e75566e-2.digest @@ -36,4 +36,4 @@ provenance mesh: MeshOrigin { geom_id: 5, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_dicing_none_usda-fde7cae55b0adc90-1.digest b/crates/crust-core/tests/data/import_baselines/live_dicing_none_usda-fde7cae55b0adc90-1.digest index 64e1105c6..13451c4ca 100644 --- a/crates/crust-core/tests/data/import_baselines/live_dicing_none_usda-fde7cae55b0adc90-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_dicing_none_usda-fde7cae55b0adc90-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2684244338757133449, n_points: 359, n_indices: 2142, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 1092616192, 1116034389, 0, 0, 1092616192, 3212836864, 0, 3203777167, 1065353216, 0, 3203777167, 0, 3212836864, 3195388559, 0, 1065353216, 3195388559, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Dicer", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 1092616192, 1116034389, 0, 0, 1092616192, 3212836864, 0, 3203777167, 1065353216, 0, 3203777167, 0, 3212836864, 3195388559, 0, 1065353216, 3195388559, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Dicer", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_dicing_retarget_usda-682d6c0fca1a4c12-1.digest b/crates/crust-core/tests/data/import_baselines/live_dicing_retarget_usda-682d6c0fca1a4c12-1.digest index e80f76961..745d9d482 100644 --- a/crates/crust-core/tests/data/import_baselines/live_dicing_retarget_usda-682d6c0fca1a4c12-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_dicing_retarget_usda-682d6c0fca1a4c12-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9653551266655765309, n_points: 253, n_indices: 1506, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1065353216, 1094713344, 1116034389, 0, 1065353216, 1094713344, 3212836864, 0, 3203777167, 1065353216, 0, 3203777167, 0, 3212836864, 3195388559, 0, 1065353216, 3195388559, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Dicer", "/W/Cam"], dicing: Some("/W/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1065353216, 1094713344, 1116034389, 0, 1065353216, 1094713344, 3212836864, 0, 3203777167, 1065353216, 0, 3203777167, 0, 3212836864, 3195388559, 0, 1065353216, 3195388559, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Dicer", "/W/Cam"], dicing: Some("/W/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_dicing_usda-8bb261767fad5d1d-1.digest b/crates/crust-core/tests/data/import_baselines/live_dicing_usda-8bb261767fad5d1d-1.digest index 00cca413b..aac88a44a 100644 --- a/crates/crust-core/tests/data/import_baselines/live_dicing_usda-8bb261767fad5d1d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_dicing_usda-8bb261767fad5d1d-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9653551266655765309, n_points: 253, n_indices: 1506, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1065353216, 1094713344, 1116034389, 0, 1065353216, 1094713344, 3212836864, 0, 3203777167, 1065353216, 0, 3203777167, 0, 3212836864, 3195388559, 0, 1065353216, 3195388559, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Dicer", "/W/Cam"], dicing: Some("/W/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1065353216, 1094713344, 1116034389, 0, 1065353216, 1094713344, 3212836864, 0, 3203777167, 1065353216, 0, 3203777167, 0, 3212836864, 3195388559, 0, 1065353216, 3195388559, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Dicer", "/W/Cam"], dicing: Some("/W/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_dicing_usda-c3c9ffc84677f809-1.digest b/crates/crust-core/tests/data/import_baselines/live_dicing_usda-c3c9ffc84677f809-1.digest index d375c60eb..a1f947e76 100644 --- a/crates/crust-core/tests/data/import_baselines/live_dicing_usda-c3c9ffc84677f809-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_dicing_usda-c3c9ffc84677f809-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9653551266655765309, n_points: 253, n_indices: 1506, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1065353216, 1094713344, 1116034389, 0, 1065353216, 1094713344, 3212836864, 0, 3203777167, 1065353216, 0, 3203777167, 0, 3212836864, 3195388559, 0, 1065353216, 3195388559, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Dicer", "/W/Cam"], dicing: Some("/W/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1065353216, 1094713344, 1116034389, 0, 1065353216, 1094713344, 3212836864, 0, 3203777167, 1065353216, 0, 3203777167, 0, 3212836864, 3195388559, 0, 1065353216, 3195388559, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Dicer", "/W/Cam"], dicing: Some("/W/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_framing_adaptive_usda-264a6722f87e2488-1.digest b/crates/crust-core/tests/data/import_baselines/live_framing_adaptive_usda-264a6722f87e2488-1.digest index a391f0295..82d741dfd 100644 --- a/crates/crust-core/tests/data/import_baselines/live_framing_adaptive_usda-264a6722f87e2488-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_framing_adaptive_usda-264a6722f87e2488-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2684244338757133449, n_points: 359, n_indices: 2142, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 1092616192, 1116034389, 0, 0, 1092616192, 3212836864, 0, 3203777167, 1065353216, 0, 3203777167, 0, 3212836864, 3195388559, 0, 1065353216, 3195388559, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 1092616192, 1116034389, 0, 0, 1092616192, 3212836864, 0, 3203777167, 1065353216, 0, 3203777167, 0, 3212836864, 3195388559, 0, 1065353216, 3195388559, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_framing_usda-21ec0fb4edc0e3e0-1.digest b/crates/crust-core/tests/data/import_baselines/live_framing_usda-21ec0fb4edc0e3e0-1.digest index 4cb67fdb6..354d9d63e 100644 --- a/crates/crust-core/tests/data/import_baselines/live_framing_usda-21ec0fb4edc0e3e0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_framing_usda-21ec0fb4edc0e3e0-1.digest @@ -17,4 +17,4 @@ provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance geometry 0..1: /W/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-1.digest b/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-1.digest index 3d088ce1b..8ae25dc21 100644 --- a/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-1.digest @@ -17,4 +17,4 @@ provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance geometry 0..1: /W/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-2.digest b/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-2.digest index 3d088ce1b..8ae25dc21 100644 --- a/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-2.digest +++ b/crates/crust-core/tests/data/import_baselines/live_framing_usda-6d7a1bccee33c035-2.digest @@ -17,4 +17,4 @@ provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance geometry 0..1: /W/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_primvar_warnings_usda-bb9c911d0ed38f94-1.digest b/crates/crust-core/tests/data/import_baselines/live_primvar_warnings_usda-bb9c911d0ed38f94-1.digest index dc3f43a75..62ed5bb64 100644 --- a/crates/crust-core/tests/data/import_baselines/live_primvar_warnings_usda-bb9c911d0ed38f94-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_primvar_warnings_usda-bb9c911d0ed38f94-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16756 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12220295910520633268, n_points: 3, n_indices: 3, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-59fb6cd49cb76e6b-1.digest b/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-59fb6cd49cb76e6b-1.digest index 5ff946553..09ae180bc 100644 --- a/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-59fb6cd49cb76e6b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-59fb6cd49cb76e6b-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-f4742b8648291059-1.digest b/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-f4742b8648291059-1.digest index b80d8a67f..3eb34779c 100644 --- a/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-f4742b8648291059-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_primvars_retarget_usda-f4742b8648291059-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11801363609627443368, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_adaptive_usda-df276969e17c075b-1.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_adaptive_usda-df276969e17c075b-1.digest index 4162390a9..25f11b5d5 100644 --- a/crates/crust-core/tests/data/import_baselines/live_retarget_adaptive_usda-df276969e17c075b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_adaptive_usda-df276969e17c075b-1.digest @@ -25,4 +25,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 26842 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 1092616192, 1116034389, 0, 0, 1092616192, 3212836864, 0, 3203777167, 1065353216, 0, 3203777167, 0, 3212836864, 3195388559, 0, 1065353216, 3195388559, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 1092616192, 1116034389, 0, 0, 1092616192, 3212836864, 0, 3203777167, 1065353216, 0, 3203777167, 0, 3212836864, 3195388559, 0, 1065353216, 3195388559, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-68dfaa2802aa4ba4-1.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-68dfaa2802aa4ba4-1.digest index 79b9a5380..0ea50b590 100644 --- a/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-68dfaa2802aa4ba4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-68dfaa2802aa4ba4-1.digest @@ -25,4 +25,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 96535 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1065353216, 1094713344, 1116034389, 0, 1065353216, 1094713344, 3213490716, 0, 3196448852, 1063312268, 0, 3207424912, 3175899824, 3212836864, 3195036602, 3175899824, 1065353216, 3195036602, 3193235149, 0, 3212470242, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: Some("/W/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1065353216, 1094713344, 1116034389, 0, 1065353216, 1094713344, 3213490716, 0, 3196448852, 1063312268, 0, 3207424912, 3175899824, 3212836864, 3195036602, 3175899824, 1065353216, 3195036602, 3193235149, 0, 3212470242, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: Some("/W/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-91fe8df867e8f0cc-1.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-91fe8df867e8f0cc-1.digest index 3ba2e049b..93d3c699f 100644 --- a/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-91fe8df867e8f0cc-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_diced_usda-91fe8df867e8f0cc-1.digest @@ -25,4 +25,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 96535 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1065353216, 1094713344, 1116034389, 0, 1065353216, 1094713344, 3213490716, 0, 3196448852, 1063312268, 0, 3207424912, 3175899824, 3212836864, 3195036602, 3175899824, 1065353216, 3195036602, 3193235149, 0, 3212470242, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam2"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: Some("/W/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1065353216, 1094713344, 1116034389, 0, 1065353216, 1094713344, 3213490716, 0, 3196448852, 1063312268, 0, 3207424912, 3175899824, 3212836864, 3195036602, 3175899824, 1065353216, 3195036602, 3193235149, 0, 3212470242, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam2"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: Some("/W/Dicer"), on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_empty_usda-6f96b70b05bd5238-1.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_empty_usda-6f96b70b05bd5238-1.digest index ed03110e0..5de7f519d 100644 --- a/crates/crust-core/tests/data/import_baselines/live_retarget_empty_usda-6f96b70b05bd5238-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_empty_usda-6f96b70b05bd5238-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_rig_usda-c517fabd0cfe3025-1.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_rig_usda-c517fabd0cfe3025-1.digest index c4267fcb1..6fe45c5bc 100644 --- a/crates/crust-core/tests/data/import_baselines/live_retarget_rig_usda-c517fabd0cfe3025-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_rig_usda-c517fabd0cfe3025-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_slow_usda-abb2313197b2f2f6-1.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_slow_usda-abb2313197b2f2f6-1.digest index 791310a7e..32f7b1d19 100644 --- a/crates/crust-core/tests/data/import_baselines/live_retarget_slow_usda-abb2313197b2f2f6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_slow_usda-abb2313197b2f2f6-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_unnamed_usda-11fb9c8dd8a6685f-1.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_unnamed_usda-11fb9c8dd8a6685f-1.digest index 2137fe459..fe60a7ac5 100644 --- a/crates/crust-core/tests/data/import_baselines/live_retarget_unnamed_usda-11fb9c8dd8a6685f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_unnamed_usda-11fb9c8dd8a6685f-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-443a3934a068f8e2-1.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-443a3934a068f8e2-1.digest index 560f646e6..e0a70e655 100644 --- a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-443a3934a068f8e2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-443a3934a068f8e2-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam2"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam2"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-1.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-1.digest index c0de281a9..62209cd30 100644 --- a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-2.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-2.digest index c0de281a9..62209cd30 100644 --- a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-2.digest +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-2.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-3.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-3.digest index c0de281a9..62209cd30 100644 --- a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-3.digest +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-3.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-4.digest b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-4.digest index c0de281a9..62209cd30 100644 --- a/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-4.digest +++ b/crates/crust-core/tests/data/import_baselines/live_retarget_usda-de7ad4a8e0eab00a-4.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7930610974440722833, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Slow", "/W/Rig", "/W/Dicer", "/W/Cam2", "/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-1.digest b/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-1.digest index 7b5172141..5cd5e2da4 100644 --- a/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-2.digest b/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-2.digest index 7b5172141..5cd5e2da4 100644 --- a/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-2.digest +++ b/crates/crust-core/tests/data/import_baselines/live_usda-99c94ab20e276ccd-2.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/live_usda-b329c13621e10111-1.digest b/crates/crust-core/tests/data/import_baselines/live_usda-b329c13621e10111-1.digest index bc15f261d..325ef2f2f 100644 --- a/crates/crust-core/tests/data/import_baselines/live_usda-b329c13621e10111-1.digest +++ b/crates/crust-core/tests/data/import_baselines/live_usda-b329c13621e10111-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-168fe99d44c7fbd8-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-168fe99d44c7fbd8-1.digest index 46b358add..5fb585ba4 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-168fe99d44c7fbd8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-168fe99d44c7fbd8-1.digest @@ -27,4 +27,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-1.digest index e2a613cf2..2e4648805 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-2.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-2.digest index e2a613cf2..2e4648805 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-2.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-17804c08eb02feff-2.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-2df588e196076e2d-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-2df588e196076e2d-1.digest index b9f39b026..1a4ddb459 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-2df588e196076e2d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-2df588e196076e2d-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 30363 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-37661541bc721de0-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-37661541bc721de0-1.digest index 5ef0b5c7b..ba4d3bc16 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-37661541bc721de0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-37661541bc721de0-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-451cadfaa7f8e528-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-451cadfaa7f8e528-1.digest index afdcbc7fd..ac6db9fbb 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-451cadfaa7f8e528-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-451cadfaa7f8e528-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-4e0b53f3e573c0d5-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-4e0b53f3e573c0d5-1.digest index 5ef0b5c7b..ba4d3bc16 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-4e0b53f3e573c0d5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-4e0b53f3e573c0d5-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-1.digest index e2a613cf2..2e4648805 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-2.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-2.digest index e2a613cf2..2e4648805 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-2.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-5b22641b5a20aa26-2.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-619dbb27dff03edb-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-619dbb27dff03edb-1.digest index afdcbc7fd..ac6db9fbb 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-619dbb27dff03edb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-619dbb27dff03edb-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-6332af41b2f94037-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-6332af41b2f94037-1.digest index 5ef0b5c7b..ba4d3bc16 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-6332af41b2f94037-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-6332af41b2f94037-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-66e64ab7da1be7a8-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-66e64ab7da1be7a8-1.digest index e2a613cf2..2e4648805 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-66e64ab7da1be7a8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-66e64ab7da1be7a8-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-675a4c56d7da2e1a-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-675a4c56d7da2e1a-1.digest index 674173bfa..f31570c9b 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-675a4c56d7da2e1a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-675a4c56d7da2e1a-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-6a91390c6e2e8f32-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-6a91390c6e2e8f32-1.digest index 5ef0b5c7b..ba4d3bc16 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-6a91390c6e2e8f32-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-6a91390c6e2e8f32-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-75d1c7f90fc366b6-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-75d1c7f90fc366b6-1.digest index 7962445d0..1c96acd8b 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-75d1c7f90fc366b6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-75d1c7f90fc366b6-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ce0ae0f49d396d8-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ce0ae0f49d396d8-1.digest index e2a613cf2..2e4648805 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ce0ae0f49d396d8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ce0ae0f49d396d8-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ed4ae42b2f80bd6-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ed4ae42b2f80bd6-1.digest index b11f3a7d1..6bf98b0ce 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ed4ae42b2f80bd6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-7ed4ae42b2f80bd6-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-83b2bc40e66e8d90-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-83b2bc40e66e8d90-1.digest index afdcbc7fd..ac6db9fbb 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-83b2bc40e66e8d90-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-83b2bc40e66e8d90-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-84687138ca39f6d2-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-84687138ca39f6d2-1.digest index 5ef0b5c7b..ba4d3bc16 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-84687138ca39f6d2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-84687138ca39f6d2-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-889e2ebeaf6f6f43-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-889e2ebeaf6f6f43-1.digest index 01f0c653a..e50e9dc04 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-889e2ebeaf6f6f43-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-889e2ebeaf6f6f43-1.digest @@ -47,4 +47,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 20050 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-1.digest index e2a613cf2..2e4648805 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-2.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-2.digest index e2a613cf2..2e4648805 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-2.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-8bccb97f1cea35ce-2.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-8e1d5d176c63c934-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-8e1d5d176c63c934-1.digest index 5ef0b5c7b..ba4d3bc16 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-8e1d5d176c63c934-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-8e1d5d176c63c934-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-96a10d1a1b799db6-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-96a10d1a1b799db6-1.digest index 5ef0b5c7b..ba4d3bc16 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-96a10d1a1b799db6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-96a10d1a1b799db6-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-96b32b9e68a1ec9a-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-96b32b9e68a1ec9a-1.digest index 5ef0b5c7b..ba4d3bc16 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-96b32b9e68a1ec9a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-96b32b9e68a1ec9a-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-9b73e2f3385f85a2-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-9b73e2f3385f85a2-1.digest index e2a613cf2..2e4648805 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-9b73e2f3385f85a2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-9b73e2f3385f85a2-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-a96810dec00d46d8-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-a96810dec00d46d8-1.digest index cd60d38ed..a8c9bc6ae 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-a96810dec00d46d8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-a96810dec00d46d8-1.digest @@ -37,4 +37,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-ad6a0ecf2cf3c658-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-ad6a0ecf2cf3c658-1.digest index 8a22b1862..a832226e6 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-ad6a0ecf2cf3c658-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-ad6a0ecf2cf3c658-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-b139810cbe0eac4c-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-b139810cbe0eac4c-1.digest index e2a613cf2..2e4648805 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-b139810cbe0eac4c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-b139810cbe0eac4c-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-b1d2ea509cf7ee23-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-b1d2ea509cf7ee23-1.digest index f959adce3..95022e327 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-b1d2ea509cf7ee23-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-b1d2ea509cf7ee23-1.digest @@ -39,4 +39,4 @@ provenance mesh: MeshOrigin { geom_id: 4, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-b23ccdb4706d3d98-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-b23ccdb4706d3d98-1.digest index cc008ee69..5b0096ff7 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-b23ccdb4706d3d98-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-b23ccdb4706d3d98-1.digest @@ -40,4 +40,4 @@ provenance mesh: MeshOrigin { geom_id: 4, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-bdef936e454d02c5-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-bdef936e454d02c5-1.digest index 5ef0b5c7b..ba4d3bc16 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-bdef936e454d02c5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-bdef936e454d02c5-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-c088c49aaf559905-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-c088c49aaf559905-1.digest index e2a613cf2..2e4648805 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-c088c49aaf559905-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-c088c49aaf559905-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-c8874f17309d40f1-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-c8874f17309d40f1-1.digest index 5ef0b5c7b..ba4d3bc16 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-c8874f17309d40f1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-c8874f17309d40f1-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-cab3bf60bc31d2f7-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-cab3bf60bc31d2f7-1.digest index e2a613cf2..2e4648805 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-cab3bf60bc31d2f7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-cab3bf60bc31d2f7-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-cae9785463ecddf6-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-cae9785463ecddf6-1.digest index 5ef0b5c7b..ba4d3bc16 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-cae9785463ecddf6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-cae9785463ecddf6-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-d07bf630611d13b0-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-d07bf630611d13b0-1.digest index 73e91600a..531bc0788 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-d07bf630611d13b0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-d07bf630611d13b0-1.digest @@ -33,4 +33,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: true }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: true }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-d977f122a6f754f5-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-d977f122a6f754f5-1.digest index 9a1ddf6d0..9064aaa66 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-d977f122a6f754f5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-d977f122a6f754f5-1.digest @@ -33,4 +33,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: true }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: true }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-da5095c5387fc6d5-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-da5095c5387fc6d5-1.digest index afdcbc7fd..ac6db9fbb 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-da5095c5387fc6d5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-da5095c5387fc6d5-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-ddd9a472681fe394-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-ddd9a472681fe394-1.digest index e2a613cf2..2e4648805 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-ddd9a472681fe394-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-ddd9a472681fe394-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-e6376a73c80d838f-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-e6376a73c80d838f-1.digest index e2a613cf2..2e4648805 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-e6376a73c80d838f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-e6376a73c80d838f-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-f0ebb00d074c9c96-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f0ebb00d074c9c96-1.digest index 1de5df034..b33a0c9af 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-f0ebb00d074c9c96-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f0ebb00d074c9c96-1.digest @@ -27,4 +27,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-1.digest index 02a62172e..24d8a4bb3 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-1.digest @@ -33,4 +33,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-2.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-2.digest index 02a62172e..24d8a4bb3 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-2.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f374e5a4458830ba-2.digest @@ -33,4 +33,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-f4c4e13661091485-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f4c4e13661091485-1.digest index 5ef0b5c7b..ba4d3bc16 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-f4c4e13661091485-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-f4c4e13661091485-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-fa7c6612a51b87e4-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-fa7c6612a51b87e4-1.digest index e2a613cf2..2e4648805 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-fa7c6612a51b87e4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-fa7c6612a51b87e4-1.digest @@ -32,4 +32,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6610719295604273699, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lookdev_usda-fad17720e6382b8f-1.digest b/crates/crust-core/tests/data/import_baselines/lookdev_usda-fad17720e6382b8f-1.digest index 5ef0b5c7b..ba4d3bc16 100644 --- a/crates/crust-core/tests/data/import_baselines/lookdev_usda-fad17720e6382b8f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lookdev_usda-fad17720e6382b8f-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9851181043634021438, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/loop_plain_usda-47275a5a5923eb53-1.digest b/crates/crust-core/tests/data/import_baselines/loop_plain_usda-47275a5a5923eb53-1.digest index 939ea92a3..3f10be27e 100644 --- a/crates/crust-core/tests/data/import_baselines/loop_plain_usda-47275a5a5923eb53-1.digest +++ b/crates/crust-core/tests/data/import_baselines/loop_plain_usda-47275a5a5923eb53-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3036682394347508041, n_points: 9, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/loop_ptex_usda-305da98d6891c0e8-1.digest b/crates/crust-core/tests/data/import_baselines/loop_ptex_usda-305da98d6891c0e8-1.digest index 2ef21df58..edcc85c62 100644 --- a/crates/crust-core/tests/data/import_baselines/loop_ptex_usda-305da98d6891c0e8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/loop_ptex_usda-305da98d6891c0e8-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14901821066754195219, n_points: 4, n_indices: 6, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lpe_too_complex_usda-d110af4b6d4f2169-1.digest b/crates/crust-core/tests/data/import_baselines/lpe_too_complex_usda-d110af4b6d4f2169-1.digest index 1e8213fdb..794314171 100644 --- a/crates/crust-core/tests/data/import_baselines/lpe_too_complex_usda-d110af4b6d4f2169-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lpe_too_complex_usda-d110af4b6d4f2169-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lpe_variance_usda-eb6b4998eed83db2-1.digest b/crates/crust-core/tests/data/import_baselines/lpe_variance_usda-eb6b4998eed83db2-1.digest index d5c830ae8..b9dd3ff98 100644 --- a/crates/crust-core/tests/data/import_baselines/lpe_variance_usda-eb6b4998eed83db2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lpe_variance_usda-eb6b4998eed83db2-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/lpe_vars_usda-4a1166013a93c744-1.digest b/crates/crust-core/tests/data/import_baselines/lpe_vars_usda-4a1166013a93c744-1.digest index 640ce2df5..14ac9ccb9 100644 --- a/crates/crust-core/tests/data/import_baselines/lpe_vars_usda-4a1166013a93c744-1.digest +++ b/crates/crust-core/tests/data/import_baselines/lpe_vars_usda-4a1166013a93c744-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/malformed_usda-6eca12ea39b96a60-1.digest b/crates/crust-core/tests/data/import_baselines/malformed_usda-6eca12ea39b96a60-1.digest index 311463149..d1984b5e4 100644 --- a/crates/crust-core/tests/data/import_baselines/malformed_usda-6eca12ea39b96a60-1.digest +++ b/crates/crust-core/tests/data/import_baselines/malformed_usda-6eca12ea39b96a60-1.digest @@ -28,4 +28,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17547 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1413835526155452052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/many_lights_usda-2896f3594596fed9-1.digest b/crates/crust-core/tests/data/import_baselines/many_lights_usda-2896f3594596fed9-1.digest index 2e8835a81..a9a03d26c 100644 --- a/crates/crust-core/tests/data/import_baselines/many_lights_usda-2896f3594596fed9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/many_lights_usda-2896f3594596fed9-1.digest @@ -1059,4 +1059,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18161 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-1.digest b/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-1.digest index 109194759..888e2d583 100644 --- a/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-1.digest +++ b/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-1.digest @@ -1059,4 +1059,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18161 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-2.digest b/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-2.digest index 109194759..888e2d583 100644 --- a/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-2.digest +++ b/crates/crust-core/tests/data/import_baselines/many_lights_usda-492e76bd4d2bdc51-2.digest @@ -1059,4 +1059,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18161 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/marks_usda-92136ff2d6b2d34c-1.digest b/crates/crust-core/tests/data/import_baselines/marks_usda-92136ff2d6b2d34c-1.digest index 6733614b2..0c98398df 100644 --- a/crates/crust-core/tests/data/import_baselines/marks_usda-92136ff2d6b2d34c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/marks_usda-92136ff2d6b2d34c-1.digest @@ -34,4 +34,4 @@ provenance geometry 3..4: /World/Masked provenance geometry 4..5: /World/Blocker provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/masks_usda-0b1d6cd46ef5aa7b-1.digest b/crates/crust-core/tests/data/import_baselines/masks_usda-0b1d6cd46ef5aa7b-1.digest index 5544296ff..da7a207eb 100644 --- a/crates/crust-core/tests/data/import_baselines/masks_usda-0b1d6cd46ef5aa7b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/masks_usda-0b1d6cd46ef5aa7b-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/Hidden provenance geometry 1..2: /World/L provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-1.digest b/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-1.digest index c6bbccdf7..546afbbff 100644 --- a/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-1.digest +++ b/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-1.digest @@ -23,4 +23,4 @@ provenance geometry 1..2: /World/SheetB provenance geometry 2..3: /World/Clump provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Camera"), cameras: ["/World/Camera"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Camera"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Camera"), cameras: ["/World/Camera"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Camera"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-2.digest b/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-2.digest index c6bbccdf7..546afbbff 100644 --- a/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-2.digest +++ b/crates/crust-core/tests/data/import_baselines/mass_spike_usda-41c01d82edccd4ad-2.digest @@ -23,4 +23,4 @@ provenance geometry 1..2: /World/SheetB provenance geometry 2..3: /World/Clump provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Camera"), cameras: ["/World/Camera"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Camera"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Camera"), cameras: ["/World/Camera"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Camera"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/mass_spike_usda-dee5e21f531bb6c7-1.digest b/crates/crust-core/tests/data/import_baselines/mass_spike_usda-dee5e21f531bb6c7-1.digest index 5f1eaa624..02fca1ec1 100644 --- a/crates/crust-core/tests/data/import_baselines/mass_spike_usda-dee5e21f531bb6c7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/mass_spike_usda-dee5e21f531bb6c7-1.digest @@ -23,4 +23,4 @@ provenance geometry 1..2: /World/SheetB provenance geometry 2..3: /World/Clump provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Camera"), cameras: ["/World/Camera"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Camera"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Camera"), cameras: ["/World/Camera"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Camera"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-1.digest index 4e9ef615a..a0a0361a0 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-1.digest @@ -39,4 +39,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16866 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2259531437156517646, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-2.digest b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-2.digest index 4e9ef615a..a0a0361a0 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-2.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-2113b612a3c1746f-2.digest @@ -39,4 +39,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16866 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2259531437156517646, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-47f44502b8b66093-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-47f44502b8b66093-1.digest index 4e9ef615a..a0a0361a0 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-47f44502b8b66093-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-47f44502b8b66093-1.digest @@ -39,4 +39,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16866 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2259531437156517646, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-5e3c6402db738e98-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-5e3c6402db738e98-1.digest index 9272d2cb1..f85179016 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-5e3c6402db738e98-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-5e3c6402db738e98-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16866 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2259531437156517646, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-605f278bcaf83bcb-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-605f278bcaf83bcb-1.digest index 4e9ef615a..a0a0361a0 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-605f278bcaf83bcb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-605f278bcaf83bcb-1.digest @@ -39,4 +39,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16866 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2259531437156517646, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-7efe0aff05c6d47a-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-7efe0aff05c6d47a-1.digest index 18f27a78f..32abff8e4 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-7efe0aff05c6d47a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-7efe0aff05c6d47a-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16866 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2259531437156517646, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-ee87ad7ab34333f5-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-ee87ad7ab34333f5-1.digest index 4e9ef615a..a0a0361a0 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-ee87ad7ab34333f5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_basic_usda-ee87ad7ab34333f5-1.digest @@ -39,4 +39,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16866 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2259531437156517646, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-1.digest index 929daecd0..2fd6bd900 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 63343 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8640034384489181113, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [2, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-2.digest b/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-2.digest index 929daecd0..2fd6bd900 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-2.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-38de4138760ea72d-2.digest @@ -36,4 +36,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 63343 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8640034384489181113, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [2, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-ae65df7de0c507fa-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-ae65df7de0c507fa-1.digest index 3422b758b..4ac9458b2 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-ae65df7de0c507fa-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_cutout_usda-ae65df7de0c507fa-1.digest @@ -35,4 +35,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 63343 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8640034384489181113, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [2, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-1.digest index 8b1e6e8af..b82a135f5 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-1.digest @@ -33,4 +33,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14590 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17361204448718928378, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-2.digest b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-2.digest index 8b1e6e8af..b82a135f5 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-2.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-37e54478999af2b3-2.digest @@ -33,4 +33,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14590 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17361204448718928378, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-3c55abed0c2329af-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-3c55abed0c2329af-1.digest index d11fc1d11..486bf086b 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-3c55abed0c2329af-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-3c55abed0c2329af-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14590 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17361204448718928378, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-746e6884e4aa1a13-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-746e6884e4aa1a13-1.digest index 8b1e6e8af..b82a135f5 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-746e6884e4aa1a13-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-746e6884e4aa1a13-1.digest @@ -33,4 +33,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14590 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17361204448718928378, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-8dd82f7591e605f2-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-8dd82f7591e605f2-1.digest index 8b1e6e8af..b82a135f5 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-8dd82f7591e605f2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_emissive_usda-8dd82f7591e605f2-1.digest @@ -33,4 +33,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14590 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17361204448718928378, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-a62e7b45a5b76dea-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-a62e7b45a5b76dea-1.digest deleted file mode 100644 index 686dc6619..000000000 --- a/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-a62e7b45a5b76dea-1.digest +++ /dev/null @@ -1,43 +0,0 @@ -time: None -working space: Linear Rec.709 (sRGB) -camera path: Some("/World/ShotCam") -camera: Camera { origin: Vec3A(0.3, -0.52, 0.3), lower_left_corner: Vec3A(-0.20956933, -0.17536479, -0.026081339), horizontal: Vec3A(0.4632069, 0.26878545, 3.990106e-9), vertical: Vec3A(-0.044039004, 0.07589388, 0.2881804), u: Vec3A(0.86492956, 0.5018934, 7.4505815e-9), v: Vec3A(-0.14619102, 0.25193584, 0.9566381), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } -settings prim: Some("/Render/settings") -settings: RenderSettings { samples_per_pixel: 128, max_depth: 12, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } -aovs: AovRequest { products: [], precomp: None } -pass: None -source: Source { lens: Some(Lens { focal_length: 42.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 0.6248 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_lion.usda"], invisible_overrides: Some(0) } -layer: $DIR/materialx_lion.usda -layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/Geometry/lion_statue_lq.usd -layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/lion.usda -lights: 3 -light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } -light 1: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } -light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } -volumes: 0 -world: 5 geometries, PrimitiveBreakdown { triangles: 1060268, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1060268, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false -geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1068fc4a796550f2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1068fc4a796550f2 -geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:30d55baf131c75e7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:30d55baf131c75e7 -geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d4a5c9127205c3c5 camera=2:d4a5c9127205c3c5 shadow=2:d4a5c9127205c3c5 indirect=2:d4a5c9127205c3c5 -geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=79996:e73538b26933b929 camera=79996:e73538b26933b929 shadow=79996:e73538b26933b929 indirect=79996:e73538b26933b929 -geom 4: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=980266:787952c0e7711032 camera=980266:787952c0e7711032 shadow=980266:787952c0e7711032 indirect=980266:787952c0e7711032 -provenance material /World/Looks/GroundMaterial: MaterialOrigin { slots: [2], displaced: false } -provenance material /World/Statue/Looks/StatueMaterial: MaterialOrigin { slots: [3, 4], displaced: false } -provenance material read: ("/Statue/Looks/StatueMaterial", "/World/Statue/Looks/StatueMaterial") -provenance light /World/Key: LightOrigin { index: 1, geoms: 1..2 } -provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } -provenance light /World/Sky: LightOrigin { index: 2, geoms: 2..2 } -provenance geometry 0..1: /World/Rim -provenance geometry 1..2: /World/Key -provenance geometry 2..3: /World/Ground -provenance geometry 3..4: /World/Statue/base/base -provenance geometry 4..5: /World/Statue/statue/statue -provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } -provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: true, moving: false } -provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } -provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12600948678966428397, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } -provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6367222363041144018, n_points: 40000, n_indices: 239988, n_uvs: Some(40781), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } -provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5067503788512982755, n_points: 490133, n_indices: 1960532, n_uvs: Some(497721), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } -provenance spheres: [] -provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-1.digest index 50705d8d5..4ed94fe15 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-1.digest @@ -41,4 +41,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 63672 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5067503788512982755, n_points: 490133, n_indices: 1960532, n_uvs: Some(497721), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-2.digest b/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-2.digest index 50705d8d5..4ed94fe15 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-2.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-f3e8e29236c1c73f-2.digest @@ -41,4 +41,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 63672 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5067503788512982755, n_points: 490133, n_indices: 1960532, n_uvs: Some(497721), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-1e9e0f7089dbbfd5-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-1e9e0f7089dbbfd5-1.digest deleted file mode 100644 index 917b84417..000000000 --- a/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-1e9e0f7089dbbfd5-1.digest +++ /dev/null @@ -1,73 +0,0 @@ -time: None -working space: Linear Rec.709 (sRGB) -camera path: Some("/World/ShotCam") -camera: Camera { origin: Vec3A(0.02, -1.08, 0.28), lower_left_corner: Vec3A(-0.2819569, -0.023333311, -0.038240433), horizontal: Vec3A(0.60391384, 0.0, -0.0), vertical: Vec3A(0.0, 0.046732187, 0.33647177), u: Vec3A(1.0, 0.0, -0.0), v: Vec3A(0.0, 0.13756837, 0.99049234), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } -settings prim: Some("/Render/settings") -settings: RenderSettings { samples_per_pixel: 128, max_depth: 12, width: 1920, height: 1080, region: PixelRect { x0: 0, y0: 0, x1: 1920, y1: 1080 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } -aovs: AovRequest { products: [], precomp: None } -pass: None -source: Source { lens: Some(Lens { focal_length: 65.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 1.0904 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_showcase.usda"], invisible_overrides: Some(0) } -layer: $DIR/materialx_showcase.usda -layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/Geometry/lion_statue_lq.usd -layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/lion.usda -layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/Geometry/teapot.usda -layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/teapot.usda -lights: 5 -light 0: area name Some("/World/Sweep") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } -light 1: area name Some("/World/Top") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } -light 2: area name Some("/World/Fill") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } -light 3: area name Some("/World/Key") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } -light 4: dome name Some("/World/Ambient") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } -volumes: 0 -world: 11 geometries, PrimitiveBreakdown { triangles: 1320184, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1320184, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false -geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:95f4302540ae75bb camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:95f4302540ae75bb -geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d3456bbfab5f963b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d3456bbfab5f963b -geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:722fab8b7df8d571 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:722fab8b7df8d571 -geom 3: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:24a3f7e1c347d95d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:24a3f7e1c347d95d -geom 4: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:ab362d3c1f55a37a camera=48:ab362d3c1f55a37a shadow=48:ab362d3c1f55a37a indirect=48:ab362d3c1f55a37a -geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:247a9f05691f6842 camera=2:247a9f05691f6842 shadow=2:247a9f05691f6842 indirect=2:247a9f05691f6842 -geom 6: material #5 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 0.52 motion [] pieces all=79996:fcb4179389611158 camera=79996:fcb4179389611158 shadow=79996:fcb4179389611158 indirect=79996:fcb4179389611158 -geom 7: material #5 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 0.52 motion [] pieces all=980266:412f800b00d9e4fc camera=980266:412f800b00d9e4fc shadow=980266:412f800b00d9e4fc indirect=980266:412f800b00d9e4fc -geom 8: material #6 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=39620:e598fda52b0339e5 camera=39620:e598fda52b0339e5 shadow=39620:e598fda52b0339e5 indirect=39620:e598fda52b0339e5 -geom 9: material #7 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(3) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=44096:6e172da5a7328a8d camera=44096:6e172da5a7328a8d shadow=44096:6e172da5a7328a8d indirect=44096:6e172da5a7328a8d -geom 10: material #7 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(4) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=176148:1bd75640dcbb45b5 camera=176148:1bd75640dcbb45b5 shadow=176148:1bd75640dcbb45b5 indirect=176148:1bd75640dcbb45b5 -provenance material /World/Lion/Looks/StatueMaterial: MaterialOrigin { slots: [6, 7], displaced: false } -provenance material /World/Looks/Sweep: MaterialOrigin { slots: [4, 5], displaced: false } -provenance material /World/Teapot/Looks/TeapotCeramic: MaterialOrigin { slots: [9, 10], displaced: false } -provenance material /World/Teapot/Looks/TeapotMetal: MaterialOrigin { slots: [8], displaced: false } -provenance material read: ("/Statue/Looks/StatueMaterial", "/World/Lion/Looks/StatueMaterial") -provenance material read: ("/Teapot/Looks/TeapotCeramic", "/World/Teapot/Looks/TeapotCeramic") -provenance material read: ("/Teapot/Looks/TeapotMetal", "/World/Teapot/Looks/TeapotMetal") -provenance light /World/Ambient: LightOrigin { index: 4, geoms: 4..4 } -provenance light /World/Fill: LightOrigin { index: 2, geoms: 2..3 } -provenance light /World/Key: LightOrigin { index: 3, geoms: 3..4 } -provenance light /World/Sweep: LightOrigin { index: 0, geoms: 0..1 } -provenance light /World/Top: LightOrigin { index: 1, geoms: 1..2 } -provenance geometry 0..1: /World/Sweep -provenance geometry 1..2: /World/Top -provenance geometry 2..3: /World/Fill -provenance geometry 3..4: /World/Key -provenance geometry 4..5: /World/Cove -provenance geometry 5..6: /World/Floor -provenance geometry 6..7: /World/Lion/base/base -provenance geometry 7..8: /World/Lion/statue/statue -provenance geometry 8..9: /World/Teapot/Teapot_Handle/Teapot_Handle -provenance geometry 9..10: /World/Teapot/Teapot_Lid/Teapot_Lid -provenance geometry 10..11: /World/Teapot/Teapot_Body/Teapot_Body -provenance mesh: MeshOrigin { geom_id: 4, slot: 0, baked: true, moving: false } -provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: true, moving: false } -provenance mesh: MeshOrigin { geom_id: 6, slot: 2, baked: true, moving: false } -provenance mesh: MeshOrigin { geom_id: 7, slot: 3, baked: true, moving: false } -provenance mesh: MeshOrigin { geom_id: 8, slot: 4, baked: true, moving: false } -provenance mesh: MeshOrigin { geom_id: 9, slot: 5, baked: true, moving: false } -provenance mesh: MeshOrigin { geom_id: 10, slot: 6, baked: true, moving: false } -provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14191107629590770974, n_points: 50, n_indices: 96, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } -provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9726477393562575874, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } -provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6367222363041144018, n_points: 40000, n_indices: 239988, n_uvs: Some(40781), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } -provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5067503788512982755, n_points: 490133, n_indices: 1960532, n_uvs: Some(497721), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } -provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1756143909479177731, n_points: 19812, n_indices: 79240, n_uvs: Some(20810), smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } -provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12119563787018499533, n_points: 22050, n_indices: 88192, n_uvs: Some(22250), smooth: true, material: 3 }), placements: 1, shared: false, displaced: false } -provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14759424648495852877, n_points: 88070, n_indices: 352296, n_uvs: Some(91044), smooth: true, material: 3 }), placements: 1, shared: false, displaced: false } -provenance spheres: [] -provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-1.digest index a1b199262..b3e33aba4 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-1.digest @@ -71,4 +71,4 @@ provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12119 provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14759424648495852877, n_points: 88070, n_indices: 352296, n_uvs: Some(91044), smooth: true, material: 3 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-2.digest b/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-2.digest index a1b199262..b3e33aba4 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-2.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-3aaa54bfab01739a-2.digest @@ -71,4 +71,4 @@ provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12119 provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14759424648495852877, n_points: 88070, n_indices: 352296, n_uvs: Some(91044), smooth: true, material: 3 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-218ab79fb5de55b5-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-218ab79fb5de55b5-1.digest index 4df56c108..20d24ba37 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-218ab79fb5de55b5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-218ab79fb5de55b5-1.digest @@ -33,4 +33,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2, 3, 4] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-1.digest index 1e88e98b5..1a08c3382 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-1.digest @@ -34,4 +34,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2, 3, 4] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-2.digest b/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-2.digest index 1e88e98b5..1a08c3382 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-2.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_subsurface_usda-3b07bee1fa621b95-2.digest @@ -34,4 +34,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2, 3, 4] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-1.digest index a4843916f..28b26c33f 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-1.digest @@ -39,4 +39,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2, 3, 4, 5, 6] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-2.digest b/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-2.digest index a4843916f..28b26c33f 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-2.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-b446db21b7cb309b-2.digest @@ -39,4 +39,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2, 3, 4, 5, 6] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-ca1ad78e541d4d41-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-ca1ad78e541d4d41-1.digest index e9518a5ed..3191109b8 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-ca1ad78e541d4d41-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_surfaces_usda-ca1ad78e541d4d41-1.digest @@ -38,4 +38,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2, 3, 4, 5, 6] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-1.digest index ee4c673f4..dcd71aa5d 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-1.digest @@ -47,4 +47,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12119 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14759424648495852877, n_points: 88070, n_indices: 352296, n_uvs: Some(91044), smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-2.digest b/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-2.digest index ee4c673f4..dcd71aa5d 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-2.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-2d8b448afc9a82e2-2.digest @@ -47,4 +47,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12119 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14759424648495852877, n_points: 88070, n_indices: 352296, n_uvs: Some(91044), smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-6ea1bea03dbe6c0d-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-6ea1bea03dbe6c0d-1.digest deleted file mode 100644 index 228fdd5f9..000000000 --- a/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-6ea1bea03dbe6c0d-1.digest +++ /dev/null @@ -1,49 +0,0 @@ -time: None -working space: Linear Rec.709 (sRGB) -camera path: Some("/World/ShotCam") -camera: Camera { origin: Vec3A(0.46, -0.5, 0.36), lower_left_corner: Vec3A(-0.17507109, -0.24858424, -0.04130861), horizontal: Vec3A(0.4534639, 0.40702486, 0.0), vertical: Vec3A(-0.07729147, 0.08610994, 0.32263348), u: Vec3A(0.74418515, 0.66797346, 0.0), v: Vec3A(-0.22550038, 0.25122857, 0.9412937), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } -settings prim: Some("/Render/settings") -settings: RenderSettings { samples_per_pixel: 128, max_depth: 12, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } -aovs: AovRequest { products: [], precomp: None } -pass: None -source: Source { lens: Some(Lens { focal_length: 42.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 0.7109 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_teapot.usda"], invisible_overrides: Some(0) } -layer: $DIR/materialx_teapot.usda -layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/Geometry/teapot.usda -layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/teapot.usda -lights: 3 -light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } -light 1: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } -light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } -volumes: 0 -world: 6 geometries, PrimitiveBreakdown { triangles: 259870, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 259870, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false -geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1068fc4a796550f2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1068fc4a796550f2 -geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:30d55baf131c75e7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:30d55baf131c75e7 -geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d4a5c9127205c3c5 camera=2:d4a5c9127205c3c5 shadow=2:d4a5c9127205c3c5 indirect=2:d4a5c9127205c3c5 -geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=39620:e6201f1def4ba88d camera=39620:e6201f1def4ba88d shadow=39620:e6201f1def4ba88d indirect=39620:e6201f1def4ba88d -geom 4: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=44096:e684c755747a3941 camera=44096:e684c755747a3941 shadow=44096:e684c755747a3941 indirect=44096:e684c755747a3941 -geom 5: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=176148:88e3658c815ba93d camera=176148:88e3658c815ba93d shadow=176148:88e3658c815ba93d indirect=176148:88e3658c815ba93d -provenance material /World/Looks/GroundMaterial: MaterialOrigin { slots: [2], displaced: false } -provenance material /World/Teapot/Looks/TeapotCeramic: MaterialOrigin { slots: [4, 5], displaced: false } -provenance material /World/Teapot/Looks/TeapotMetal: MaterialOrigin { slots: [3], displaced: false } -provenance material read: ("/Teapot/Looks/TeapotCeramic", "/World/Teapot/Looks/TeapotCeramic") -provenance material read: ("/Teapot/Looks/TeapotMetal", "/World/Teapot/Looks/TeapotMetal") -provenance light /World/Key: LightOrigin { index: 1, geoms: 1..2 } -provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } -provenance light /World/Sky: LightOrigin { index: 2, geoms: 2..2 } -provenance geometry 0..1: /World/Rim -provenance geometry 1..2: /World/Key -provenance geometry 2..3: /World/Ground -provenance geometry 3..4: /World/Teapot/Teapot_Handle/Teapot_Handle -provenance geometry 4..5: /World/Teapot/Teapot_Lid/Teapot_Lid -provenance geometry 5..6: /World/Teapot/Teapot_Body/Teapot_Body -provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } -provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: true, moving: false } -provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } -provenance mesh: MeshOrigin { geom_id: 5, slot: 3, baked: true, moving: false } -provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12600948678966428397, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } -provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1756143909479177731, n_points: 19812, n_indices: 79240, n_uvs: Some(20810), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } -provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12119563787018499533, n_points: 22050, n_indices: 88192, n_uvs: Some(22250), smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } -provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14759424648495852877, n_points: 88070, n_indices: 352296, n_uvs: Some(91044), smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } -provenance spheres: [] -provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } diff --git a/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-0d615ee9e93f873e-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-0d615ee9e93f873e-1.digest index e7850c273..9c8c7ad32 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-0d615ee9e93f873e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-0d615ee9e93f873e-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 63343 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9884436589796233226, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [2, 3, 4] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-dbd96c41f0cfcd9f-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-dbd96c41f0cfcd9f-1.digest index fb74c9aa3..228eb1e14 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-dbd96c41f0cfcd9f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-dbd96c41f0cfcd9f-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 63343 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9884436589796233226, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [2, 3, 4] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-1.digest index e7850c273..9c8c7ad32 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 63343 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9884436589796233226, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [2, 3, 4] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-2.digest b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-2.digest index e7850c273..9c8c7ad32 100644 --- a/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-2.digest +++ b/crates/crust-core/tests/data/import_baselines/materialx_volume_usda-f4f640ec1f11b3d3-2.digest @@ -38,4 +38,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 63343 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9884436589796233226, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [2, 3, 4] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/matrix_usda-9dd65c424c31f5e5-1.digest b/crates/crust-core/tests/data/import_baselines/matrix_usda-9dd65c424c31f5e5-1.digest index d7c2dee5e..90cf1127a 100644 --- a/crates/crust-core/tests/data/import_baselines/matrix_usda-9dd65c424c31f5e5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/matrix_usda-9dd65c424c31f5e5-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/A/S provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/matte_dome_usda-942a3b1e6f8ce42b-1.digest b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-942a3b1e6f8ce42b-1.digest index 34e2f07fc..d8811581b 100644 --- a/crates/crust-core/tests/data/import_baselines/matte_dome_usda-942a3b1e6f8ce42b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-942a3b1e6f8ce42b-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11147341635340358220, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/matte_dome_usda-e3baadd4a9e3ffb7-1.digest b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-e3baadd4a9e3ffb7-1.digest index e8ba5daef..2c7a439c1 100644 --- a/crates/crust-core/tests/data/import_baselines/matte_dome_usda-e3baadd4a9e3ffb7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-e3baadd4a9e3ffb7-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11147341635340358220, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pass"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pass"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/max_depth_negative_usda-eec4c585057974f1-1.digest b/crates/crust-core/tests/data/import_baselines/max_depth_negative_usda-eec4c585057974f1-1.digest index ba9ebd8e3..0861b4322 100644 --- a/crates/crust-core/tests/data/import_baselines/max_depth_negative_usda-eec4c585057974f1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/max_depth_negative_usda-eec4c585057974f1-1.digest @@ -15,4 +15,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/max_depth_one_usda-0b2d301b9905817a-1.digest b/crates/crust-core/tests/data/import_baselines/max_depth_one_usda-0b2d301b9905817a-1.digest index c573010f7..dc49664b1 100644 --- a/crates/crust-core/tests/data/import_baselines/max_depth_one_usda-0b2d301b9905817a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/max_depth_one_usda-0b2d301b9905817a-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/max_depth_zero_usda-931745fbe0c2c985-1.digest b/crates/crust-core/tests/data/import_baselines/max_depth_zero_usda-931745fbe0c2c985-1.digest index 4645db9d6..c33a676fa 100644 --- a/crates/crust-core/tests/data/import_baselines/max_depth_zero_usda-931745fbe0c2c985-1.digest +++ b/crates/crust-core/tests/data/import_baselines/max_depth_zero_usda-931745fbe0c2c985-1.digest @@ -15,4 +15,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/membership_usda-e44fc1429c4b92d1-1.digest b/crates/crust-core/tests/data/import_baselines/membership_usda-e44fc1429c4b92d1-1.digest index 1ba245c6f..5ebc723d9 100644 --- a/crates/crust-core/tests/data/import_baselines/membership_usda-e44fc1429c4b92d1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/membership_usda-e44fc1429c4b92d1-1.digest @@ -44,4 +44,4 @@ provenance geometry 8..9: /World/Plain provenance geometry 9..10: /World/Cycle provenance spheres: [0, 1, 2, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/mesh_blurred_usda-13d48869156e4433-1.digest b/crates/crust-core/tests/data/import_baselines/mesh_blurred_usda-13d48869156e4433-1.digest index c2d5a4e22..c7ecd1a71 100644 --- a/crates/crust-core/tests/data/import_baselines/mesh_blurred_usda-13d48869156e4433-1.digest +++ b/crates/crust-core/tests/data/import_baselines/mesh_blurred_usda-13d48869156e4433-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: true } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/mesh_both_usda-90fff2587206dcbe-1.digest b/crates/crust-core/tests/data/import_baselines/mesh_both_usda-90fff2587206dcbe-1.digest index 2f9c64586..61c025098 100644 --- a/crates/crust-core/tests/data/import_baselines/mesh_both_usda-90fff2587206dcbe-1.digest +++ b/crates/crust-core/tests/data/import_baselines/mesh_both_usda-90fff2587206dcbe-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: true } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/mesh_sharp_usda-98679e56cacbfa24-1.digest b/crates/crust-core/tests/data/import_baselines/mesh_sharp_usda-98679e56cacbfa24-1.digest index edabdfe8a..de17726ae 100644 --- a/crates/crust-core/tests/data/import_baselines/mesh_sharp_usda-98679e56cacbfa24-1.digest +++ b/crates/crust-core/tests/data/import_baselines/mesh_sharp_usda-98679e56cacbfa24-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: true } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/mesh_track_usda-2da67447ace68ea3-1.digest b/crates/crust-core/tests/data/import_baselines/mesh_track_usda-2da67447ace68ea3-1.digest index d0c754c2b..d9a4fedf6 100644 --- a/crates/crust-core/tests/data/import_baselines/mesh_track_usda-2da67447ace68ea3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/mesh_track_usda-2da67447ace68ea3-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: true } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/metal_0_1_power_1_usda-d5e924c1e43088a2-1.digest b/crates/crust-core/tests/data/import_baselines/metal_0_1_power_1_usda-d5e924c1e43088a2-1.digest index feb44539e..d6e241bc9 100644 --- a/crates/crust-core/tests/data/import_baselines/metal_0_1_power_1_usda-d5e924c1e43088a2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/metal_0_1_power_1_usda-d5e924c1e43088a2-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/metal_1_0_power_1_usda-0a224c171445c02a-1.digest b/crates/crust-core/tests/data/import_baselines/metal_1_0_power_1_usda-0a224c171445c02a-1.digest index 1d081c1f2..6c69e6ee4 100644 --- a/crates/crust-core/tests/data/import_baselines/metal_1_0_power_1_usda-0a224c171445c02a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/metal_1_0_power_1_usda-0a224c171445c02a-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/metal_1_1_power_1_usda-3e1ca1268dde29a1-1.digest b/crates/crust-core/tests/data/import_baselines/metal_1_1_power_1_usda-3e1ca1268dde29a1-1.digest index da1577c3a..b20b7601d 100644 --- a/crates/crust-core/tests/data/import_baselines/metal_1_1_power_1_usda-3e1ca1268dde29a1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/metal_1_1_power_1_usda-3e1ca1268dde29a1-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/mirror_usda-e5687a44290234b9-1.digest b/crates/crust-core/tests/data/import_baselines/mirror_usda-e5687a44290234b9-1.digest index 14e4b7029..167c695ee 100644 --- a/crates/crust-core/tests/data/import_baselines/mirror_usda-e5687a44290234b9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/mirror_usda-e5687a44290234b9-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/mismatch_same_usda-36f547d4088a73c8-1.digest b/crates/crust-core/tests/data/import_baselines/mismatch_same_usda-36f547d4088a73c8-1.digest index 4d2d0d82e..a0bfe3262 100644 --- a/crates/crust-core/tests/data/import_baselines/mismatch_same_usda-36f547d4088a73c8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/mismatch_same_usda-36f547d4088a73c8-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Shot/Cam"), cameras: ["/World/Shot/Cam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4602678819172646912], interval: Some([4617315517961601024, 4617878467915022336]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Shot/Cam"), cameras: ["/World/Shot/Cam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4602678819172646912], interval: Some([4617315517961601024, 4617878467915022336]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/mismatch_usda-4938acb7109c81b3-1.digest b/crates/crust-core/tests/data/import_baselines/mismatch_usda-4938acb7109c81b3-1.digest index 44c294e6d..4267c6ca5 100644 --- a/crates/crust-core/tests/data/import_baselines/mismatch_usda-4938acb7109c81b3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/mismatch_usda-4938acb7109c81b3-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16756132900457544540, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 2)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 2)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/mismatch_usda-e42c92f5d05f1fcf-1.digest b/crates/crust-core/tests/data/import_baselines/mismatch_usda-e42c92f5d05f1fcf-1.digest index 2bbf51df8..71ad39ce0 100644 --- a/crates/crust-core/tests/data/import_baselines/mismatch_usda-e42c92f5d05f1fcf-1.digest +++ b/crates/crust-core/tests/data/import_baselines/mismatch_usda-e42c92f5d05f1fcf-1.digest @@ -15,4 +15,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Shot/Cam"), cameras: ["/World/Shot/Cam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Shot/Cam"), cameras: ["/World/Shot/Cam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/missing_usda-048983dc2b7e8f66-1.digest b/crates/crust-core/tests/data/import_baselines/missing_usda-048983dc2b7e8f66-1.digest index 48749fd2a..65d032cc8 100644 --- a/crates/crust-core/tests/data/import_baselines/missing_usda-048983dc2b7e8f66-1.digest +++ b/crates/crust-core/tests/data/import_baselines/missing_usda-048983dc2b7e8f66-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cams/Hidden/witness"), cameras: ["/cams/Hidden/witness", "/cams/shot", "/cams/layout"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cams/Hidden/witness"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/cams/Hidden/witness"), cameras: ["/cams/Hidden/witness", "/cams/shot", "/cams/layout"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cams/Hidden/witness"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/mixed_hair_ref_usda-1bf6615be167a70b-1.digest b/crates/crust-core/tests/data/import_baselines/mixed_hair_ref_usda-1bf6615be167a70b-1.digest index 45dd50ce1..e1d09f3d5 100644 --- a/crates/crust-core/tests/data/import_baselines/mixed_hair_ref_usda-1bf6615be167a70b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/mixed_hair_ref_usda-1bf6615be167a70b-1.digest @@ -21,4 +21,4 @@ provenance geometry 0..1: /World/Back provenance geometry 1..2: /World/Strand provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/mixed_hair_usda-e643846eb6c6d950-1.digest b/crates/crust-core/tests/data/import_baselines/mixed_hair_usda-e643846eb6c6d950-1.digest index 813945d75..d3fe5fced 100644 --- a/crates/crust-core/tests/data/import_baselines/mixed_hair_usda-e643846eb6c6d950-1.digest +++ b/crates/crust-core/tests/data/import_baselines/mixed_hair_usda-e643846eb6c6d950-1.digest @@ -21,4 +21,4 @@ provenance geometry 0..1: /World/Back provenance geometry 1..2: /World/Strand provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/motionblur_usda-2ad099074d244fc2-1.digest b/crates/crust-core/tests/data/import_baselines/motionblur_usda-2ad099074d244fc2-1.digest index 4c50b9e62..26d1e00b3 100644 --- a/crates/crust-core/tests/data/import_baselines/motionblur_usda-2ad099074d244fc2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/motionblur_usda-2ad099074d244fc2-1.digest @@ -33,4 +33,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 84162 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12040084758835538402, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-1.digest b/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-1.digest index 1f71ea80a..95974f4f9 100644 --- a/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-1.digest +++ b/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-1.digest @@ -34,4 +34,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 84162 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12040084758835538402, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-2.digest b/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-2.digest index 1f71ea80a..95974f4f9 100644 --- a/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-2.digest +++ b/crates/crust-core/tests/data/import_baselines/motionblur_usda-f2666f3e50d41453-2.digest @@ -34,4 +34,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 84162 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12040084758835538402, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/motionblur_usda-ff0d49c1a505d497-1.digest b/crates/crust-core/tests/data/import_baselines/motionblur_usda-ff0d49c1a505d497-1.digest index 1f71ea80a..95974f4f9 100644 --- a/crates/crust-core/tests/data/import_baselines/motionblur_usda-ff0d49c1a505d497-1.digest +++ b/crates/crust-core/tests/data/import_baselines/motionblur_usda-ff0d49c1a505d497-1.digest @@ -34,4 +34,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 84162 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12040084758835538402, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_aliases_usda-8852d8dcf38ecf0d-1.digest b/crates/crust-core/tests/data/import_baselines/motionvector_aliases_usda-8852d8dcf38ecf0d-1.digest index 3a07621d6..58645c558 100644 --- a/crates/crust-core/tests/data/import_baselines/motionvector_aliases_usda-8852d8dcf38ecf0d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/motionvector_aliases_usda-8852d8dcf38ecf0d-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_blurred_usda-6d69c20d22e19877-1.digest b/crates/crust-core/tests/data/import_baselines/motionvector_blurred_usda-6d69c20d22e19877-1.digest index 4b9622301..d3956b244 100644 --- a/crates/crust-core/tests/data/import_baselines/motionvector_blurred_usda-6d69c20d22e19877-1.digest +++ b/crates/crust-core/tests/data/import_baselines/motionvector_blurred_usda-6d69c20d22e19877-1.digest @@ -31,4 +31,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 28761 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_types_usda-d2a10e1c91de57de-1.digest b/crates/crust-core/tests/data/import_baselines/motionvector_types_usda-d2a10e1c91de57de-1.digest index a27a33bef..a86e67abe 100644 --- a/crates/crust-core/tests/data/import_baselines/motionvector_types_usda-d2a10e1c91de57de-1.digest +++ b/crates/crust-core/tests/data/import_baselines/motionvector_types_usda-d2a10e1c91de57de-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-0097c4dc99684b31-1.digest b/crates/crust-core/tests/data/import_baselines/motionvector_usda-0097c4dc99684b31-1.digest index 7a7c8b4d7..3a513a409 100644 --- a/crates/crust-core/tests/data/import_baselines/motionvector_usda-0097c4dc99684b31-1.digest +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-0097c4dc99684b31-1.digest @@ -31,4 +31,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 28761 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-2921a3a583a7af01-1.digest b/crates/crust-core/tests/data/import_baselines/motionvector_usda-2921a3a583a7af01-1.digest index 955af2dfb..8637a56c6 100644 --- a/crates/crust-core/tests/data/import_baselines/motionvector_usda-2921a3a583a7af01-1.digest +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-2921a3a583a7af01-1.digest @@ -31,4 +31,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 28761 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-1.digest b/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-1.digest index 955af2dfb..8637a56c6 100644 --- a/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-1.digest +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-1.digest @@ -31,4 +31,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 28761 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-2.digest b/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-2.digest index 955af2dfb..8637a56c6 100644 --- a/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-2.digest +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-37a40f3b6ac9aeab-2.digest @@ -31,4 +31,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 28761 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-43ed7e424bbaa4f7-1.digest b/crates/crust-core/tests/data/import_baselines/motionvector_usda-43ed7e424bbaa4f7-1.digest index 955af2dfb..8637a56c6 100644 --- a/crates/crust-core/tests/data/import_baselines/motionvector_usda-43ed7e424bbaa4f7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-43ed7e424bbaa4f7-1.digest @@ -31,4 +31,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 28761 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-6dec65e3aa55dc9d-1.digest b/crates/crust-core/tests/data/import_baselines/motionvector_usda-6dec65e3aa55dc9d-1.digest index 7a7c8b4d7..3a513a409 100644 --- a/crates/crust-core/tests/data/import_baselines/motionvector_usda-6dec65e3aa55dc9d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-6dec65e3aa55dc9d-1.digest @@ -31,4 +31,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 28761 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/motionvector_usda-c5f34f1e623349ba-1.digest b/crates/crust-core/tests/data/import_baselines/motionvector_usda-c5f34f1e623349ba-1.digest index 7a7c8b4d7..3a513a409 100644 --- a/crates/crust-core/tests/data/import_baselines/motionvector_usda-c5f34f1e623349ba-1.digest +++ b/crates/crust-core/tests/data/import_baselines/motionvector_usda-c5f34f1e623349ba-1.digest @@ -31,4 +31,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 28761 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/multiply_usda-8736676f00161943-1.digest b/crates/crust-core/tests/data/import_baselines/multiply_usda-8736676f00161943-1.digest index e6cd15253..10eda23f0 100644 --- a/crates/crust-core/tests/data/import_baselines/multiply_usda-8736676f00161943-1.digest +++ b/crates/crust-core/tests/data/import_baselines/multiply_usda-8736676f00161943-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18140786555293703923, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/named_chart_usda-67761c5ec52139aa-1.digest b/crates/crust-core/tests/data/import_baselines/named_chart_usda-67761c5ec52139aa-1.digest index 2eea8c1f2..8ab4786f0 100644 --- a/crates/crust-core/tests/data/import_baselines/named_chart_usda-67761c5ec52139aa-1.digest +++ b/crates/crust-core/tests/data/import_baselines/named_chart_usda-67761c5ec52139aa-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5577808108587403347, n_points: 25, n_indices: 64, n_uvs: Some(25), smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/named_usda-455967a7b376e998-1.digest b/crates/crust-core/tests/data/import_baselines/named_usda-455967a7b376e998-1.digest index aa77d3852..91c14e9c6 100644 --- a/crates/crust-core/tests/data/import_baselines/named_usda-455967a7b376e998-1.digest +++ b/crates/crust-core/tests/data/import_baselines/named_usda-455967a7b376e998-1.digest @@ -18,4 +18,4 @@ provenance geometry 0..1: /World/Prop provenance geometry 1..2: /World/Char provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/bg"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/bg"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/named_usda-caf35125dfbdc7e1-1.digest b/crates/crust-core/tests/data/import_baselines/named_usda-caf35125dfbdc7e1-1.digest index 6240d6e43..8c6da2abe 100644 --- a/crates/crust-core/tests/data/import_baselines/named_usda-caf35125dfbdc7e1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/named_usda-caf35125dfbdc7e1-1.digest @@ -18,4 +18,4 @@ provenance geometry 0..1: /World/Prop provenance geometry 1..2: /World/Char provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/named_usda-d1e9bde789e7233a-1.digest b/crates/crust-core/tests/data/import_baselines/named_usda-d1e9bde789e7233a-1.digest index c4cf0dbd6..1c3f319fb 100644 --- a/crates/crust-core/tests/data/import_baselines/named_usda-d1e9bde789e7233a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/named_usda-d1e9bde789e7233a-1.digest @@ -18,4 +18,4 @@ provenance geometry 0..1: /World/Prop provenance geometry 1..2: /World/Char provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nan_shaping_usda-9e699df2d0518cc0-1.digest b/crates/crust-core/tests/data/import_baselines/nan_shaping_usda-9e699df2d0518cc0-1.digest index 7571a09b2..1551c59a2 100644 --- a/crates/crust-core/tests/data/import_baselines/nan_shaping_usda-9e699df2d0518cc0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nan_shaping_usda-9e699df2d0518cc0-1.digest @@ -19,4 +19,4 @@ provenance light /World/Spot: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/Spot provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/native_usda-48df729899939992-1.digest b/crates/crust-core/tests/data/import_baselines/native_usda-48df729899939992-1.digest index 166a4fdfd..1261efa4b 100644 --- a/crates/crust-core/tests/data/import_baselines/native_usda-48df729899939992-1.digest +++ b/crates/crust-core/tests/data/import_baselines/native_usda-48df729899939992-1.digest @@ -228,4 +228,4 @@ provenance mesh slot 68: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7728 provenance mesh slot 69: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12950018545620570054, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/native_usda-aa00109a0de726bd-1.digest b/crates/crust-core/tests/data/import_baselines/native_usda-aa00109a0de726bd-1.digest index 6fb6ee4f1..6c08fef78 100644 --- a/crates/crust-core/tests/data/import_baselines/native_usda-aa00109a0de726bd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/native_usda-aa00109a0de726bd-1.digest @@ -21,4 +21,4 @@ provenance geometry 2..4: /World/Still provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/near_far_usda-378c724af4dad1fb-1.digest b/crates/crust-core/tests/data/import_baselines/near_far_usda-378c724af4dad1fb-1.digest index c60044860..dee395d6a 100644 --- a/crates/crust-core/tests/data/import_baselines/near_far_usda-378c724af4dad1fb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/near_far_usda-378c724af4dad1fb-1.digest @@ -24,4 +24,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18253 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13487480004083563611, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nearest_usda-01bca6fa7666b1f3-1.digest b/crates/crust-core/tests/data/import_baselines/nearest_usda-01bca6fa7666b1f3-1.digest index bdee695b5..c40aece76 100644 --- a/crates/crust-core/tests/data/import_baselines/nearest_usda-01bca6fa7666b1f3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nearest_usda-01bca6fa7666b1f3-1.digest @@ -18,4 +18,4 @@ provenance geometry 0..1: /World/Props/Crate provenance geometry 1..2: /World/Props/Hero/Body provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/explicit"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/explicit"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nearest_usda-6471e7e6d484d155-1.digest b/crates/crust-core/tests/data/import_baselines/nearest_usda-6471e7e6d484d155-1.digest index dd7c174ec..448365903 100644 --- a/crates/crust-core/tests/data/import_baselines/nearest_usda-6471e7e6d484d155-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nearest_usda-6471e7e6d484d155-1.digest @@ -18,4 +18,4 @@ provenance geometry 0..1: /World/Props/Crate provenance geometry 1..2: /World/Props/Hero/Body provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/nearest"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/nearest"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/negative_min_spp_usda-f445ea0383fc1875-1.digest b/crates/crust-core/tests/data/import_baselines/negative_min_spp_usda-f445ea0383fc1875-1.digest index dc816ae0f..0ac596cc0 100644 --- a/crates/crust-core/tests/data/import_baselines/negative_min_spp_usda-f445ea0383fc1875-1.digest +++ b/crates/crust-core/tests/data/import_baselines/negative_min_spp_usda-f445ea0383fc1875-1.digest @@ -15,4 +15,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_direct_usda-e25d7da2b966c023-1.digest b/crates/crust-core/tests/data/import_baselines/nested_direct_usda-e25d7da2b966c023-1.digest index c5d7cb60e..f007c669e 100644 --- a/crates/crust-core/tests/data/import_baselines/nested_direct_usda-e25d7da2b966c023-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nested_direct_usda-e25d7da2b966c023-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_hidden_usda-0ea71f61bc0a58d6-1.digest b/crates/crust-core/tests/data/import_baselines/nested_hidden_usda-0ea71f61bc0a58d6-1.digest index 5074889e8..f99a0e5e2 100644 --- a/crates/crust-core/tests/data/import_baselines/nested_hidden_usda-0ea71f61bc0a58d6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nested_hidden_usda-0ea71f61bc0a58d6-1.digest @@ -18,4 +18,4 @@ provenance geometry 0..1: /W/Set/B provenance geometry 1..2: /W/Set/A provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancer_proto_root_xform_usda-95a505e1fa209779-1.digest b/crates/crust-core/tests/data/import_baselines/nested_instancer_proto_root_xform_usda-95a505e1fa209779-1.digest index 20cdfe1da..3166679b8 100644 --- a/crates/crust-core/tests/data/import_baselines/nested_instancer_proto_root_xform_usda-95a505e1fa209779-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nested_instancer_proto_root_xform_usda-95a505e1fa209779-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/Outer provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-39f09e1523375345-1.digest b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-39f09e1523375345-1.digest index 2352ac8ad..ad512e70d 100644 --- a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-39f09e1523375345-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-39f09e1523375345-1.digest @@ -52,4 +52,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12249 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12038934229465983880, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-1.digest b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-1.digest index 2352ac8ad..ad512e70d 100644 --- a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-1.digest @@ -52,4 +52,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12249 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12038934229465983880, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-2.digest b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-2.digest index 2352ac8ad..ad512e70d 100644 --- a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-2.digest +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-4b3ca108154f4935-2.digest @@ -52,4 +52,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12249 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12038934229465983880, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-915b43a7369963b2-1.digest b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-915b43a7369963b2-1.digest index 2352ac8ad..ad512e70d 100644 --- a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-915b43a7369963b2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-915b43a7369963b2-1.digest @@ -52,4 +52,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12249 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12038934229465983880, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-df6640aca1d2b235-1.digest b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-df6640aca1d2b235-1.digest index 2352ac8ad..ad512e70d 100644 --- a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-df6640aca1d2b235-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-df6640aca1d2b235-1.digest @@ -52,4 +52,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12249 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12038934229465983880, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-e37604ffa926df8a-1.digest b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-e37604ffa926df8a-1.digest index 2352ac8ad..ad512e70d 100644 --- a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-e37604ffa926df8a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-e37604ffa926df8a-1.digest @@ -52,4 +52,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12249 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12038934229465983880, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fda6a6f1c2f5b28e-1.digest b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fda6a6f1c2f5b28e-1.digest index 3309fb7c1..505cfb9c8 100644 --- a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fda6a6f1c2f5b28e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fda6a6f1c2f5b28e-1.digest @@ -51,4 +51,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12249 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12038934229465983880, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fff87a8b52b8e069-1.digest b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fff87a8b52b8e069-1.digest index 2352ac8ad..ad512e70d 100644 --- a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fff87a8b52b8e069-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-fff87a8b52b8e069-1.digest @@ -52,4 +52,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12249 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12038934229465983880, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-c0a020bf777d3f88-1.digest b/crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-c0a020bf777d3f88-1.digest index 87927e8ff..f08616e35 100644 --- a/crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-c0a020bf777d3f88-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-c0a020bf777d3f88-1.digest @@ -21,4 +21,4 @@ provenance geometry 1..2: /Chars/Sidekick provenance geometry 2..3: /Chars/Hero provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_one_usda-bc56793ff0720fdc-1.digest b/crates/crust-core/tests/data/import_baselines/nested_one_usda-bc56793ff0720fdc-1.digest index a966346a2..99de6d1cb 100644 --- a/crates/crust-core/tests/data/import_baselines/nested_one_usda-bc56793ff0720fdc-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nested_one_usda-bc56793ff0720fdc-1.digest @@ -17,4 +17,4 @@ geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..2: /W/Set/A provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_scatter_usda-4724aa4d383273d2-1.digest b/crates/crust-core/tests/data/import_baselines/nested_scatter_usda-4724aa4d383273d2-1.digest index c9f354ba3..339a98474 100644 --- a/crates/crust-core/tests/data/import_baselines/nested_scatter_usda-4724aa4d383273d2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nested_scatter_usda-4724aa4d383273d2-1.digest @@ -16,4 +16,4 @@ provenance geometry 0..1: /W/Outer provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5078605137533740532, n_points: 98, n_indices: 576, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_translate_usda-31c01e41ce7e4eb3-1.digest b/crates/crust-core/tests/data/import_baselines/nested_translate_usda-31c01e41ce7e4eb3-1.digest index cd0bd0aee..7ef3279eb 100644 --- a/crates/crust-core/tests/data/import_baselines/nested_translate_usda-31c01e41ce7e4eb3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nested_translate_usda-31c01e41ce7e4eb3-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/A/B/S provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_two_usda-0fad6a8ff7f8520a-1.digest b/crates/crust-core/tests/data/import_baselines/nested_two_usda-0fad6a8ff7f8520a-1.digest index 729a19dfd..a15e51208 100644 --- a/crates/crust-core/tests/data/import_baselines/nested_two_usda-0fad6a8ff7f8520a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nested_two_usda-0fad6a8ff7f8520a-1.digest @@ -22,4 +22,4 @@ provenance geometry 0..3: /W/Set/B provenance geometry 3..6: /W/Set/A provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_usda-dbe832b66063cf24-1.digest b/crates/crust-core/tests/data/import_baselines/nested_usda-dbe832b66063cf24-1.digest index cc2bf88cf..d0ab17cef 100644 --- a/crates/crust-core/tests/data/import_baselines/nested_usda-dbe832b66063cf24-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nested_usda-dbe832b66063cf24-1.digest @@ -227,4 +227,4 @@ provenance mesh slot 68: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7728 provenance mesh slot 69: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12950018545620570054, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/neural_usda-57a514ca820ab02c-1.digest b/crates/crust-core/tests/data/import_baselines/neural_usda-57a514ca820ab02c-1.digest index 8421c9bbd..661b36abc 100644 --- a/crates/crust-core/tests/data/import_baselines/neural_usda-57a514ca820ab02c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/neural_usda-57a514ca820ab02c-1.digest @@ -25,4 +25,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5231292419457759674, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/ngon_usda-573da62ad402526c-1.digest b/crates/crust-core/tests/data/import_baselines/ngon_usda-573da62ad402526c-1.digest index 5c9083f15..d586fe9e8 100644 --- a/crates/crust-core/tests/data/import_baselines/ngon_usda-573da62ad402526c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/ngon_usda-573da62ad402526c-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 612367198234246471, n_points: 12, n_indices: 12, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nine_uniform_lights_usda-181564afd75bc784-1.digest b/crates/crust-core/tests/data/import_baselines/nine_uniform_lights_usda-181564afd75bc784-1.digest index 83fce37af..9bdb22d4f 100644 --- a/crates/crust-core/tests/data/import_baselines/nine_uniform_lights_usda-181564afd75bc784-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nine_uniform_lights_usda-181564afd75bc784-1.digest @@ -49,4 +49,4 @@ provenance geometry 7..8: /World/l1 provenance geometry 8..9: /World/l0 provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-08eaf78e1847bdbe-1.digest b/crates/crust-core/tests/data/import_baselines/no_camera_usda-08eaf78e1847bdbe-1.digest index bb1037636..a517adee6 100644 --- a/crates/crust-core/tests/data/import_baselines/no_camera_usda-08eaf78e1847bdbe-1.digest +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-08eaf78e1847bdbe-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-2a7bfc7853b270c5-1.digest b/crates/crust-core/tests/data/import_baselines/no_camera_usda-2a7bfc7853b270c5-1.digest index ed108e464..a19baac4b 100644 --- a/crates/crust-core/tests/data/import_baselines/no_camera_usda-2a7bfc7853b270c5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-2a7bfc7853b270c5-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-5507d24332d7f188-1.digest b/crates/crust-core/tests/data/import_baselines/no_camera_usda-5507d24332d7f188-1.digest index 9ba5800ff..913b73fb1 100644 --- a/crates/crust-core/tests/data/import_baselines/no_camera_usda-5507d24332d7f188-1.digest +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-5507d24332d7f188-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /S provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.25), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.25), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-758b683c20791ceb-1.digest b/crates/crust-core/tests/data/import_baselines/no_camera_usda-758b683c20791ceb-1.digest index f19321f66..0d1eb7fac 100644 --- a/crates/crust-core/tests/data/import_baselines/no_camera_usda-758b683c20791ceb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-758b683c20791ceb-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /S provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-ac160dc389201eeb-1.digest b/crates/crust-core/tests/data/import_baselines/no_camera_usda-ac160dc389201eeb-1.digest index 99261fe32..b3556c681 100644 --- a/crates/crust-core/tests/data/import_baselines/no_camera_usda-ac160dc389201eeb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-ac160dc389201eeb-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /S provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(-1.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(-1.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-af24412e492e9147-1.digest b/crates/crust-core/tests/data/import_baselines/no_camera_usda-af24412e492e9147-1.digest index ed108e464..a19baac4b 100644 --- a/crates/crust-core/tests/data/import_baselines/no_camera_usda-af24412e492e9147-1.digest +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-af24412e492e9147-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/no_camera_usda-f2e322198f5a52d6-1.digest b/crates/crust-core/tests/data/import_baselines/no_camera_usda-f2e322198f5a52d6-1.digest index 57ec395b0..3f102c6c6 100644 --- a/crates/crust-core/tests/data/import_baselines/no_camera_usda-f2e322198f5a52d6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/no_camera_usda-f2e322198f5a52d6-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /S provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/no_frame_usda-06c9736b1ee41555-1.digest b/crates/crust-core/tests/data/import_baselines/no_frame_usda-06c9736b1ee41555-1.digest index c476568a8..ea49767ea 100644 --- a/crates/crust-core/tests/data/import_baselines/no_frame_usda-06c9736b1ee41555-1.digest +++ b/crates/crust-core/tests/data/import_baselines/no_frame_usda-06c9736b1ee41555-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4602678819172646912], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4602678819172646912], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/no_kernel_usda-250e185a51aff6c5-1.digest b/crates/crust-core/tests/data/import_baselines/no_kernel_usda-250e185a51aff6c5-1.digest index 4c376c767..4af6ead9d 100644 --- a/crates/crust-core/tests/data/import_baselines/no_kernel_usda-250e185a51aff6c5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/no_kernel_usda-250e185a51aff6c5-1.digest @@ -25,4 +25,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/no_products_usda-b2f39aa3f795faa2-1.digest b/crates/crust-core/tests/data/import_baselines/no_products_usda-b2f39aa3f795faa2-1.digest index b2b11f271..e8f0f0c84 100644 --- a/crates/crust-core/tests/data/import_baselines/no_products_usda-b2f39aa3f795faa2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/no_products_usda-b2f39aa3f795faa2-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/no_var_authored_usda-7c630c4e6b264297-1.digest b/crates/crust-core/tests/data/import_baselines/no_var_authored_usda-7c630c4e6b264297-1.digest index e7bc829bc..e8e49cb5d 100644 --- a/crates/crust-core/tests/data/import_baselines/no_var_authored_usda-7c630c4e6b264297-1.digest +++ b/crates/crust-core/tests/data/import_baselines/no_var_authored_usda-7c630c4e6b264297-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/no_var_bare_usda-0f6834e5d7411efd-1.digest b/crates/crust-core/tests/data/import_baselines/no_var_bare_usda-0f6834e5d7411efd-1.digest index 63a82e2fb..f3b8c01a3 100644 --- a/crates/crust-core/tests/data/import_baselines/no_var_bare_usda-0f6834e5d7411efd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/no_var_bare_usda-0f6834e5d7411efd-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/non_finite_usda-b38223b4cd532638-1.digest b/crates/crust-core/tests/data/import_baselines/non_finite_usda-b38223b4cd532638-1.digest index 0c88cb9b9..7ed742b50 100644 --- a/crates/crust-core/tests/data/import_baselines/non_finite_usda-b38223b4cd532638-1.digest +++ b/crates/crust-core/tests/data/import_baselines/non_finite_usda-b38223b4cd532638-1.digest @@ -25,4 +25,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/none_usda-3500dce365c976fb-1.digest b/crates/crust-core/tests/data/import_baselines/none_usda-3500dce365c976fb-1.digest index f8d02644e..abf15f078 100644 --- a/crates/crust-core/tests/data/import_baselines/none_usda-3500dce365c976fb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/none_usda-3500dce365c976fb-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/none_usda-8ca1039ef6a1af13-1.digest b/crates/crust-core/tests/data/import_baselines/none_usda-8ca1039ef6a1af13-1.digest index 497dfe8a5..20bc46597 100644 --- a/crates/crust-core/tests/data/import_baselines/none_usda-8ca1039ef6a1af13-1.digest +++ b/crates/crust-core/tests/data/import_baselines/none_usda-8ca1039ef6a1af13-1.digest @@ -20,4 +20,4 @@ provenance light /World/Visible: LightOrigin { index: 1, geoms: 0..1 } provenance geometry 0..1: /World/Visible provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/none_usda-b2626a5c29f30d06-1.digest b/crates/crust-core/tests/data/import_baselines/none_usda-b2626a5c29f30d06-1.digest index 37cbe3510..ce0cfb8f3 100644 --- a/crates/crust-core/tests/data/import_baselines/none_usda-b2626a5c29f30d06-1.digest +++ b/crates/crust-core/tests/data/import_baselines/none_usda-b2626a5c29f30d06-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/norm_off_cylinder_usda-cad3a8a0bec58113-1.digest b/crates/crust-core/tests/data/import_baselines/norm_off_cylinder_usda-cad3a8a0bec58113-1.digest index 2c4ba987c..45ddaebb5 100644 --- a/crates/crust-core/tests/data/import_baselines/norm_off_cylinder_usda-cad3a8a0bec58113-1.digest +++ b/crates/crust-core/tests/data/import_baselines/norm_off_cylinder_usda-cad3a8a0bec58113-1.digest @@ -18,4 +18,4 @@ provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/L provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/norm_off_disk_usda-d4ac49b171982a5d-1.digest b/crates/crust-core/tests/data/import_baselines/norm_off_disk_usda-d4ac49b171982a5d-1.digest index 3f8c64aa0..0c70ab7e0 100644 --- a/crates/crust-core/tests/data/import_baselines/norm_off_disk_usda-d4ac49b171982a5d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/norm_off_disk_usda-d4ac49b171982a5d-1.digest @@ -18,4 +18,4 @@ provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/L provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/norm_off_rect_usda-7ca0616652c56bb1-1.digest b/crates/crust-core/tests/data/import_baselines/norm_off_rect_usda-7ca0616652c56bb1-1.digest index 294c009d5..9cbbcf5d4 100644 --- a/crates/crust-core/tests/data/import_baselines/norm_off_rect_usda-7ca0616652c56bb1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/norm_off_rect_usda-7ca0616652c56bb1-1.digest @@ -18,4 +18,4 @@ provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/L provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/norm_off_sphere_usda-0abd6bba11da485f-1.digest b/crates/crust-core/tests/data/import_baselines/norm_off_sphere_usda-0abd6bba11da485f-1.digest index 7f7c7b1e9..c1f20dec2 100644 --- a/crates/crust-core/tests/data/import_baselines/norm_off_sphere_usda-0abd6bba11da485f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/norm_off_sphere_usda-0abd6bba11da485f-1.digest @@ -18,4 +18,4 @@ provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/L provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/norm_on_cylinder_usda-f3dd54fd2e0d1929-1.digest b/crates/crust-core/tests/data/import_baselines/norm_on_cylinder_usda-f3dd54fd2e0d1929-1.digest index 3dbc99207..baca84e02 100644 --- a/crates/crust-core/tests/data/import_baselines/norm_on_cylinder_usda-f3dd54fd2e0d1929-1.digest +++ b/crates/crust-core/tests/data/import_baselines/norm_on_cylinder_usda-f3dd54fd2e0d1929-1.digest @@ -18,4 +18,4 @@ provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/L provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/norm_on_disk_usda-80da988892a29bff-1.digest b/crates/crust-core/tests/data/import_baselines/norm_on_disk_usda-80da988892a29bff-1.digest index c77a7022e..e4aea7c10 100644 --- a/crates/crust-core/tests/data/import_baselines/norm_on_disk_usda-80da988892a29bff-1.digest +++ b/crates/crust-core/tests/data/import_baselines/norm_on_disk_usda-80da988892a29bff-1.digest @@ -18,4 +18,4 @@ provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/L provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/norm_on_rect_usda-0fb0cae5dd5fa17f-1.digest b/crates/crust-core/tests/data/import_baselines/norm_on_rect_usda-0fb0cae5dd5fa17f-1.digest index b23844d06..710edf5d5 100644 --- a/crates/crust-core/tests/data/import_baselines/norm_on_rect_usda-0fb0cae5dd5fa17f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/norm_on_rect_usda-0fb0cae5dd5fa17f-1.digest @@ -18,4 +18,4 @@ provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/L provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/norm_on_sphere_usda-a4e34a4e4682e3b5-1.digest b/crates/crust-core/tests/data/import_baselines/norm_on_sphere_usda-a4e34a4e4682e3b5-1.digest index a31a1493e..d1712bdfc 100644 --- a/crates/crust-core/tests/data/import_baselines/norm_on_sphere_usda-a4e34a4e4682e3b5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/norm_on_sphere_usda-a4e34a4e4682e3b5-1.digest @@ -18,4 +18,4 @@ provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/L provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/normals_usda-eb98f1adc17331b3-1.digest b/crates/crust-core/tests/data/import_baselines/normals_usda-eb98f1adc17331b3-1.digest index c6dfa2063..eb6187f62 100644 --- a/crates/crust-core/tests/data/import_baselines/normals_usda-eb98f1adc17331b3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/normals_usda-eb98f1adc17331b3-1.digest @@ -22,4 +22,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 26340 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1313731086437247865, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nothing_usda-05a76e84b550abac-1.digest b/crates/crust-core/tests/data/import_baselines/nothing_usda-05a76e84b550abac-1.digest index cb2bc95e0..78df2de92 100644 --- a/crates/crust-core/tests/data/import_baselines/nothing_usda-05a76e84b550abac-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nothing_usda-05a76e84b550abac-1.digest @@ -27,4 +27,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12300483381263303556, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nurbs_clean_usda-362cea70cf67e6cc-1.digest b/crates/crust-core/tests/data/import_baselines/nurbs_clean_usda-362cea70cf67e6cc-1.digest index f223c70b8..4df7f1569 100644 --- a/crates/crust-core/tests/data/import_baselines/nurbs_clean_usda-362cea70cf67e6cc-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nurbs_clean_usda-362cea70cf67e6cc-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/whisker provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nurbs_empty_usda-af6c06cf5e078823-1.digest b/crates/crust-core/tests/data/import_baselines/nurbs_empty_usda-af6c06cf5e078823-1.digest index 40e803120..2f9db850c 100644 --- a/crates/crust-core/tests/data/import_baselines/nurbs_empty_usda-af6c06cf5e078823-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nurbs_empty_usda-af6c06cf5e078823-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nurbs_full_usda-ee811943aa635f36-1.digest b/crates/crust-core/tests/data/import_baselines/nurbs_full_usda-ee811943aa635f36-1.digest index 490cb68a4..8bf8429ab 100644 --- a/crates/crust-core/tests/data/import_baselines/nurbs_full_usda-ee811943aa635f36-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nurbs_full_usda-ee811943aa635f36-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /W/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nurbs_half_usda-26730abe8461e1ee-1.digest b/crates/crust-core/tests/data/import_baselines/nurbs_half_usda-26730abe8461e1ee-1.digest index 88ca22374..099dcec54 100644 --- a/crates/crust-core/tests/data/import_baselines/nurbs_half_usda-26730abe8461e1ee-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nurbs_half_usda-26730abe8461e1ee-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /W/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nurbs_malformed_usda-edaffca17525a0db-1.digest b/crates/crust-core/tests/data/import_baselines/nurbs_malformed_usda-edaffca17525a0db-1.digest index d4c5d5b91..35b5e335a 100644 --- a/crates/crust-core/tests/data/import_baselines/nurbs_malformed_usda-edaffca17525a0db-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nurbs_malformed_usda-edaffca17525a0db-1.digest @@ -19,4 +19,4 @@ provenance geometry 0..1: /World/zero_weights provenance geometry 1..2: /World/basis_no_widths provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nurbs_refused_usda-2cd12f986b06b3a5-1.digest b/crates/crust-core/tests/data/import_baselines/nurbs_refused_usda-2cd12f986b06b3a5-1.digest index d173c7ab0..d9ffd62c3 100644 --- a/crates/crust-core/tests/data/import_baselines/nurbs_refused_usda-2cd12f986b06b3a5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/nurbs_refused_usda-2cd12f986b06b3a5-1.digest @@ -18,4 +18,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/rational provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/on_camera_usda-0e1653405c0b04b8-1.digest b/crates/crust-core/tests/data/import_baselines/on_camera_usda-0e1653405c0b04b8-1.digest index 2654dd5b0..5322d352c 100644 --- a/crates/crust-core/tests/data/import_baselines/on_camera_usda-0e1653405c0b04b8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/on_camera_usda-0e1653405c0b04b8-1.digest @@ -27,4 +27,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/once_direct_usda-87536582b2725522-1.digest b/crates/crust-core/tests/data/import_baselines/once_direct_usda-87536582b2725522-1.digest index 4d05b0bdc..e608d7949 100644 --- a/crates/crust-core/tests/data/import_baselines/once_direct_usda-87536582b2725522-1.digest +++ b/crates/crust-core/tests/data/import_baselines/once_direct_usda-87536582b2725522-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13487480004083563611, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/once_instanced_usda-cfe757ff670cf1a4-1.digest b/crates/crust-core/tests/data/import_baselines/once_instanced_usda-cfe757ff670cf1a4-1.digest index 0f0c3ec84..7200f2114 100644 --- a/crates/crust-core/tests/data/import_baselines/once_instanced_usda-cfe757ff670cf1a4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/once_instanced_usda-cfe757ff670cf1a4-1.digest @@ -16,4 +16,4 @@ provenance geometry 0..1: /W/Placed provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13487480004083563611, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/opacity_usda-18ffcc13eb92677a-1.digest b/crates/crust-core/tests/data/import_baselines/opacity_usda-18ffcc13eb92677a-1.digest index 118140c95..d6ed2b93f 100644 --- a/crates/crust-core/tests/data/import_baselines/opacity_usda-18ffcc13eb92677a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/opacity_usda-18ffcc13eb92677a-1.digest @@ -44,4 +44,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17114 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10030907131019489195, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 5 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-0f7c1eaf15ef6726-1.digest b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-0f7c1eaf15ef6726-1.digest index 77d99adc4..b7849bb10 100644 --- a/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-0f7c1eaf15ef6726-1.digest +++ b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-0f7c1eaf15ef6726-1.digest @@ -46,4 +46,4 @@ provenance geometry 8..9: /World/Scene/sphere_chrome provenance geometry 9..10: /World/Scene/ground provenance spheres: [2, 3, 4, 5, 6, 7, 8, 9] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-1.digest b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-1.digest index 0fe558ee6..200e34c08 100644 --- a/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-1.digest +++ b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-1.digest @@ -47,4 +47,4 @@ provenance geometry 8..9: /World/Scene/sphere_chrome provenance geometry 9..10: /World/Scene/ground provenance spheres: [2, 3, 4, 5, 6, 7, 8, 9] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-2.digest b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-2.digest index 0fe558ee6..200e34c08 100644 --- a/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-2.digest +++ b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-1dca66ecebc9d919-2.digest @@ -47,4 +47,4 @@ provenance geometry 8..9: /World/Scene/sphere_chrome provenance geometry 9..10: /World/Scene/ground provenance spheres: [2, 3, 4, 5, 6, 7, 8, 9] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-501b45e8f6131d21-1.digest b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-501b45e8f6131d21-1.digest index 0fe558ee6..200e34c08 100644 --- a/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-501b45e8f6131d21-1.digest +++ b/crates/crust-core/tests/data/import_baselines/openpbr_showcase_usda-501b45e8f6131d21-1.digest @@ -47,4 +47,4 @@ provenance geometry 8..9: /World/Scene/sphere_chrome provenance geometry 9..10: /World/Scene/ground provenance spheres: [2, 3, 4, 5, 6, 7, 8, 9] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/openpbr_usda-876563da4aa0a57a-1.digest b/crates/crust-core/tests/data/import_baselines/openpbr_usda-876563da4aa0a57a-1.digest index d4739a027..a19519fc0 100644 --- a/crates/crust-core/tests/data/import_baselines/openpbr_usda-876563da4aa0a57a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/openpbr_usda-876563da4aa0a57a-1.digest @@ -17,4 +17,4 @@ provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/other_lookdev_usda-31ecdc884f3fb603-1.digest b/crates/crust-core/tests/data/import_baselines/other_lookdev_usda-31ecdc884f3fb603-1.digest index 9aad77d5d..880b3978d 100644 --- a/crates/crust-core/tests/data/import_baselines/other_lookdev_usda-31ecdc884f3fb603-1.digest +++ b/crates/crust-core/tests/data/import_baselines/other_lookdev_usda-31ecdc884f3fb603-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/other_op_usda-7a2444b60f22a636-1.digest b/crates/crust-core/tests/data/import_baselines/other_op_usda-7a2444b60f22a636-1.digest index a2e5d7def..945462ad2 100644 --- a/crates/crust-core/tests/data/import_baselines/other_op_usda-7a2444b60f22a636-1.digest +++ b/crates/crust-core/tests/data/import_baselines/other_op_usda-7a2444b60f22a636-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18140786555293703923, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/overflow_usda-c7dbcb2b55d9a450-1.digest b/crates/crust-core/tests/data/import_baselines/overflow_usda-c7dbcb2b55d9a450-1.digest index e60d6e505..7d18127f8 100644 --- a/crates/crust-core/tests/data/import_baselines/overflow_usda-c7dbcb2b55d9a450-1.digest +++ b/crates/crust-core/tests/data/import_baselines/overflow_usda-c7dbcb2b55d9a450-1.digest @@ -199,4 +199,4 @@ provenance geometry 59..60: /World/L29 provenance geometry 60..61: /World/Free provenance spheres: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/override_usda-b67a66c0201ba59a-1.digest b/crates/crust-core/tests/data/import_baselines/override_usda-b67a66c0201ba59a-1.digest index 96468d971..8832f3f26 100644 --- a/crates/crust-core/tests/data/import_baselines/override_usda-b67a66c0201ba59a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/override_usda-b67a66c0201ba59a-1.digest @@ -33,4 +33,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17119 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1739488954094729910, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/overrides_usda-e08388bc2f33304d-1.digest b/crates/crust-core/tests/data/import_baselines/overrides_usda-e08388bc2f33304d-1.digest index fc46cc533..7367edd2a 100644 --- a/crates/crust-core/tests/data/import_baselines/overrides_usda-e08388bc2f33304d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/overrides_usda-e08388bc2f33304d-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/partial_link_usda-0b6b5eacc86557dc-1.digest b/crates/crust-core/tests/data/import_baselines/partial_link_usda-0b6b5eacc86557dc-1.digest index d949ed036..8e6cf3a42 100644 --- a/crates/crust-core/tests/data/import_baselines/partial_link_usda-0b6b5eacc86557dc-1.digest +++ b/crates/crust-core/tests/data/import_baselines/partial_link_usda-0b6b5eacc86557dc-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/B provenance geometry 1..2: /World/A provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/pass_payload_usda-08d0e4051511c08a-1.digest b/crates/crust-core/tests/data/import_baselines/pass_payload_usda-08d0e4051511c08a-1.digest index 9b6b7c939..c495c0c3f 100644 --- a/crates/crust-core/tests/data/import_baselines/pass_payload_usda-08d0e4051511c08a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/pass_payload_usda-08d0e4051511c08a-1.digest @@ -21,4 +21,4 @@ provenance geometry 1..2: /World/Prop1 provenance geometry 2..3: /World/Prop0 provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/fromPayload"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/fromPayload"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-0b80861de0309489-1.digest b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-0b80861de0309489-1.digest index ca438db60..dcff1c5b1 100644 --- a/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-0b80861de0309489-1.digest +++ b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-0b80861de0309489-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/charDome"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/charDome"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-bdae79d96585e6fd-1.digest b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-bdae79d96585e6fd-1.digest index cd3e1f429..10b288e3b 100644 --- a/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-bdae79d96585e6fd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-bdae79d96585e6fd-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/dome"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/dome"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-c05e0c1783414e94-1.digest b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-c05e0c1783414e94-1.digest index cfb293ba1..4dd00666a 100644 --- a/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-c05e0c1783414e94-1.digest +++ b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-c05e0c1783414e94-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/props"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/props"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-e9d62fba57fc58f7-1.digest b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-e9d62fba57fc58f7-1.digest index f0ab600d0..7a796c19f 100644 --- a/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-e9d62fba57fc58f7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/passes_dome_twice_usda-e9d62fba57fc58f7-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-1.digest b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-1.digest index f0998465e..95dce9149 100644 --- a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-1.digest +++ b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/propsBack"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/propsBack"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-2.digest b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-2.digest index f0998465e..95dce9149 100644 --- a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-2.digest +++ b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-5e69798956b67766-2.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/propsBack"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/propsBack"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-1.digest b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-1.digest index 29e0f2e1c..30c87b6a8 100644 --- a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-2.digest b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-2.digest index 29e0f2e1c..30c87b6a8 100644 --- a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-2.digest +++ b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-ad65d77e744f59b2-2.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-1.digest b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-1.digest index 6f62f7938..704d18515 100644 --- a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-1.digest +++ b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-2.digest b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-2.digest index 6f62f7938..704d18515 100644 --- a/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-2.digest +++ b/crates/crust-core/tests/data/import_baselines/passes_hidden_in_back_usda-e4f2c0c97dbe1a55-2.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/passes_usda-562a5b3a04949a47-1.digest b/crates/crust-core/tests/data/import_baselines/passes_usda-562a5b3a04949a47-1.digest index f13f0eda2..2d50ef508 100644 --- a/crates/crust-core/tests/data/import_baselines/passes_usda-562a5b3a04949a47-1.digest +++ b/crates/crust-core/tests/data/import_baselines/passes_usda-562a5b3a04949a47-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/a"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/a"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/passes_usda-aaa6ef1b16e7d6b6-1.digest b/crates/crust-core/tests/data/import_baselines/passes_usda-aaa6ef1b16e7d6b6-1.digest index e7db9292e..48f780d8a 100644 --- a/crates/crust-core/tests/data/import_baselines/passes_usda-aaa6ef1b16e7d6b6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/passes_usda-aaa6ef1b16e7d6b6-1.digest @@ -24,4 +24,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/b"), keep_geometry: false }, render_settings: Some("/Render/other"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/b"), keep_geometry: false }, render_settings: Some("/Render/other"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/payload_camera_usda-ff33ccc1b50862a6-1.digest b/crates/crust-core/tests/data/import_baselines/payload_camera_usda-ff33ccc1b50862a6-1.digest index 67fbd7cbb..1b511e554 100644 --- a/crates/crust-core/tests/data/import_baselines/payload_camera_usda-ff33ccc1b50862a6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/payload_camera_usda-ff33ccc1b50862a6-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/payload_links_usda-f941f0e5247354e6-1.digest b/crates/crust-core/tests/data/import_baselines/payload_links_usda-f941f0e5247354e6-1.digest index 1be7882ae..fcc33dd9b 100644 --- a/crates/crust-core/tests/data/import_baselines/payload_links_usda-f941f0e5247354e6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/payload_links_usda-f941f0e5247354e6-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/photometric_usda-644b1d1ebbe4cb72-1.digest b/crates/crust-core/tests/data/import_baselines/photometric_usda-644b1d1ebbe4cb72-1.digest index 2351e1961..02f195571 100644 --- a/crates/crust-core/tests/data/import_baselines/photometric_usda-644b1d1ebbe4cb72-1.digest +++ b/crates/crust-core/tests/data/import_baselines/photometric_usda-644b1d1ebbe4cb72-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/pinhole_unauthored_usda-ecde60dead7180c2-1.digest b/crates/crust-core/tests/data/import_baselines/pinhole_unauthored_usda-ecde60dead7180c2-1.digest index b34928a2f..8d6f21b9a 100644 --- a/crates/crust-core/tests/data/import_baselines/pinhole_unauthored_usda-ecde60dead7180c2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/pinhole_unauthored_usda-ecde60dead7180c2-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/pinhole_zero_usda-9f676d1852dc7168-1.digest b/crates/crust-core/tests/data/import_baselines/pinhole_zero_usda-9f676d1852dc7168-1.digest index c056990f9..b601b3b44 100644 --- a/crates/crust-core/tests/data/import_baselines/pinhole_zero_usda-9f676d1852dc7168-1.digest +++ b/crates/crust-core/tests/data/import_baselines/pinhole_zero_usda-9f676d1852dc7168-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/pivot_stack_usda-eabcdb11552ea0a9-1.digest b/crates/crust-core/tests/data/import_baselines/pivot_stack_usda-eabcdb11552ea0a9-1.digest index 4245b481b..9b32a3fc6 100644 --- a/crates/crust-core/tests/data/import_baselines/pivot_stack_usda-eabcdb11552ea0a9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/pivot_stack_usda-eabcdb11552ea0a9-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8649346730649907223, n_points: 3, n_indices: 3, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/pixel_filter_usda-c618794e70f5ffe3-1.digest b/crates/crust-core/tests/data/import_baselines/pixel_filter_usda-c618794e70f5ffe3-1.digest index 663ad141d..0572e6802 100644 --- a/crates/crust-core/tests/data/import_baselines/pixel_filter_usda-c618794e70f5ffe3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/pixel_filter_usda-c618794e70f5ffe3-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /W/s provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/place_once_usda-66a0c16b42b4539e-1.digest b/crates/crust-core/tests/data/import_baselines/place_once_usda-66a0c16b42b4539e-1.digest index 2decc32ec..0b0fa8cbe 100644 --- a/crates/crust-core/tests/data/import_baselines/place_once_usda-66a0c16b42b4539e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/place_once_usda-66a0c16b42b4539e-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/place_twice_usda-c4ce4deb59d3727f-1.digest b/crates/crust-core/tests/data/import_baselines/place_twice_usda-c4ce4deb59d3727f-1.digest index 5fd51caf0..d6a73b897 100644 --- a/crates/crust-core/tests/data/import_baselines/place_twice_usda-c4ce4deb59d3727f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/place_twice_usda-c4ce4deb59d3727f-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-000d21c7a8ef61e5-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-000d21c7a8ef61e5-1.digest index 36a15a1ec..23f242626 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-000d21c7a8ef61e5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-000d21c7a8ef61e5-1.digest @@ -579,4 +579,4 @@ provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002 provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-0ba3af4ffa595294-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-0ba3af4ffa595294-1.digest index 3b0152e4e..019f6cc8f 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-0ba3af4ffa595294-1.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-0ba3af4ffa595294-1.digest @@ -582,4 +582,4 @@ provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1400 provenance mesh slot 11: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-503a8ea6d52670c0-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-503a8ea6d52670c0-1.digest index ba553ef45..39ac096fd 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-503a8ea6d52670c0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-503a8ea6d52670c0-1.digest @@ -75,4 +75,4 @@ provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002 provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-63f0ce074fafa44d-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-63f0ce074fafa44d-1.digest index f0fefcefa..40c63c33c 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-63f0ce074fafa44d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-63f0ce074fafa44d-1.digest @@ -75,4 +75,4 @@ provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002 provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-6fa96be933bc04d8-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-6fa96be933bc04d8-1.digest index 2a08760cc..a5729b95a 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-6fa96be933bc04d8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-6fa96be933bc04d8-1.digest @@ -681,4 +681,4 @@ provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002 provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-7ad6f5aa95ba8499-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-7ad6f5aa95ba8499-1.digest index ba553ef45..39ac096fd 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-7ad6f5aa95ba8499-1.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-7ad6f5aa95ba8499-1.digest @@ -75,4 +75,4 @@ provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002 provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-1.digest index ec4a141bb..43ce77028 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-1.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-1.digest @@ -582,4 +582,4 @@ provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1400 provenance mesh slot 11: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-2.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-2.digest index ec4a141bb..43ce77028 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-2.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-7c35981b427daf53-2.digest @@ -582,4 +582,4 @@ provenance mesh slot 10: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1400 provenance mesh slot 11: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-85cdaaa611ddcfb8-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-85cdaaa611ddcfb8-1.digest index ba553ef45..39ac096fd 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-85cdaaa611ddcfb8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-85cdaaa611ddcfb8-1.digest @@ -75,4 +75,4 @@ provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002 provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-94944664ab7e307d-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-94944664ab7e307d-1.digest index ba553ef45..39ac096fd 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-94944664ab7e307d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-94944664ab7e307d-1.digest @@ -75,4 +75,4 @@ provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002 provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-97fbc0f3fbe2c018-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-97fbc0f3fbe2c018-1.digest index ba553ef45..39ac096fd 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-97fbc0f3fbe2c018-1.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-97fbc0f3fbe2c018-1.digest @@ -75,4 +75,4 @@ provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002 provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-b9e166293d4eb014-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-b9e166293d4eb014-1.digest index ba553ef45..39ac096fd 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-b9e166293d4eb014-1.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-b9e166293d4eb014-1.digest @@ -75,4 +75,4 @@ provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002 provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-1.digest index ba553ef45..39ac096fd 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-1.digest @@ -75,4 +75,4 @@ provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002 provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-2.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-2.digest index ba553ef45..39ac096fd 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-2.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-2.digest @@ -75,4 +75,4 @@ provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002 provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-3.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-3.digest index ba553ef45..39ac096fd 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-3.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-c1f420d2f8074d9e-3.digest @@ -75,4 +75,4 @@ provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002 provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-c316df83883a2080-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-c316df83883a2080-1.digest index ba553ef45..39ac096fd 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-c316df83883a2080-1.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-c316df83883a2080-1.digest @@ -75,4 +75,4 @@ provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002 provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-d17077acbffaca45-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-d17077acbffaca45-1.digest index ba553ef45..39ac096fd 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-d17077acbffaca45-1.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-d17077acbffaca45-1.digest @@ -75,4 +75,4 @@ provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002 provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-d4ecee5c0312cf96-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-d4ecee5c0312cf96-1.digest index ba553ef45..39ac096fd 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-d4ecee5c0312cf96-1.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-d4ecee5c0312cf96-1.digest @@ -75,4 +75,4 @@ provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002 provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-dc7b9c4f6886cafa-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-dc7b9c4f6886cafa-1.digest index ba553ef45..39ac096fd 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-dc7b9c4f6886cafa-1.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-dc7b9c4f6886cafa-1.digest @@ -75,4 +75,4 @@ provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002 provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placed_usda-f5c13f6f8bb66ab5-1.digest b/crates/crust-core/tests/data/import_baselines/placed_usda-f5c13f6f8bb66ab5-1.digest index 7dbe0a167..c37a5fae9 100644 --- a/crates/crust-core/tests/data/import_baselines/placed_usda-f5c13f6f8bb66ab5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/placed_usda-f5c13f6f8bb66ab5-1.digest @@ -177,4 +177,4 @@ provenance mesh slot 8: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002 provenance mesh slot 9: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14095911038168715313, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/placements_usda-275bfd0cb4688e5d-1.digest b/crates/crust-core/tests/data/import_baselines/placements_usda-275bfd0cb4688e5d-1.digest index 2a63ad401..ed56e4820 100644 --- a/crates/crust-core/tests/data/import_baselines/placements_usda-275bfd0cb4688e5d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/placements_usda-275bfd0cb4688e5d-1.digest @@ -28,4 +28,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18409 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3180332025478702472, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plane_usda-e5035e45dccaf24c-1.digest b/crates/crust-core/tests/data/import_baselines/plane_usda-e5035e45dccaf24c-1.digest index af55513e2..21a3cd43a 100644 --- a/crates/crust-core/tests/data/import_baselines/plane_usda-e5035e45dccaf24c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plane_usda-e5035e45dccaf24c-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/planes_usda-b941e449ca4a031a-1.digest b/crates/crust-core/tests/data/import_baselines/planes_usda-b941e449ca4a031a-1.digest index 0e3ce580b..992d069d1 100644 --- a/crates/crust-core/tests/data/import_baselines/planes_usda-b941e449ca4a031a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/planes_usda-b941e449ca4a031a-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_1_bsdf_1_usda-bd800d4fcb330be2-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_1_bsdf_1_usda-bd800d4fcb330be2-1.digest index a4ed0d53e..20470bf47 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_0_1_bsdf_1_usda-bd800d4fcb330be2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_1_bsdf_1_usda-bd800d4fcb330be2-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_1_light_1_usda-a03210c9831fba26-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_1_light_1_usda-a03210c9831fba26-1.digest index 11b6cf455..a90e73ce4 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_0_1_light_1_usda-a03210c9831fba26-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_1_light_1_usda-a03210c9831fba26-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_1_power_1_usda-482542fae980bf52-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_1_power_1_usda-482542fae980bf52-1.digest index 9306d61bf..725802db0 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_0_1_power_1_usda-482542fae980bf52-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_1_power_1_usda-482542fae980bf52-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-36e5cb22b2676a41-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-36e5cb22b2676a41-1.digest index 4b5678fc5..d3a62be2e 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-36e5cb22b2676a41-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-36e5cb22b2676a41-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-d38160b2be22e70c-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-d38160b2be22e70c-1.digest index 4b5678fc5..d3a62be2e 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-d38160b2be22e70c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_1_usda-d38160b2be22e70c-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_2_usda-78a7411a4858bc6b-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_2_usda-78a7411a4858bc6b-1.digest index 3c86e9d7c..98c662fff 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_2_usda-78a7411a4858bc6b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_2_usda-78a7411a4858bc6b-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_3_usda-f81a4b161903a8f2-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_3_usda-f81a4b161903a8f2-1.digest index 0c415cdb6..09547cee7 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_3_usda-f81a4b161903a8f2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_3_usda-f81a4b161903a8f2-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_4_usda-87a5b5e826a38a61-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_4_usda-87a5b5e826a38a61-1.digest index f1bfd3c40..2445c3e5d 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_4_usda-87a5b5e826a38a61-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_bsdf_4_usda-87a5b5e826a38a61-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-135d2f963daf2551-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-135d2f963daf2551-1.digest index 3710a12b6..e96e763fb 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-135d2f963daf2551-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-135d2f963daf2551-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-cf1431b5a2f0391c-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-cf1431b5a2f0391c-1.digest index 3710a12b6..e96e763fb 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-cf1431b5a2f0391c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_1_usda-cf1431b5a2f0391c-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_2_usda-c1e873bea9886ca9-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_2_usda-c1e873bea9886ca9-1.digest index 493c5d8f3..9fde13139 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_2_usda-c1e873bea9886ca9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_2_usda-c1e873bea9886ca9-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_3_usda-0dc30546dc7303fa-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_3_usda-0dc30546dc7303fa-1.digest index a5dec518b..3e202a270 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_3_usda-0dc30546dc7303fa-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_3_usda-0dc30546dc7303fa-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_4_usda-306836af9dcd76c7-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_4_usda-306836af9dcd76c7-1.digest index e04698482..7cbef9407 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_4_usda-306836af9dcd76c7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_light_4_usda-306836af9dcd76c7-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-aeace9cae6e95285-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-aeace9cae6e95285-1.digest index 71ee29134..999346796 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-aeace9cae6e95285-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-aeace9cae6e95285-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-f2feafce67b9cc18-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-f2feafce67b9cc18-1.digest index 71ee29134..999346796 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-f2feafce67b9cc18-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_1_usda-f2feafce67b9cc18-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_2_usda-9558069a3a6cb6c1-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_2_usda-9558069a3a6cb6c1-1.digest index c55cd1690..9eb91b928 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_2_usda-9558069a3a6cb6c1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_2_usda-9558069a3a6cb6c1-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_3_usda-848bb8619ed104b2-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_3_usda-848bb8619ed104b2-1.digest index e0bcaed9d..f67f44626 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_3_usda-848bb8619ed104b2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_3_usda-848bb8619ed104b2-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_4_usda-13781e826c793feb-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_4_usda-13781e826c793feb-1.digest index 8a4878c71..d50fd252e 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_4_usda-13781e826c793feb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_0_25_3_power_4_usda-13781e826c793feb-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_1_0_bsdf_1_usda-7392b4eece3d4ffa-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_1_0_bsdf_1_usda-7392b4eece3d4ffa-1.digest index 4ed19de1d..12e345dcc 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_1_0_bsdf_1_usda-7392b4eece3d4ffa-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_1_0_bsdf_1_usda-7392b4eece3d4ffa-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_1_0_light_1_usda-e29b88fff3b5eede-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_1_0_light_1_usda-e29b88fff3b5eede-1.digest index 122b4cba8..a10ee8176 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_1_0_light_1_usda-e29b88fff3b5eede-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_1_0_light_1_usda-e29b88fff3b5eede-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_1_0_power_1_usda-db7be84c0c913b8a-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_1_0_power_1_usda-db7be84c0c913b8a-1.digest index 4314665b4..34a965259 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_1_0_power_1_usda-db7be84c0c913b8a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_1_0_power_1_usda-db7be84c0c913b8a-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_1_1_bsdf_1_usda-1a655ee8a457375b-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_1_1_bsdf_1_usda-1a655ee8a457375b-1.digest index 8a5083b38..f804bae70 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_1_1_bsdf_1_usda-1a655ee8a457375b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_1_1_bsdf_1_usda-1a655ee8a457375b-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_1_1_light_1_usda-d608d0096c4c9293-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_1_1_light_1_usda-d608d0096c4c9293-1.digest index 190e6c935..74c3f3e78 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_1_1_light_1_usda-d608d0096c4c9293-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_1_1_light_1_usda-d608d0096c4c9293-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plastic_1_1_power_1_usda-dad1612ee907e657-1.digest b/crates/crust-core/tests/data/import_baselines/plastic_1_1_power_1_usda-dad1612ee907e657-1.digest index 98e93d50e..5a1e09ece 100644 --- a/crates/crust-core/tests/data/import_baselines/plastic_1_1_power_1_usda-dad1612ee907e657-1.digest +++ b/crates/crust-core/tests/data/import_baselines/plastic_1_1_power_1_usda-dad1612ee907e657-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/precomp_C_usda-ceae07fa5339bc4e-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_C_usda-ceae07fa5339bc4e-1.digest index ef811dc47..f479906cd 100644 --- a/crates/crust-core/tests/data/import_baselines/precomp_C_usda-ceae07fa5339bc4e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/precomp_C_usda-ceae07fa5339bc4e-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 30363 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/precomp_look_final_usda-46848a8dcf6250e4-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_look_final_usda-46848a8dcf6250e4-1.digest index e096115be..fa9fcc301 100644 --- a/crates/crust-core/tests/data/import_baselines/precomp_look_final_usda-46848a8dcf6250e4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/precomp_look_final_usda-46848a8dcf6250e4-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 30363 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/precomp_none_usda-749e88768dbe99b1-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_none_usda-749e88768dbe99b1-1.digest index 126fc80bd..99e1cc3b4 100644 --- a/crates/crust-core/tests/data/import_baselines/precomp_none_usda-749e88768dbe99b1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/precomp_none_usda-749e88768dbe99b1-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 30363 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-33f481698c3a3ce7-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_usda-33f481698c3a3ce7-1.digest index 9e1180c5f..3a735c6fb 100644 --- a/crates/crust-core/tests/data/import_baselines/precomp_usda-33f481698c3a3ce7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-33f481698c3a3ce7-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 30363 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-4339ddf5a07dea17-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_usda-4339ddf5a07dea17-1.digest index 9e1180c5f..3a735c6fb 100644 --- a/crates/crust-core/tests/data/import_baselines/precomp_usda-4339ddf5a07dea17-1.digest +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-4339ddf5a07dea17-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 30363 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-1.digest index dd4b29bef..94235b999 100644 --- a/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 30363 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-2.digest b/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-2.digest index dd4b29bef..94235b999 100644 --- a/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-2.digest +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-886c8d8bef125a6d-2.digest @@ -36,4 +36,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 30363 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-9c591dbe4a6a2374-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_usda-9c591dbe4a6a2374-1.digest index dd4b29bef..94235b999 100644 --- a/crates/crust-core/tests/data/import_baselines/precomp_usda-9c591dbe4a6a2374-1.digest +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-9c591dbe4a6a2374-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 30363 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-d9d1e77cdf9ce71d-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_usda-d9d1e77cdf9ce71d-1.digest index 9e1180c5f..3a735c6fb 100644 --- a/crates/crust-core/tests/data/import_baselines/precomp_usda-d9d1e77cdf9ce71d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-d9d1e77cdf9ce71d-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 30363 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-e1a87b662c5109e8-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_usda-e1a87b662c5109e8-1.digest index 9e1180c5f..3a735c6fb 100644 --- a/crates/crust-core/tests/data/import_baselines/precomp_usda-e1a87b662c5109e8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-e1a87b662c5109e8-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 30363 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/precomp_usda-e28059e8e7dd2fb9-1.digest b/crates/crust-core/tests/data/import_baselines/precomp_usda-e28059e8e7dd2fb9-1.digest index dd4b29bef..94235b999 100644 --- a/crates/crust-core/tests/data/import_baselines/precomp_usda-e28059e8e7dd2fb9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/precomp_usda-e28059e8e7dd2fb9-1.digest @@ -36,4 +36,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 30363 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16146526048079508977, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/preview_plain_usda-56c5917475bdaa40-1.digest b/crates/crust-core/tests/data/import_baselines/preview_plain_usda-56c5917475bdaa40-1.digest index 14d856836..2f2e74a36 100644 --- a/crates/crust-core/tests/data/import_baselines/preview_plain_usda-56c5917475bdaa40-1.digest +++ b/crates/crust-core/tests/data/import_baselines/preview_plain_usda-56c5917475bdaa40-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(5)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("ACEScg") diff --git a/crates/crust-core/tests/data/import_baselines/preview_tagged_usda-21171eef0f915c9d-1.digest b/crates/crust-core/tests/data/import_baselines/preview_tagged_usda-21171eef0f915c9d-1.digest index 5f82bb1ba..0f7af945c 100644 --- a/crates/crust-core/tests/data/import_baselines/preview_tagged_usda-21171eef0f915c9d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/preview_tagged_usda-21171eef0f915c9d-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(5)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("ACEScg") diff --git a/crates/crust-core/tests/data/import_baselines/preview_usda-6fa33b5d399ba28d-1.digest b/crates/crust-core/tests/data/import_baselines/preview_usda-6fa33b5d399ba28d-1.digest index a8b5c3fab..7c2643c02 100644 --- a/crates/crust-core/tests/data/import_baselines/preview_usda-6fa33b5d399ba28d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/preview_usda-6fa33b5d399ba28d-1.digest @@ -17,4 +17,4 @@ provenance material /World/M: MaterialOrigin { slots: [0], displaced: false } provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-1ceba2b5cd7da4fe-1.digest b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-1ceba2b5cd7da4fe-1.digest index 417b3dcbc..cb3eb5440 100644 --- a/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-1ceba2b5cd7da4fe-1.digest +++ b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-1ceba2b5cd7da4fe-1.digest @@ -27,4 +27,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15437 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11794230771889940430, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("uv2", 2), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("uv2", 2), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-1.digest b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-1.digest index c6fc7670a..c423fe864 100644 --- a/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-1.digest +++ b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-1.digest @@ -27,4 +27,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15437 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11794230771889940430, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("uv2", 2), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("uv2", 2), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-2.digest b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-2.digest index c6fc7670a..c423fe864 100644 --- a/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-2.digest +++ b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-b5e76a14b4ccb3db-2.digest @@ -27,4 +27,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15437 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11794230771889940430, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("uv2", 2), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("uv2", 2), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-e0e162475fa824e5-1.digest b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-e0e162475fa824e5-1.digest index c6fc7670a..c423fe864 100644 --- a/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-e0e162475fa824e5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/primvar_aovs_usda-e0e162475fa824e5-1.digest @@ -27,4 +27,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15437 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11794230771889940430, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("uv2", 2), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("uv2", 2), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/primvar_multisampled_usda-774c86244886ea5e-1.digest b/crates/crust-core/tests/data/import_baselines/primvar_multisampled_usda-774c86244886ea5e-1.digest index ef7280f64..d9e0e96bf 100644 --- a/crates/crust-core/tests/data/import_baselines/primvar_multisampled_usda-774c86244886ea5e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/primvar_multisampled_usda-774c86244886ea5e-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/primvar_vars_usda-f6787f7fdf1eebf3-1.digest b/crates/crust-core/tests/data/import_baselines/primvar_vars_usda-f6787f7fdf1eebf3-1.digest index c23ee9edf..01d9b3132 100644 --- a/crates/crust-core/tests/data/import_baselines/primvar_vars_usda-f6787f7fdf1eebf3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/primvar_vars_usda-f6787f7fdf1eebf3-1.digest @@ -17,4 +17,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("uv2", 2), ("displayColor", 3), ("objectId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("uv2", 2), ("displayColor", 3), ("objectId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/procedural_par_square_usda-6cb0d1de356675bd-1.digest b/crates/crust-core/tests/data/import_baselines/procedural_par_square_usda-6cb0d1de356675bd-1.digest index 1ea73e70a..f4e9b6cf6 100644 --- a/crates/crust-core/tests/data/import_baselines/procedural_par_square_usda-6cb0d1de356675bd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/procedural_par_square_usda-6cb0d1de356675bd-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/procedural_par_wide_usda-e65d9f21a141c052-1.digest b/crates/crust-core/tests/data/import_baselines/procedural_par_wide_usda-e65d9f21a141c052-1.digest index f90d448da..0e263cbd5 100644 --- a/crates/crust-core/tests/data/import_baselines/procedural_par_wide_usda-e65d9f21a141c052-1.digest +++ b/crates/crust-core/tests/data/import_baselines/procedural_par_wide_usda-e65d9f21a141c052-1.digest @@ -17,4 +17,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/products_usda-e7ced79f762e48ff-1.digest b/crates/crust-core/tests/data/import_baselines/products_usda-e7ced79f762e48ff-1.digest index a63135f55..fd881654e 100644 --- a/crates/crust-core/tests/data/import_baselines/products_usda-e7ced79f762e48ff-1.digest +++ b/crates/crust-core/tests/data/import_baselines/products_usda-e7ced79f762e48ff-1.digest @@ -18,4 +18,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/prune_usda-3bf02286156e9774-1.digest b/crates/crust-core/tests/data/import_baselines/prune_usda-3bf02286156e9774-1.digest index 60e6bb0de..01ce42b70 100644 --- a/crates/crust-core/tests/data/import_baselines/prune_usda-3bf02286156e9774-1.digest +++ b/crates/crust-core/tests/data/import_baselines/prune_usda-3bf02286156e9774-1.digest @@ -17,4 +17,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/Set provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/invisible"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/invisible"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/prune_usda-d1a6b2f2900a3fc1-1.digest b/crates/crust-core/tests/data/import_baselines/prune_usda-d1a6b2f2900a3fc1-1.digest index 3a95631e2..ed95fe51a 100644 --- a/crates/crust-core/tests/data/import_baselines/prune_usda-d1a6b2f2900a3fc1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/prune_usda-d1a6b2f2900a3fc1-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/Set provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/quiet"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/quiet"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/prune_usda-f5ce85341275f544-1.digest b/crates/crust-core/tests/data/import_baselines/prune_usda-f5ce85341275f544-1.digest index e18ca8fcc..cb9548c77 100644 --- a/crates/crust-core/tests/data/import_baselines/prune_usda-f5ce85341275f544-1.digest +++ b/crates/crust-core/tests/data/import_baselines/prune_usda-f5ce85341275f544-1.digest @@ -17,4 +17,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/Set provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pruning"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pruning"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/ptex_phase_usda-9d5b92d8c597babb-1.digest b/crates/crust-core/tests/data/import_baselines/ptex_phase_usda-9d5b92d8c597babb-1.digest index cc944eb2f..ffb932ead 100644 --- a/crates/crust-core/tests/data/import_baselines/ptex_phase_usda-9d5b92d8c597babb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/ptex_phase_usda-9d5b92d8c597babb-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3224020731942780983, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-c2d1b0153068d224-1.digest b/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-c2d1b0153068d224-1.digest index a09c88e46..0dbc7adfd 100644 --- a/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-c2d1b0153068d224-1.digest +++ b/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-c2d1b0153068d224-1.digest @@ -25,4 +25,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17735 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12903772945727330830, n_points: 9, n_indices: 16, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-1.digest b/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-1.digest index 7ffd8e2e8..3ed378789 100644 --- a/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-1.digest +++ b/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17735 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12903772945727330830, n_points: 9, n_indices: 16, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-2.digest b/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-2.digest index 7ffd8e2e8..3ed378789 100644 --- a/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-2.digest +++ b/crates/crust-core/tests/data/import_baselines/ptex_quads_usda-ded3ea05445ff449-2.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17735 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12903772945727330830, n_points: 9, n_indices: 16, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-1.digest b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-1.digest index d572d3924..7e3362a47 100644 --- a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-1.digest +++ b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-1.digest @@ -34,4 +34,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 94894 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-2.digest b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-2.digest index d572d3924..7e3362a47 100644 --- a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-2.digest +++ b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-2.digest @@ -34,4 +34,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 94894 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-856ac5cdf233a681-1.digest b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-856ac5cdf233a681-1.digest index 398f50115..d53b4966b 100644 --- a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-856ac5cdf233a681-1.digest +++ b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-856ac5cdf233a681-1.digest @@ -34,4 +34,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 94894 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/purpose_usda-bf0c2e782a7f7633-1.digest b/crates/crust-core/tests/data/import_baselines/purpose_usda-bf0c2e782a7f7633-1.digest index c3c3110cd..b0020df73 100644 --- a/crates/crust-core/tests/data/import_baselines/purpose_usda-bf0c2e782a7f7633-1.digest +++ b/crates/crust-core/tests/data/import_baselines/purpose_usda-bf0c2e782a7f7633-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3224020731942780983, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-3eb2626e4111c003-1.digest b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-3eb2626e4111c003-1.digest index 5c2402574..e5dc51331 100644 --- a/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-3eb2626e4111c003-1.digest +++ b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-3eb2626e4111c003-1.digest @@ -23,4 +23,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18140786555293703923, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-744b2066d6ee31b4-1.digest b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-744b2066d6ee31b4-1.digest index 972e3fb5b..a63732b5f 100644 --- a/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-744b2066d6ee31b4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-744b2066d6ee31b4-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8923026245133849666, n_points: 153, n_indices: 512, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-1.digest b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-1.digest index c7eba3b49..4e99dc5d2 100644 --- a/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-1.digest @@ -23,4 +23,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18140786555293703923, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-2.digest b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-2.digest index c7eba3b49..4e99dc5d2 100644 --- a/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-2.digest +++ b/crates/crust-core/tests/data/import_baselines/pxr_displace_usda-aa614afb7e46c6eb-2.digest @@ -23,4 +23,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18140786555293703923, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/quad_usda-8a80e703a52aec63-1.digest b/crates/crust-core/tests/data/import_baselines/quad_usda-8a80e703a52aec63-1.digest index 40167ee44..472a6a547 100644 --- a/crates/crust-core/tests/data/import_baselines/quad_usda-8a80e703a52aec63-1.digest +++ b/crates/crust-core/tests/data/import_baselines/quad_usda-8a80e703a52aec63-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/quiet_curves_usda-c001d1e165c273d4-1.digest b/crates/crust-core/tests/data/import_baselines/quiet_curves_usda-c001d1e165c273d4-1.digest index 889e3648a..eb0666c62 100644 --- a/crates/crust-core/tests/data/import_baselines/quiet_curves_usda-c001d1e165c273d4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/quiet_curves_usda-c001d1e165c273d4-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/Hair provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/quiet_light_usda-c8a2428bb59d472f-1.digest b/crates/crust-core/tests/data/import_baselines/quiet_light_usda-c8a2428bb59d472f-1.digest index da542404a..b5ef8fce2 100644 --- a/crates/crust-core/tests/data/import_baselines/quiet_light_usda-c8a2428bb59d472f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/quiet_light_usda-c8a2428bb59d472f-1.digest @@ -17,4 +17,4 @@ provenance light /World/Lamp: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/Lamp provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/quiet_prototype_usda-4ee6edc155c4ce34-1.digest b/crates/crust-core/tests/data/import_baselines/quiet_prototype_usda-4ee6edc155c4ce34-1.digest index 465aa126a..b245b54a7 100644 --- a/crates/crust-core/tests/data/import_baselines/quiet_prototype_usda-4ee6edc155c4ce34-1.digest +++ b/crates/crust-core/tests/data/import_baselines/quiet_prototype_usda-4ee6edc155c4ce34-1.digest @@ -17,4 +17,4 @@ provenance geometry 0..1: /World/Copy provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/quiet_volume_usda-5e752c5254e3ed36-1.digest b/crates/crust-core/tests/data/import_baselines/quiet_volume_usda-5e752c5254e3ed36-1.digest index ccd56b25f..edc559bfe 100644 --- a/crates/crust-core/tests/data/import_baselines/quiet_volume_usda-5e752c5254e3ed36-1.digest +++ b/crates/crust-core/tests/data/import_baselines/quiet_volume_usda-5e752c5254e3ed36-1.digest @@ -14,4 +14,4 @@ volume 0: sigma_s Vec3A(0.1, 0.1, 0.1) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emissi world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/range_far_usda-4ecb448a88a6c818-1.digest b/crates/crust-core/tests/data/import_baselines/range_far_usda-4ecb448a88a6c818-1.digest index dcb71bfb7..6d24e802e 100644 --- a/crates/crust-core/tests/data/import_baselines/range_far_usda-4ecb448a88a6c818-1.digest +++ b/crates/crust-core/tests/data/import_baselines/range_far_usda-4ecb448a88a6c818-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/range_usda-bc6d3542e7333f02-1.digest b/crates/crust-core/tests/data/import_baselines/range_usda-bc6d3542e7333f02-1.digest index a86d370fa..5408b2b51 100644 --- a/crates/crust-core/tests/data/import_baselines/range_usda-bc6d3542e7333f02-1.digest +++ b/crates/crust-core/tests/data/import_baselines/range_usda-bc6d3542e7333f02-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/raw_dome_usda-e8a6497f6f3c05ee-1.digest b/crates/crust-core/tests/data/import_baselines/raw_dome_usda-e8a6497f6f3c05ee-1.digest index 037f2e59c..059367e4b 100644 --- a/crates/crust-core/tests/data/import_baselines/raw_dome_usda-e8a6497f6f3c05ee-1.digest +++ b/crates/crust-core/tests/data/import_baselines/raw_dome_usda-e8a6497f6f3c05ee-1.digest @@ -16,4 +16,4 @@ world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cy provenance light /W/Sky: LightOrigin { index: 0, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(5)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("ACEScg") diff --git a/crates/crust-core/tests/data/import_baselines/raw_light_usda-ea76f3df9a669477-1.digest b/crates/crust-core/tests/data/import_baselines/raw_light_usda-ea76f3df9a669477-1.digest index db52e58f2..84389481f 100644 --- a/crates/crust-core/tests/data/import_baselines/raw_light_usda-ea76f3df9a669477-1.digest +++ b/crates/crust-core/tests/data/import_baselines/raw_light_usda-ea76f3df9a669477-1.digest @@ -17,4 +17,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/rect_light_far_usda-89364d5e280ec883-1.digest b/crates/crust-core/tests/data/import_baselines/rect_light_far_usda-89364d5e280ec883-1.digest index 2377d5ced..66f0f90ec 100644 --- a/crates/crust-core/tests/data/import_baselines/rect_light_far_usda-89364d5e280ec883-1.digest +++ b/crates/crust-core/tests/data/import_baselines/rect_light_far_usda-89364d5e280ec883-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/rect_light_near_usda-e8eb7549c9231ec8-1.digest b/crates/crust-core/tests/data/import_baselines/rect_light_near_usda-e8eb7549c9231ec8-1.digest index 2cdfe035f..dc664b9e1 100644 --- a/crates/crust-core/tests/data/import_baselines/rect_light_near_usda-e8eb7549c9231ec8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/rect_light_near_usda-e8eb7549c9231ec8-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/rect_light_usda-eadf17e73fc59819-1.digest b/crates/crust-core/tests/data/import_baselines/rect_light_usda-eadf17e73fc59819-1.digest index 286ea2858..9fb7994ab 100644 --- a/crates/crust-core/tests/data/import_baselines/rect_light_usda-eadf17e73fc59819-1.digest +++ b/crates/crust-core/tests/data/import_baselines/rect_light_usda-eadf17e73fc59819-1.digest @@ -18,4 +18,4 @@ provenance light /World/R: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/R provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/rect_texture_usda-fa043cce9d6338f4-1.digest b/crates/crust-core/tests/data/import_baselines/rect_texture_usda-fa043cce9d6338f4-1.digest index 943c12120..bc5519588 100644 --- a/crates/crust-core/tests/data/import_baselines/rect_texture_usda-fa043cce9d6338f4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/rect_texture_usda-fa043cce9d6338f4-1.digest @@ -18,4 +18,4 @@ provenance light /Card: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /Card provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-1.digest b/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-1.digest index c1c21e2ef..501f2763b 100644 --- a/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-1.digest @@ -23,4 +23,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-2.digest b/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-2.digest index c1c21e2ef..501f2763b 100644 --- a/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-2.digest +++ b/crates/crust-core/tests/data/import_baselines/rectlight_usda-3885e18a97e5845d-2.digest @@ -23,4 +23,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/rectlight_usda-5482f82d359615b0-1.digest b/crates/crust-core/tests/data/import_baselines/rectlight_usda-5482f82d359615b0-1.digest index cbddaee27..74b7b6537 100644 --- a/crates/crust-core/tests/data/import_baselines/rectlight_usda-5482f82d359615b0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/rectlight_usda-5482f82d359615b0-1.digest @@ -23,4 +23,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/rectlight_usda-e2a69198ab36729f-1.digest b/crates/crust-core/tests/data/import_baselines/rectlight_usda-e2a69198ab36729f-1.digest index c1c21e2ef..501f2763b 100644 --- a/crates/crust-core/tests/data/import_baselines/rectlight_usda-e2a69198ab36729f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/rectlight_usda-e2a69198ab36729f-1.digest @@ -23,4 +23,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/refusals_usda-e2a11260371695e9-1.digest b/crates/crust-core/tests/data/import_baselines/refusals_usda-e2a11260371695e9-1.digest index 0ea5ac57f..35c8790a2 100644 --- a/crates/crust-core/tests/data/import_baselines/refusals_usda-e2a11260371695e9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/refusals_usda-e2a11260371695e9-1.digest @@ -22,4 +22,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/refused_usda-0be9300cea6f944b-1.digest b/crates/crust-core/tests/data/import_baselines/refused_usda-0be9300cea6f944b-1.digest index 9130fadbe..a3939dcdc 100644 --- a/crates/crust-core/tests/data/import_baselines/refused_usda-0be9300cea6f944b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/refused_usda-0be9300cea6f944b-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-1.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-1.digest index fdb5a79da..7d73e4ea0 100644 --- a/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-2.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-2.digest index fdb5a79da..7d73e4ea0 100644 --- a/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-2.digest +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-2.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-3.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-3.digest index fdb5a79da..7d73e4ea0 100644 --- a/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-3.digest +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-109738cee49991a5-3.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-1.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-1.digest index cd02f7adc..c9bca476b 100644 --- a/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-1.digest +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-2.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-2.digest index cd02f7adc..c9bca476b 100644 --- a/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-2.digest +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-15787cfcd05d1f32-2.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-2eed0231ac063823-1.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-2eed0231ac063823-1.digest index 7b303ccbd..39c16d134 100644 --- a/crates/crust-core/tests/data/import_baselines/render_passes_usda-2eed0231ac063823-1.digest +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-2eed0231ac063823-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-1.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-1.digest index cd64e1d81..6c0675d02 100644 --- a/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/props"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/props"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-2.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-2.digest index cd64e1d81..6c0675d02 100644 --- a/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-2.digest +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-5d8d12e685ddd56c-2.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/props"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/props"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-c03e7c6702e31ad3-1.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-c03e7c6702e31ad3-1.digest index abecfe7d1..052fa2ee7 100644 --- a/crates/crust-core/tests/data/import_baselines/render_passes_usda-c03e7c6702e31ad3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-c03e7c6702e31ad3-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-1.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-1.digest index fdb5a79da..7d73e4ea0 100644 --- a/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-1.digest +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-2.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-2.digest index fdb5a79da..7d73e4ea0 100644 --- a/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-2.digest +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-f5e51ff2422aa383-2.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_passes_usda-f98e72ee422221b6-1.digest b/crates/crust-core/tests/data/import_baselines/render_passes_usda-f98e72ee422221b6-1.digest index 7b303ccbd..39c16d134 100644 --- a/crates/crust-core/tests/data/import_baselines/render_passes_usda-f98e72ee422221b6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/render_passes_usda-f98e72ee422221b6-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11523 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8416296582947184296, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 3] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_source_camera_usda-d46ae988f6d9241c-1.digest b/crates/crust-core/tests/data/import_baselines/render_source_camera_usda-d46ae988f6d9241c-1.digest index e8291f86a..e5a87ea8b 100644 --- a/crates/crust-core/tests/data/import_baselines/render_source_camera_usda-d46ae988f6d9241c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/render_source_camera_usda-d46ae988f6d9241c-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/CharCam"), cameras: ["/World/CharCam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/CharCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/CharCam"), cameras: ["/World/CharCam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/CharCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_source_usda-131b801caa122c43-1.digest b/crates/crust-core/tests/data/import_baselines/render_source_usda-131b801caa122c43-1.digest index 27fd37381..c3ed2a327 100644 --- a/crates/crust-core/tests/data/import_baselines/render_source_usda-131b801caa122c43-1.digest +++ b/crates/crust-core/tests/data/import_baselines/render_source_usda-131b801caa122c43-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/CharCam"), cameras: ["/World/CharCam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/CharCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/CharCam"), cameras: ["/World/CharCam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/CharCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_source_usda-749a95594e279116-1.digest b/crates/crust-core/tests/data/import_baselines/render_source_usda-749a95594e279116-1.digest index eda6b67e8..5930d1ec6 100644 --- a/crates/crust-core/tests/data/import_baselines/render_source_usda-749a95594e279116-1.digest +++ b/crates/crust-core/tests/data/import_baselines/render_source_usda-749a95594e279116-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/plain"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/CharCam"), cameras: ["/World/CharCam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/CharCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/plain"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/CharCam"), cameras: ["/World/CharCam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/CharCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_source_usda-b15267a29d9e4616-1.digest b/crates/crust-core/tests/data/import_baselines/render_source_usda-b15267a29d9e4616-1.digest index d84fc0adf..72e539c8b 100644 --- a/crates/crust-core/tests/data/import_baselines/render_source_usda-b15267a29d9e4616-1.digest +++ b/crates/crust-core/tests/data/import_baselines/render_source_usda-b15267a29d9e4616-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/CharCam"), cameras: ["/World/CharCam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/CharCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/CharCam"), cameras: ["/World/CharCam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/CharCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/reset_disk_usda-6e0b5adab74a3b7a-1.digest b/crates/crust-core/tests/data/import_baselines/reset_disk_usda-6e0b5adab74a3b7a-1.digest index 8d4340b60..7617fe402 100644 --- a/crates/crust-core/tests/data/import_baselines/reset_disk_usda-6e0b5adab74a3b7a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/reset_disk_usda-6e0b5adab74a3b7a-1.digest @@ -18,4 +18,4 @@ provenance light /W/D: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /W/D provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/resolution_negative_usda-0d18504e846cea31-1.digest b/crates/crust-core/tests/data/import_baselines/resolution_negative_usda-0d18504e846cea31-1.digest index 8671f8053..cdc7467e1 100644 --- a/crates/crust-core/tests/data/import_baselines/resolution_negative_usda-0d18504e846cea31-1.digest +++ b/crates/crust-core/tests/data/import_baselines/resolution_negative_usda-0d18504e846cea31-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/resolution_zero_usda-e3f58678deb9aa30-1.digest b/crates/crust-core/tests/data/import_baselines/resolution_zero_usda-e3f58678deb9aa30-1.digest index 302753b32..7dcac87b3 100644 --- a/crates/crust-core/tests/data/import_baselines/resolution_zero_usda-e3f58678deb9aa30-1.digest +++ b/crates/crust-core/tests/data/import_baselines/resolution_zero_usda-e3f58678deb9aa30-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/rest_usda-feaaa720bb9a30d2-1.digest b/crates/crust-core/tests/data/import_baselines/rest_usda-feaaa720bb9a30d2-1.digest index 72eba83a4..7eb1b2812 100644 --- a/crates/crust-core/tests/data/import_baselines/rest_usda-feaaa720bb9a30d2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/rest_usda-feaaa720bb9a30d2-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11801363609627443368, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-00dd7b68b86c7168-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-00dd7b68b86c7168-1.digest index d81abd188..bbaf55efe 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-00dd7b68b86c7168-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-00dd7b68b86c7168-1.digest @@ -45,4 +45,4 @@ provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-00e8d0d9a2f465b9-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-00e8d0d9a2f465b9-1.digest index 63b50c452..ff0b1b4b6 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-00e8d0d9a2f465b9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-00e8d0d9a2f465b9-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-1ddeac0a2964315c-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-1ddeac0a2964315c-1.digest index 438e5eaa6..9f2838b80 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-1ddeac0a2964315c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-1ddeac0a2964315c-1.digest @@ -40,4 +40,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-2f86c31117cc8b58-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-2f86c31117cc8b58-1.digest index 438e5eaa6..9f2838b80 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-2f86c31117cc8b58-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-2f86c31117cc8b58-1.digest @@ -40,4 +40,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-43c385d7a2a21d1e-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-43c385d7a2a21d1e-1.digest index aa01fa438..962020b35 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-43c385d7a2a21d1e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-43c385d7a2a21d1e-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-4aa136053cd56402-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-4aa136053cd56402-1.digest index 32bce2848..c82aea256 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-4aa136053cd56402-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-4aa136053cd56402-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-4b8c79cf557cf378-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-4b8c79cf557cf378-1.digest index 1830f419a..34c342670 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-4b8c79cf557cf378-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-4b8c79cf557cf378-1.digest @@ -45,4 +45,4 @@ provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-5042b0d1011805d6-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-5042b0d1011805d6-1.digest index 32bce2848..c82aea256 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-5042b0d1011805d6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-5042b0d1011805d6-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-5c84bdb62972ba25-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-5c84bdb62972ba25-1.digest index cc206651c..d1068cc82 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-5c84bdb62972ba25-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-5c84bdb62972ba25-1.digest @@ -39,4 +39,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-63552b8e06717f62-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-63552b8e06717f62-1.digest index 65b44a5b2..9671e4121 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-63552b8e06717f62-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-63552b8e06717f62-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-642eeb8c5780c872-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-642eeb8c5780c872-1.digest index 0503a337d..6786e4c52 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-642eeb8c5780c872-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-642eeb8c5780c872-1.digest @@ -39,4 +39,4 @@ provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 50454 provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-65bf0b61fd007f62-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-65bf0b61fd007f62-1.digest index 63b50c452..ff0b1b4b6 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-65bf0b61fd007f62-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-65bf0b61fd007f62-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-67d463deb3cd2295-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-67d463deb3cd2295-1.digest index a608161f0..b66d5f289 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-67d463deb3cd2295-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-67d463deb3cd2295-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(5)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("ACEScg") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-7781d1893e2e23fd-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-7781d1893e2e23fd-1.digest index 63b50c452..ff0b1b4b6 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-7781d1893e2e23fd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-7781d1893e2e23fd-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-7eba3de4e6efbf15-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-7eba3de4e6efbf15-1.digest index 670efac80..edd67af78 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-7eba3de4e6efbf15-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-7eba3de4e6efbf15-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16252826071643471966, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-8099cbe59e22c4ff-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-8099cbe59e22c4ff-1.digest index 9ee8f3b9e..038f9bf5a 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-8099cbe59e22c4ff-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-8099cbe59e22c4ff-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(1.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(1.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-834306f0b405a977-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-834306f0b405a977-1.digest index 32bce2848..c82aea256 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-834306f0b405a977-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-834306f0b405a977-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(10.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-8c6dbffe8bcc7f5d-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-8c6dbffe8bcc7f5d-1.digest index 5c08ae390..341f2b83c 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-8c6dbffe8bcc7f5d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-8c6dbffe8bcc7f5d-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-921d5e21a6ec411f-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-921d5e21a6ec411f-1.digest index 4de6787b4..5e4154edd 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-921d5e21a6ec411f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-921d5e21a6ec411f-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-9d7d0e6b748bbe2f-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-9d7d0e6b748bbe2f-1.digest index e77370a5d..6d861d21c 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-9d7d0e6b748bbe2f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-9d7d0e6b748bbe2f-1.digest @@ -15,4 +15,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-a0c411ed1048de1a-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-a0c411ed1048de1a-1.digest index 1f4ed031c..29cbc9c13 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-a0c411ed1048de1a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-a0c411ed1048de1a-1.digest @@ -47,4 +47,4 @@ provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-a95c3cfeafbe744e-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-a95c3cfeafbe744e-1.digest index 8c8cbe8da..182995533 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-a95c3cfeafbe744e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-a95c3cfeafbe744e-1.digest @@ -44,4 +44,4 @@ provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-aa094b9d362ee4b9-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-aa094b9d362ee4b9-1.digest index cc206651c..d1068cc82 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-aa094b9d362ee4b9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-aa094b9d362ee4b9-1.digest @@ -39,4 +39,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-bedb2af78f4c965d-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-bedb2af78f4c965d-1.digest index bf8f3cf83..c601f7367 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-bedb2af78f4c965d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-bedb2af78f4c965d-1.digest @@ -17,4 +17,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-bfc3cfdc3fb023a6-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-bfc3cfdc3fb023a6-1.digest index 1d125a7e9..9b398f8c5 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-bfc3cfdc3fb023a6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-bfc3cfdc3fb023a6-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-c51fa0d84e7325f7-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-c51fa0d84e7325f7-1.digest index cc206651c..d1068cc82 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-c51fa0d84e7325f7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-c51fa0d84e7325f7-1.digest @@ -39,4 +39,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-1.digest index d4ff73f96..9277209f2 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-1.digest @@ -29,4 +29,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 73779 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2452712229199093531, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-2.digest b/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-2.digest index d4ff73f96..9277209f2 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-2.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-c6c9d5036fcf5e6d-2.digest @@ -29,4 +29,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 73779 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2452712229199093531, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-c78a3b1a4bb10072-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-c78a3b1a4bb10072-1.digest index c5dc184a5..19dd8ac84 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-c78a3b1a4bb10072-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-c78a3b1a4bb10072-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-cc0a74d0f1a22c6a-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-cc0a74d0f1a22c6a-1.digest index 48d0d71ab..e4c24ed7e 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-cc0a74d0f1a22c6a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-cc0a74d0f1a22c6a-1.digest @@ -46,4 +46,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-ccefc9342ef07f81-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-ccefc9342ef07f81-1.digest index 5fdc2efd4..0cd9bc89e 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-ccefc9342ef07f81-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-ccefc9342ef07f81-1.digest @@ -42,4 +42,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-ce726227b7d02261-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-ce726227b7d02261-1.digest index d963a51b4..38f6fd21e 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-ce726227b7d02261-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-ce726227b7d02261-1.digest @@ -44,4 +44,4 @@ provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-cef90a6ad595b1b4-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-cef90a6ad595b1b4-1.digest index bf8f3cf83..c601f7367 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-cef90a6ad595b1b4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-cef90a6ad595b1b4-1.digest @@ -17,4 +17,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-d2c312942e13c754-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-d2c312942e13c754-1.digest index cce554510..458b1e1f7 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-d2c312942e13c754-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-d2c312942e13c754-1.digest @@ -42,4 +42,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-dcc0d192c2504171-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-dcc0d192c2504171-1.digest index cc206651c..d1068cc82 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-dcc0d192c2504171-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-dcc0d192c2504171-1.digest @@ -39,4 +39,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-df9ad38a08c60f60-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-df9ad38a08c60f60-1.digest index 0084ab48e..0c2c080ec 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-df9ad38a08c60f60-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-df9ad38a08c60f60-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-e227181a4d86cdde-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-e227181a4d86cdde-1.digest index 9a234e048..af81978f3 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-e227181a4d86cdde-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-e227181a4d86cdde-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-1.digest index d4ff73f96..9277209f2 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-1.digest @@ -29,4 +29,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 73779 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2452712229199093531, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-2.digest b/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-2.digest index d4ff73f96..9277209f2 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-2.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-f3eca4e5e1cfc428-2.digest @@ -29,4 +29,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 73779 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2452712229199093531, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-f4c8b443da714046-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-f4c8b443da714046-1.digest index 9d3014615..778ef3593 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-f4c8b443da714046-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-f4c8b443da714046-1.digest @@ -47,4 +47,4 @@ provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-f7df8a9705f0748f-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-f7df8a9705f0748f-1.digest index 22363bca3..82006bcd0 100644 --- a/crates/crust-core/tests/data/import_baselines/root_usda-f7df8a9705f0748f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/root_usda-f7df8a9705f0748f-1.digest @@ -42,4 +42,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/rotate_parent_usda-a0cc7d7c189a5bba-1.digest b/crates/crust-core/tests/data/import_baselines/rotate_parent_usda-a0cc7d7c189a5bba-1.digest index 7f48d83e8..2811fff56 100644 --- a/crates/crust-core/tests/data/import_baselines/rotate_parent_usda-a0cc7d7c189a5bba-1.digest +++ b/crates/crust-core/tests/data/import_baselines/rotate_parent_usda-a0cc7d7c189a5bba-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/A/B/S provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/s_usda-0006d97926014c1b-1.digest b/crates/crust-core/tests/data/import_baselines/s_usda-0006d97926014c1b-1.digest index 00c1d91e8..f42bf34a1 100644 --- a/crates/crust-core/tests/data/import_baselines/s_usda-0006d97926014c1b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/s_usda-0006d97926014c1b-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3224020731942780983, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sampler_default_usda-6c4e4e80bde0b7e5-1.digest b/crates/crust-core/tests/data/import_baselines/sampler_default_usda-6c4e4e80bde0b7e5-1.digest index 3595dbe40..ba56f91aa 100644 --- a/crates/crust-core/tests/data/import_baselines/sampler_default_usda-6c4e4e80bde0b7e5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sampler_default_usda-6c4e4e80bde0b7e5-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sampler_halton_usda-bcb88dc4e7395359-1.digest b/crates/crust-core/tests/data/import_baselines/sampler_halton_usda-bcb88dc4e7395359-1.digest index ead10d85f..cae9e53bb 100644 --- a/crates/crust-core/tests/data/import_baselines/sampler_halton_usda-bcb88dc4e7395359-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sampler_halton_usda-bcb88dc4e7395359-1.digest @@ -15,4 +15,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sampler_lattice_usda-83017538d7bb844b-1.digest b/crates/crust-core/tests/data/import_baselines/sampler_lattice_usda-83017538d7bb844b-1.digest index 838095db4..fd5d7105b 100644 --- a/crates/crust-core/tests/data/import_baselines/sampler_lattice_usda-83017538d7bb844b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sampler_lattice_usda-83017538d7bb844b-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/scaled_sphere_light_usda-2dabd5a9f4c0f98e-1.digest b/crates/crust-core/tests/data/import_baselines/scaled_sphere_light_usda-2dabd5a9f4c0f98e-1.digest index 19463a642..2e30b5920 100644 --- a/crates/crust-core/tests/data/import_baselines/scaled_sphere_light_usda-2dabd5a9f4c0f98e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/scaled_sphere_light_usda-2dabd5a9f4c0f98e-1.digest @@ -18,4 +18,4 @@ provenance light /World/S: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/S provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/scaled_usda-308f36ce00bb3ea8-1.digest b/crates/crust-core/tests/data/import_baselines/scaled_usda-308f36ce00bb3ea8-1.digest index f2dda9f77..7df75dc2d 100644 --- a/crates/crust-core/tests/data/import_baselines/scaled_usda-308f36ce00bb3ea8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/scaled_usda-308f36ce00bb3ea8-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 485570829870313581, n_points: 9, n_indices: 16, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/scatter_usda-08c435043fb988f9-1.digest b/crates/crust-core/tests/data/import_baselines/scatter_usda-08c435043fb988f9-1.digest index 627707c8c..88c076475 100644 --- a/crates/crust-core/tests/data/import_baselines/scatter_usda-08c435043fb988f9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/scatter_usda-08c435043fb988f9-1.digest @@ -22,4 +22,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 95198 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 998895739184434894, n_points: 6, n_indices: 6, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/scatter_usda-e62e321631ee4219-1.digest b/crates/crust-core/tests/data/import_baselines/scatter_usda-e62e321631ee4219-1.digest index 627707c8c..88c076475 100644 --- a/crates/crust-core/tests/data/import_baselines/scatter_usda-e62e321631ee4219-1.digest +++ b/crates/crust-core/tests/data/import_baselines/scatter_usda-e62e321631ee4219-1.digest @@ -22,4 +22,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 95198 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 998895739184434894, n_points: 6, n_indices: 6, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/scope_color_space_usda-acd6f59e656731c0-1.digest b/crates/crust-core/tests/data/import_baselines/scope_color_space_usda-acd6f59e656731c0-1.digest index e256dda09..f7d0f3bc9 100644 --- a/crates/crust-core/tests/data/import_baselines/scope_color_space_usda-acd6f59e656731c0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/scope_color_space_usda-acd6f59e656731c0-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17822791014403781691, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(5)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("ACEScg") diff --git a/crates/crust-core/tests/data/import_baselines/settings_usda-58e4038727242b7e-1.digest b/crates/crust-core/tests/data/import_baselines/settings_usda-58e4038727242b7e-1.digest index 5e8f9a9ac..bca4b20f4 100644 --- a/crates/crust-core/tests/data/import_baselines/settings_usda-58e4038727242b7e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/settings_usda-58e4038727242b7e-1.digest @@ -17,4 +17,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/settings_usda-8c1bce0acc8c2aa3-1.digest b/crates/crust-core/tests/data/import_baselines/settings_usda-8c1bce0acc8c2aa3-1.digest index 40865be21..235a6a892 100644 --- a/crates/crust-core/tests/data/import_baselines/settings_usda-8c1bce0acc8c2aa3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/settings_usda-8c1bce0acc8c2aa3-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shadow_ball_blocked_usda-7a4aa722cf803335-1.digest b/crates/crust-core/tests/data/import_baselines/shadow_ball_blocked_usda-7a4aa722cf803335-1.digest index 53547eccf..03784ab39 100644 --- a/crates/crust-core/tests/data/import_baselines/shadow_ball_blocked_usda-7a4aa722cf803335-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shadow_ball_blocked_usda-7a4aa722cf803335-1.digest @@ -23,4 +23,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shadow_ball_excluded_usda-97e5af329ccc1a04-1.digest b/crates/crust-core/tests/data/import_baselines/shadow_ball_excluded_usda-97e5af329ccc1a04-1.digest index ea859a313..0160f5dfc 100644 --- a/crates/crust-core/tests/data/import_baselines/shadow_ball_excluded_usda-97e5af329ccc1a04-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shadow_ball_excluded_usda-97e5af329ccc1a04-1.digest @@ -23,4 +23,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shadow_fog_blocked_usda-02a2d7c4f4baa106-1.digest b/crates/crust-core/tests/data/import_baselines/shadow_fog_blocked_usda-02a2d7c4f4baa106-1.digest index 0ad018472..e9261a845 100644 --- a/crates/crust-core/tests/data/import_baselines/shadow_fog_blocked_usda-02a2d7c4f4baa106-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shadow_fog_blocked_usda-02a2d7c4f4baa106-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: ["/World/Blocker"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shadow_fog_excluded_usda-0f89cfc00df34be3-1.digest b/crates/crust-core/tests/data/import_baselines/shadow_fog_excluded_usda-0f89cfc00df34be3-1.digest index bdc81847f..cbe2118a8 100644 --- a/crates/crust-core/tests/data/import_baselines/shadow_fog_excluded_usda-0f89cfc00df34be3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shadow_fog_excluded_usda-0f89cfc00df34be3-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: ["/World/Blocker"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shadow_open_usda-43f52a9430038a59-1.digest b/crates/crust-core/tests/data/import_baselines/shadow_open_usda-43f52a9430038a59-1.digest index 70fa1ce87..ca3b94c6f 100644 --- a/crates/crust-core/tests/data/import_baselines/shadow_open_usda-43f52a9430038a59-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shadow_open_usda-43f52a9430038a59-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shaped_rect_usda-2479a47c7797a66c-1.digest b/crates/crust-core/tests/data/import_baselines/shaped_rect_usda-2479a47c7797a66c-1.digest index f3e052ea0..604b9253e 100644 --- a/crates/crust-core/tests/data/import_baselines/shaped_rect_usda-2479a47c7797a66c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shaped_rect_usda-2479a47c7797a66c-1.digest @@ -18,4 +18,4 @@ provenance light /World/Spot: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/Spot provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shaping_absent_usda-59ac6c6c6ed71036-1.digest b/crates/crust-core/tests/data/import_baselines/shaping_absent_usda-59ac6c6c6ed71036-1.digest index 9699807f0..f3f4c87c9 100644 --- a/crates/crust-core/tests/data/import_baselines/shaping_absent_usda-59ac6c6c6ed71036-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shaping_absent_usda-59ac6c6c6ed71036-1.digest @@ -18,4 +18,4 @@ provenance light /World/S: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/S provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shaping_applied_usda-b1b65b90122da6f7-1.digest b/crates/crust-core/tests/data/import_baselines/shaping_applied_usda-b1b65b90122da6f7-1.digest index 8ee2c306f..4d0e4c59b 100644 --- a/crates/crust-core/tests/data/import_baselines/shaping_applied_usda-b1b65b90122da6f7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shaping_applied_usda-b1b65b90122da6f7-1.digest @@ -18,4 +18,4 @@ provenance light /World/S: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/S provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shared_points_usda-b97fa4512d46ed74-1.digest b/crates/crust-core/tests/data/import_baselines/shared_points_usda-b97fa4512d46ed74-1.digest index 77cb0cbe7..d6dc216a2 100644 --- a/crates/crust-core/tests/data/import_baselines/shared_points_usda-b97fa4512d46ed74-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shared_points_usda-b97fa4512d46ed74-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 57956 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16911893879792146658, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shared_usda-9209cd8eb954e389-1.digest b/crates/crust-core/tests/data/import_baselines/shared_usda-9209cd8eb954e389-1.digest index 2d2bf6288..70ef9e27a 100644 --- a/crates/crust-core/tests/data/import_baselines/shared_usda-9209cd8eb954e389-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shared_usda-9209cd8eb954e389-1.digest @@ -30,4 +30,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 90566 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 204846636954257726, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shared_usda-b9af19ac4c829153-1.digest b/crates/crust-core/tests/data/import_baselines/shared_usda-b9af19ac4c829153-1.digest index 616204e39..c9e77917f 100644 --- a/crates/crust-core/tests/data/import_baselines/shared_usda-b9af19ac4c829153-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shared_usda-b9af19ac4c829153-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 485570829870313581, n_points: 9, n_indices: 16, n_uvs: None, smooth: true, material: 0 }), placements: 2, shared: false, displaced: true } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sharp_usda-9bf0a09f5df9236e-1.digest b/crates/crust-core/tests/data/import_baselines/sharp_usda-9bf0a09f5df9236e-1.digest index 5fcd56ee0..8d4064575 100644 --- a/crates/crust-core/tests/data/import_baselines/sharp_usda-9bf0a09f5df9236e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sharp_usda-9bf0a09f5df9236e-1.digest @@ -16,4 +16,4 @@ provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } provenance geometry 0..1: /World/Mover provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-13a3dd4f11de39b9-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-13a3dd4f11de39b9-1.digest index 403cb21e4..086bb0df7 100644 --- a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-13a3dd4f11de39b9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-13a3dd4f11de39b9-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-27651d6a015b04ab-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-27651d6a015b04ab-1.digest index c38143345..13d105cd9 100644 --- a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-27651d6a015b04ab-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-27651d6a015b04ab-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-369c0d66f45d39b9-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-369c0d66f45d39b9-1.digest index 77e506249..15a71ecaf 100644 --- a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-369c0d66f45d39b9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-369c0d66f45d39b9-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-6f33035f56110470-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-6f33035f56110470-1.digest index 403cb21e4..086bb0df7 100644 --- a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-6f33035f56110470-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-6f33035f56110470-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-7003167a7a70688d-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-7003167a7a70688d-1.digest index c58105f1a..0c9ca2f1c 100644 --- a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-7003167a7a70688d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-7003167a7a70688d-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-b26fdb3392c1eac3-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-b26fdb3392c1eac3-1.digest index 07b2289a9..ce95b3ace 100644 --- a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-b26fdb3392c1eac3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-b26fdb3392c1eac3-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-bc9d89b7ffc91e9b-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-bc9d89b7ffc91e9b-1.digest index 158da9b00..397a89a1f 100644 --- a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-bc9d89b7ffc91e9b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-bc9d89b7ffc91e9b-1.digest @@ -21,4 +21,4 @@ provenance geometry 0..1: /World/ball provenance geometry 1..2: /World/key provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-cac7cb8da11a9b99-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-cac7cb8da11a9b99-1.digest index 5cf127fd6..b846a9a76 100644 --- a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-cac7cb8da11a9b99-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-cac7cb8da11a9b99-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e785595b364179c9-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e785595b364179c9-1.digest index c58105f1a..0c9ca2f1c 100644 --- a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e785595b364179c9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e785595b364179c9-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e82a725344733609-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e82a725344733609-1.digest index 72fe88c08..ab2e3f78a 100644 --- a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e82a725344733609-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-e82a725344733609-1.digest @@ -38,4 +38,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-eaf3eeced61f0581-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-eaf3eeced61f0581-1.digest index 07b2289a9..ce95b3ace 100644 --- a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-eaf3eeced61f0581-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-eaf3eeced61f0581-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-f697274eb781e181-1.digest b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-f697274eb781e181-1.digest index 77e506249..15a71ecaf 100644 --- a/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-f697274eb781e181-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shot_lookdev_usda-f697274eb781e181-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shot_usda-bc277892832ac542-1.digest b/crates/crust-core/tests/data/import_baselines/shot_usda-bc277892832ac542-1.digest index 65f0c17dc..0e7380224 100644 --- a/crates/crust-core/tests/data/import_baselines/shot_usda-bc277892832ac542-1.digest +++ b/crates/crust-core/tests/data/import_baselines/shot_usda-bc277892832ac542-1.digest @@ -28,4 +28,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16322876491246643540, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 4, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sibling_usda-ec40564c6bb9a56d-1.digest b/crates/crust-core/tests/data/import_baselines/sibling_usda-ec40564c6bb9a56d-1.digest index 8bb2e12d8..19e38c2ca 100644 --- a/crates/crust-core/tests/data/import_baselines/sibling_usda-ec40564c6bb9a56d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sibling_usda-ec40564c6bb9a56d-1.digest @@ -33,4 +33,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 20484 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10907505002769619754, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/single_usda-472ac6d4e19ff814-1.digest b/crates/crust-core/tests/data/import_baselines/single_usda-472ac6d4e19ff814-1.digest index dd1d8c3bb..ab92b4568 100644 --- a/crates/crust-core/tests/data/import_baselines/single_usda-472ac6d4e19ff814-1.digest +++ b/crates/crust-core/tests/data/import_baselines/single_usda-472ac6d4e19ff814-1.digest @@ -19,4 +19,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11483 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13487480004083563611, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/W/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/W/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/smoke_grid_usda-64f278d7126815e0-1.digest b/crates/crust-core/tests/data/import_baselines/smoke_grid_usda-64f278d7126815e0-1.digest index a2632cdaa..3131a9d2c 100644 --- a/crates/crust-core/tests/data/import_baselines/smoke_grid_usda-64f278d7126815e0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/smoke_grid_usda-64f278d7126815e0-1.digest @@ -17,4 +17,4 @@ volume 1: sigma_s Vec3A(0.5, 0.5, 0.5) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emissi world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: ["/World/Grid", "/World/Smoke"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/smoke_usda-8b219b9873531af2-1.digest b/crates/crust-core/tests/data/import_baselines/smoke_usda-8b219b9873531af2-1.digest index 263b479b1..7cba161dd 100644 --- a/crates/crust-core/tests/data/import_baselines/smoke_usda-8b219b9873531af2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/smoke_usda-8b219b9873531af2-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: ["/World/GridPuff", "/World/Ember", "/World/Smoke"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/smoke_usda-c485b4550b7ac78b-1.digest b/crates/crust-core/tests/data/import_baselines/smoke_usda-c485b4550b7ac78b-1.digest index 284fb7c61..175f971cf 100644 --- a/crates/crust-core/tests/data/import_baselines/smoke_usda-c485b4550b7ac78b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/smoke_usda-c485b4550b7ac78b-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: ["/World/GridPuff", "/World/Ember", "/World/Smoke"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-1.digest b/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-1.digest index 284fb7c61..175f971cf 100644 --- a/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-1.digest +++ b/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: ["/World/GridPuff", "/World/Ember", "/World/Smoke"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-2.digest b/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-2.digest index 284fb7c61..175f971cf 100644 --- a/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-2.digest +++ b/crates/crust-core/tests/data/import_baselines/smoke_usda-e1b03a141b55e173-2.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18131637559251484386, n_points: 20, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: ["/World/GridPuff", "/World/Ember", "/World/Smoke"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/snapshot_usda-48d0c43b60eb99bd-1.digest b/crates/crust-core/tests/data/import_baselines/snapshot_usda-48d0c43b60eb99bd-1.digest index 7405d63b9..0762e8abb 100644 --- a/crates/crust-core/tests/data/import_baselines/snapshot_usda-48d0c43b60eb99bd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/snapshot_usda-48d0c43b60eb99bd-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sphere_and_mesh_usda-0e0815d93400ffb5-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_and_mesh_usda-0e0815d93400ffb5-1.digest index e53119b3c..2f6f4384b 100644 --- a/crates/crust-core/tests/data/import_baselines/sphere_and_mesh_usda-0e0815d93400ffb5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sphere_and_mesh_usda-0e0815d93400ffb5-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17961869511521861346, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sphere_both_usda-e02008707f44acbc-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_both_usda-e02008707f44acbc-1.digest index 0c7bfd988..5d11641d7 100644 --- a/crates/crust-core/tests/data/import_baselines/sphere_both_usda-e02008707f44acbc-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sphere_both_usda-e02008707f44acbc-1.digest @@ -16,4 +16,4 @@ provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } provenance geometry 0..1: /World/Ball provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sphere_crust_wins_usda-cfeb9931008a7ea6-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_crust_wins_usda-cfeb9931008a7ea6-1.digest index 930f2f66f..0c166a7c5 100644 --- a/crates/crust-core/tests/data/import_baselines/sphere_crust_wins_usda-cfeb9931008a7ea6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sphere_crust_wins_usda-cfeb9931008a7ea6-1.digest @@ -18,4 +18,4 @@ provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/L provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sphere_defaults_usda-8b8f061019318106-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_defaults_usda-8b8f061019318106-1.digest index 9b41be34e..5dbd0df4d 100644 --- a/crates/crust-core/tests/data/import_baselines/sphere_defaults_usda-8b8f061019318106-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sphere_defaults_usda-8b8f061019318106-1.digest @@ -18,4 +18,4 @@ provenance geometry 0..1: /World/Small provenance geometry 1..2: /World/Unit provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sphere_light_usda-4886e72703716517-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_light_usda-4886e72703716517-1.digest index fce15095d..387507fd3 100644 --- a/crates/crust-core/tests/data/import_baselines/sphere_light_usda-4886e72703716517-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sphere_light_usda-4886e72703716517-1.digest @@ -18,4 +18,4 @@ provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/L provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sphere_nonuniform_scale_usda-4a3711274af76a73-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_nonuniform_scale_usda-4a3711274af76a73-1.digest index 7ca371e2c..7f662b9de 100644 --- a/crates/crust-core/tests/data/import_baselines/sphere_nonuniform_scale_usda-4a3711274af76a73-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sphere_nonuniform_scale_usda-4a3711274af76a73-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /Root/egg provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sphere_only_usda-71bd2f6a8198f0b8-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_only_usda-71bd2f6a8198f0b8-1.digest index 2da1aaa20..9ac91e01d 100644 --- a/crates/crust-core/tests/data/import_baselines/sphere_only_usda-71bd2f6a8198f0b8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sphere_only_usda-71bd2f6a8198f0b8-1.digest @@ -17,4 +17,4 @@ provenance material /World/Rock: MaterialOrigin { slots: [0], displaced: false } provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sphere_ri_camera_usda-47b1274be8232510-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_ri_camera_usda-47b1274be8232510-1.digest index 9fe7ea6e1..340e98650 100644 --- a/crates/crust-core/tests/data/import_baselines/sphere_ri_camera_usda-47b1274be8232510-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sphere_ri_camera_usda-47b1274be8232510-1.digest @@ -18,4 +18,4 @@ provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/L provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sphere_tiny_scale_usda-7eb2c16e3f3404d7-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_tiny_scale_usda-7eb2c16e3f3404d7-1.digest index 006e787dc..48f728a8d 100644 --- a/crates/crust-core/tests/data/import_baselines/sphere_tiny_scale_usda-7eb2c16e3f3404d7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sphere_tiny_scale_usda-7eb2c16e3f3404d7-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /small provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sphere_track_usda-9c13bacd8c4d2d91-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_track_usda-9c13bacd8c4d2d91-1.digest index cdc72370c..4706f43c4 100644 --- a/crates/crust-core/tests/data/import_baselines/sphere_track_usda-9c13bacd8c4d2d91-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sphere_track_usda-9c13bacd8c4d2d91-1.digest @@ -16,4 +16,4 @@ provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } provenance geometry 0..1: /World/Ball provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sphere_uniform_scale_usda-afcce7d5fa243629-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_uniform_scale_usda-afcce7d5fa243629-1.digest index 036f6e908..359cc78a3 100644 --- a/crates/crust-core/tests/data/import_baselines/sphere_uniform_scale_usda-afcce7d5fa243629-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sphere_uniform_scale_usda-afcce7d5fa243629-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /Root/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sphere_usda-8366b90874a02778-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_usda-8366b90874a02778-1.digest index 85e7c5f83..9fd7ec334 100644 --- a/crates/crust-core/tests/data/import_baselines/sphere_usda-8366b90874a02778-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sphere_usda-8366b90874a02778-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sphere_zero_scale_usda-ac3436d07948ddb2-1.digest b/crates/crust-core/tests/data/import_baselines/sphere_zero_scale_usda-ac3436d07948ddb2-1.digest index 31a5dcf34..9ee8c5f83 100644 --- a/crates/crust-core/tests/data/import_baselines/sphere_zero_scale_usda-ac3436d07948ddb2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sphere_zero_scale_usda-ac3436d07948ddb2-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/squashed_cylinder_usda-6bfde315320c4111-1.digest b/crates/crust-core/tests/data/import_baselines/squashed_cylinder_usda-6bfde315320c4111-1.digest index cd0e45058..2ba9d1b57 100644 --- a/crates/crust-core/tests/data/import_baselines/squashed_cylinder_usda-6bfde315320c4111-1.digest +++ b/crates/crust-core/tests/data/import_baselines/squashed_cylinder_usda-6bfde315320c4111-1.digest @@ -18,4 +18,4 @@ provenance light /World/C: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/squashed_disk_usda-e4a3093a38518998-1.digest b/crates/crust-core/tests/data/import_baselines/squashed_disk_usda-e4a3093a38518998-1.digest index 12812a94b..2e0834889 100644 --- a/crates/crust-core/tests/data/import_baselines/squashed_disk_usda-e4a3093a38518998-1.digest +++ b/crates/crust-core/tests/data/import_baselines/squashed_disk_usda-e4a3093a38518998-1.digest @@ -18,4 +18,4 @@ provenance light /World/D: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/D provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/squashed_sphere_usda-7bcbaa3c83aaf92c-1.digest b/crates/crust-core/tests/data/import_baselines/squashed_sphere_usda-7bcbaa3c83aaf92c-1.digest index 55425bd6b..e78b6fecf 100644 --- a/crates/crust-core/tests/data/import_baselines/squashed_sphere_usda-7bcbaa3c83aaf92c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/squashed_sphere_usda-7bcbaa3c83aaf92c-1.digest @@ -18,4 +18,4 @@ provenance light /World/S: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/S provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stack_0_usda-2dad0f5ec97c10b8-1.digest b/crates/crust-core/tests/data/import_baselines/stack_0_usda-2dad0f5ec97c10b8-1.digest index e054f2229..0759f58b9 100644 --- a/crates/crust-core/tests/data/import_baselines/stack_0_usda-2dad0f5ec97c10b8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stack_0_usda-2dad0f5ec97c10b8-1.digest @@ -23,4 +23,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 943668004453080986, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stack_150_usda-9fc28daf7efcde9e-1.digest b/crates/crust-core/tests/data/import_baselines/stack_150_usda-9fc28daf7efcde9e-1.digest index 0e351edb3..062423ada 100644 --- a/crates/crust-core/tests/data/import_baselines/stack_150_usda-9fc28daf7efcde9e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stack_150_usda-9fc28daf7efcde9e-1.digest @@ -28,4 +28,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 35787 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 943668004453080986, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-0695b3612208bcf5-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-0695b3612208bcf5-1.digest index 4cbbf7669..fc58bf6f4 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-0695b3612208bcf5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-0695b3612208bcf5-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17893806835409548195, n_points: 8, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-08451a086997d754-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-08451a086997d754-1.digest index 1714b3491..891021dd9 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-08451a086997d754-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-08451a086997d754-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-08f2605aa76f8c5a-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-08f2605aa76f8c5a-1.digest index 44e0add59..e1194aa9c 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-08f2605aa76f8c5a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-08f2605aa76f8c5a-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-0a9a4fefc79d0b59-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-0a9a4fefc79d0b59-1.digest index 5c8037b0f..08606a40d 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-0a9a4fefc79d0b59-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-0a9a4fefc79d0b59-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-0dae1afcf6927089-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-0dae1afcf6927089-1.digest index c49107686..c6a609e0e 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-0dae1afcf6927089-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-0dae1afcf6927089-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11885302575749807255, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-137bf5b9bbcbaa09-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-137bf5b9bbcbaa09-1.digest index 5ecae5cfa..4ff4deb33 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-137bf5b9bbcbaa09-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-137bf5b9bbcbaa09-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/Scatter provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-15ab0320e4168a3a-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-15ab0320e4168a3a-1.digest index 61789cce9..bb7011531 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-15ab0320e4168a3a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-15ab0320e4168a3a-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5991654631882484761, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-1780ae5d9b4706f3-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-1780ae5d9b4706f3-1.digest index f8f8a10bc..07c70260d 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-1780ae5d9b4706f3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-1780ae5d9b4706f3-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(2.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(2.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-18576b421133666c-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-18576b421133666c-1.digest index 1bea48397..5eea0dc90 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-18576b421133666c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-18576b421133666c-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16540775001122682633, n_points: 3, n_indices: 3, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-18d4c3c27061d1e0-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-18d4c3c27061d1e0-1.digest index 5c8037b0f..08606a40d 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-18d4c3c27061d1e0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-18d4c3c27061d1e0-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-19c958e4224602c7-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-19c958e4224602c7-1.digest index d45ac36d1..021be0ea1 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-19c958e4224602c7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-19c958e4224602c7-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(2.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(2.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-1ad9de82b394044d-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-1ad9de82b394044d-1.digest index 2e9f61d1e..b473a793c 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-1ad9de82b394044d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-1ad9de82b394044d-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17893806835409548195, n_points: 8, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-22dd31756ff245fc-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-22dd31756ff245fc-1.digest index f2fcfa009..d0e3a74d1 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-22dd31756ff245fc-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-22dd31756ff245fc-1.digest @@ -27,4 +27,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam2"), cameras: ["/World/cam2", "/World/cam1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam2"), cameras: ["/World/cam2", "/World/cam1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam2"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-22e94b531779cff1-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-22e94b531779cff1-1.digest index 973433ad9..173cdfddb 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-22e94b531779cff1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-22e94b531779cff1-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 219912570367011913, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-24ad7c66559e9c80-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-24ad7c66559e9c80-1.digest index 0f239f177..6f5377d23 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-24ad7c66559e9c80-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-24ad7c66559e9c80-1.digest @@ -30,4 +30,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 84162 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16680805309457723353, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-26105365b1fd8dbc-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-26105365b1fd8dbc-1.digest index 23b7fe6ab..22698c7ad 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-26105365b1fd8dbc-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-26105365b1fd8dbc-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13176316567238695505, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-2912eb63656b3371-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-2912eb63656b3371-1.digest index 7bdd863c1..4de3574d1 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-2912eb63656b3371-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-2912eb63656b3371-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15182453685671876355, n_points: 8, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-2c5736e1f1ba1f8d-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-2c5736e1f1ba1f8d-1.digest index b500e0b1c..0d6786cd3 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-2c5736e1f1ba1f8d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-2c5736e1f1ba1f8d-1.digest @@ -19,4 +19,4 @@ provenance geometry 0..1: /World/Geo/ball_B provenance geometry 1..2: /World/Geo/ball_A provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-2c8067fb553f81df-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-2c8067fb553f81df-1.digest index 2aca7fafd..2d4163c1f 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-2c8067fb553f81df-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-2c8067fb553f81df-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-2ce486f3dc966042-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-2ce486f3dc966042-1.digest index 722eb69e0..6c7e8fd32 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-2ce486f3dc966042-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-2ce486f3dc966042-1.digest @@ -16,4 +16,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-2ffe73dbb471510a-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-2ffe73dbb471510a-1.digest index bc78b8b0d..dc3f7f7fa 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-2ffe73dbb471510a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-2ffe73dbb471510a-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-323a3e02a1f4d7b0-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-323a3e02a1f4d7b0-1.digest index a496001af..d7c4d3594 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-323a3e02a1f4d7b0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-323a3e02a1f4d7b0-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-340b07ebab8f9091-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-340b07ebab8f9091-1.digest index e885d368b..ad7f415ec 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-340b07ebab8f9091-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-340b07ebab8f9091-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-3622e7d90bc81d34-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-3622e7d90bc81d34-1.digest index 5c7cd7210..45db059fd 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-3622e7d90bc81d34-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-3622e7d90bc81d34-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-1.digest index d61b00bc5..c5e9a3ecf 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-2.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-2.digest index 68f331683..17ba30c41 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-2.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-370b26846e2e31bd-2.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-37a86d28c7d197ed-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-37a86d28c7d197ed-1.digest index 1785bb79e..965cec79f 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-37a86d28c7d197ed-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-37a86d28c7d197ed-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-3c67a25a0a341efb-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-3c67a25a0a341efb-1.digest index 071c34090..c72026c73 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-3c67a25a0a341efb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-3c67a25a0a341efb-1.digest @@ -18,4 +18,4 @@ provenance material /World/M: MaterialOrigin { slots: [0], displaced: false } provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-3effc82524d047c7-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-3effc82524d047c7-1.digest index 1a6feb768..a03b0328a 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-3effc82524d047c7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-3effc82524d047c7-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6908817154990386932, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-3f9cd9ed5581414a-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-3f9cd9ed5581414a-1.digest index 7188d92c2..fe6947dc7 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-3f9cd9ed5581414a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-3f9cd9ed5581414a-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15189769101381604747, n_points: 8, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-1.digest index 3a156327d..2724ad8fc 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-1.digest @@ -19,4 +19,4 @@ provenance geometry 0..1: /World/B provenance geometry 1..2: /World/A provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-2.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-2.digest index 3a156327d..2724ad8fc 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-2.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-41ded1a4c5604d81-2.digest @@ -19,4 +19,4 @@ provenance geometry 0..1: /World/B provenance geometry 1..2: /World/A provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-48e70f6118b1f181-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-48e70f6118b1f181-1.digest index 7bfdfa42d..dd1c474f5 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-48e70f6118b1f181-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-48e70f6118b1f181-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.5), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-49f9cb3e8a3fb9fb-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-49f9cb3e8a3fb9fb-1.digest index a373c7d4e..74521d4e0 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-49f9cb3e8a3fb9fb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-49f9cb3e8a3fb9fb-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/N provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-4a064c9610d45212-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-4a064c9610d45212-1.digest index a496001af..d7c4d3594 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-4a064c9610d45212-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-4a064c9610d45212-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-4f30830cd0cff6cf-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-4f30830cd0cff6cf-1.digest index 4cbbf7669..fc58bf6f4 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-4f30830cd0cff6cf-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-4f30830cd0cff6cf-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17893806835409548195, n_points: 8, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-520aa0db2cddfe4a-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-520aa0db2cddfe4a-1.digest index 9968d39c4..cf76a884e 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-520aa0db2cddfe4a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-520aa0db2cddfe4a-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6920314679913877878, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [NodeDef { name: "studio_mix", node: "studio_mix", inputs: [DefInput { name: "fg_color", type_name: "color3", value: Some(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 3 }), text: Some("0, 0, 0") }, DefInput { name: "bg_color", type_name: "color3", value: Some(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 3 }), text: Some("0, 0, 0") }, DefInput { name: "amount", type_name: "float", value: Some(Val { v: [0.5, 0.5, 0.5, 0.5], arity: 1 }), text: Some("0.5") }], outputs: [DefOutput { name: "blended", type_name: "color3" }], inherit: None, version: None, default_version: false }], by_name: {"studio_mix": 0}, impls: {"studio_mix": Implementation { name: "NG_studio_mix", nodedef: "studio_mix", nodes: [Node { category: "mix", name: "mix", type_name: "color3", inputs: [Input { name: "bg", type_name: "color3", source: Value(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 1 }), colorspace: None, text: None, interface: Some("bg_color") }, Input { name: "fg", type_name: "color3", source: Value(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 1 }), colorspace: None, text: None, interface: Some("fg_color") }, Input { name: "mix", type_name: "float", source: Value(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 1 }), colorspace: None, text: None, interface: Some("amount") }], graph: Some("NG_studio_mix"), version: None, colorspace: None }], outputs: [ImplOutput { name: "blended", type_name: "color3", node: "mix", output: None }] }}, files: ["$DIR/lib/blend.mtlx"] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [NodeDef { name: "studio_mix", node: "studio_mix", inputs: [DefInput { name: "fg_color", type_name: "color3", value: Some(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 3 }), text: Some("0, 0, 0") }, DefInput { name: "bg_color", type_name: "color3", value: Some(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 3 }), text: Some("0, 0, 0") }, DefInput { name: "amount", type_name: "float", value: Some(Val { v: [0.5, 0.5, 0.5, 0.5], arity: 1 }), text: Some("0.5") }], outputs: [DefOutput { name: "blended", type_name: "color3" }], inherit: None, version: None, default_version: false }], by_name: {"studio_mix": 0}, impls: {"studio_mix": Implementation { name: "NG_studio_mix", nodedef: "studio_mix", nodes: [Node { category: "mix", name: "mix", type_name: "color3", inputs: [Input { name: "bg", type_name: "color3", source: Value(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 1 }), colorspace: None, text: None, interface: Some("bg_color") }, Input { name: "fg", type_name: "color3", source: Value(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 1 }), colorspace: None, text: None, interface: Some("fg_color") }, Input { name: "mix", type_name: "float", source: Value(Val { v: [0.0, 0.0, 0.0, 0.0], arity: 1 }), colorspace: None, text: None, interface: Some("amount") }], graph: Some("NG_studio_mix"), version: None, colorspace: None }], outputs: [ImplOutput { name: "blended", type_name: "color3", node: "mix", output: None }] }}, files: ["$DIR/lib/blend.mtlx"] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-54895eac26b3d68b-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-54895eac26b3d68b-1.digest index 8692b1fd4..5f871fa06 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-54895eac26b3d68b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-54895eac26b3d68b-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-5842de9c4816f088-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-5842de9c4816f088-1.digest index edf1266ed..8836b0749 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-5842de9c4816f088-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-5842de9c4816f088-1.digest @@ -18,4 +18,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-591315737502029a-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-591315737502029a-1.digest index 45f4d4534..f781d95dc 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-591315737502029a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-591315737502029a-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7300176459579144609, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-592ba3007488df6d-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-592ba3007488df6d-1.digest index 8904ead37..a35b1deb6 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-592ba3007488df6d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-592ba3007488df6d-1.digest @@ -18,4 +18,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-59354f1aad350085-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-59354f1aad350085-1.digest index 17b594ef9..df9e00c04 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-59354f1aad350085-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-59354f1aad350085-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-5b237a71fd087753-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-5b237a71fd087753-1.digest index a1ca19fec..6cddfef7b 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-5b237a71fd087753-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-5b237a71fd087753-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13252484707536945916, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-5cc80e16451809c9-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-5cc80e16451809c9-1.digest index 4cbbf7669..fc58bf6f4 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-5cc80e16451809c9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-5cc80e16451809c9-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17893806835409548195, n_points: 8, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-5dc19c72025a0150-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-5dc19c72025a0150-1.digest index bc78b8b0d..dc3f7f7fa 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-5dc19c72025a0150-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-5dc19c72025a0150-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-5f7140cec32f4f07-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-5f7140cec32f4f07-1.digest index 4cbbf7669..fc58bf6f4 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-5f7140cec32f4f07-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-5f7140cec32f4f07-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17893806835409548195, n_points: 8, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-604932e0d3e70494-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-604932e0d3e70494-1.digest index f04409e7c..8c61ff45e 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-604932e0d3e70494-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-604932e0d3e70494-1.digest @@ -17,4 +17,4 @@ provenance material /World/M: MaterialOrigin { slots: [0], displaced: false } provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-64b7039b1d43e540-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-64b7039b1d43e540-1.digest index bcdcab8ff..cbbcf1775 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-64b7039b1d43e540-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-64b7039b1d43e540-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-65ee13ae526ffeea-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-65ee13ae526ffeea-1.digest index 2aca7fafd..2d4163c1f 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-65ee13ae526ffeea-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-65ee13ae526ffeea-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-67247fa59107a671-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-67247fa59107a671-1.digest index 722eb69e0..6c7e8fd32 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-67247fa59107a671-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-67247fa59107a671-1.digest @@ -16,4 +16,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-6bf959c4a9ccd0b3-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-6bf959c4a9ccd0b3-1.digest index a8f8e7159..713ead1e3 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-6bf959c4a9ccd0b3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-6bf959c4a9ccd0b3-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8067649529554663034, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-6d5fe86af042b6e1-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-6d5fe86af042b6e1-1.digest index 1a4743c58..aa8f01471 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-6d5fe86af042b6e1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-6d5fe86af042b6e1-1.digest @@ -25,4 +25,4 @@ provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7300176459579144609, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 3, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-71054a8e0c511721-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-71054a8e0c511721-1.digest index 7829195fd..5dc7d2d23 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-71054a8e0c511721-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-71054a8e0c511721-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-7c770edd10f5907e-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-7c770edd10f5907e-1.digest index 65151c3c5..afc197472 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-7c770edd10f5907e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-7c770edd10f5907e-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8088e3bfe6185392-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-8088e3bfe6185392-1.digest index 6d951b352..642e88dac 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-8088e3bfe6185392-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8088e3bfe6185392-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16264184265957527656, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-80aabe25c21585c0-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-80aabe25c21585c0-1.digest index c2ac93213..207b139bc 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-80aabe25c21585c0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-80aabe25c21585c0-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12889 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17893806835409548195, n_points: 8, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-1.digest index 5c7ffd68f..a30507222 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-2.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-2.digest index 120ac5a3b..c4dcf7ce8 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-2.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-82538c264d2a03ab-2.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-82a10c399a16cdfe-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-82a10c399a16cdfe-1.digest index 33e984f63..49d858ec1 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-82a10c399a16cdfe-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-82a10c399a16cdfe-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8330e4bc297d2c11-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-8330e4bc297d2c11-1.digest index ebde4b868..b8962d387 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-8330e4bc297d2c11-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8330e4bc297d2c11-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-888072d0abcb4b7c-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-888072d0abcb4b7c-1.digest index ad9ab90a5..0a61c2ae5 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-888072d0abcb4b7c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-888072d0abcb4b7c-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8a23f56494af42b0-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-8a23f56494af42b0-1.digest index f13781b9c..8847530b6 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-8a23f56494af42b0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8a23f56494af42b0-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11829234476885859690, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8b53eb2ddb581089-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-8b53eb2ddb581089-1.digest index 60e224af6..3c45865fe 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-8b53eb2ddb581089-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8b53eb2ddb581089-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8bc1102225447b76-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-8bc1102225447b76-1.digest index 3cedd13ab..40fd5ecbe 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-8bc1102225447b76-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8bc1102225447b76-1.digest @@ -27,4 +27,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18358 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 800109031887815527, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam1"), cameras: ["/World/cam2", "/World/cam1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam1"), cameras: ["/World/cam2", "/World/cam1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8bcafd97dd44d415-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-8bcafd97dd44d415-1.digest index ef84b3da8..5a11595d9 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-8bcafd97dd44d415-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8bcafd97dd44d415-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8c1801ab78070f29-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-8c1801ab78070f29-1.digest index c9b2a967c..9daaebc0d 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-8c1801ab78070f29-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8c1801ab78070f29-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-8cceeaf3cdd2ee51-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-8cceeaf3cdd2ee51-1.digest index e885d368b..ad7f415ec 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-8cceeaf3cdd2ee51-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-8cceeaf3cdd2ee51-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-91c6c701cea6760c-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-91c6c701cea6760c-1.digest index 109e88201..b8c9325a8 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-91c6c701cea6760c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-91c6c701cea6760c-1.digest @@ -18,4 +18,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-93b962ab026b22b8-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-93b962ab026b22b8-1.digest index 5c8037b0f..08606a40d 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-93b962ab026b22b8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-93b962ab026b22b8-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-976234e8d4ff9d44-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-976234e8d4ff9d44-1.digest index c1e4cb09e..47f87da93 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-976234e8d4ff9d44-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-976234e8d4ff9d44-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7931273347235586577, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-9a4d212002571295-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-9a4d212002571295-1.digest index 2aca7fafd..2d4163c1f 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-9a4d212002571295-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-9a4d212002571295-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-9af3795f55319fa5-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-9af3795f55319fa5-1.digest index 07ddbc52b..435822e38 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-9af3795f55319fa5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-9af3795f55319fa5-1.digest @@ -26,4 +26,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 21541 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 110596993976722767, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-9f427c13a5c51892-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-9f427c13a5c51892-1.digest index 2e76de88f..c92a4a4c9 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-9f427c13a5c51892-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-9f427c13a5c51892-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6920314679913877878, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-a366debd179e59ca-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-a366debd179e59ca-1.digest index 0f0b684f8..fc4ffdfd1 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-a366debd179e59ca-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-a366debd179e59ca-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: true } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8921584896192100385, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-a5b1d711f3b9ea59-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-a5b1d711f3b9ea59-1.digest index 391f940b3..b043fe350 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-a5b1d711f3b9ea59-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-a5b1d711f3b9ea59-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-a74b5f3cf6bce97e-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-a74b5f3cf6bce97e-1.digest index f74ccbb8b..6e50dbbff 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-a74b5f3cf6bce97e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-a74b5f3cf6bce97e-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-a7f91b5a6640999a-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-a7f91b5a6640999a-1.digest index d68013fba..8e23ed54e 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-a7f91b5a6640999a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-a7f91b5a6640999a-1.digest @@ -29,4 +29,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 4, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-a87fd805403755dc-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-a87fd805403755dc-1.digest index 615a04460..bbf26a044 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-a87fd805403755dc-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-a87fd805403755dc-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/Tiled: MaterialOrigin { slots: [0], displaced: provenance geometry 0..1: /World/Geo/ball_Tiled provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-abb589be134471f7-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-abb589be134471f7-1.digest index 2aca7fafd..2d4163c1f 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-abb589be134471f7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-abb589be134471f7-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-abeca91af484e4eb-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-abeca91af484e4eb-1.digest index e885d368b..ad7f415ec 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-abeca91af484e4eb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-abeca91af484e4eb-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-b0726246200d796c-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-b0726246200d796c-1.digest index 0a4cd1531..bdc2bb621 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-b0726246200d796c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-b0726246200d796c-1.digest @@ -18,4 +18,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-b091ac35593cb491-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-b091ac35593cb491-1.digest index 657b502d6..b2353e722 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-b091ac35593cb491-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-b091ac35593cb491-1.digest @@ -23,4 +23,4 @@ provenance geometry 1..2: /World/Geo/ball_B provenance geometry 2..3: /World/Geo/ball_A provenance spheres: [0, 1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-b8974322f9c3c9a8-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-b8974322f9c3c9a8-1.digest index f02fa1b22..7cdd232b5 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-b8974322f9c3c9a8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-b8974322f9c3c9a8-1.digest @@ -27,4 +27,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13698 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-bb51bbccac634602-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-bb51bbccac634602-1.digest index 3f1fff87b..7845be362 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-bb51bbccac634602-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-bb51bbccac634602-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-bc2640abb95a8689-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-bc2640abb95a8689-1.digest index a15681c65..2283b13af 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-bc2640abb95a8689-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-bc2640abb95a8689-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8386128300084420682, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-bdce5005dd991897-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-bdce5005dd991897-1.digest index 9901d00bd..0b865e807 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-bdce5005dd991897-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-bdce5005dd991897-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-c3555672a13627c7-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-c3555672a13627c7-1.digest index 66120b55d..e3f9986cd 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-c3555672a13627c7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-c3555672a13627c7-1.digest @@ -22,4 +22,4 @@ provenance geometry 1..2: /World/Native provenance geometry 2..4: /World/Scatter provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-c469a696e567b939-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-c469a696e567b939-1.digest index 5d0820a82..e86b7a076 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-c469a696e567b939-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-c469a696e567b939-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-c7b4569174f0eec0-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-c7b4569174f0eec0-1.digest index 722eb69e0..6c7e8fd32 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-c7b4569174f0eec0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-c7b4569174f0eec0-1.digest @@ -16,4 +16,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-cd83faa181eb1fd7-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-cd83faa181eb1fd7-1.digest index de1df83f8..0393272dd 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-cd83faa181eb1fd7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-cd83faa181eb1fd7-1.digest @@ -30,4 +30,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 84162 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16680805309457723353, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-cf6459f3f81ccc47-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-cf6459f3f81ccc47-1.digest index 33e984f63..49d858ec1 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-cf6459f3f81ccc47-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-cf6459f3f81ccc47-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-cf8a4ab339090107-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-cf8a4ab339090107-1.digest index f7bc0e95f..fa08200b3 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-cf8a4ab339090107-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-cf8a4ab339090107-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-d2ee2497345d697d-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-d2ee2497345d697d-1.digest index 6d32a6e00..a2119c466 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-d2ee2497345d697d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-d2ee2497345d697d-1.digest @@ -23,4 +23,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-d72f3f29bbbe2aac-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-d72f3f29bbbe2aac-1.digest index 32363368b..ffc0e4509 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-d72f3f29bbbe2aac-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-d72f3f29bbbe2aac-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(1.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(1.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-db5313ef5e73713b-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-db5313ef5e73713b-1.digest index bbb9d0a6c..5ae26de5d 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-db5313ef5e73713b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-db5313ef5e73713b-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-dbe57a2b9b304f79-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-dbe57a2b9b304f79-1.digest index 8403d084b..9732e3080 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-dbe57a2b9b304f79-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-dbe57a2b9b304f79-1.digest @@ -21,4 +21,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0, 1, 2, 3, 4], dis provenance geometry 0..5: /World/Scatter provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-dc3f3fbeccf7b47a-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-dc3f3fbeccf7b47a-1.digest index e885d368b..ad7f415ec 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-dc3f3fbeccf7b47a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-dc3f3fbeccf7b47a-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-df6e87952da2ef59-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-df6e87952da2ef59-1.digest index e885d368b..ad7f415ec 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-df6e87952da2ef59-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-df6e87952da2ef59-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-dfcbe85c1522e1a0-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-dfcbe85c1522e1a0-1.digest index 722eb69e0..6c7e8fd32 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-dfcbe85c1522e1a0-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-dfcbe85c1522e1a0-1.digest @@ -16,4 +16,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-e0281d61316ee28c-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-e0281d61316ee28c-1.digest index 160d565a2..c0e5ee7bb 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-e0281d61316ee28c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-e0281d61316ee28c-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-e190342a381695b4-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-e190342a381695b4-1.digest index 5d0820a82..e86b7a076 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-e190342a381695b4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-e190342a381695b4-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-e4221ab681d9d69c-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-e4221ab681d9d69c-1.digest index 60cf68d82..67784e99e 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-e4221ab681d9d69c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-e4221ab681d9d69c-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-e515f767109d59fd-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-e515f767109d59fd-1.digest index 59c72ee74..73322dbdf 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-e515f767109d59fd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-e515f767109d59fd-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(2.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(2.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-e6a49698324053cb-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-e6a49698324053cb-1.digest index 5a1921b88..2871c5f10 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-e6a49698324053cb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-e6a49698324053cb-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-e725f8fd7bc55370-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-e725f8fd7bc55370-1.digest index 65151c3c5..afc197472 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-e725f8fd7bc55370-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-e725f8fd7bc55370-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-eae49fc2a8ca60e5-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-eae49fc2a8ca60e5-1.digest index e73628800..901defb7f 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-eae49fc2a8ca60e5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-eae49fc2a8ca60e5-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7397703893271868288, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-eb49e61d600c4d7e-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-eb49e61d600c4d7e-1.digest index 73100cc90..aaf1d5ff5 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-eb49e61d600c4d7e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-eb49e61d600c4d7e-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-ebf6853a9256b461-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-ebf6853a9256b461-1.digest index 5d0820a82..e86b7a076 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-ebf6853a9256b461-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-ebf6853a9256b461-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-ef8a900692712be4-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-ef8a900692712be4-1.digest index 33e984f63..49d858ec1 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-ef8a900692712be4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-ef8a900692712be4-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-f1cbf14d6569cda8-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-f1cbf14d6569cda8-1.digest index 081a0e684..1827f46ac 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-f1cbf14d6569cda8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-f1cbf14d6569cda8-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/N provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-f3300bdef5e06140-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-f3300bdef5e06140-1.digest index a27e08972..2c5c140a2 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-f3300bdef5e06140-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-f3300bdef5e06140-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17828304714785378767, n_points: 6, n_indices: 8, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-f33567936d2468ed-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-f33567936d2468ed-1.digest index 219747f90..a3153ea18 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-f33567936d2468ed-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-f33567936d2468ed-1.digest @@ -30,4 +30,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 84162 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16680805309457723353, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4602678819172646912], interval: Some([4617315517961601024, 4617878467915022336]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 4602678819172646912], interval: Some([4617315517961601024, 4617878467915022336]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-fbc457cd2253b427-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-fbc457cd2253b427-1.digest index 8d6da04c0..df58e3355 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-fbc457cd2253b427-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-fbc457cd2253b427-1.digest @@ -17,4 +17,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-fec7a3f24112f4ad-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-fec7a3f24112f4ad-1.digest index 70d698b97..34fdfa149 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-fec7a3f24112f4ad-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-fec7a3f24112f4ad-1.digest @@ -18,4 +18,4 @@ provenance material /World/Looks/M: MaterialOrigin { slots: [0], displaced: fals provenance geometry 0..1: /World/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-ffdbda6eb16c3b7d-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-ffdbda6eb16c3b7d-1.digest index 45f4d4534..f781d95dc 100644 --- a/crates/crust-core/tests/data/import_baselines/stage_usda-ffdbda6eb16c3b7d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-ffdbda6eb16c3b7d-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7300176459579144609, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/static_vectors_usda-fae85e3b03a2883e-1.digest b/crates/crust-core/tests/data/import_baselines/static_vectors_usda-fae85e3b03a2883e-1.digest index 8684d3620..9be588893 100644 --- a/crates/crust-core/tests/data/import_baselines/static_vectors_usda-fae85e3b03a2883e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/static_vectors_usda-fae85e3b03a2883e-1.digest @@ -17,4 +17,4 @@ provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } provenance geometry 0..1: /World/Ball provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/static_with_usda-9af9d7b39f92f260-1.digest b/crates/crust-core/tests/data/import_baselines/static_with_usda-9af9d7b39f92f260-1.digest index 185b63b53..9b259c903 100644 --- a/crates/crust-core/tests/data/import_baselines/static_with_usda-9af9d7b39f92f260-1.digest +++ b/crates/crust-core/tests/data/import_baselines/static_with_usda-9af9d7b39f92f260-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 4607182418800017408], interval: Some([4617315517961601024, 4618441417868443648]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/static_without_usda-cd73d9530ee2de09-1.digest b/crates/crust-core/tests/data/import_baselines/static_without_usda-cd73d9530ee2de09-1.digest index 8a708f792..200a9a36a 100644 --- a/crates/crust-core/tests/data/import_baselines/static_without_usda-cd73d9530ee2de09-1.digest +++ b/crates/crust-core/tests/data/import_baselines/static_without_usda-cd73d9530ee2de09-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18250419415378433236, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stats_usda-00e508bd2c5eb608-1.digest b/crates/crust-core/tests/data/import_baselines/stats_usda-00e508bd2c5eb608-1.digest index 73b68364e..62b11c2f8 100644 --- a/crates/crust-core/tests/data/import_baselines/stats_usda-00e508bd2c5eb608-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stats_usda-00e508bd2c5eb608-1.digest @@ -22,4 +22,4 @@ provenance geometry 1..2: /World/B provenance geometry 2..3: /World/A provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stops_usda-f48d13a255e8b51e-1.digest b/crates/crust-core/tests/data/import_baselines/stops_usda-f48d13a255e8b51e-1.digest index df6cbe018..2955c3162 100644 --- a/crates/crust-core/tests/data/import_baselines/stops_usda-f48d13a255e8b51e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/stops_usda-f48d13a255e8b51e-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/strategy_balance_usda-bdbde883917b565d-1.digest b/crates/crust-core/tests/data/import_baselines/strategy_balance_usda-bdbde883917b565d-1.digest index bfbc2a9ec..43968b831 100644 --- a/crates/crust-core/tests/data/import_baselines/strategy_balance_usda-bdbde883917b565d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/strategy_balance_usda-bdbde883917b565d-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/strategy_bogus_usda-ab14768d89b4fe10-1.digest b/crates/crust-core/tests/data/import_baselines/strategy_bogus_usda-ab14768d89b4fe10-1.digest index d2f80ab14..1a860f434 100644 --- a/crates/crust-core/tests/data/import_baselines/strategy_bogus_usda-ab14768d89b4fe10-1.digest +++ b/crates/crust-core/tests/data/import_baselines/strategy_bogus_usda-ab14768d89b4fe10-1.digest @@ -15,4 +15,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/strategy_bsdf_usda-f7c53ec9f704be37-1.digest b/crates/crust-core/tests/data/import_baselines/strategy_bsdf_usda-f7c53ec9f704be37-1.digest index 93846ffc7..73194a50e 100644 --- a/crates/crust-core/tests/data/import_baselines/strategy_bsdf_usda-f7c53ec9f704be37-1.digest +++ b/crates/crust-core/tests/data/import_baselines/strategy_bsdf_usda-f7c53ec9f704be37-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/strategy_light_usda-ec65e0dfb065b1f1-1.digest b/crates/crust-core/tests/data/import_baselines/strategy_light_usda-ec65e0dfb065b1f1-1.digest index c602b6590..d63210039 100644 --- a/crates/crust-core/tests/data/import_baselines/strategy_light_usda-ec65e0dfb065b1f1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/strategy_light_usda-ec65e0dfb065b1f1-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/strategy_power_usda-03788414ab51c35f-1.digest b/crates/crust-core/tests/data/import_baselines/strategy_power_usda-03788414ab51c35f-1.digest index 7618b76f0..b7452fce3 100644 --- a/crates/crust-core/tests/data/import_baselines/strategy_power_usda-03788414ab51c35f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/strategy_power_usda-03788414ab51c35f-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/streamed_usda-08988239fcd84b0c-1.digest b/crates/crust-core/tests/data/import_baselines/streamed_usda-08988239fcd84b0c-1.digest index 5b824d211..aafd07f30 100644 --- a/crates/crust-core/tests/data/import_baselines/streamed_usda-08988239fcd84b0c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/streamed_usda-08988239fcd84b0c-1.digest @@ -25,4 +25,4 @@ provenance geometry 3..4: /World/S3 provenance geometry 4..5: /World/S4 provenance spheres: [0, 1, 2, 3, 4] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/streamed_usda-274e7e68b089c3ac-1.digest b/crates/crust-core/tests/data/import_baselines/streamed_usda-274e7e68b089c3ac-1.digest index 136b80c0d..9c8493e42 100644 --- a/crates/crust-core/tests/data/import_baselines/streamed_usda-274e7e68b089c3ac-1.digest +++ b/crates/crust-core/tests/data/import_baselines/streamed_usda-274e7e68b089c3ac-1.digest @@ -19,4 +19,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13487 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11483454623663573887, n_points: 218, n_indices: 1296, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/W/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/W/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/string_id_usda-4ef78239c4d0e1cc-1.digest b/crates/crust-core/tests/data/import_baselines/string_id_usda-4ef78239c4d0e1cc-1.digest index 2db79b291..bd7bdb2b1 100644 --- a/crates/crust-core/tests/data/import_baselines/string_id_usda-4ef78239c4d0e1cc-1.digest +++ b/crates/crust-core/tests/data/import_baselines/string_id_usda-4ef78239c4d0e1cc-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 485570829870313581, n_points: 9, n_indices: 16, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/string_usda-edd62f0c52a0bd52-1.digest b/crates/crust-core/tests/data/import_baselines/string_usda-edd62f0c52a0bd52-1.digest index 6fdfcbce5..a50b3b667 100644 --- a/crates/crust-core/tests/data/import_baselines/string_usda-edd62f0c52a0bd52-1.digest +++ b/crates/crust-core/tests/data/import_baselines/string_usda-edd62f0c52a0bd52-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16756132900457544540, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("label", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("label", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/strip_cracks_usda-5cdf0130b2848b76-1.digest b/crates/crust-core/tests/data/import_baselines/strip_cracks_usda-5cdf0130b2848b76-1.digest index 6878dc86e..917eef9bd 100644 --- a/crates/crust-core/tests/data/import_baselines/strip_cracks_usda-5cdf0130b2848b76-1.digest +++ b/crates/crust-core/tests/data/import_baselines/strip_cracks_usda-5cdf0130b2848b76-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13966500460057317815, n_points: 59340, n_indices: 336873, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/strip_usda-a747742859825b3a-1.digest b/crates/crust-core/tests/data/import_baselines/strip_usda-a747742859825b3a-1.digest index 6353d0da7..f62ca8b16 100644 --- a/crates/crust-core/tests/data/import_baselines/strip_usda-a747742859825b3a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/strip_usda-a747742859825b3a-1.digest @@ -17,4 +17,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5200819178695756285, n_points: 68340, n_indices: 380073, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_0_usda-6db126ded01c4707-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_0_usda-6db126ded01c4707-1.digest index ccaea2ea2..89c19b20d 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_0_usda-6db126ded01c4707-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_0_usda-6db126ded01c4707-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_1_usda-bde0e042f33df4a5-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_1_usda-bde0e042f33df4a5-1.digest index 5f13588e9..a0b388a91 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_1_usda-bde0e042f33df4a5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_1_usda-bde0e042f33df4a5-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7668848715455400612, n_points: 26, n_indices: 96, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_2_usda-47f822571f7427d3-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_2_usda-47f822571f7427d3-1.digest index 1485c0bcc..ea562069c 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_2_usda-47f822571f7427d3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_2_usda-47f822571f7427d3-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5789864894772039601, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_bilinear_usda-287ba8f91aef206f-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_bilinear_usda-287ba8f91aef206f-1.digest index f5c98b679..0b8aab26c 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_bilinear_usda-287ba8f91aef206f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_bilinear_usda-287ba8f91aef206f-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13808998999592966347, n_points: 26, n_indices: 96, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_cage_usda-17f666e1e5c6d08f-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_cage_usda-17f666e1e5c6d08f-1.digest index e2033479e..82d338db2 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_cage_usda-17f666e1e5c6d08f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_cage_usda-17f666e1e5c6d08f-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_clamped_usda-01685ab19e968980-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_clamped_usda-01685ab19e968980-1.digest index 2f65aa7f9..cb6ae7ad2 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_clamped_usda-01685ab19e968980-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_clamped_usda-01685ab19e968980-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1422250545753333406, n_points: 24578, n_indices: 98304, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 6, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_default_usda-be76976c79a95643-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_default_usda-be76976c79a95643-1.digest index c2db1368d..5bf7ecf79 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_default_usda-be76976c79a95643-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_default_usda-be76976c79a95643-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_key_faceted_first_usda-510113487f701e14-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_key_faceted_first_usda-510113487f701e14-1.digest index ac157416b..3036db936 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_key_faceted_first_usda-510113487f701e14-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_key_faceted_first_usda-510113487f701e14-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_key_smooth_first_usda-9375effdf17e1f42-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_key_smooth_first_usda-9375effdf17e1f42-1.digest index 923ae977d..4831cd1d4 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_key_smooth_first_usda-9375effdf17e1f42-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_key_smooth_first_usda-9375effdf17e1f42-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_legacy_usda-e769c33757ced97c-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_legacy_usda-e769c33757ced97c-1.digest index a2e56bdf3..455ee10f3 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_legacy_usda-e769c33757ced97c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_legacy_usda-e769c33757ced97c-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_level0_usda-436132ac852dd08e-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_level0_usda-436132ac852dd08e-1.digest index fc3f6f7b7..56d76e53a 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_level0_usda-436132ac852dd08e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_level0_usda-436132ac852dd08e-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_loop_quads_usda-1e8f941ca190d506-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_loop_quads_usda-1e8f941ca190d506-1.digest index 3f0af0e46..22b55fc98 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_loop_quads_usda-1e8f941ca190d506-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_loop_quads_usda-1e8f941ca190d506-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_none_faceted_usda-7ad44c4961677420-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_none_faceted_usda-7ad44c4961677420-1.digest index 9b7d8dcfe..efe158748 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_none_faceted_usda-7ad44c4961677420-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_none_faceted_usda-7ad44c4961677420-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-38f763827a18343d-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-38f763827a18343d-1.digest index ed1fdb3b1..fbdeebce5 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-38f763827a18343d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-38f763827a18343d-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-aea9b45539bdf216-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-aea9b45539bdf216-1.digest index 21bcb367a..4a51ff455 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-aea9b45539bdf216-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_none_usda-aea9b45539bdf216-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16234188082663099353, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-347cb15990d5b2db-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-347cb15990d5b2db-1.digest index 85a341368..0ae812956 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-347cb15990d5b2db-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-347cb15990d5b2db-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6811870252920726220, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-4180b38ea57c9096-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-4180b38ea57c9096-1.digest index 77b28caa5..ca1819438 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-4180b38ea57c9096-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-4180b38ea57c9096-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(0), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-633f8e7fec39c727-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-633f8e7fec39c727-1.digest index f9d959a0e..3f6e2438d 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-633f8e7fec39c727-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_override_usda-633f8e7fec39c727-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7668848715455400612, n_points: 26, n_indices: 96, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rest_15_usda-dcdc5eeb73b7d3e8-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_rest_15_usda-dcdc5eeb73b7d3e8-1.digest index 1029ad2da..b85e2d1a2 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_rest_15_usda-dcdc5eeb73b7d3e8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rest_15_usda-dcdc5eeb73b7d3e8-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 890298128050539104, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rest_8_usda-c9f6f9ef6bd5e50d-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_rest_8_usda-c9f6f9ef6bd5e50d-1.digest index 8a25c5e97..d5b313e08 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_rest_8_usda-c9f6f9ef6bd5e50d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rest_8_usda-c9f6f9ef6bd5e50d-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12027994692895467752, n_points: 383, n_indices: 2286, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 1092616192, 1122308082, 0, 0, 1092616192, 3212836864, 0, 3193345093, 1065353216, 0, 3193345093, 0, 3212836864, 3189829428, 0, 1065353216, 3189829428, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 1092616192, 1122308082, 0, 0, 1092616192, 3212836864, 0, 3193345093, 1065353216, 0, 3193345093, 0, 3212836864, 3189829428, 0, 1065353216, 3189829428, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rule_all_usda-7c4745bac0fe1ad7-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_rule_all_usda-7c4745bac0fe1ad7-1.digest index 8aa128e1f..24d6a4f66 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_rule_all_usda-7c4745bac0fe1ad7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rule_all_usda-7c4745bac0fe1ad7-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10574267906873308772, n_points: 25, n_indices: 64, n_uvs: Some(25), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rule_boundaries_usda-3c0d79de547dbc49-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_rule_boundaries_usda-3c0d79de547dbc49-1.digest index b323245f3..57bbe3cc9 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_rule_boundaries_usda-3c0d79de547dbc49-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rule_boundaries_usda-3c0d79de547dbc49-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10124617692305081626, n_points: 25, n_indices: 64, n_uvs: Some(25), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersOnly_usda-3a7940237cbe0a3d-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersOnly_usda-3a7940237cbe0a3d-1.digest index d0ce793a0..5c3973d01 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersOnly_usda-3a7940237cbe0a3d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersOnly_usda-3a7940237cbe0a3d-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10124617692305081626, n_points: 25, n_indices: 64, n_uvs: Some(25), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus1_usda-10da8f737cfaea1d-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus1_usda-10da8f737cfaea1d-1.digest index 188a79f7f..7f01779a3 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus1_usda-10da8f737cfaea1d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus1_usda-10da8f737cfaea1d-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10124617692305081626, n_points: 25, n_indices: 64, n_uvs: Some(25), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus2_usda-7ab350be92df8201-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus2_usda-7ab350be92df8201-1.digest index ceae1d08c..858e1d4e2 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus2_usda-7ab350be92df8201-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rule_cornersPlus2_usda-7ab350be92df8201-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10124617692305081626, n_points: 25, n_indices: 64, n_uvs: Some(25), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_rule_none_usda-86622a148177c839-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_rule_none_usda-86622a148177c839-1.digest index 4506987f8..b63aa2413 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_rule_none_usda-86622a148177c839-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_rule_none_usda-86622a148177c839-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10124617692305081626, n_points: 25, n_indices: 64, n_uvs: Some(25), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_smooth_usda-ecacf29cbe8c3a69-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_smooth_usda-ecacf29cbe8c3a69-1.digest index 8e85eea80..fa244a7f3 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_smooth_usda-ecacf29cbe8c3a69-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_smooth_usda-ecacf29cbe8c3a69-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6811870252920726220, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_streamed_usda-6897e2d021bbe857-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_streamed_usda-6897e2d021bbe857-1.digest index 857667263..4c1722dc8 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_streamed_usda-6897e2d021bbe857-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_streamed_usda-6897e2d021bbe857-1.digest @@ -27,4 +27,4 @@ provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7668848715455400612, n_points: 26, n_indices: 96, n_uvs: None, smooth: true, material: 0 }), placements: 4, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_unauthored_usda-1f8d567cba520aee-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_unauthored_usda-1f8d567cba520aee-1.digest index e68e4bd8b..0ca4519cc 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_unauthored_usda-1f8d567cba520aee-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_unauthored_usda-1f8d567cba520aee-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6811870252920726220, n_points: 386, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 3, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_uv_fv_usda-5e00e8c1f3e1cc34-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_uv_fv_usda-5e00e8c1f3e1cc34-1.digest index 063236219..431bf65c7 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_uv_fv_usda-5e00e8c1f3e1cc34-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_uv_fv_usda-5e00e8c1f3e1cc34-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11244973979129046869, n_points: 9, n_indices: 16, n_uvs: Some(9), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdiv_uv_vertex_usda-b6cc7115ae3418dd-1.digest b/crates/crust-core/tests/data/import_baselines/subdiv_uv_vertex_usda-b6cc7115ae3418dd-1.digest index 5e5d15d34..8a96738f6 100644 --- a/crates/crust-core/tests/data/import_baselines/subdiv_uv_vertex_usda-b6cc7115ae3418dd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdiv_uv_vertex_usda-b6cc7115ae3418dd-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10103364612324037507, n_points: 9, n_indices: 16, n_uvs: Some(9), smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-4b5883574262488d-1.digest b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-4b5883574262488d-1.digest index 56da3fce8..0fd8605d5 100644 --- a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-4b5883574262488d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-4b5883574262488d-1.digest @@ -42,4 +42,4 @@ provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 66397 provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10122139134762046380, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 1 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1144971934, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1144971934, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-8765a889a888ae6b-1.digest b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-8765a889a888ae6b-1.digest index 56da3fce8..0fd8605d5 100644 --- a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-8765a889a888ae6b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-8765a889a888ae6b-1.digest @@ -42,4 +42,4 @@ provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 66397 provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10122139134762046380, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 1 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1144971934, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1144971934, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-95a3e0a9db67a1fb-1.digest b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-95a3e0a9db67a1fb-1.digest index b85abf0fb..4c4b3d132 100644 --- a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-95a3e0a9db67a1fb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-95a3e0a9db67a1fb-1.digest @@ -41,4 +41,4 @@ provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 66397 provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10122139134762046380, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 1 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1144971934, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1144971934, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-1.digest b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-1.digest index 56da3fce8..0fd8605d5 100644 --- a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-1.digest @@ -42,4 +42,4 @@ provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 66397 provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10122139134762046380, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 1 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1144971934, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1144971934, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-2.digest b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-2.digest index 56da3fce8..0fd8605d5 100644 --- a/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-2.digest +++ b/crates/crust-core/tests/data/import_baselines/subdivision_adaptive_usda-de7625b66c9d664b-2.digest @@ -42,4 +42,4 @@ provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 66397 provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10122139134762046380, n_points: 386, n_indices: 2304, n_uvs: None, smooth: true, material: 1 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1144971934, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 1056964608, 0, 1144971934, 0, 1056964608, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1090519040, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_usda-093423ee46de2ab4-1.digest b/crates/crust-core/tests/data/import_baselines/subdivision_usda-093423ee46de2ab4-1.digest index b7ec2b8b2..cd4704226 100644 --- a/crates/crust-core/tests/data/import_baselines/subdivision_usda-093423ee46de2ab4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdivision_usda-093423ee46de2ab4-1.digest @@ -53,4 +53,4 @@ provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16234 provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9922834378028892030, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 6 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-1.digest b/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-1.digest index 8696e4a5f..bddb5ebfa 100644 --- a/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-1.digest @@ -54,4 +54,4 @@ provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16234 provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9922834378028892030, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 6 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-2.digest b/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-2.digest index 8696e4a5f..bddb5ebfa 100644 --- a/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-2.digest +++ b/crates/crust-core/tests/data/import_baselines/subdivision_usda-59b7fc0fc3af435b-2.digest @@ -54,4 +54,4 @@ provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16234 provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9922834378028892030, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 6 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/subdivision_usda-c1e09f9374aaab81-1.digest b/crates/crust-core/tests/data/import_baselines/subdivision_usda-c1e09f9374aaab81-1.digest index 8696e4a5f..bddb5ebfa 100644 --- a/crates/crust-core/tests/data/import_baselines/subdivision_usda-c1e09f9374aaab81-1.digest +++ b/crates/crust-core/tests/data/import_baselines/subdivision_usda-c1e09f9374aaab81-1.digest @@ -54,4 +54,4 @@ provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 16234 provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9922834378028892030, n_points: 98, n_indices: 384, n_uvs: None, smooth: true, material: 6 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sun_delta_usda-ea8cdfc115606b89-1.digest b/crates/crust-core/tests/data/import_baselines/sun_delta_usda-ea8cdfc115606b89-1.digest index 29c343157..5937d80a5 100644 --- a/crates/crust-core/tests/data/import_baselines/sun_delta_usda-ea8cdfc115606b89-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sun_delta_usda-ea8cdfc115606b89-1.digest @@ -16,4 +16,4 @@ world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cy provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sun_lux_usda-f3cb39d866e6c449-1.digest b/crates/crust-core/tests/data/import_baselines/sun_lux_usda-f3cb39d866e6c449-1.digest index 680f6a404..39cc634a4 100644 --- a/crates/crust-core/tests/data/import_baselines/sun_lux_usda-f3cb39d866e6c449-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sun_lux_usda-f3cb39d866e6c449-1.digest @@ -16,4 +16,4 @@ world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cy provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sun_narrow_usda-cc46151e1eb78ebf-1.digest b/crates/crust-core/tests/data/import_baselines/sun_narrow_usda-cc46151e1eb78ebf-1.digest index 0c49e7495..ffb459ff3 100644 --- a/crates/crust-core/tests/data/import_baselines/sun_narrow_usda-cc46151e1eb78ebf-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sun_narrow_usda-cc46151e1eb78ebf-1.digest @@ -16,4 +16,4 @@ world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cy provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/sun_nits_usda-8ccba3be0d36785e-1.digest b/crates/crust-core/tests/data/import_baselines/sun_nits_usda-8ccba3be0d36785e-1.digest index 2c8564ac8..706c11a9a 100644 --- a/crates/crust-core/tests/data/import_baselines/sun_nits_usda-8ccba3be0d36785e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/sun_nits_usda-8ccba3be0d36785e-1.digest @@ -16,4 +16,4 @@ world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cy provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/supported_types_usda-5cac3f5a887f68e8-1.digest b/crates/crust-core/tests/data/import_baselines/supported_types_usda-5cac3f5a887f68e8-1.digest index b59cae91e..1ca0cac49 100644 --- a/crates/crust-core/tests/data/import_baselines/supported_types_usda-5cac3f5a887f68e8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/supported_types_usda-5cac3f5a887f68e8-1.digest @@ -52,4 +52,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 51161 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 819217792897349932, n_points: 3, n_indices: 3, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [9] provenance volumes: ["/World/fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/synonym_a_usda-c8543088a0bca8e3-1.digest b/crates/crust-core/tests/data/import_baselines/synonym_a_usda-c8543088a0bca8e3-1.digest index c5c1d669f..286e40354 100644 --- a/crates/crust-core/tests/data/import_baselines/synonym_a_usda-c8543088a0bca8e3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/synonym_a_usda-c8543088a0bca8e3-1.digest @@ -16,4 +16,4 @@ provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } provenance geometry 0..1: /World/Mover provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/synonym_b_usda-5b26c8cc28a6baa8-1.digest b/crates/crust-core/tests/data/import_baselines/synonym_b_usda-5b26c8cc28a6baa8-1.digest index 594d64fc7..f00956fbb 100644 --- a/crates/crust-core/tests/data/import_baselines/synonym_b_usda-5b26c8cc28a6baa8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/synonym_b_usda-5b26c8cc28a6baa8-1.digest @@ -16,4 +16,4 @@ provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } provenance geometry 0..1: /World/Mover provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/textured_usda-addde73d309fca5e-1.digest b/crates/crust-core/tests/data/import_baselines/textured_usda-addde73d309fca5e-1.digest index 61ce01d70..e92262356 100644 --- a/crates/crust-core/tests/data/import_baselines/textured_usda-addde73d309fca5e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/textured_usda-addde73d309fca5e-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5577808108587403347, n_points: 25, n_indices: 64, n_uvs: Some(25), smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(2), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/thin_window_usda-61e111e4ca995610-1.digest b/crates/crust-core/tests/data/import_baselines/thin_window_usda-61e111e4ca995610-1.digest index b76701734..f3e9c6285 100644 --- a/crates/crust-core/tests/data/import_baselines/thin_window_usda-61e111e4ca995610-1.digest +++ b/crates/crust-core/tests/data/import_baselines/thin_window_usda-61e111e4ca995610-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 96218 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12790827634220154733, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/thin_window_usda-9e0a6257872a8f5f-1.digest b/crates/crust-core/tests/data/import_baselines/thin_window_usda-9e0a6257872a8f5f-1.digest index 465bc7ab6..ff8e81369 100644 --- a/crates/crust-core/tests/data/import_baselines/thin_window_usda-9e0a6257872a8f5f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/thin_window_usda-9e0a6257872a8f5f-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 96218 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12790827634220154733, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-1.digest b/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-1.digest index b76701734..f3e9c6285 100644 --- a/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-1.digest +++ b/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-1.digest @@ -32,4 +32,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 96218 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12790827634220154733, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-2.digest b/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-2.digest index b76701734..f3e9c6285 100644 --- a/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-2.digest +++ b/crates/crust-core/tests/data/import_baselines/thin_window_usda-da2b075160721507-2.digest @@ -32,4 +32,4 @@ provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 96218 provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12790827634220154733, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/tiles_usda-63de672cd360cf69-1.digest b/crates/crust-core/tests/data/import_baselines/tiles_usda-63de672cd360cf69-1.digest index 9d4a865b8..28028303d 100644 --- a/crates/crust-core/tests/data/import_baselines/tiles_usda-63de672cd360cf69-1.digest +++ b/crates/crust-core/tests/data/import_baselines/tiles_usda-63de672cd360cf69-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 76276 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15030511554815353325, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/time_sampled_1_usda-ee3787d0222ab673-1.digest b/crates/crust-core/tests/data/import_baselines/time_sampled_1_usda-ee3787d0222ab673-1.digest index 046d36e90..706fcfc2f 100644 --- a/crates/crust-core/tests/data/import_baselines/time_sampled_1_usda-ee3787d0222ab673-1.digest +++ b/crates/crust-core/tests/data/import_baselines/time_sampled_1_usda-ee3787d0222ab673-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(1.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(1.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/time_sampled_2_usda-4dad1e9703710b97-1.digest b/crates/crust-core/tests/data/import_baselines/time_sampled_2_usda-4dad1e9703710b97-1.digest index 9aff0dbfb..8a161b6c2 100644 --- a/crates/crust-core/tests/data/import_baselines/time_sampled_2_usda-4dad1e9703710b97-1.digest +++ b/crates/crust-core/tests/data/import_baselines/time_sampled_2_usda-4dad1e9703710b97-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(2.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(2.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/time_usda-a4ea088a5cd5b4c7-1.digest b/crates/crust-core/tests/data/import_baselines/time_usda-a4ea088a5cd5b4c7-1.digest index 608ec969c..e76e60d96 100644 --- a/crates/crust-core/tests/data/import_baselines/time_usda-a4ea088a5cd5b4c7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/time_usda-a4ea088a5cd5b4c7-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(42.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(42.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/cam"), cameras: ["/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/tolerance_default_usda-3a112890c553cc1b-1.digest b/crates/crust-core/tests/data/import_baselines/tolerance_default_usda-3a112890c553cc1b-1.digest index 2b548e07d..67dc8b3b3 100644 --- a/crates/crust-core/tests/data/import_baselines/tolerance_default_usda-3a112890c553cc1b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/tolerance_default_usda-3a112890c553cc1b-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/tolerance_nan_usda-22547c2684ba9e8c-1.digest b/crates/crust-core/tests/data/import_baselines/tolerance_nan_usda-22547c2684ba9e8c-1.digest index 99cbb97de..0abdf2a83 100644 --- a/crates/crust-core/tests/data/import_baselines/tolerance_nan_usda-22547c2684ba9e8c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/tolerance_nan_usda-22547c2684ba9e8c-1.digest @@ -15,4 +15,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/tolerance_off_usda-f5f012b4db29329d-1.digest b/crates/crust-core/tests/data/import_baselines/tolerance_off_usda-f5f012b4db29329d-1.digest index 4e037be9f..af3c51260 100644 --- a/crates/crust-core/tests/data/import_baselines/tolerance_off_usda-f5f012b4db29329d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/tolerance_off_usda-f5f012b4db29329d-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/translate_scale_usda-f3698f1a1411c8b2-1.digest b/crates/crust-core/tests/data/import_baselines/translate_scale_usda-f3698f1a1411c8b2-1.digest index 6eab9f935..7a72dde50 100644 --- a/crates/crust-core/tests/data/import_baselines/translate_scale_usda-f3698f1a1411c8b2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/translate_scale_usda-f3698f1a1411c8b2-1.digest @@ -18,4 +18,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14414187199170096052, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/translatex_curves_usda-65ef3846123d9b35-1.digest b/crates/crust-core/tests/data/import_baselines/translatex_curves_usda-65ef3846123d9b35-1.digest index 9914f66f0..d92327676 100644 --- a/crates/crust-core/tests/data/import_baselines/translatex_curves_usda-65ef3846123d9b35-1.digest +++ b/crates/crust-core/tests/data/import_baselines/translatex_curves_usda-65ef3846123d9b35-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /W/C provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/translatex_disk_usda-9d38522639915278-1.digest b/crates/crust-core/tests/data/import_baselines/translatex_disk_usda-9d38522639915278-1.digest index 2e0cb051f..78684174e 100644 --- a/crates/crust-core/tests/data/import_baselines/translatex_disk_usda-9d38522639915278-1.digest +++ b/crates/crust-core/tests/data/import_baselines/translatex_disk_usda-9d38522639915278-1.digest @@ -18,4 +18,4 @@ provenance light /W/D: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /W/D provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/tuft_shadow_usda-1baacafb4242e12e-1.digest b/crates/crust-core/tests/data/import_baselines/tuft_shadow_usda-1baacafb4242e12e-1.digest index 8b411d078..f0e1e7550 100644 --- a/crates/crust-core/tests/data/import_baselines/tuft_shadow_usda-1baacafb4242e12e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/tuft_shadow_usda-1baacafb4242e12e-1.digest @@ -25,4 +25,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14903623499644419787, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/twice_a_usda-0f943c80bd7e2c65-1.digest b/crates/crust-core/tests/data/import_baselines/twice_a_usda-0f943c80bd7e2c65-1.digest index d927ec68d..6ab57baa8 100644 --- a/crates/crust-core/tests/data/import_baselines/twice_a_usda-0f943c80bd7e2c65-1.digest +++ b/crates/crust-core/tests/data/import_baselines/twice_a_usda-0f943c80bd7e2c65-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2488158973558984587, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/twice_b_usda-b96b0ece9c5875aa-1.digest b/crates/crust-core/tests/data/import_baselines/twice_b_usda-b96b0ece9c5875aa-1.digest index 19d7a84a0..13e63f94e 100644 --- a/crates/crust-core/tests/data/import_baselines/twice_b_usda-b96b0ece9c5875aa-1.digest +++ b/crates/crust-core/tests/data/import_baselines/twice_b_usda-b96b0ece9c5875aa-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2488158973558984587, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/two_cameras_broken_first_usda-3cb7946e1e445b8e-1.digest b/crates/crust-core/tests/data/import_baselines/two_cameras_broken_first_usda-3cb7946e1e445b8e-1.digest index 95c6e21ce..4c0a29525 100644 --- a/crates/crust-core/tests/data/import_baselines/two_cameras_broken_first_usda-3cb7946e1e445b8e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/two_cameras_broken_first_usda-3cb7946e1e445b8e-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/shot"), cameras: ["/shot", "/broken"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/shot"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/shot"), cameras: ["/shot", "/broken"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/shot"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/two_cameras_shot_first_usda-a7d808f7cd7c7a83-1.digest b/crates/crust-core/tests/data/import_baselines/two_cameras_shot_first_usda-a7d808f7cd7c7a83-1.digest index ed8f899bf..3a754c982 100644 --- a/crates/crust-core/tests/data/import_baselines/two_cameras_shot_first_usda-a7d808f7cd7c7a83-1.digest +++ b/crates/crust-core/tests/data/import_baselines/two_cameras_shot_first_usda-a7d808f7cd7c7a83-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/shot"), cameras: ["/broken", "/shot"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/shot"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/shot"), cameras: ["/broken", "/shot"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/shot"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/two_instancers_usda-287c7bdad0690e3b-1.digest b/crates/crust-core/tests/data/import_baselines/two_instancers_usda-287c7bdad0690e3b-1.digest index 8ce2f8077..2f63fe63f 100644 --- a/crates/crust-core/tests/data/import_baselines/two_instancers_usda-287c7bdad0690e3b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/two_instancers_usda-287c7bdad0690e3b-1.digest @@ -18,4 +18,4 @@ provenance geometry 1..2: /W/Group/Left provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14289806633734265804, n_points: 8, n_indices: 24, n_uvs: None, smooth: true, material: 0 }), placements: 0, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 0, 1153360542, 0, 0, 0, 3212836864, 0, 3193345094, 1065353216, 0, 3193345094, 0, 3212836864, 3186714319, 0, 1065353216, 3186714319, 0, 0, 3212836864, 1073741824, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Cam"), cameras: ["/W/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unauthored_usda-1a04ae4ebcf35cb8-1.digest b/crates/crust-core/tests/data/import_baselines/unauthored_usda-1a04ae4ebcf35cb8-1.digest index 6c8f0aa14..9277973bd 100644 --- a/crates/crust-core/tests/data/import_baselines/unauthored_usda-1a04ae4ebcf35cb8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unauthored_usda-1a04ae4ebcf35cb8-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/Ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unauthored_usda-9a9d89c801b1b740-1.digest b/crates/crust-core/tests/data/import_baselines/unauthored_usda-9a9d89c801b1b740-1.digest index 3494bdd2c..8dc9b46a1 100644 --- a/crates/crust-core/tests/data/import_baselines/unauthored_usda-9a9d89c801b1b740-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unauthored_usda-9a9d89c801b1b740-1.digest @@ -27,4 +27,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [1, 2] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unbindable_usda-a5d47f8d674e7ddd-1.digest b/crates/crust-core/tests/data/import_baselines/unbindable_usda-a5d47f8d674e7ddd-1.digest index d019a9cfc..b3b8b2440 100644 --- a/crates/crust-core/tests/data/import_baselines/unbindable_usda-a5d47f8d674e7ddd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unbindable_usda-a5d47f8d674e7ddd-1.digest @@ -24,4 +24,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unbound_usda-19c17e4f548a50df-1.digest b/crates/crust-core/tests/data/import_baselines/unbound_usda-19c17e4f548a50df-1.digest index a076fc99e..272b4c3a0 100644 --- a/crates/crust-core/tests/data/import_baselines/unbound_usda-19c17e4f548a50df-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unbound_usda-19c17e4f548a50df-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/Bound provenance geometry 1..2: /World/Plain provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unbound_usda-4ae577ca0b682f0f-1.digest b/crates/crust-core/tests/data/import_baselines/unbound_usda-4ae577ca0b682f0f-1.digest index 556603b07..f10411483 100644 --- a/crates/crust-core/tests/data/import_baselines/unbound_usda-4ae577ca0b682f0f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unbound_usda-4ae577ca0b682f0f-1.digest @@ -24,4 +24,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-2c90ea028524eadd-1.digest b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-2c90ea028524eadd-1.digest index 7f31ad80e..cb5583f5b 100644 --- a/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-2c90ea028524eadd-1.digest +++ b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-2c90ea028524eadd-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4839734000856103295, n_points: 66, n_indices: 384, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("faceId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("faceId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-b6490d10d0de391f-1.digest b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-b6490d10d0de391f-1.digest index b4ad91390..8477a4ae1 100644 --- a/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-b6490d10d0de391f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-b6490d10d0de391f-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15495891107158519071, n_points: 65, n_indices: 192, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("faceId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 2, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("faceId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d12f6f58167b27f9-1.digest b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d12f6f58167b27f9-1.digest index c95ccde8f..360b5f320 100644 --- a/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d12f6f58167b27f9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d12f6f58167b27f9-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17661192499183501319, n_points: 131, n_indices: 648, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 1092616192, 1122308082, 0, 0, 1092616192, 3212836864, 0, 3193345093, 1065353216, 0, 3193345093, 0, 3212836864, 3189829428, 0, 1065353216, 3189829428, 0, 0, 3212836864, 1082130432, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("faceId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 1092616192, 1122308082, 0, 0, 1092616192, 3212836864, 0, 3193345093, 1065353216, 0, 3193345093, 0, 3212836864, 3189829428, 0, 1065353216, 3189829428, 0, 0, 3212836864, 1082130432, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("faceId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d982dbb48b0da21b-1.digest b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d982dbb48b0da21b-1.digest index 8c3e6433e..c13694bb9 100644 --- a/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d982dbb48b0da21b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/uniform_cages_usda-d982dbb48b0da21b-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 4772320826425062510, n_points: 258, n_indices: 1536, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 1092616192, 1122308082, 0, 0, 1092616192, 3212836864, 0, 3193345093, 1065353216, 0, 3193345093, 0, 3212836864, 3189829428, 0, 1065353216, 3189829428, 0, 0, 3212836864, 1082130432, 3])), domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("faceId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: Some(ScreenKey([0, 0, 1092616192, 1122308082, 0, 0, 1092616192, 3212836864, 0, 3193345093, 1065353216, 0, 3193345093, 0, 3212836864, 3189829428, 0, 1065353216, 3189829428, 0, 0, 3212836864, 1082130432, 3])), domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("faceId", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/uniform_colour_usda-6a475987121a1476-1.digest b/crates/crust-core/tests/data/import_baselines/uniform_colour_usda-6a475987121a1476-1.digest index 1f0d7d720..5fa25ba22 100644 --- a/crates/crust-core/tests/data/import_baselines/uniform_colour_usda-6a475987121a1476-1.digest +++ b/crates/crust-core/tests/data/import_baselines/uniform_colour_usda-6a475987121a1476-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5760922452270159177, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unit_tiny_lens_usda-aa2efc45eecd1493-1.digest b/crates/crust-core/tests/data/import_baselines/unit_tiny_lens_usda-aa2efc45eecd1493-1.digest index f46f57fc6..75e616f19 100644 --- a/crates/crust-core/tests/data/import_baselines/unit_tiny_lens_usda-aa2efc45eecd1493-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unit_tiny_lens_usda-aa2efc45eecd1493-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unit_volume_usda-693980b7090e37bf-1.digest b/crates/crust-core/tests/data/import_baselines/unit_volume_usda-693980b7090e37bf-1.digest index a0be8c73e..d1e17ad12 100644 --- a/crates/crust-core/tests/data/import_baselines/unit_volume_usda-693980b7090e37bf-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unit_volume_usda-693980b7090e37bf-1.digest @@ -15,4 +15,4 @@ volume 0: sigma_s Vec3A(0.5, 0.5, 0.5) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emissi world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unit_zero_lens_usda-d1f56221f44bb692-1.digest b/crates/crust-core/tests/data/import_baselines/unit_zero_lens_usda-d1f56221f44bb692-1.digest index 972053b2b..ab6dfc759 100644 --- a/crates/crust-core/tests/data/import_baselines/unit_zero_lens_usda-d1f56221f44bb692-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unit_zero_lens_usda-d1f56221f44bb692-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unit_zero_named_usda-9847ffecfd9df22b-1.digest b/crates/crust-core/tests/data/import_baselines/unit_zero_named_usda-9847ffecfd9df22b-1.digest index b2823dd36..76470227e 100644 --- a/crates/crust-core/tests/data/import_baselines/unit_zero_named_usda-9847ffecfd9df22b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unit_zero_named_usda-9847ffecfd9df22b-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Named"), cameras: ["/World/Named", "/World/First"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Named"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Named"), cameras: ["/World/Named", "/World/First"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Named"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unit_zero_pinhole_usda-af47867eeabcfd70-1.digest b/crates/crust-core/tests/data/import_baselines/unit_zero_pinhole_usda-af47867eeabcfd70-1.digest index 374bc512c..ab868630e 100644 --- a/crates/crust-core/tests/data/import_baselines/unit_zero_pinhole_usda-af47867eeabcfd70-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unit_zero_pinhole_usda-af47867eeabcfd70-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unknown_display_usda-e75f3f3b8d756ec8-1.digest b/crates/crust-core/tests/data/import_baselines/unknown_display_usda-e75f3f3b8d756ec8-1.digest index a4ace10e4..2b4bdba23 100644 --- a/crates/crust-core/tests/data/import_baselines/unknown_display_usda-e75f3f3b8d756ec8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unknown_display_usda-e75f3f3b8d756ec8-1.digest @@ -24,4 +24,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unknown_filter_usda-ed678783aa9ef74d-1.digest b/crates/crust-core/tests/data/import_baselines/unknown_filter_usda-ed678783aa9ef74d-1.digest index 43e6beb72..af6da6b99 100644 --- a/crates/crust-core/tests/data/import_baselines/unknown_filter_usda-ed678783aa9ef74d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unknown_filter_usda-ed678783aa9ef74d-1.digest @@ -24,4 +24,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unknown_op_usda-954c2bfc62b12357-1.digest b/crates/crust-core/tests/data/import_baselines/unknown_op_usda-954c2bfc62b12357-1.digest index 84ffb738e..875165fc2 100644 --- a/crates/crust-core/tests/data/import_baselines/unknown_op_usda-954c2bfc62b12357-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unknown_op_usda-954c2bfc62b12357-1.digest @@ -24,4 +24,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unknown_type_usda-d0386e0b10524625-1.digest b/crates/crust-core/tests/data/import_baselines/unknown_type_usda-d0386e0b10524625-1.digest index 0f5f14a88..578304709 100644 --- a/crates/crust-core/tests/data/import_baselines/unknown_type_usda-d0386e0b10524625-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unknown_type_usda-d0386e0b10524625-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/rig/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unnamed_usda-ed6b84994bc45537-1.digest b/crates/crust-core/tests/data/import_baselines/unnamed_usda-ed6b84994bc45537-1.digest index 108f6f23e..1d40d9527 100644 --- a/crates/crust-core/tests/data/import_baselines/unnamed_usda-ed6b84994bc45537-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unnamed_usda-ed6b84994bc45537-1.digest @@ -13,4 +13,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/cams/Hidden/witness"), cameras: ["/cams/Hidden/witness", "/cams/shot", "/cams/layout"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cams/Hidden/witness"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/cams/Hidden/witness"), cameras: ["/cams/Hidden/witness", "/cams/shot", "/cams/layout"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/cams/Hidden/witness"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unresolvable_winner_usda-514f97ffe2814294-1.digest b/crates/crust-core/tests/data/import_baselines/unresolvable_winner_usda-514f97ffe2814294-1.digest index e92271c99..f7a23864d 100644 --- a/crates/crust-core/tests/data/import_baselines/unresolvable_winner_usda-514f97ffe2814294-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unresolvable_winner_usda-514f97ffe2814294-1.digest @@ -20,4 +20,4 @@ provenance geometry 0..1: /World/Coll/b provenance geometry 1..2: /World/Strong/a provenance spheres: [0, 1] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unsupported_in_prototype_usda-d2aca9633823884e-1.digest b/crates/crust-core/tests/data/import_baselines/unsupported_in_prototype_usda-d2aca9633823884e-1.digest index 463d746ba..ddb101b3a 100644 --- a/crates/crust-core/tests/data/import_baselines/unsupported_in_prototype_usda-d2aca9633823884e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unsupported_in_prototype_usda-d2aca9633823884e-1.digest @@ -15,4 +15,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unsupported_type_one_usda-61236dabf0bd2054-1.digest b/crates/crust-core/tests/data/import_baselines/unsupported_type_one_usda-61236dabf0bd2054-1.digest index 9319fe0d7..a464d387b 100644 --- a/crates/crust-core/tests/data/import_baselines/unsupported_type_one_usda-61236dabf0bd2054-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unsupported_type_one_usda-61236dabf0bd2054-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unsupported_types_usda-4026b0fff876b77b-1.digest b/crates/crust-core/tests/data/import_baselines/unsupported_types_usda-4026b0fff876b77b-1.digest index 6b8a8b2e2..7772cb568 100644 --- a/crates/crust-core/tests/data/import_baselines/unsupported_types_usda-4026b0fff876b77b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unsupported_types_usda-4026b0fff876b77b-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unsupported_usda-25a7c1709e68a39b-1.digest b/crates/crust-core/tests/data/import_baselines/unsupported_usda-25a7c1709e68a39b-1.digest index 688e5a614..33b956ebc 100644 --- a/crates/crust-core/tests/data/import_baselines/unsupported_usda-25a7c1709e68a39b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unsupported_usda-25a7c1709e68a39b-1.digest @@ -24,4 +24,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/unusable_texture_usda-0a21b6baa96879e3-1.digest b/crates/crust-core/tests/data/import_baselines/unusable_texture_usda-0a21b6baa96879e3-1.digest index bf4601cee..3d7f6d17d 100644 --- a/crates/crust-core/tests/data/import_baselines/unusable_texture_usda-0a21b6baa96879e3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/unusable_texture_usda-0a21b6baa96879e3-1.digest @@ -20,4 +20,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 485570829870313581, n_points: 9, n_indices: 16, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: true } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: Some(1), subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/usdlux_usda-0d6669b552eae2be-1.digest b/crates/crust-core/tests/data/import_baselines/usdlux_usda-0d6669b552eae2be-1.digest index 73caf8813..886ee7681 100644 --- a/crates/crust-core/tests/data/import_baselines/usdlux_usda-0d6669b552eae2be-1.digest +++ b/crates/crust-core/tests/data/import_baselines/usdlux_usda-0d6669b552eae2be-1.digest @@ -53,4 +53,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14805 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8254717367002287235, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [6, 7, 8] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-1.digest b/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-1.digest index 6584be317..12cd00454 100644 --- a/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-1.digest +++ b/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-1.digest @@ -54,4 +54,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14805 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8254717367002287235, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [6, 7, 8] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-2.digest b/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-2.digest index 6584be317..12cd00454 100644 --- a/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-2.digest +++ b/crates/crust-core/tests/data/import_baselines/usdlux_usda-39cf98150f7f0d03-2.digest @@ -54,4 +54,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14805 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8254717367002287235, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [6, 7, 8] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-36a3119df926a1de-1.digest b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-36a3119df926a1de-1.digest index 6e30ddcc7..cbb255638 100644 --- a/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-36a3119df926a1de-1.digest +++ b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-36a3119df926a1de-1.digest @@ -39,4 +39,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10519 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11939811521305294379, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-7e17862f6c19bca4-1.digest b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-7e17862f6c19bca4-1.digest index c9f90fb79..2b9e1183e 100644 --- a/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-7e17862f6c19bca4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-7e17862f6c19bca4-1.digest @@ -39,4 +39,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10519 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11939811521305294379, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-1.digest b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-1.digest index d558ec3ad..5a71a4842 100644 --- a/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-1.digest @@ -40,4 +40,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10519 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11939811521305294379, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-2.digest b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-2.digest index d558ec3ad..5a71a4842 100644 --- a/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-2.digest +++ b/crates/crust-core/tests/data/import_baselines/usdpreview_textured_usda-ae16aa06d4e182b3-2.digest @@ -40,4 +40,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10519 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11939811521305294379, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/uv2_usda-a9136787dec77f95-1.digest b/crates/crust-core/tests/data/import_baselines/uv2_usda-a9136787dec77f95-1.digest index ccc598eec..267d1e0ee 100644 --- a/crates/crust-core/tests/data/import_baselines/uv2_usda-a9136787dec77f95-1.digest +++ b/crates/crust-core/tests/data/import_baselines/uv2_usda-a9136787dec77f95-1.digest @@ -19,4 +19,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13769581966721318563, n_points: 6, n_indices: 8, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("uv2", 2)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("uv2", 2)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/uv_dedup_same_usda-9ef71121455e022c-1.digest b/crates/crust-core/tests/data/import_baselines/uv_dedup_same_usda-9ef71121455e022c-1.digest index dd6009b64..7d417212c 100644 --- a/crates/crust-core/tests/data/import_baselines/uv_dedup_same_usda-9ef71121455e022c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/uv_dedup_same_usda-9ef71121455e022c-1.digest @@ -22,4 +22,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11383868175397459472, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/uv_dedup_usda-3e327caf2288bcc5-1.digest b/crates/crust-core/tests/data/import_baselines/uv_dedup_usda-3e327caf2288bcc5-1.digest index a379b5bc2..846996201 100644 --- a/crates/crust-core/tests/data/import_baselines/uv_dedup_usda-3e327caf2288bcc5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/uv_dedup_usda-3e327caf2288bcc5-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 56927 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11383868175397459472, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/var_authored_usda-30d82aafae5b77cb-1.digest b/crates/crust-core/tests/data/import_baselines/var_authored_usda-30d82aafae5b77cb-1.digest index cb12c1f96..b340e66b4 100644 --- a/crates/crust-core/tests/data/import_baselines/var_authored_usda-30d82aafae5b77cb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/var_authored_usda-30d82aafae5b77cb-1.digest @@ -21,4 +21,4 @@ provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14779366758744255248, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("rest", 3), ("displayColor", 3)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-1.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-1.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-2.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-2.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-2.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-30c729cf3e421f8c-2.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-324cce08805da6ff-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-324cce08805da6ff-1.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-324cce08805da6ff-1.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-324cce08805da6ff-1.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-1.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-1.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-2.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-2.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-2.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3b12df225993b91b-2.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3d8992b3ea4a144d-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3d8992b3ea4a144d-1.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3d8992b3ea4a144d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3d8992b3ea4a144d-1.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3fdc201d13c79fac-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3fdc201d13c79fac-1.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3fdc201d13c79fac-1.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-3fdc201d13c79fac-1.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-1.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-1.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-1.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-2.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-2.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-2.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-2.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-3.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-3.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-3.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-3.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-4.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-4.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-4.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-4f2fb0dc74121654-4.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-1.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-1.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-2.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-2.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-2.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-2.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-3.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-3.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-3.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-3.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-4.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-4.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-4.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-6dae75008d5ac94f-4.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-1.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-1.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-1.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-10.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-10.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-10.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-10.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-11.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-11.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-11.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-11.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-12.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-12.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-12.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-12.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-13.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-13.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-13.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-13.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-14.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-14.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-14.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-14.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-15.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-15.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-15.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-15.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-16.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-16.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-16.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-16.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-17.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-17.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-17.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-17.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-18.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-18.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-18.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-18.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-19.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-19.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-19.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-19.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-2.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-2.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-2.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-2.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-20.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-20.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-20.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-20.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-21.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-21.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-21.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-21.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-22.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-22.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-22.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-22.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-23.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-23.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-23.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-23.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-24.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-24.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-24.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-24.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-25.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-25.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-25.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-25.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-3.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-3.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-3.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-3.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-4.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-4.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-4.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-4.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-5.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-5.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-5.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-5.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-6.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-6.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-6.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-6.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-7.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-7.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-7.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-7.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-8.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-8.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-8.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-8.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-9.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-9.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-9.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-70c995e092ab1d61-9.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-7b2ec235dd7d06ba-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-7b2ec235dd7d06ba-1.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-7b2ec235dd7d06ba-1.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-7b2ec235dd7d06ba-1.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-1.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-1.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-1.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-10.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-10.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-10.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-10.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-11.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-11.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-11.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-11.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-2.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-2.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-2.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-2.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-3.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-3.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-3.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-3.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-4.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-4.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-4.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-4.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-5.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-5.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-5.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-5.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-6.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-6.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-6.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-6.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-7.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-7.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-7.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-7.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-8.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-8.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-8.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-8.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-9.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-9.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-9.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-8251e3de3f3f6069-9.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-918cd4cfc31f23ae-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-918cd4cfc31f23ae-1.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-918cd4cfc31f23ae-1.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-918cd4cfc31f23ae-1.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-1.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-1.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-1.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-2.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-2.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-2.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-2.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-3.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-3.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-3.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-c455222f332b9874-3.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-1.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-1.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-1.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-2.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-2.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-2.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-2.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-3.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-3.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-3.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-ecedf2e2c801d4c5-3.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-eeb660d07679d619-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-eeb660d07679d619-1.digest index 8f6248de6..4eaf1aa8c 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-eeb660d07679d619-1.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-eeb660d07679d619-1.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-f7c825bf3b0bac82-1.digest b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-f7c825bf3b0bac82-1.digest index b00dc4322..6c2cda342 100644 --- a/crates/crust-core/tests/data/import_baselines/veach_mis_usda-f7c825bf3b0bac82-1.digest +++ b/crates/crust-core/tests/data/import_baselines/veach_mis_usda-f7c825bf3b0bac82-1.digest @@ -58,4 +58,4 @@ provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 15384 provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6481752197548623432, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 4 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/visibility_usda-0f9ed9fc0b62a02c-1.digest b/crates/crust-core/tests/data/import_baselines/visibility_usda-0f9ed9fc0b62a02c-1.digest index 6386c397a..e88ac60f9 100644 --- a/crates/crust-core/tests/data/import_baselines/visibility_usda-0f9ed9fc0b62a02c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/visibility_usda-0f9ed9fc0b62a02c-1.digest @@ -24,4 +24,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3224020731942780983, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(2.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Hidden/Cam"), cameras: ["/W/Hidden/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Hidden/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(2.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Hidden/Cam"), cameras: ["/W/Hidden/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Hidden/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/visibility_usda-2bf7c45881effd3f-1.digest b/crates/crust-core/tests/data/import_baselines/visibility_usda-2bf7c45881effd3f-1.digest index 6e61c2403..536f9c762 100644 --- a/crates/crust-core/tests/data/import_baselines/visibility_usda-2bf7c45881effd3f-1.digest +++ b/crates/crust-core/tests/data/import_baselines/visibility_usda-2bf7c45881effd3f-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3224020731942780983, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/Hidden/Cam"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Hidden/Cam"), cameras: ["/W/Hidden/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Hidden/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: Some("/W/Hidden/Cam"), subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Hidden/Cam"), cameras: ["/W/Hidden/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Hidden/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/visibility_usda-d0c678c9c1d6a069-1.digest b/crates/crust-core/tests/data/import_baselines/visibility_usda-d0c678c9c1d6a069-1.digest index a5ec6cf60..3048b6e34 100644 --- a/crates/crust-core/tests/data/import_baselines/visibility_usda-d0c678c9c1d6a069-1.digest +++ b/crates/crust-core/tests/data/import_baselines/visibility_usda-d0c678c9c1d6a069-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3224020731942780983, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: Some(1.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Hidden/Cam"), cameras: ["/W/Hidden/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Hidden/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(1.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Hidden/Cam"), cameras: ["/W/Hidden/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Hidden/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/visibility_usda-f7d5c6c9644dd6bb-1.digest b/crates/crust-core/tests/data/import_baselines/visibility_usda-f7d5c6c9644dd6bb-1.digest index 4c3b99f01..d2df34b73 100644 --- a/crates/crust-core/tests/data/import_baselines/visibility_usda-f7d5c6c9644dd6bb-1.digest +++ b/crates/crust-core/tests/data/import_baselines/visibility_usda-f7d5c6c9644dd6bb-1.digest @@ -26,4 +26,4 @@ provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 3224020731942780983, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: true, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/W/Hidden/Cam"), cameras: ["/W/Hidden/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Hidden/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/W/Hidden/Cam"), cameras: ["/W/Hidden/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/W/Hidden/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/visible_light_usda-c593161971da5ec4-1.digest b/crates/crust-core/tests/data/import_baselines/visible_light_usda-c593161971da5ec4-1.digest index 02f5e0fd8..2c4ad9083 100644 --- a/crates/crust-core/tests/data/import_baselines/visible_light_usda-c593161971da5ec4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/visible_light_usda-c593161971da5ec4-1.digest @@ -18,4 +18,4 @@ provenance light /World/L: LightOrigin { index: 0, geoms: 0..1 } provenance geometry 0..1: /World/L provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/volume_in_prototype_usda-d6406b3b1214ee81-1.digest b/crates/crust-core/tests/data/import_baselines/volume_in_prototype_usda-d6406b3b1214ee81-1.digest index 536fbb3c2..2d810629d 100644 --- a/crates/crust-core/tests/data/import_baselines/volume_in_prototype_usda-d6406b3b1214ee81-1.digest +++ b/crates/crust-core/tests/data/import_baselines/volume_in_prototype_usda-d6406b3b1214ee81-1.digest @@ -16,4 +16,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/volume_usda-a8034cd85e6f3de3-1.digest b/crates/crust-core/tests/data/import_baselines/volume_usda-a8034cd85e6f3de3-1.digest index ad1c8ee81..97b0f3db0 100644 --- a/crates/crust-core/tests/data/import_baselines/volume_usda-a8034cd85e6f3de3-1.digest +++ b/crates/crust-core/tests/data/import_baselines/volume_usda-a8034cd85e6f3de3-1.digest @@ -16,4 +16,4 @@ volume 0: sigma_s Vec3A(0.5, 0.5, 0.5) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emissi world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/hidden"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/hidden"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/volume_usda-bac87085eea27fa2-1.digest b/crates/crust-core/tests/data/import_baselines/volume_usda-bac87085eea27fa2-1.digest index b4ea92e96..ab32e0df1 100644 --- a/crates/crust-core/tests/data/import_baselines/volume_usda-bac87085eea27fa2-1.digest +++ b/crates/crust-core/tests/data/import_baselines/volume_usda-bac87085eea27fa2-1.digest @@ -15,4 +15,4 @@ volume 0: sigma_s Vec3A(0.5, 0.5, 0.5) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emissi world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/volume_usda-dc3452b116e9581a-1.digest b/crates/crust-core/tests/data/import_baselines/volume_usda-dc3452b116e9581a-1.digest index 936462766..95d74b5b0 100644 --- a/crates/crust-core/tests/data/import_baselines/volume_usda-dc3452b116e9581a-1.digest +++ b/crates/crust-core/tests/data/import_baselines/volume_usda-dc3452b116e9581a-1.digest @@ -16,4 +16,4 @@ volume 0: sigma_s Vec3A(0.5, 0.5, 0.5) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emissi world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: ["/World/Fog"] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/matte"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/matte"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/wide_ok_usda-07bfe44a3376f28e-1.digest b/crates/crust-core/tests/data/import_baselines/wide_ok_usda-07bfe44a3376f28e-1.digest index c9a551e1f..74b66c6ce 100644 --- a/crates/crust-core/tests/data/import_baselines/wide_ok_usda-07bfe44a3376f28e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/wide_ok_usda-07bfe44a3376f28e-1.digest @@ -23,4 +23,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/wide_usda-98ba41961b37bb34-1.digest b/crates/crust-core/tests/data/import_baselines/wide_usda-98ba41961b37bb34-1.digest index 2e21a0137..58ef35700 100644 --- a/crates/crust-core/tests/data/import_baselines/wide_usda-98ba41961b37bb34-1.digest +++ b/crates/crust-core/tests/data/import_baselines/wide_usda-98ba41961b37bb34-1.digest @@ -24,4 +24,4 @@ provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 34303 provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 13118596165941616386, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: Some(Space(1)), camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: true, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [("matte", 1)], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/window_bottom_quarter_usda-3769adf96d53a2f1-1.digest b/crates/crust-core/tests/data/import_baselines/window_bottom_quarter_usda-3769adf96d53a2f1-1.digest index e570c1a90..f0bf0062d 100644 --- a/crates/crust-core/tests/data/import_baselines/window_bottom_quarter_usda-3769adf96d53a2f1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/window_bottom_quarter_usda-3769adf96d53a2f1-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/window_boundaries_usda-8ec00fd05808f90e-1.digest b/crates/crust-core/tests/data/import_baselines/window_boundaries_usda-8ec00fd05808f90e-1.digest index 4baa72f39..ffbda5240 100644 --- a/crates/crust-core/tests/data/import_baselines/window_boundaries_usda-8ec00fd05808f90e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/window_boundaries_usda-8ec00fd05808f90e-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/window_centres_usda-5b25bbbab727a81b-1.digest b/crates/crust-core/tests/data/import_baselines/window_centres_usda-5b25bbbab727a81b-1.digest index 8c8aa78e6..d143c2859 100644 --- a/crates/crust-core/tests/data/import_baselines/window_centres_usda-5b25bbbab727a81b-1.digest +++ b/crates/crust-core/tests/data/import_baselines/window_centres_usda-5b25bbbab727a81b-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/window_default_usda-1d0d1bbb6d0e388d-1.digest b/crates/crust-core/tests/data/import_baselines/window_default_usda-1d0d1bbb6d0e388d-1.digest index d9e6a6f29..3133f71cf 100644 --- a/crates/crust-core/tests/data/import_baselines/window_default_usda-1d0d1bbb6d0e388d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/window_default_usda-1d0d1bbb6d0e388d-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/window_empty_usda-c239bdc771be269c-1.digest b/crates/crust-core/tests/data/import_baselines/window_empty_usda-c239bdc771be269c-1.digest index b42eb30db..19d48d574 100644 --- a/crates/crust-core/tests/data/import_baselines/window_empty_usda-c239bdc771be269c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/window_empty_usda-c239bdc771be269c-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/window_full_vs_unauthored_usda-6f84b7cb89845fa4-1.digest b/crates/crust-core/tests/data/import_baselines/window_full_vs_unauthored_usda-6f84b7cb89845fa4-1.digest index 84acb5aa8..9c5bc9ec2 100644 --- a/crates/crust-core/tests/data/import_baselines/window_full_vs_unauthored_usda-6f84b7cb89845fa4-1.digest +++ b/crates/crust-core/tests/data/import_baselines/window_full_vs_unauthored_usda-6f84b7cb89845fa4-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/window_honoured_usda-0e440c93c494db71-1.digest b/crates/crust-core/tests/data/import_baselines/window_honoured_usda-0e440c93c494db71-1.digest index 27e8e1c39..f1fd640c1 100644 --- a/crates/crust-core/tests/data/import_baselines/window_honoured_usda-0e440c93c494db71-1.digest +++ b/crates/crust-core/tests/data/import_baselines/window_honoured_usda-0e440c93c494db71-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/window_no_products_usda-9317bad8a6d2e63d-1.digest b/crates/crust-core/tests/data/import_baselines/window_no_products_usda-9317bad8a6d2e63d-1.digest index 978bcdab3..f40d5cb8a 100644 --- a/crates/crust-core/tests/data/import_baselines/window_no_products_usda-9317bad8a6d2e63d-1.digest +++ b/crates/crust-core/tests/data/import_baselines/window_no_products_usda-9317bad8a6d2e63d-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/window_off_frame_usda-0e5c269b6dd24fb6-1.digest b/crates/crust-core/tests/data/import_baselines/window_off_frame_usda-0e5c269b6dd24fb6-1.digest index fded7eb54..a5120979f 100644 --- a/crates/crust-core/tests/data/import_baselines/window_off_frame_usda-0e5c269b6dd24fb6-1.digest +++ b/crates/crust-core/tests/data/import_baselines/window_off_frame_usda-0e5c269b6dd24fb6-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/window_one_pixel_usda-66ddf756a5e443fe-1.digest b/crates/crust-core/tests/data/import_baselines/window_one_pixel_usda-66ddf756a5e443fe-1.digest index d22fcab3f..c5b9eb7fa 100644 --- a/crates/crust-core/tests/data/import_baselines/window_one_pixel_usda-66ddf756a5e443fe-1.digest +++ b/crates/crust-core/tests/data/import_baselines/window_one_pixel_usda-66ddf756a5e443fe-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/window_overscan_usda-c27e01fde4009f5e-1.digest b/crates/crust-core/tests/data/import_baselines/window_overscan_usda-c27e01fde4009f5e-1.digest index 8067bd437..935e329ae 100644 --- a/crates/crust-core/tests/data/import_baselines/window_overscan_usda-c27e01fde4009f5e-1.digest +++ b/crates/crust-core/tests/data/import_baselines/window_overscan_usda-c27e01fde4009f5e-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/window_product_overrides_usda-bb3b29ebf7dd99a8-1.digest b/crates/crust-core/tests/data/import_baselines/window_product_overrides_usda-bb3b29ebf7dd99a8-1.digest index 80d850173..dd254ec2b 100644 --- a/crates/crust-core/tests/data/import_baselines/window_product_overrides_usda-bb3b29ebf7dd99a8-1.digest +++ b/crates/crust-core/tests/data/import_baselines/window_product_overrides_usda-bb3b29ebf7dd99a8-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/window_products_differ_usda-78414609fe85fc23-1.digest b/crates/crust-core/tests/data/import_baselines/window_products_differ_usda-78414609fe85fc23-1.digest index b58d7a3d3..6ad652568 100644 --- a/crates/crust-core/tests/data/import_baselines/window_products_differ_usda-78414609fe85fc23-1.digest +++ b/crates/crust-core/tests/data/import_baselines/window_products_differ_usda-78414609fe85fc23-1.digest @@ -16,4 +16,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/window_right_half_usda-c5f5b85f1946cb91-1.digest b/crates/crust-core/tests/data/import_baselines/window_right_half_usda-c5f5b85f1946cb91-1.digest index f39b80e0a..c987dfde8 100644 --- a/crates/crust-core/tests/data/import_baselines/window_right_half_usda-c5f5b85f1946cb91-1.digest +++ b/crates/crust-core/tests/data/import_baselines/window_right_half_usda-c5f5b85f1946cb91-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/window_unauthored_usda-5d663894090b1282-1.digest b/crates/crust-core/tests/data/import_baselines/window_unauthored_usda-5d663894090b1282-1.digest index dc6719698..224a4d7e1 100644 --- a/crates/crust-core/tests/data/import_baselines/window_unauthored_usda-5d663894090b1282-1.digest +++ b/crates/crust-core/tests/data/import_baselines/window_unauthored_usda-5d663894090b1282-1.digest @@ -15,4 +15,4 @@ geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, provenance geometry 0..1: /World/ball provenance spheres: [0] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/other"), cameras: ["/World/other", "/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/other"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/working_acescg_usda-453466808888f80c-1.digest b/crates/crust-core/tests/data/import_baselines/working_acescg_usda-453466808888f80c-1.digest index 500d21278..7261f6f1d 100644 --- a/crates/crust-core/tests/data/import_baselines/working_acescg_usda-453466808888f80c-1.digest +++ b/crates/crust-core/tests/data/import_baselines/working_acescg_usda-453466808888f80c-1.digest @@ -22,4 +22,4 @@ provenance geometry 0..1: /World/Tagged provenance geometry 1..2: /World/Plain provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(5)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("ACEScg") diff --git a/crates/crust-core/tests/data/import_baselines/working_default_usda-5aec729f1efbcf98-1.digest b/crates/crust-core/tests/data/import_baselines/working_default_usda-5aec729f1efbcf98-1.digest index 1f338a0f2..6a3f711d8 100644 --- a/crates/crust-core/tests/data/import_baselines/working_default_usda-5aec729f1efbcf98-1.digest +++ b/crates/crust-core/tests/data/import_baselines/working_default_usda-5aec729f1efbcf98-1.digest @@ -22,4 +22,4 @@ provenance geometry 0..1: /World/Tagged provenance geometry 1..2: /World/Plain provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/working_host_usda-964cb93fefda7817-1.digest b/crates/crust-core/tests/data/import_baselines/working_host_usda-964cb93fefda7817-1.digest index 5ea9c53a1..c18eeacb7 100644 --- a/crates/crust-core/tests/data/import_baselines/working_host_usda-964cb93fefda7817-1.digest +++ b/crates/crust-core/tests/data/import_baselines/working_host_usda-964cb93fefda7817-1.digest @@ -14,4 +14,4 @@ volumes: 0 world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: Some("lin_rec2020"), pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(7)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: Some("lin_rec2020"), pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.2020") diff --git a/crates/crust-core/tests/data/import_baselines/working_srgb_usda-8fdff51064dc58c9-1.digest b/crates/crust-core/tests/data/import_baselines/working_srgb_usda-8fdff51064dc58c9-1.digest index 78a129793..884867ded 100644 --- a/crates/crust-core/tests/data/import_baselines/working_srgb_usda-8fdff51064dc58c9-1.digest +++ b/crates/crust-core/tests/data/import_baselines/working_srgb_usda-8fdff51064dc58c9-1.digest @@ -23,4 +23,4 @@ provenance geometry 0..1: /World/Tagged provenance geometry 1..2: /World/Plain provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/x_usda-4b3ed4428fa191c7-1.digest b/crates/crust-core/tests/data/import_baselines/x_usda-4b3ed4428fa191c7-1.digest index 6caf09bfc..0801fcdf1 100644 --- a/crates/crust-core/tests/data/import_baselines/x_usda-4b3ed4428fa191c7-1.digest +++ b/crates/crust-core/tests/data/import_baselines/x_usda-4b3ed4428fa191c7-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/x_usda-4f6345f399f0a5af-1.digest b/crates/crust-core/tests/data/import_baselines/x_usda-4f6345f399f0a5af-1.digest index 6caf09bfc..0801fcdf1 100644 --- a/crates/crust-core/tests/data/import_baselines/x_usda-4f6345f399f0a5af-1.digest +++ b/crates/crust-core/tests/data/import_baselines/x_usda-4f6345f399f0a5af-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/x_usda-a701d438407a1ca1-1.digest b/crates/crust-core/tests/data/import_baselines/x_usda-a701d438407a1ca1-1.digest index 9db3f58ac..86488e952 100644 --- a/crates/crust-core/tests/data/import_baselines/x_usda-a701d438407a1ca1-1.digest +++ b/crates/crust-core/tests/data/import_baselines/x_usda-a701d438407a1ca1-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12343188411137242430, n_points: 8, n_indices: 20, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/x_usda-d5611726aa414464-1.digest b/crates/crust-core/tests/data/import_baselines/x_usda-d5611726aa414464-1.digest index 0bd67296b..3926d03a6 100644 --- a/crates/crust-core/tests/data/import_baselines/x_usda-d5611726aa414464-1.digest +++ b/crates/crust-core/tests/data/import_baselines/x_usda-d5611726aa414464-1.digest @@ -37,4 +37,4 @@ provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17394 provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6096447469814747168, n_points: 400, n_indices: 1600, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] -provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: Some(Space(1)), camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: true }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/scene/camera1"), cameras: ["/scene/camera1"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/scene/camera1"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") From eff978d20e0903b4ed4b7804caab0781bffb4a2a Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 22:21:16 +0100 Subject: [PATCH 15/95] crust-render tests: a five-subtree stage imports alike streamed and not Streaming is scheduling only: the stage's check report and its 16 spp image are equal with CRUST_STREAM_IMPORT=0 and without. Baselines (digests and images) recorded from the direct importer. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../stage_usda-0b840e8b2322dd02-1.digest | 33 +++++ .../stage_usda-0b840e8b2322dd02-1.image | 1 + .../stage_usda-0d575bccf885b988-1.digest | 33 +++++ .../stage_usda-0d575bccf885b988-1.image | 1 + .../stage_usda-1eb70e9572b3f131-1.digest | 33 +++++ .../stage_usda-1eb70e9572b3f131-1.image | 1 + .../stage_usda-efdcb2fb9f30efb6-1.digest | 33 +++++ .../stage_usda-efdcb2fb9f30efb6-1.image | 1 + crates/crust-render/tests/import_parity.rs | 114 ++++++++++++++++++ 9 files changed, 250 insertions(+) create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-0b840e8b2322dd02-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-0b840e8b2322dd02-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-0d575bccf885b988-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-0d575bccf885b988-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-1eb70e9572b3f131-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-1eb70e9572b3f131-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-efdcb2fb9f30efb6-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/stage_usda-efdcb2fb9f30efb6-1.image diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-0b840e8b2322dd02-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-0b840e8b2322dd02-1.digest new file mode 100644 index 000000000..08c5156ef --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-0b840e8b2322dd02-1.digest @@ -0,0 +1,33 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 12.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, 2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$TMP/crust_import_parity/five_subtrees/stage.usda"], invisible_overrides: Some(0) } +layer: $TMP/crust_import_parity/five_subtrees/stage.usda +lights: 1 +light 0: area name Some("/World/key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 192, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 204, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:df1c10739a4243a5 camera=12:df1c10739a4243a5 shadow=12:df1c10739a4243a5 indirect=12:df1c10739a4243a5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:eb131905b248d2a5 camera=1:eb131905b248d2a5 shadow=1:eb131905b248d2a5 indirect=1:eb131905b248d2a5 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:24a0b7ce9df7f2a5 camera=12:24a0b7ce9df7f2a5 shadow=12:24a0b7ce9df7f2a5 indirect=12:24a0b7ce9df7f2a5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:2e37d41d85e568d9 camera=192:2e37d41d85e568d9 shadow=192:2e37d41d85e568d9 indirect=192:2e37d41d85e568d9 +geom 4: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:835871679188a475 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:835871679188a475 +provenance light /World/key: LightOrigin { index: 0, geoms: 4..5 } +provenance geometry 0..1: /World/A/box +provenance geometry 1..2: /World/B/ball +provenance geometry 2..3: /World/C/box +provenance geometry 3..4: /World/D/can +provenance geometry 4..5: /World/key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9204403525635746283, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6877125351767401758, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-0b840e8b2322dd02-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-0b840e8b2322dd02-1.image new file mode 100644 index 000000000..45221952b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-0b840e8b2322dd02-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 10ba161ffbe861d0 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-0d575bccf885b988-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-0d575bccf885b988-1.digest new file mode 100644 index 000000000..76733bda7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-0d575bccf885b988-1.digest @@ -0,0 +1,33 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 12.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, 2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$TMP/crust_import_parity/five_subtrees/stage.usda"], invisible_overrides: Some(0) } +layer: $TMP/crust_import_parity/five_subtrees/stage.usda +lights: 1 +light 0: area name Some("/World/key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 192, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 204, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:835871679188a475 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:835871679188a475 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:2e37d41d85e568d9 camera=192:2e37d41d85e568d9 shadow=192:2e37d41d85e568d9 indirect=192:2e37d41d85e568d9 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:24a0b7ce9df7f2a5 camera=12:24a0b7ce9df7f2a5 shadow=12:24a0b7ce9df7f2a5 indirect=12:24a0b7ce9df7f2a5 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:eb131905b248d2a5 camera=1:eb131905b248d2a5 shadow=1:eb131905b248d2a5 indirect=1:eb131905b248d2a5 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:df1c10739a4243a5 camera=12:df1c10739a4243a5 shadow=12:df1c10739a4243a5 indirect=12:df1c10739a4243a5 +provenance light /World/key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/key +provenance geometry 1..2: /World/D/can +provenance geometry 2..3: /World/C/box +provenance geometry 3..4: /World/B/ball +provenance geometry 4..5: /World/A/box +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6877125351767401758, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9204403525635746283, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-0d575bccf885b988-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-0d575bccf885b988-1.image new file mode 100644 index 000000000..45221952b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-0d575bccf885b988-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 10ba161ffbe861d0 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-1eb70e9572b3f131-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-1eb70e9572b3f131-1.digest new file mode 100644 index 000000000..76733bda7 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-1eb70e9572b3f131-1.digest @@ -0,0 +1,33 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 12.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, 2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$TMP/crust_import_parity/five_subtrees/stage.usda"], invisible_overrides: Some(0) } +layer: $TMP/crust_import_parity/five_subtrees/stage.usda +lights: 1 +light 0: area name Some("/World/key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 192, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 204, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:835871679188a475 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:835871679188a475 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:2e37d41d85e568d9 camera=192:2e37d41d85e568d9 shadow=192:2e37d41d85e568d9 indirect=192:2e37d41d85e568d9 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:24a0b7ce9df7f2a5 camera=12:24a0b7ce9df7f2a5 shadow=12:24a0b7ce9df7f2a5 indirect=12:24a0b7ce9df7f2a5 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:eb131905b248d2a5 camera=1:eb131905b248d2a5 shadow=1:eb131905b248d2a5 indirect=1:eb131905b248d2a5 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:df1c10739a4243a5 camera=12:df1c10739a4243a5 shadow=12:df1c10739a4243a5 indirect=12:df1c10739a4243a5 +provenance light /World/key: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/key +provenance geometry 1..2: /World/D/can +provenance geometry 2..3: /World/C/box +provenance geometry 3..4: /World/B/ball +provenance geometry 4..5: /World/A/box +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6877125351767401758, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9204403525635746283, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance spheres: [3] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-1eb70e9572b3f131-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-1eb70e9572b3f131-1.image new file mode 100644 index 000000000..45221952b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-1eb70e9572b3f131-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 10ba161ffbe861d0 diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-efdcb2fb9f30efb6-1.digest b/crates/crust-core/tests/data/import_baselines/stage_usda-efdcb2fb9f30efb6-1.digest new file mode 100644 index 000000000..08c5156ef --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-efdcb2fb9f30efb6-1.digest @@ -0,0 +1,33 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 12.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, 2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$TMP/crust_import_parity/five_subtrees/stage.usda"], invisible_overrides: Some(0) } +layer: $TMP/crust_import_parity/five_subtrees/stage.usda +lights: 1 +light 0: area name Some("/World/key") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 192, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 204, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:df1c10739a4243a5 camera=12:df1c10739a4243a5 shadow=12:df1c10739a4243a5 indirect=12:df1c10739a4243a5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:eb131905b248d2a5 camera=1:eb131905b248d2a5 shadow=1:eb131905b248d2a5 indirect=1:eb131905b248d2a5 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:24a0b7ce9df7f2a5 camera=12:24a0b7ce9df7f2a5 shadow=12:24a0b7ce9df7f2a5 indirect=12:24a0b7ce9df7f2a5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=192:2e37d41d85e568d9 camera=192:2e37d41d85e568d9 shadow=192:2e37d41d85e568d9 indirect=192:2e37d41d85e568d9 +geom 4: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:835871679188a475 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:835871679188a475 +provenance light /World/key: LightOrigin { index: 0, geoms: 4..5 } +provenance geometry 0..1: /World/A/box +provenance geometry 1..2: /World/B/ball +provenance geometry 2..3: /World/C/box +provenance geometry 3..4: /World/D/can +provenance geometry 4..5: /World/key +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9204403525635746283, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 2, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6877125351767401758, n_points: 194, n_indices: 480, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: true, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/stage_usda-efdcb2fb9f30efb6-1.image b/crates/crust-core/tests/data/import_baselines/stage_usda-efdcb2fb9f30efb6-1.image new file mode 100644 index 000000000..45221952b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/stage_usda-efdcb2fb9f30efb6-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 10ba161ffbe861d0 diff --git a/crates/crust-render/tests/import_parity.rs b/crates/crust-render/tests/import_parity.rs index bc32b7f26..9bd04459e 100644 --- a/crates/crust-render/tests/import_parity.rs +++ b/crates/crust-render/tests/import_parity.rs @@ -169,3 +169,117 @@ fn every_sample_imports_as_its_baseline() { assert!(failures.is_empty(), "{}", failures.join("\n")); assert!(stages.len() >= 40, "only {} samples compared", stages.len()); } + +/// A stage of five top-level subtrees, which the importer streams one masked +/// stage at a time: four boxes and a light under `/World`, a camera beside. +const FIVE_SUBTREES: &str = r#"#usda 1.0 +( + defaultPrim = "World" +) + +def Xform "World" +{ + def Camera "cam" + { + double3 xformOp:translate = (0, 0, 12) + uniform token[] xformOpOrder = ["xformOp:translate"] + } + def Xform "A" + { + def Cube "box" { double3 xformOp:translate = (-3, 0, 0) uniform token[] xformOpOrder = ["xformOp:translate"] } + } + def Xform "B" + { + def Sphere "ball" { double3 xformOp:translate = (-1, 0, 0) uniform token[] xformOpOrder = ["xformOp:translate"] } + } + def Xform "C" + { + def Cube "box" { double3 xformOp:translate = (1, 0, 0) uniform token[] xformOpOrder = ["xformOp:translate"] } + } + def Xform "D" + { + def Cylinder "can" { double3 xformOp:translate = (3, 0, 0) uniform token[] xformOpOrder = ["xformOp:translate"] } + } + def SphereLight "key" + { + float inputs:intensity = 50 + float inputs:radius = 0.5 + double3 xformOp:translate = (0, 4, 4) + uniform token[] xformOpOrder = ["xformOp:translate"] + } +} +"#; + +/// `crust ` in `dir`, with `CRUST_STREAM_IMPORT` set to `stream`. +fn crust_streaming(dir: &Path, stream: &str, args: &[&str]) -> std::process::Output { + Command::new(env!("CARGO_BIN_EXE_crust")) + .current_dir(dir) + .env("CRUST_STREAM_IMPORT", stream) + .args(args) + .output() + .expect("run crust") +} + +/// Streaming is scheduling only: a stage of five subtrees imports to the same +/// report and renders the same image streamed and on one stage +/// (`CRUST_STREAM_IMPORT=0`). +#[test] +fn streamed_and_single_stage_imports_are_equal() { + let dir = std::env::temp_dir() + .join("crust_import_parity") + .join("five_subtrees"); + let _ = std::fs::remove_dir_all(&dir); + std::fs::create_dir_all(&dir).expect("temp dir"); + std::fs::write(dir.join("stage.usda"), FIVE_SUBTREES).expect("write stage"); + let mut reports = Vec::new(); + for (stream, image) in [("1", "streamed.exr"), ("0", "single.exr")] { + let out = crust_streaming( + &dir, + stream, + &[ + "render", + "-i", + "stage.usda", + "-s", + "16", + "--indirect-clamp", + "0", + "-o", + image, + "-l", + "error", + ], + ); + assert!( + out.status.success(), + "{}", + String::from_utf8_lossy(&out.stderr) + ); + let out = crust_streaming( + &dir, + stream, + &["check", "-i", "stage.usda", "--json", "-", "-l", "error"], + ); + assert!( + out.status.success(), + "{}", + String::from_utf8_lossy(&out.stderr) + ); + let mut json: serde_json::Value = serde_json::from_slice(&out.stdout).expect("a report"); + if let Some(report) = json.as_object_mut() { + report.remove("import"); + } + reports.push(json); + } + assert_eq!(reports[0], reports[1], "the reports differ"); + let diff = Command::new(env!("CARGO_BIN_EXE_crust")) + .current_dir(&dir) + .args(["diff", "streamed.exr", "single.exr"]) + .output() + .expect("run crust diff"); + assert!( + diff.status.success(), + "the images differ: {}", + String::from_utf8_lossy(&diff.stdout) + ); +} From 36537fed93ddc989e99cb818e20a2cadd294cdc9 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 22:21:39 +0100 Subject: [PATCH 16/95] usd-scene-import design: the index import's baselines (ALab, Moana, spike) Recorded from the direct importer with scripts/import_parity.sh: ALab 10.96 GiB / 31.13 s and Moana 23.88 GiB / 173.66 s at the end of the import; Moho's spike on Moana, (B) 1.97 GiB and (D) 2.35 GiB. The baseline directory (reports, EXRs, goldens, a diagnostic report) is kept in target/import-baselines/. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/tasks.md | 2 +- openspec/specs/usd-scene-import/design.md | 48 +++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index ca91b6a00..bc7c2b251 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -102,7 +102,7 @@ this group, and kept for the whole change. difference (`crust diff`), and prints both builds' memory and time with their ratios, without gating on them. Verify on `samples/cornellbox.usda` (record, then check exits 0), and that a deliberately different render makes `check` exit non-zero. -- [ ] 2.5 Record the large-scene baselines from the direct importer with +- [x] 2.5 Record the large-scene baselines from the direct importer with `scripts/import_parity.sh record`: ALab (`samples/ALab/entry.usda -f 1004`) and Moana (`--camera /island/cam/shotCam`), plus Moho's `scripts/streaming-spike.sh --with-d` strategies (B) and (D) on Moana, on one machine. Also record `scripts/check_images.sh diff --git a/openspec/specs/usd-scene-import/design.md b/openspec/specs/usd-scene-import/design.md index 224f37607..39db35306 100644 --- a/openspec/specs/usd-scene-import/design.md +++ b/openspec/specs/usd-scene-import/design.md @@ -1583,6 +1583,54 @@ The displacement Ptex files are read raw and preloaded or streamed under the sam as colour Ptex. At the default level 0 every island mesh is displaced at its cage resolution, which moves cage vertices only and warns once. +## Index import + +The `moho-import` change moves the importer onto Moho, a Hydra-2.0-style scene index over +openusd, and deletes the direct importer at its end. It is gated on parity with +baselines recorded from the direct importer before anything migrated, as UsdImaging's +move onto scene indices was: the same baselines, a new route. + +### Baselines + +- **Every import of the test suite** — the samples, each import test's fixtures, the CLI + tests, the live re-imports — is compared with a digest recorded from the direct + importer (`crust_core::parity`, the test-only `parity` feature; baselines in + `crates/crust-core/tests/data/import_baselines/`, keyed by the layers composed, the + options, the switches and the importing test). `crates/crust-render/tests/import_parity.rs` + also compares each committed sample's `crust check --json` report, import phases + removed. `scripts/parity_images.sh` re-renders every import of the suite at 16 spp + (indirect clamp off) in an optimised build and compares a hash of its pixels. + `CRUST_RECORD_BASELINES=1` (or `record`) rewrites them. +- **ALab and Moana** — `scripts/import_parity.sh record` keeps the `crust check` report, + the 16 spp EXR and the import's peak memory and parse time, in a local directory + (`target/import-baselines/`, not committed: the EXRs are large), together with + `scripts/check_images.sh record` goldens and a `crust diagnostic --budget 2m` report on + the Cornell box. + +Recorded on 2026-10-25, on an Intel Xeon E5-2699 v4 (2×22 cores, 72 threads, 93 GiB), +Rocky Linux 9 (kernel 5.14), rustc 1.99.0, crust-render `d31cacc6` (direct importer), +openusd `68a867a`, Moho `fc391a5`: + +| scene | command | peak memory (end of import) | `Parse USD stage` | +|---|---|---|---| +| ALab | `scripts/import_parity.sh record ~/Workspace/samples/ALab/entry.usda -f 1004 --camera /root/camera01/GEO/renderCam_hrc/renderCam_buffer/renderCam_srt/renderCam` | 10.96 GiB | 31.13 s | +| Moana | `scripts/import_parity.sh record ~/Workspace/samples/island/usd/island.usda --camera /island/cam/shotCam` | 23.88 GiB | 173.66 s | + +One run each (`N=1`), with a debug build running beside them, so the times are an upper +bound; the comparisons that follow are made on the same machine with the same command. + +Moho's streaming spike on Moana, the reference for streaming memory +(`scripts/streaming-spike.sh --skip-c --with-d`, Moho `fc391a5`, the same machine): + +| strategy | chunks | total | peak | final | largest chunk | +|---|---|---|---|---|---| +| (A) one stage, payloads loaded and unloaded | 22 | 52.54 s | 5.05 GiB | 2.43 GiB | 4.81 GiB | +| (B) a masked stage per chunk (Crust's streaming) | 22 | 49.74 s | 1.97 GiB | 1.69 GiB | 1.69 GiB | +| (D) (B) read through Moho's merging index | 22 | 304.57 s | 2.35 GiB | 1.72 GiB | 1.78 GiB | + +(D) holds (B)'s memory bound within 0.38 GiB and reads every prim's data through the +index, six times slower than raw reads. + ## Provenance and in-place rebuilds An imported `Scene` carries `provenance` (`crust_core::live::Provenance`): which `World` From aa56094f1ff797658d79c24db39f61c5e270563c Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 22:24:20 +0100 Subject: [PATCH 17/95] crust-core: the import walks Moho's scene index, families bridged load_scene no longer walks the stage: a single stage is one bridge chain (StageSceneIndex, Flattening, MaterialBindingResolving, RenderSettingsFlattening, light linking judged by the stage), and a streamed one is light linking over a MergingSceneIndex of the payload-free scene input and each chunk's masked stage, added, walked and removed in turn. The walk (index/walk.rs) keeps the direct traversal's stack discipline, takes children from the walked input's own chain (never the merged order above a chunk root), skips the prototypes listed under the root, and prunes from the index: abstract and inactive prims are absent, purpose and visibility are each prim's own values from the generic data. Each prim's families still read through the transitional bridge (index/bridge.rs), via visit_prim, the body traverse_into had. Parity with the direct importer's baselines is green on the whole suite, single-stage and streamed (tasks 3.1-3.3). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/index/bridge.rs | 13 + .../src/scene/usd_import/index/mod.rs | 172 +++++++ .../src/scene/usd_import/index/walk.rs | 103 +++++ .../src/scene/usd_import/listing.rs | 2 +- crates/crust-core/src/scene/usd_import/mod.rs | 435 +++++++++--------- openspec/changes/moho-import/design.md | 14 +- openspec/changes/moho-import/tasks.md | 15 +- 7 files changed, 522 insertions(+), 232 deletions(-) create mode 100644 crates/crust-core/src/scene/usd_import/index/bridge.rs create mode 100644 crates/crust-core/src/scene/usd_import/index/mod.rs create mode 100644 crates/crust-core/src/scene/usd_import/index/walk.rs diff --git a/crates/crust-core/src/scene/usd_import/index/bridge.rs b/crates/crust-core/src/scene/usd_import/index/bridge.rs new file mode 100644 index 000000000..9f846e04f --- /dev/null +++ b/crates/crust-core/src/scene/usd_import/index/bridge.rs @@ -0,0 +1,13 @@ +//! The transitional bridge (design D6): the `usd::Prim` at a walked path, on +//! the stage of the input that holds it, for a schema family whose reader has +//! not moved to the scene index yet. It reads at the import's time through +//! `EvalTimeScope`, as the direct readers do. It goes, with the direct readers, +//! once every family reads the index. + +use moho::openusd::sdf; +use moho::openusd::usd::{Prim, Stage}; + +/// The prim at `path` on `stage`, for the direct reader that still reads it. +pub(in crate::scene::usd_import) fn prim(stage: &Stage, path: &sdf::Path) -> Prim { + super::super::prim_at(stage, path.clone()) +} diff --git a/crates/crust-core/src/scene/usd_import/index/mod.rs b/crates/crust-core/src/scene/usd_import/index/mod.rs new file mode 100644 index 000000000..aa3b61470 --- /dev/null +++ b/crates/crust-core/src/scene/usd_import/index/mod.rs @@ -0,0 +1,172 @@ +//! The import through Moho, the Hydra-2.0-style scene index over openusd +//! (the `moho-import` change): the scene indices the import reads a stage +//! through, and the walk over them ([`walk`]). +//! +//! # Layout (design D4) +//! +//! - **One stage** (fewer than [`MIN_STREAM_CHUNKS`](super::MIN_STREAM_CHUNKS) +//! subtrees, or `CRUST_STREAM_IMPORT=0`): one [`Input`] over the `LoadAll` +//! stage, light linking over it with the stage as membership oracle — the +//! shape of `moho::chain::standard`. +//! - **Streamed**: light linking over a `MergingSceneIndex` (the shape of +//! `moho::chain::merged`), whose weakest, permanent input is the payload-free +//! scene, and to which each chunk's masked stage is added in turn, walked and +//! removed ([`Streamed`]). +//! +//! Crust opens every stage itself, with its own `stage_builder()` (the schema +//! registry, the `mmap` resolver), and hands it to the index. openusd is named +//! through Moho's re-exports here, so the types that cross the Moho boundary +//! are visible as such (design D2). +//! +//! # The bridge (design D6) +//! +//! While a schema family has not moved to the index, its existing reader is +//! handed the `usd::Prim` at the walked path on the stage of the input that +//! holds it ([`bridge`]). The bridge cannot reach a prim that exists only in +//! Moho's namespace (re-rooted prototypes), so until instancing moves each +//! input's chain is `chain::input` without the two instancing filters +//! ([`input_chain`]). The bridge is transitional: it goes with the direct +//! readers it calls, at the end of the change. + +use std::rc::Rc; + +use moho::filter::{ + FlatteningSceneIndex, LightLinkingSceneIndex, MaterialBindingResolvingSceneIndex, + MergingSceneIndex, RenderSettingsFlatteningSceneIndex, +}; +use moho::openusd::sdf; +use moho::openusd::usd::{Stage, TimeCode}; +use moho::scene_index::{CollectionMembership, SceneIndexHandle}; +use moho::stage::StageSceneIndex; + +pub(super) mod bridge; +pub(super) mod walk; + +/// One input of the import: a stage's scene index and the chain over it. +pub(super) struct Input { + /// The stage index, which owns the stage while the input lives. + pub(super) stage: Rc, + /// `chain::input`'s filters over it, without the instancing filters while + /// instancing reads through the bridge. + pub(super) chain: SceneIndexHandle, +} + +/// The input over `stage`, at the import's `time` (`None` reads default +/// values: the index's time is then left unset, which is Moho's default time). +/// `include_unloaded` exposes the prims of unloaded payloads, as the +/// payload-free scene input needs to hold each chunk's root. +pub(super) fn input_chain(stage: Stage, time: Option, include_unloaded: bool) -> Input { + let index = StageSceneIndex::new(); + index.set_include_unloaded_prims(include_unloaded); + if let Some(t) = time { + index.set_time(TimeCode::new(t)); + } + index.set_stage(stage); + let membership: Rc = index.clone(); + let input: SceneIndexHandle = index.clone(); + let flat = FlatteningSceneIndex::new(input); + let bindings = MaterialBindingResolvingSceneIndex::new(flat, Some(membership)); + let chain = RenderSettingsFlatteningSceneIndex::new(bindings); + Input { + stage: index, + chain, + } +} + +/// A single-stage import's index: one input with light linking over it, +/// judged by the stage (`moho::chain::standard`'s shape). +pub(super) struct Single { + pub(super) input: Input, + /// The top of the chain: what readers read once families move. + #[allow(dead_code)] + pub(super) top: SceneIndexHandle, +} + +impl Single { + pub(super) fn new(stage: Stage, time: Option) -> Self { + let input = input_chain(stage, time, false); + let membership: Rc = input.stage.clone(); + let top = LightLinkingSceneIndex::new(input.chain.clone(), Some(membership)); + Single { input, top } + } +} + +/// A streamed import's index: light linking over a merging index of the +/// payload-free scene input and the chunk being walked +/// (`moho::chain::merged`'s shape). +pub(super) struct Streamed { + merging: Rc, + /// The scene input, weakest and permanent. + scene: Input, + /// The top of the chain: what readers read once families move. + #[allow(dead_code)] + pub(super) top: SceneIndexHandle, + time: Option, +} + +impl Streamed { + /// Over the payload-free `scene` stage (the import's index stage). + pub(super) fn new(scene: Stage, time: Option) -> Self { + let scene = input_chain(scene, time, true); + let merging = MergingSceneIndex::new(); + merging.add_input_scene(scene.chain.clone(), sdf::Path::abs_root()); + let input: SceneIndexHandle = merging.clone(); + let top = LightLinkingSceneIndex::new(input, None); + Streamed { + merging, + scene, + top, + time, + } + } + + /// Adds the chunk at `root`, read from its masked `stage`, as the + /// strongest input. + pub(super) fn add_chunk(&self, stage: Stage, root: &sdf::Path) -> Input { + let chunk = input_chain(stage, self.time, false); + self.merging + .insert_input_scene(0, chunk.chain.clone(), root.clone()); + chunk + } + + /// Removes a chunk added by [`Streamed::add_chunk`]; its stage is freed + /// when the returned input is dropped. + pub(super) fn remove_chunk(&self, chunk: &Input) { + self.merging.remove_input_scene(&chunk.chain); + } + + /// The scene input, for the stage facts. + #[allow(dead_code)] + pub(super) fn scene(&self) -> &Input { + &self.scene + } +} + +#[cfg(test)] +mod tests { + use super::*; + + /// The Cornell box read through the bridge chain lists its prims with + /// their Hydra types. + #[test] + fn the_cornell_box_lists_its_prims_with_hydra_types() { + let path = concat!(env!("CARGO_MANIFEST_DIR"), "/../../samples/cornellbox.usda"); + let stage = super::super::stage_builder() + .load(moho::openusd::usd::InitialLoadSet::LoadAll) + .open(path) + .expect("the Cornell box opens"); + let single = Single::new(stage, None); + let mut types = std::collections::BTreeMap::::new(); + let mut stack = vec![sdf::Path::abs_root()]; + while let Some(path) = stack.pop() { + let ty = single.top.prim(&path).ty; + if !ty.as_str().is_empty() { + *types.entry(ty.as_str().to_owned()).or_default() += 1; + } + stack.extend(single.top.children(&path)); + } + assert!(types.get("mesh").is_some_and(|n| *n >= 5), "{types:?}"); + assert_eq!(types.get("camera"), Some(&1), "{types:?}"); + assert!(types.contains_key("material"), "{types:?}"); + } +} diff --git a/crates/crust-core/src/scene/usd_import/index/walk.rs b/crates/crust-core/src/scene/usd_import/index/walk.rs new file mode 100644 index 000000000..d402ce3e7 --- /dev/null +++ b/crates/crust-core/src/scene/usd_import/index/walk.rs @@ -0,0 +1,103 @@ +//! The walk over the scene index (design D5): from the absolute root, over the +//! index's children, with the direct traversal's stack discipline (push in +//! order, pop last-first), because geometry ids, light-link runs, pass flags +//! and provenance depend on visit order, and bitwise image parity on geometry +//! order. +//! +//! The children come from one input's chain — the single stage's, or the +//! chunk's own masked stage while streaming — never from the merging index +//! above a chunk root, whose children are not the stage's namespace order +//! (Moho's merged order: inputs strongest first). Pruning reads the index: an +//! abstract or inactive prim is absent from it, and `purpose` and `visibility` +//! are each prim's own resolved values from the generic attribute data, pruning +//! the subtree where a non-render purpose or `invisible` is authored, as the +//! direct importer did. (Hydra's flattened purpose lets a child's authored +//! purpose override an ancestor's `proxy`; Crust's rule prunes the subtree, so +//! the flattened value would change what renders.) + +use glam::Mat4 as GMat4; +use moho::data_source::locate; +use moho::locator::Locator; +use moho::openusd::sdf; +use moho::openusd::usd::Stage; +use moho::scene_index::SceneIndex; +use moho::tokens::usd as generic; + +use super::super::xform::Timing; +use super::super::{ImportCtx, Prune, visit_prim}; +use super::bridge; + +/// Walks `index` into `ctx`, reading each prim's families through the bridge +/// on `stage`, the stage `index` was built over. +pub(in crate::scene::usd_import) fn walk( + stage: &Stage, + index: &dyn SceneIndex, + ctx: &mut ImportCtx, +) { + if let Some(pass) = &mut ctx.pass { + pass.begin_chunk(stage); + } + let mut stack: Vec<(sdf::Path, GMat4, bool, Timing)> = vec![( + sdf::Path::abs_root(), + GMat4::IDENTITY, + false, + Timing::Static, + )]; + while let Some((path, parent_world, parent_hidden, parent_timing)) = stack.pop() { + let prim = bridge::prim(stage, &path); + let pruned = prune(index, &path); + let Some((world, hidden, timing)) = visit_prim( + stage, + &prim, + pruned, + parent_world, + parent_hidden, + &parent_timing, + ctx, + ) else { + continue; + }; + for child in children(stage, index, &path) { + stack.push((child, world, hidden, timing.clone())); + } + } +} + +/// The children the walk descends into: the index's, less the prototypes +/// the stage index lists under the absolute root (as UsdImaging does), which +/// the direct traversal never reached from the root — an instance takes its +/// prototype's geometry through the instancing reader. +fn children(stage: &Stage, index: &dyn SceneIndex, path: &sdf::Path) -> Vec { + let mut children = index.children(path); + if path.is_abs_root() { + children.retain(|c| !bridge::prim(stage, c).is_prototype().unwrap_or(false)); + } + children +} + +/// Why the walk leaves `path` and its subtree out, from the index: its own +/// `purpose` (`proxy`, `guide`) and `visibility` (`invisible`). +fn prune(index: &dyn SceneIndex, path: &sdf::Path) -> Option { + if path.is_abs_root() { + return None; + } + let data = index.prim(path).data?; + let token = |name: &str| { + let value = locate( + &data, + &Locator::new([generic::ATTRIBUTES, name, generic::VALUE]), + )? + .value()?; + match value { + moho::openusd::sdf::Value::Token(t) => Some(t.as_str().to_owned()), + moho::openusd::sdf::Value::String(s) => Some(s), + _ => None, + } + }; + match token("purpose").as_deref() { + Some("proxy") => return Some(Prune::Purpose("proxy")), + Some("guide") => return Some(Prune::Purpose("guide")), + _ => {} + } + (token("visibility").as_deref() == Some("invisible")).then_some(Prune::Invisible) +} diff --git a/crates/crust-core/src/scene/usd_import/listing.rs b/crates/crust-core/src/scene/usd_import/listing.rs index 5364ddcf0..4fef10585 100644 --- a/crates/crust-core/src/scene/usd_import/listing.rs +++ b/crates/crust-core/src/scene/usd_import/listing.rs @@ -385,7 +385,7 @@ fn collect(stage: &Stage, kind: ListKind, order: Order, mut found: impl FnMut(&P /// Whether the walk for `kind` enters `prim`, following the import: /// -/// - **cameras** — [`super::traverse_into`]'s rules: every [`prune_reason`] +/// - **cameras** — the walk's rules ([`super::visit_prim`]): every [`prune_reason`] /// but invisibility prunes; an invisible subtree is still walked, as the /// render walks it for cameras; an instance with a prototype (and every /// instance under an invisible ancestor) and a visible `PointInstancer`, diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index a640d4aa7..9dde8c55e 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -4,7 +4,7 @@ //! # Layout //! //! This module owns the import as a whole — [`load_scene`], the streaming -//! chunk loop, the prim traversal ([`traverse_into`]) and the state threaded +//! chunk loop, the prim traversal ([`index::walk`]) and the state threaded //! through it ([`ImportCtx`], [`ImportCaches`]). Each schema family is a //! submodule that the traversal dispatches into: //! @@ -74,6 +74,7 @@ mod assets; mod attrs; mod camera; pub(crate) mod implicit; +mod index; mod instancing; mod light_links; mod lights; @@ -208,7 +209,7 @@ fn subtree_roots(stage: &Stage) -> Vec { /// Counts the native placements of every prototype on `stage`, per top-level /// subtree, into `caches.placements`: the same walk and pruning -/// ([`prune_reason`]) as [`traverse_into`], not +/// ([`prune_reason`]) as the walk ([`index::walk`]), not /// descending into an instance or a `PointInstancer`, whose contents the /// traversal does not reach directly either. fn count_placements(stage: &Stage, caches: &mut ImportCaches<'_>) { @@ -247,7 +248,7 @@ fn count_placements(stage: &Stage, caches: &mut ImportCaches<'_>) { /// Everything a traversal accumulates, kept separate from the stage that /// feeds it so several stages can be walked into the same scene and each -/// dropped when done — see [`traverse_into`]. +/// dropped when done — see [`index::walk`]. struct ImportCtx<'a> { world: WorldBuilder, lights: LightList, @@ -302,218 +303,202 @@ struct ImportCtx<'a> { layers: std::collections::BTreeSet, } -/// Walks `root` and its subtree, emitting geometry, lights and volumes -/// into `ctx`. Takes the stage by reference and keeps nothing borrowed -/// from it, so the caller may drop the stage afterwards and walk another. -fn traverse_into(stage: &Stage, root: Prim, root_xf: GMat4, ctx: &mut ImportCtx) { - if let Some(pass) = &mut ctx.pass { - pass.begin_chunk(stage); +/// One prim of the walk over the scene index ([`index::walk`]), under `pruned`, the walk's verdict on +/// it: emits what it holds into `ctx`, and returns what its children inherit +/// (the world matrix, whether they are under an invisible ancestor, the +/// timing over the shutter), or `None` when the walk does not descend. +#[allow(clippy::too_many_arguments)] +fn visit_prim( + stage: &Stage, + prim: &Prim, + pruned: Option, + parent_world: GMat4, + parent_hidden: bool, + parent_timing: &Timing, + ctx: &mut ImportCtx, +) -> Option<(GMat4, bool, Timing)> { + if let Some(reason) = pruned.filter(|&r| r != Prune::Invisible) { + debug!("Skipping {reason} prim {}", prim.path()); + return None; } - // The flag is "under an invisible ancestor", which hides everything but - // cameras — see below. The timing is the parent's over the shutter - // ([`TransformMotion`]). - let mut stack: Vec<(Prim, GMat4, bool, Timing)> = vec![(root, root_xf, false, Timing::Static)]; - - while let Some((prim, parent_world, parent_hidden, parent_timing)) = stack.pop() { - let pruned = prune_reason(&prim, WalkScope::Stage); - if let Some(reason) = pruned.filter(|&r| r != Prune::Invisible) { - debug!("Skipping {reason} prim {}", prim.path()); - continue; - } - let this_world = compose_with_parent(&prim, parent_world); - if let Some(sources) = &mut ctx.arc_sources { - record_arc_sources(stage, &prim, sources); - } + let this_world = compose_with_parent(prim, parent_world); + if let Some(sources) = &mut ctx.arc_sources { + record_arc_sources(stage, prim, sources); + } - // An invisible subtree draws nothing and lights nothing, but is still - // walked for cameras: a camera's own visibility only hides its gizmo - // in a viewport, and a rig hidden that way is still rendered through. - // Pruning it outright would make `--camera` fail on it and move the - // first-camera fallback. Instances are not entered — crust never - // takes a camera from a prototype. - let hidden = parent_hidden || pruned == Some(Prune::Invisible); - if hidden { - if !parent_hidden { - debug!("Skipping invisible prim {} and its subtree", prim.path()); - } - if prim.is_instance().unwrap_or(false) { - continue; - } - visit_camera(stage, &prim, ctx); - if let Ok(children) = prim.children() { - for child in children { - stack.push((child, this_world, true, Timing::Static)); - } - } - continue; + // An invisible subtree draws nothing and lights nothing, but is still + // walked for cameras: a camera's own visibility only hides its gizmo + // in a viewport, and a rig hidden that way is still rendered through. + // Pruning it outright would make `--camera` fail on it and move the + // first-camera fallback. Instances are not entered — crust never + // takes a camera from a prototype. + let hidden = parent_hidden || pruned == Some(Prune::Invisible); + if hidden { + if !parent_hidden { + debug!("Skipping invisible prim {} and its subtree", prim.path()); } - - let timing = ctx - .caches - .motion - .timing(&prim, &parent_timing, parent_world, this_world); - let span = ctx.caches.motion.span(this_world, &timing); - - // What this prim emits, for the light links: ids are handed out in - // traversal order, so the range recorded after dispatch is exactly - // this prim's (see `light_links`). - let geoms_before = ctx.world.count(); - let vols_before = ctx.volumes.len(); - let lights_before = ctx.lights.count(); - - // Native instancing: an `instanceable` prim with a composition arc - // shares one prototype with every other instance of it. Take the - // geometry from the prototype and place it — never descend into - // the instance's own (proxy) subtree, which would rebuild the same - // triangles once per instance. if prim.is_instance().unwrap_or(false) { - match prim.prototype() { - Ok(Some(proto_path)) => { - ctx.caches.motion.drawn(&prim, &timing); - emit_native_instance( - stage, - &mut ctx.world, - &prim, - &proto_path, - span, - &mut ctx.caches, - ); - saw(ctx, prim.path(), geoms_before..ctx.world.count(), 0..0); - continue; - } - _ => warning!( - InstancingInstanceableWithoutPrototype, - at = prim.path(), - "Prim {} is instanceable but has no prototype — importing directly", - prim.path() - ), - } + return None; } + visit_camera(stage, prim, ctx); + return Some((this_world, true, Timing::Static)); + } - // Dispatch by schema. Volume prims are checked first: a prim - // carrying `crust:volume:type` imports as a participating-media - // region only — never as geometry, so its bounds cannot occlude - // shadow rays, and a volume `Cube` is never a box. The geometry - // branches then go in the prototype walk's order - // (`collect_proto_parts`), and a geometry prim no branch reads is - // counted for `geom.unsupported_type`. - if let Ok(Some(instancer)) = PointInstancer::get(stage, prim.path().clone()) { - ctx.caches.motion.drawn(&prim, &timing); - emit_point_instancer( - stage, - &mut ctx.world, - &prim, - &instancer, - span, - &mut ctx.caches, - ); - saw(ctx, prim.path(), geoms_before..ctx.world.count(), 0..0); - // Prototypes are conventionally authored beneath the - // instancer; they are drawn through it, never on their own. - continue; - } else if custom_token(&prim, "crust:volume:type").is_some() { - ctx.caches.motion.unmoved(&prim, &timing); - emit_volume(&prim, this_world, &mut ctx.volumes, ctx.caches.working); - } else if let Ok(Some(mesh)) = UsdMesh::get(stage, prim.path().clone()) { - ctx.caches.motion.drawn(&prim, &timing); - let mat = resolve_bound(stage, &prim, &mut ctx.caches); - let baked_moving = emit_mesh( - &mut ctx.world, - &prim, - &mesh, - span, - mat, - &mut ctx.caches.meshes, - &mut ctx.pending_meshes, - ); - if baked_moving { - ctx.caches.motion.ignored.saw(&prim); - } - } else if let Ok(Some(sphere)) = UsdSphere::get(stage, prim.path().clone()) { - ctx.caches.motion.drawn(&prim, &timing); - let mat = resolve_material(stage, &prim, &mut ctx.caches); - if let Some(id) = emit_sphere( - &mut ctx.world, - &prim, - &sphere, - span, - mat, - ctx.caches.working, - ) { - ctx.spheres.push(id); - } - } else if let Ok(Some(curves)) = UsdBasisCurves::get(stage, prim.path().clone()) { - ctx.caches.motion.unmoved(&prim, &timing); - let mat = resolve_material(stage, &prim, &mut ctx.caches); - let request = StrandRequest::of(&*mat, ctx.caches.working, &ctx.caches.meshes.primvars); - let imported = curve_segments(&prim, &curves, request.as_ref()); - emit_curves(&mut ctx.world, &prim, imported, this_world, mat); - } else if let Ok(Some(curves)) = UsdNurbsCurves::get(stage, prim.path().clone()) { - ctx.caches.motion.unmoved(&prim, &timing); - let mat = resolve_material(stage, &prim, &mut ctx.caches); - let request = StrandRequest::of(&*mat, ctx.caches.working, &ctx.caches.meshes.primvars); - let imported = nurbs_curve_segments(&prim, &curves, request.as_ref()); - emit_curves(&mut ctx.world, &prim, imported, this_world, mat); - } else if let Some(shape) = Shape::read(&prim) { - ctx.caches.motion.drawn(&prim, &timing); - let bound = undisplaced(&prim, resolve_bound(stage, &prim, &mut ctx.caches)); - let src = ctx - .caches - .implicit - .source(prim.path(), &shape, MeshPlace::World(&span.open)); - let src = with_constant_primvars(src, &prim, &*bound.material, ctx.caches.working); - let baked_moving = place_mesh_source( - &mut ctx.world, - &prim, - src, - span, - bound, - &mut ctx.caches.meshes, - &mut ctx.pending_meshes, - ); - if baked_moving { - ctx.caches.motion.ignored.saw(&prim); + let timing = ctx + .caches + .motion + .timing(prim, parent_timing, parent_world, this_world); + let span = ctx.caches.motion.span(this_world, &timing); + + // What this prim emits, for the light links: ids are handed out in + // traversal order, so the range recorded after dispatch is exactly + // this prim's (see `light_links`). + let geoms_before = ctx.world.count(); + let vols_before = ctx.volumes.len(); + let lights_before = ctx.lights.count(); + + // Native instancing: an `instanceable` prim with a composition arc + // shares one prototype with every other instance of it. Take the + // geometry from the prototype and place it — never descend into + // the instance's own (proxy) subtree, which would rebuild the same + // triangles once per instance. + if prim.is_instance().unwrap_or(false) { + match prim.prototype() { + Ok(Some(proto_path)) => { + ctx.caches.motion.drawn(prim, &timing); + emit_native_instance( + stage, + &mut ctx.world, + prim, + &proto_path, + span, + &mut ctx.caches, + ); + saw(ctx, prim.path(), geoms_before..ctx.world.count(), 0..0); + return None; } - } else if visit_camera(stage, &prim, ctx) { - // Recorded (and built, if it is the one) inside the call. A - // moving camera is out of scope: it renders from the frame. - } else if emit_light(stage, ctx, &prim, this_world) { - ctx.caches.motion.unmoved(&prim, &timing); - } else { - ctx.caches.unread.saw(&prim); + _ => warning!( + InstancingInstanceableWithoutPrototype, + at = prim.path(), + "Prim {} is instanceable but has no prototype — importing directly", + prim.path() + ), } - saw( - ctx, - prim.path(), - geoms_before..ctx.world.count(), - vols_before..ctx.volumes.len(), + } + + // Dispatch by schema. Volume prims are checked first: a prim + // carrying `crust:volume:type` imports as a participating-media + // region only — never as geometry, so its bounds cannot occlude + // shadow rays, and a volume `Cube` is never a box. The geometry + // branches then go in the prototype walk's order + // (`collect_proto_parts`), and a geometry prim no branch reads is + // counted for `geom.unsupported_type`. + if let Ok(Some(instancer)) = PointInstancer::get(stage, prim.path().clone()) { + ctx.caches.motion.drawn(prim, &timing); + emit_point_instancer( + stage, + &mut ctx.world, + prim, + &instancer, + span, + &mut ctx.caches, ); - // Every light adds at most one entry, so a grown list means `prim` - // is the light that grew it. - if ctx.lights.count() > lights_before { - ctx.links - .light_added(ctx.index.as_ref(), stage, prim.path(), lights_before); - if let Some(pass) = &ctx.pass { - pass.light_added(prim.path(), lights_before, &mut ctx.lights); - } - ctx.light_origins.push(( - prim.path().to_string(), - LightOrigin { - index: lights_before, - geoms: geoms_before as u32..ctx.world.count() as u32, - }, - )); + saw(ctx, prim.path(), geoms_before..ctx.world.count(), 0..0); + // Prototypes are conventionally authored beneath the + // instancer; they are drawn through it, never on their own. + return None; + } else if custom_token(prim, "crust:volume:type").is_some() { + ctx.caches.motion.unmoved(prim, &timing); + emit_volume(prim, this_world, &mut ctx.volumes, ctx.caches.working); + } else if let Ok(Some(mesh)) = UsdMesh::get(stage, prim.path().clone()) { + ctx.caches.motion.drawn(prim, &timing); + let mat = resolve_bound(stage, prim, &mut ctx.caches); + let baked_moving = emit_mesh( + &mut ctx.world, + prim, + &mesh, + span, + mat, + &mut ctx.caches.meshes, + &mut ctx.pending_meshes, + ); + if baked_moving { + ctx.caches.motion.ignored.saw(prim); } - - // Recurse. We push children onto the stack unconditionally; the - // per-prim dispatch above will pick up any typed schemas encountered. - if let Ok(children) = prim.children() { - for child in children { - stack.push((child, this_world, false, timing.clone())); - } + } else if let Ok(Some(sphere)) = UsdSphere::get(stage, prim.path().clone()) { + ctx.caches.motion.drawn(prim, &timing); + let mat = resolve_material(stage, prim, &mut ctx.caches); + if let Some(id) = emit_sphere(&mut ctx.world, prim, &sphere, span, mat, ctx.caches.working) + { + ctx.spheres.push(id); } + } else if let Ok(Some(curves)) = UsdBasisCurves::get(stage, prim.path().clone()) { + ctx.caches.motion.unmoved(prim, &timing); + let mat = resolve_material(stage, prim, &mut ctx.caches); + let request = StrandRequest::of(&*mat, ctx.caches.working, &ctx.caches.meshes.primvars); + let imported = curve_segments(prim, &curves, request.as_ref()); + emit_curves(&mut ctx.world, prim, imported, this_world, mat); + } else if let Ok(Some(curves)) = UsdNurbsCurves::get(stage, prim.path().clone()) { + ctx.caches.motion.unmoved(prim, &timing); + let mat = resolve_material(stage, prim, &mut ctx.caches); + let request = StrandRequest::of(&*mat, ctx.caches.working, &ctx.caches.meshes.primvars); + let imported = nurbs_curve_segments(prim, &curves, request.as_ref()); + emit_curves(&mut ctx.world, prim, imported, this_world, mat); + } else if let Some(shape) = Shape::read(prim) { + ctx.caches.motion.drawn(prim, &timing); + let bound = undisplaced(prim, resolve_bound(stage, prim, &mut ctx.caches)); + let src = ctx + .caches + .implicit + .source(prim.path(), &shape, MeshPlace::World(&span.open)); + let src = with_constant_primvars(src, prim, &*bound.material, ctx.caches.working); + let baked_moving = place_mesh_source( + &mut ctx.world, + prim, + src, + span, + bound, + &mut ctx.caches.meshes, + &mut ctx.pending_meshes, + ); + if baked_moving { + ctx.caches.motion.ignored.saw(prim); + } + } else if visit_camera(stage, prim, ctx) { + // Recorded (and built, if it is the one) inside the call. A + // moving camera is out of scope: it renders from the frame. + } else if emit_light(stage, ctx, prim, this_world) { + ctx.caches.motion.unmoved(prim, &timing); + } else { + ctx.caches.unread.saw(prim); + } + saw( + ctx, + prim.path(), + geoms_before..ctx.world.count(), + vols_before..ctx.volumes.len(), + ); + // Every light adds at most one entry, so a grown list means `prim` + // is the light that grew it. + if ctx.lights.count() > lights_before { + ctx.links + .light_added(ctx.index.as_ref(), stage, prim.path(), lights_before); + if let Some(pass) = &ctx.pass { + pass.light_added(prim.path(), lights_before, &mut ctx.lights); + } + ctx.light_origins.push(( + prim.path().to_string(), + LightOrigin { + index: lights_before, + geoms: geoms_before as u32..ctx.world.count() as u32, + }, + )); } + + // Descend. The per-prim dispatch above picks up any typed schema the + // children carry. + Some((this_world, false, timing)) } /// Records that the prim at `path` emitted the geometries `geoms` and the @@ -694,7 +679,7 @@ pub(super) enum WalkScope { /// has it. It applies to lights as to geometry: ALab's rig parks three /// interior fills/bounces and a debug dome this way, and all four used to /// light the shot. The top-level traversal still walks an invisible -/// subtree for cameras (see [`traverse_into`]). +/// subtree for cameras (see [`visit_prim`]). /// /// Checked in that order, so the reason reported is the first that applies. pub(super) fn prune_reason(prim: &Prim, scope: WalkScope) -> Option { @@ -892,6 +877,7 @@ impl ValidOptions { fn traverse_stage( path: &Path, path_str: &str, + time: Option, chunks: &[sdf::Path], skip_stage_teardown: bool, ctx: &mut ImportCtx, @@ -906,16 +892,25 @@ fn traverse_stage( if ctx.caches.meshes.subdiv.adaptive.is_some() { count_placements(&stage, &mut ctx.caches); } - traverse_into( - &stage, - prim_at(&stage, sdf::Path::abs_root()), - GMat4::IDENTITY, - ctx, - ); + // The stage read through Moho (design D4), walked from the root. + let scene = index::Single::new(stage.clone(), time); + index::walk::walk(&stage, scene.input.chain.as_ref(), ctx); ctx.layers.extend(stage.layer_identifiers()); + if skip_stage_teardown { + // The index holds the stage too: left allocated with it. + std::mem::forget(scene); + } else { + drop(scene); + } release_stage(stage, skip_stage_teardown); } else { debug!("Streaming import over {} subtrees", chunks.len()); + // The payload-free scene as the merging index's weakest, permanent + // input, each chunk added over it in turn (design D4). + let Some(scene_stage) = ctx.index.clone() else { + unreachable!("the index stage lives until the links are resolved"); + }; + let scene = index::Streamed::new(scene_stage, time); for (n, chunk) in chunks.iter().enumerate() { // Per chunk rather than per prim: this is the loop whose memory // high-water mark the streaming import exists to bound, so the @@ -932,16 +927,16 @@ fn traverse_stage( if ctx.caches.meshes.subdiv.adaptive.is_some() { count_placements(&stage, &mut ctx.caches); } - // Traverse from the root, not from `chunk`: a mask keeps the - // masked path's *ancestors* populated, so starting at the - // root picks up their transforms exactly as a full traversal - // would, while everything outside the chunk stays absent. - traverse_into( - &stage, - prim_at(&stage, sdf::Path::abs_root()), - GMat4::IDENTITY, - ctx, - ); + // Walk from the root, not from `chunk`: a mask keeps the masked + // path's *ancestors* populated, so starting at the root picks up + // their transforms exactly as a full traversal would, while + // everything outside the chunk stays absent. The walk takes its + // children from the chunk's own input, in its stage's order + // (design D5). + let input = scene.add_chunk(stage.clone(), chunk); + index::walk::walk(&stage, input.chain.as_ref(), ctx); + scene.remove_chunk(&input); + drop(input); // Always dropped, the last chunk included: that is the memory // bound streaming exists for, and a streamed import's peak often // comes *after* the traversal — at the top-level BVH commit, on @@ -966,6 +961,7 @@ fn traverse_stage( ctx.pending_meshes.len() ); } + drop(scene); // The materials the chunks bound from outside themselves, dropped // before the top-level commit as every chunk's stage is. let layers = ctx.caches.materials.outside.release(); @@ -1218,6 +1214,7 @@ pub(crate) fn load_scene( traverse_stage( path, path_str, + time, &chunks, options.skip_stage_teardown, &mut ctx, diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index 6b73f7955..2b4e9622c 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -212,10 +212,12 @@ Outside the chunk, only the ancestors are visited, as the masked stage gives tod prims implied by deeper roots (Moho specifies that order, M7). It is not the stage's namespace order above a chunk root, so the walk never relies on it there. -- World transforms come from the flattened `xform`. Visibility and purpose come from - the flattened data, applying today's pruning: abstract and inactive prims are absent - from the index, `proxy`/`guide` prune, invisible prims prune but are still walked for - cameras. Shutter samples come from `sample_times` over the shutter offsets. +- World transforms come from the flattened `xform`. Pruning applies today's rule from + the index: abstract and inactive prims are absent from it, and each prim's own + `purpose` and `visibility` (generic attribute data, not the flattened values: Hydra + lets a child's authored purpose override an ancestor's `proxy`, where Crust prunes + the subtree) prune `proxy`/`guide` and invisible subtrees, the latter still walked + for cameras. Shutter samples come from `sample_times` over the shutter offsets. - Dispatch is by Hydra prim type (`mesh`, `sphere`, `basisCurves`, `instancer`, the light types, `camera`, ...). A prim with `crust:volume:type` in its generic data dispatches as a volume first, as today. A geometry prim that no branch reads is @@ -312,8 +314,8 @@ warning when a nested collection is not composed. ### D10. Time: the index owns it -Every `StageSceneIndex` the import builds is set to the import's time -(`TimeCode::default()` for `None`, the authored default, as today). The index route +Every `StageSceneIndex` the import builds is set to the import's time; with none, the +index's time is left unset, Moho's default time, which reads authored defaults as today. The index route reads sampled data at offset 0, and at the shutter offsets for motion. `EvalTimeScope` stays only for bridged readers, and it is deleted with them (D3); the `CLAUDE.md` rule that the import reads its time from a thread-local goes with it. `LiveSession::set_time` (`live-session-time`) keeps its behaviour: a time diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index bc7c2b251..979d76372 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -114,21 +114,24 @@ this group, and kept for the whole change. ## 3. The index skeleton and the bridge (design D4, D5, D6, D7, D10) -- [ ] 3.1 Create `usd_import/index/` (`mod.rs`, `walk.rs`, `bridge.rs`, +- [x] 3.1 Create `usd_import/index/` (`mod.rs`, `walk.rs`, `bridge.rs`, `stage_facts.rs`), importing openusd through `moho::openusd` and `moho::openusd_schemas` (D2). Build the bridge chain (D6): per input `StageSceneIndex` → `Flattening` → `MaterialBindingResolving` → `RenderSettingsFlattening`, with no instancing filters, and light linking over it. Every stage is opened with Crust's `stage_builder()` and set to the import's time - (`TimeCode::default()` for none). Verify with a unit test that a chain over + (none leaves the index's time unset, which is Moho's default time). Verify with a unit test that a chain over `samples/cornellbox.usda` lists its prims with their Hydra types. -- [ ] 3.2 Single stage: `load_scene` wraps the `LoadAll` stage in one chain and walks +- [x] 3.2 Single stage: `load_scene` wraps the `LoadAll` stage in one chain and walks it from the absolute root with the direct traversal's stack discipline, in place of - `traverse_into`. Pruning comes from the flattened visibility and purpose, keeping the - camera search in invisible subtrees. Every prim goes to the existing readers through + `traverse_into`. Pruning reads the index: abstract and inactive prims are absent from + it, and each prim's own `purpose` and `visibility` come from the generic attribute + data, pruning the subtree where they are authored (Hydra's flattened purpose lets a + child's authored purpose override an ancestor's `proxy`, which would change what + renders), keeping the camera search in invisible subtrees. Every prim goes to the existing readers through the bridge (`StageSceneIndex::stage()` and the same path, under `EvalTimeScope`). Verify parity green on every single-stage sample and fixture. -- [ ] 3.3 Streaming: build `chain::merged` over a `MergingSceneIndex` with the scene +- [x] 3.3 Streaming: build `chain::merged` over a `MergingSceneIndex` with the scene input (`LoadNone`, `set_include_unloaded_prims(true)`) and one chunk input at a time (masked to the chunk and the active pass prim). Add the input, walk from the root through that chunk's root only, remove it, drop its stage, and advance the epoch as From 4054ebcb8b70731a00753a7e7d78d7c54fe5b0a8 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 22:33:30 +0100 Subject: [PATCH 18/95] crust-core: stage facts behind index/stage_facts.rs; time range from Moho The layers a scene composed, its root layer stack and the invisible overrides its strongest layer authors are file and layer-spec facts, not scene description: they move to index/stage_facts.rs, read from the stage. The time range and whether it is authored come from the absolute root's __usdStageMetadata (Moho's M3), on the payload-free scene input, which load_scene now builds for every import and hands to the streamed merging index. Parity green (task 3.4). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/index/mod.rs | 7 +- .../src/scene/usd_import/index/stage_facts.rs | 131 ++++++++++++++++++ .../crust-core/src/scene/usd_import/live.rs | 5 +- crates/crust-core/src/scene/usd_import/mod.rs | 121 ++++------------ .../src/scene/usd_import/settings.rs | 7 +- openspec/changes/moho-import/tasks.md | 2 +- 6 files changed, 170 insertions(+), 103 deletions(-) create mode 100644 crates/crust-core/src/scene/usd_import/index/stage_facts.rs diff --git a/crates/crust-core/src/scene/usd_import/index/mod.rs b/crates/crust-core/src/scene/usd_import/index/mod.rs index aa3b61470..df3ac39cc 100644 --- a/crates/crust-core/src/scene/usd_import/index/mod.rs +++ b/crates/crust-core/src/scene/usd_import/index/mod.rs @@ -40,6 +40,7 @@ use moho::scene_index::{CollectionMembership, SceneIndexHandle}; use moho::stage::StageSceneIndex; pub(super) mod bridge; +pub(super) mod stage_facts; pub(super) mod walk; /// One input of the import: a stage's scene index and the chain over it. @@ -105,9 +106,9 @@ pub(super) struct Streamed { } impl Streamed { - /// Over the payload-free `scene` stage (the import's index stage). - pub(super) fn new(scene: Stage, time: Option) -> Self { - let scene = input_chain(scene, time, true); + /// Over the payload-free scene input ([`input_chain`] over the import's + /// index stage, unloaded prims included). + pub(super) fn new(scene: Input, time: Option) -> Self { let merging = MergingSceneIndex::new(); merging.add_input_scene(scene.chain.clone(), sdf::Path::abs_root()); let input: SceneIndexHandle = merging.clone(); diff --git a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs new file mode 100644 index 000000000..3798c8906 --- /dev/null +++ b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs @@ -0,0 +1,131 @@ +//! What the import reads from a stage that is not scene description (design +//! D7), kept in one place so every such read is visible: the layers a scene +//! composed, the files of its root layer stack, and the `invisible` overrides +//! its strongest layer authors. They describe the stage's files and layer +//! specs — a host's business, not a scene index's — so they are read from the +//! stage, never from Moho. A stage-wide fact Moho does carry is read there: +//! the time range's authored-ness, from the absolute root's +//! `__usdStageMetadata` ([`time_range`]). + +use std::path::Path; + +use moho::data_source::locate; +use moho::locator::Locator; +use moho::openusd::sdf; +use moho::openusd::usd::Stage; +use moho::scene_index::SceneIndex; +use moho::tokens::usd as generic; + +/// The identifiers of every layer `stage` composed ([`crate::Scene::layers`]): +/// a file list, not scene description. +pub(in crate::scene::usd_import) fn layer_identifiers(stage: &Stage) -> Vec { + stage.layer_identifiers().into_iter().collect() +} + +/// The identifiers of `stage`'s root layer stack, strongest first +/// ([`crate::scene::Source::layer_stack`]): a file list, not scene description. +pub(in crate::scene::usd_import) fn layer_stack(stage: &Stage) -> Vec { + stage.layer_stack() +} + +/// The stage's `startTimeCode` and `endTimeCode`, from the absolute root's +/// `__usdStageMetadata` in `index`, when both are authored (Moho's M3: Hydra's +/// scene globals give values only). +pub(in crate::scene::usd_import) fn time_range(index: &dyn SceneIndex) -> Option<(f64, f64)> { + let root = index.prim(&sdf::Path::abs_root()).data?; + let field = |name: &str| -> Option { + let at = |leaf: &str| locate(&root, &Locator::new([generic::STAGE_METADATA, name, leaf])); + let authored = matches!(at(generic::AUTHORED)?.value()?, sdf::Value::Bool(true)); + match at(generic::VALUE)?.value()? { + sdf::Value::Double(v) if authored => Some(v), + _ => None, + } + }; + Some((field("startTimeCode")?, field("endTimeCode")?)) +} + +/// The files behind layer `identifiers`, sorted and without repeats: a layer +/// inside a package is the package file, a relative identifier is anchored +/// to the root layer `root`'s directory, file format arguments are dropped, +/// and an anonymous layer, which has no file, is left out. +pub(in crate::scene::usd_import) fn layer_files( + identifiers: &std::collections::BTreeSet, + root: &Path, +) -> Vec { + let dir = root.parent().unwrap_or(Path::new("")); + let files: std::collections::BTreeSet = identifiers + .iter() + .filter(|id| !sdf::Layer::is_anonymous_identifier(id)) + .map(|id| { + let id = id.split(":SDF_FORMAT_ARGS:").next().unwrap_or(id); + let file = openusd::ar::split_package_relative_path_outer(id) + .map(|(package, _)| package) + .unwrap_or_else(|| id.to_owned()); + let file = Path::new(&file); + if file.is_absolute() { + file.to_path_buf() + } else { + dir.join(file) + } + }) + .collect(); + files.into_iter().collect() +} + +/// The files of the root layer stack `identifiers`, in their order: each +/// mapped as [`layer_files`] maps it and made absolute against the working +/// directory (links not resolved), an anonymous layer left out, and a +/// package met twice kept once, where it is strongest. +pub(in crate::scene::usd_import) fn stack_files( + identifiers: &[String], + root: &Path, +) -> Vec { + let mut files: Vec = Vec::new(); + for id in identifiers { + let one = std::collections::BTreeSet::from([id.clone()]); + for file in layer_files(&one, root) { + // Absolute, so the same layer stamps the same path whatever the + // working directory and however the stage path was typed. + let file = std::path::absolute(&file).unwrap_or(file); + if !files.contains(&file) { + files.push(file); + } + } + } + files +} + +/// The prims the strongest layer of `stage`'s root layer stack — its session +/// layer when it has one, else its root layer — hides with an `over`: a +/// `visibility` spec on an `over` prim whose default or a time sample is +/// `invisible`. What a session or override layer hid of the scene beneath +/// it; a prim the layer itself defines invisible is the scene's own. +pub(in crate::scene::usd_import) fn invisible_overrides(stage: &Stage) -> u32 { + let strongest = stage.session_layer().unwrap_or_else(|| stage.root_layer()); + let data = strongest.data(); + let invisible = |v: &sdf::Value| matches!(v, sdf::Value::Token(t) if t.as_str() == "invisible"); + let mut count = 0u32; + for path in data.spec_paths() { + if !path.is_property() || !path.as_str().ends_with(".visibility") { + continue; + } + let prim = path.prim_path(); + let is_over = matches!( + data.try_field(&prim, "specifier"), + Ok(Some(v)) if matches!(&*v, sdf::Value::Specifier(sdf::Specifier::Over)) + ); + if !is_over { + continue; + } + let default = matches!(data.try_field(&path, "default"), Ok(Some(v)) if invisible(&v)); + let sampled = matches!( + data.try_field(&path, "timeSamples"), + Ok(Some(v)) if matches!(&*v, sdf::Value::TimeSamples(samples) + if samples.iter().any(|(_, v)| invisible(v))) + ); + if default || sampled { + count = count.saturating_add(1); + } + } + count +} diff --git a/crates/crust-core/src/scene/usd_import/live.rs b/crates/crust-core/src/scene/usd_import/live.rs index c3fd46844..deb4c1ea3 100644 --- a/crates/crust-core/src/scene/usd_import/live.rs +++ b/crates/crust-core/src/scene/usd_import/live.rs @@ -41,7 +41,7 @@ use super::time::EvalTimeScope; use super::xform::{Span, compose_with_parent}; use super::{ ImportCaches, ImportCtx, ValidOptions, apply_exposure, asks_about_time, emit_light, frame_pose, - invisible_overrides, open_stage, open_stage_masked, prim_at, read_index, stage_builder, + open_stage, open_stage_masked, prim_at, read_index, stage_builder, }; /// Warning codes a settings change can move, by family: the settings, the @@ -587,6 +587,7 @@ fn scratch_ctx<'a>(r: &'a Rebuilding<'a>, world: WorldBuilder) -> ImportCtx<'a> framing: Default::default(), stage_path: r.layer, index: None, + scene_input: None, assets: r.assets, layers: Default::default(), } @@ -713,7 +714,7 @@ fn refresh_settings( "the products ask for other primvars than the geometry kept".into(), )); } - let invisible_overrides = invisible_overrides(&index); + let invisible_overrides = super::index::stage_facts::invisible_overrides(&index); let motion_blur = read.settings.motion_blur() && read.shutter.interval.is_some(); drop(index); let camera = target.to_string(); diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index 9dde8c55e..776d987a3 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -297,6 +297,10 @@ struct ImportCtx<'a> { /// as the links are resolved, before the top-level BVH commit that is /// the import's memory peak. index: Option, + /// The scene input over `index` ([`index::input_chain`]): the streamed + /// import's merging index holds it while the chunks are walked. Dropped + /// with `index`. + scene_input: Option, assets: &'a dyn AssetLoader, /// The identifiers of the layers the import's stages composed, each /// stage's added before it is released ([`Scene::layers`]). @@ -895,7 +899,8 @@ fn traverse_stage( // The stage read through Moho (design D4), walked from the root. let scene = index::Single::new(stage.clone(), time); index::walk::walk(&stage, scene.input.chain.as_ref(), ctx); - ctx.layers.extend(stage.layer_identifiers()); + ctx.layers + .extend(index::stage_facts::layer_identifiers(&stage)); if skip_stage_teardown { // The index holds the stage too: left allocated with it. std::mem::forget(scene); @@ -907,10 +912,10 @@ fn traverse_stage( debug!("Streaming import over {} subtrees", chunks.len()); // The payload-free scene as the merging index's weakest, permanent // input, each chunk added over it in turn (design D4). - let Some(scene_stage) = ctx.index.clone() else { - unreachable!("the index stage lives until the links are resolved"); + let Some(scene_input) = ctx.scene_input.take() else { + unreachable!("the scene input lives until the chunks are walked"); }; - let scene = index::Streamed::new(scene_stage, time); + let scene = index::Streamed::new(scene_input, time); for (n, chunk) in chunks.iter().enumerate() { // Per chunk rather than per prim: this is the loop whose memory // high-water mark the streaming import exists to bound, so the @@ -941,7 +946,8 @@ fn traverse_stage( // bound streaming exists for, and a streamed import's peak often // comes *after* the traversal — at the top-level BVH commit, on // the island — where a kept stage would stack on top of it. - ctx.layers.extend(stage.layer_identifiers()); + ctx.layers + .extend(index::stage_facts::layer_identifiers(&stage)); release_stage(stage, false); // Separate this stage's prototypes from the next stage's — // see ImportCaches::epoch. Deliberately not a clear: the @@ -1124,8 +1130,14 @@ pub(crate) fn load_scene( path.display(), open_start.elapsed() ); + // The payload-free scene read through Moho: the scene input of a streamed + // import, and where stage-wide facts are read for any import. + let scene_input = index::input_chain(index.clone(), time, true); if let Some(t) = time { - check_time_range(&index, t); + check_time_range( + index::stage_facts::time_range(scene_input.chain.as_ref()), + t, + ); } let IndexRead { settings, @@ -1203,6 +1215,7 @@ pub(crate) fn load_scene( framing: products.framing, stage_path: path, index: Some(index), + scene_input: Some(scene_input), assets, layers: Default::default(), }; @@ -1281,9 +1294,14 @@ pub(crate) fn load_scene( None => false, }); let mut root_stack = (Vec::new(), None); + ctx.scene_input = None; if let Some(index) = ctx.index.take() { - ctx.layers.extend(index.layer_identifiers()); - root_stack = (index.layer_stack(), Some(invisible_overrides(&index))); + ctx.layers + .extend(index::stage_facts::layer_identifiers(&index)); + root_stack = ( + index::stage_facts::layer_stack(&index), + Some(index::stage_facts::invisible_overrides(&index)), + ); } if !domes_seen_by_camera { debug!( @@ -1371,14 +1389,14 @@ pub(crate) fn load_scene( scene.camera_path = camera_path; scene.time = time; scene.warnings = warning_scope.finish(); - scene.layers = layer_files(&ctx.layers, path); + scene.layers = index::stage_facts::layer_files(&ctx.layers, path); scene.pass = ctx.pass.as_ref().map(ActivePass::summary); scene.settings_prim = settings_prim; scene.source = crate::scene::Source { lens, depth_of_field: scene.camera.has_depth_of_field(), motion_blur: scene.settings.motion_blur() && shutter.interval.is_some(), - layer_stack: stack_files(&root_stack.0, path), + layer_stack: index::stage_facts::stack_files(&root_stack.0, path), invisible_overrides: root_stack.1, }; scene.provenance = Some(Provenance { @@ -1425,89 +1443,6 @@ pub(crate) fn load_scene( Ok(scene) } -/// The files behind layer `identifiers`, sorted and without repeats: a layer -/// inside a package is the package file, a relative identifier is anchored -/// to the root layer `root`'s directory, file format arguments are dropped, -/// and an anonymous layer, which has no file, is left out. -fn layer_files( - identifiers: &std::collections::BTreeSet, - root: &Path, -) -> Vec { - let dir = root.parent().unwrap_or(Path::new("")); - let files: std::collections::BTreeSet = identifiers - .iter() - .filter(|id| !sdf::Layer::is_anonymous_identifier(id)) - .map(|id| { - let id = id.split(":SDF_FORMAT_ARGS:").next().unwrap_or(id); - let file = openusd::ar::split_package_relative_path_outer(id) - .map(|(package, _)| package) - .unwrap_or_else(|| id.to_owned()); - let file = Path::new(&file); - if file.is_absolute() { - file.to_path_buf() - } else { - dir.join(file) - } - }) - .collect(); - files.into_iter().collect() -} - -/// The files of the root layer stack `identifiers`, in their order: each -/// mapped as [`layer_files`] maps it and made absolute against the working -/// directory (links not resolved), an anonymous layer left out, and a -/// package met twice kept once, where it is strongest. -fn stack_files(identifiers: &[String], root: &Path) -> Vec { - let mut files: Vec = Vec::new(); - for id in identifiers { - let one = std::collections::BTreeSet::from([id.clone()]); - for file in layer_files(&one, root) { - // Absolute, so the same layer stamps the same path whatever the - // working directory and however the stage path was typed. - let file = std::path::absolute(&file).unwrap_or(file); - if !files.contains(&file) { - files.push(file); - } - } - } - files -} - -/// The prims the strongest layer of `stage`'s root layer stack — its session -/// layer when it has one, else its root layer — hides with an `over`: a -/// `visibility` spec on an `over` prim whose default or a time sample is -/// `invisible`. What a session or override layer hid of the scene beneath -/// it; a prim the layer itself defines invisible is the scene's own. -pub(super) fn invisible_overrides(stage: &Stage) -> u32 { - let strongest = stage.session_layer().unwrap_or_else(|| stage.root_layer()); - let data = strongest.data(); - let invisible = |v: &sdf::Value| matches!(v, sdf::Value::Token(t) if t.as_str() == "invisible"); - let mut count = 0u32; - for path in data.spec_paths() { - if !path.is_property() || !path.as_str().ends_with(".visibility") { - continue; - } - let prim = path.prim_path(); - let is_over = matches!( - data.try_field(&prim, "specifier"), - Ok(Some(v)) if matches!(&*v, sdf::Value::Specifier(sdf::Specifier::Over)) - ); - if !is_over { - continue; - } - let default = matches!(data.try_field(&path, "default"), Ok(Some(v)) if invisible(&v)); - let sampled = matches!( - data.try_field(&path, "timeSamples"), - Ok(Some(v)) if matches!(&*v, sdf::Value::TimeSamples(samples) - if samples.iter().any(|(_, v)| invisible(v))) - ); - if default || sampled { - count = count.saturating_add(1); - } - } - count -} - /// What the import reads before it traverses anything: the index stage's /// render settings and products, and the stage-wide choices made from them. /// The settings carry the products' resolution, region and motion blur, and diff --git a/crates/crust-core/src/scene/usd_import/settings.rs b/crates/crust-core/src/scene/usd_import/settings.rs index 9245c260f..047d2306d 100644 --- a/crates/crust-core/src/scene/usd_import/settings.rs +++ b/crates/crust-core/src/scene/usd_import/settings.rs @@ -533,12 +533,11 @@ fn light_sample_count(prim: &Prim, name: &str) -> u32 { /// sample past either end, so the render is well defined — but a frame off /// the end of the shot is far more often a typo than a request, and it would /// otherwise render a plausible, frozen image without a word. -pub(super) fn check_time_range(stage: &Stage, time: f64) { - if !stage.has_authored_time_code_range() { +pub(super) fn check_time_range(range: Option<(f64, f64)>, time: f64) { + let Some((start, end)) = range else { debug!("Rendering at time code {time}; the stage authors no startTimeCode/endTimeCode"); return; - } - let (start, end) = (stage.start_time_code(), stage.end_time_code()); + }; if time < start || time > end { warning!( TimeOutsideRange, diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 979d76372..de81b574e 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -139,7 +139,7 @@ this group, and kept for the whole change. - parity green on every streamed sample and on a fixture with 5 top-level subtrees; - with `CRUST_STREAM_IMPORT=0`, a test that the streamed and single-stage imports are equal. -- [ ] 3.4 Move the non-imaging stage facts (D7) behind `index/stage_facts.rs`: layers +- [x] 3.4 Move the non-imaging stage facts (D7) behind `index/stage_facts.rs`: layers and layer stack, and invisible overrides, each with a comment naming the reason it is not imaging data. Read the time range's authored-ness (`check_time_range`) from the root's `__usdStageMetadata/{startTimeCode,endTimeCode}/authored` (M3), not from the From 995e2706559aef5d3a1aeb3f04bf060655bbc46f Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 22:54:13 +0100 Subject: [PATCH 19/95] crust-core tests: the render-source fixture authors one /Render prim spec The fixture wrote `def Scope "Render"` and then `over "Render"` in the same layer. openusd keeps the second specifier, so the whole /Render was an undefined `over`: the direct importer read its prims anyway (it walked every prim), a scene index, like UsdImaging, leaves undefined prims out. Two specs of one prim in one layer is not valid USD; the charSettings now sit inside the one `def`. Baselines for the corrected fixture are recorded from the direct importer (36537fed). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- ...area_lights_usda-00d2dcd66a50f5a9-1.digest | 25 +++++++++++++++ .../area_lights_usda-00d2dcd66a50f5a9-1.image | 1 + ...area_lights_usda-9a0b2d022c966581-1.digest | 25 +++++++++++++++ .../area_lights_usda-9a0b2d022c966581-1.image | 1 + .../backdrop_usda-028712069f092956-1.digest | 21 ++++++++++++ .../backdrop_usda-028712069f092956-1.image | 1 + .../backdrop_usda-3bd2b9c36e3253d2-1.digest | 21 ++++++++++++ .../backdrop_usda-3bd2b9c36e3253d2-1.image | 1 + ..._visibility_usda-10fe121ff556305f-1.digest | 21 ++++++++++++ ...a_visibility_usda-10fe121ff556305f-1.image | 1 + ..._visibility_usda-a40bd9092e471647-1.digest | 21 ++++++++++++ ...a_visibility_usda-a40bd9092e471647-1.image | 1 + .../expression_usda-a73e300d098781d5-1.digest | 32 +++++++++++++++++++ .../expression_usda-a73e300d098781d5-1.image | 1 + .../expression_usda-f9c5b6a77f39c5a3-1.digest | 32 +++++++++++++++++++ .../expression_usda-f9c5b6a77f39c5a3-1.image | 1 + .../instances_usda-6d1637bb6898476d-1.digest | 22 +++++++++++++ .../instances_usda-6d1637bb6898476d-1.image | 1 + .../instances_usda-cff29432af1ee61b-1.digest | 23 +++++++++++++ .../instances_usda-cff29432af1ee61b-1.image | 1 + .../matte_dome_usda-4775d0d18b535cf9-1.digest | 23 +++++++++++++ .../matte_dome_usda-4775d0d18b535cf9-1.image | 1 + .../matte_dome_usda-5051117d6744b051-1.digest | 23 +++++++++++++ .../matte_dome_usda-5051117d6744b051-1.image | 1 + .../named_usda-41961379ccb4d263-1.digest | 21 ++++++++++++ .../named_usda-41961379ccb4d263-1.image | 1 + .../named_usda-4b720a100ef53272-1.digest | 21 ++++++++++++ .../named_usda-4b720a100ef53272-1.image | 1 + .../named_usda-c08c596234d308e0-1.digest | 21 ++++++++++++ .../named_usda-c08c596234d308e0-1.image | 1 + .../nearest_usda-10995f4adc959e57-1.digest | 21 ++++++++++++ .../nearest_usda-10995f4adc959e57-1.image | 1 + .../nearest_usda-b5f3e1658cfccba1-1.digest | 21 ++++++++++++ .../nearest_usda-b5f3e1658cfccba1-1.image | 1 + ...ot_composed_usda-35cc6259e2a42af8-1.digest | 24 ++++++++++++++ ...not_composed_usda-35cc6259e2a42af8-1.image | 1 + ...ass_payload_usda-1eb9585660585792-1.digest | 24 ++++++++++++++ ...pass_payload_usda-1eb9585660585792-1.image | 1 + .../prune_usda-2c1f87fb5fed04ec-1.digest | 20 ++++++++++++ .../prune_usda-2c1f87fb5fed04ec-1.image | 1 + .../prune_usda-5736fff05485b63c-1.digest | 20 ++++++++++++ .../prune_usda-5736fff05485b63c-1.image | 1 + .../prune_usda-dc6f664604596ee9-1.digest | 19 +++++++++++ .../prune_usda-dc6f664604596ee9-1.image | 1 + ...urce_camera_usda-454941280afc694a-1.digest | 17 ++++++++++ ...ource_camera_usda-454941280afc694a-1.image | 1 + ...nder_source_usda-001715b7663b9aec-1.digest | 16 ++++++++++ ...ender_source_usda-001715b7663b9aec-1.image | 1 + ...nder_source_usda-c512149bf344cb6d-1.digest | 16 ++++++++++ ...ender_source_usda-c512149bf344cb6d-1.image | 1 + ...nder_source_usda-ed9fdfef9ca2d27c-1.digest | 16 ++++++++++ ...ender_source_usda-ed9fdfef9ca2d27c-1.image | 1 + .../volume_usda-93019f1c5ebc08a0-1.digest | 19 +++++++++++ .../volume_usda-93019f1c5ebc08a0-1.image | 1 + .../volume_usda-aafdaaa0da96ff01-1.digest | 19 +++++++++++ .../volume_usda-aafdaaa0da96ff01-1.image | 1 + .../volume_usda-ca0a3fd05666d468-1.digest | 18 +++++++++++ .../volume_usda-ca0a3fd05666d468-1.image | 1 + crates/crust-core/tests/render_passes.rs | 14 +++++--- 59 files changed, 661 insertions(+), 4 deletions(-) create mode 100644 crates/crust-core/tests/data/import_baselines/area_lights_usda-00d2dcd66a50f5a9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/area_lights_usda-00d2dcd66a50f5a9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/area_lights_usda-9a0b2d022c966581-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/area_lights_usda-9a0b2d022c966581-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/backdrop_usda-028712069f092956-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/backdrop_usda-028712069f092956-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/backdrop_usda-3bd2b9c36e3253d2-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/backdrop_usda-3bd2b9c36e3253d2-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/camera_visibility_usda-10fe121ff556305f-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/camera_visibility_usda-10fe121ff556305f-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/camera_visibility_usda-a40bd9092e471647-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/camera_visibility_usda-a40bd9092e471647-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/expression_usda-a73e300d098781d5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/expression_usda-a73e300d098781d5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/expression_usda-f9c5b6a77f39c5a3-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/expression_usda-f9c5b6a77f39c5a3-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instances_usda-6d1637bb6898476d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instances_usda-6d1637bb6898476d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/instances_usda-cff29432af1ee61b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instances_usda-cff29432af1ee61b-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/matte_dome_usda-4775d0d18b535cf9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/matte_dome_usda-4775d0d18b535cf9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/matte_dome_usda-5051117d6744b051-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/matte_dome_usda-5051117d6744b051-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/named_usda-41961379ccb4d263-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/named_usda-41961379ccb4d263-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/named_usda-4b720a100ef53272-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/named_usda-4b720a100ef53272-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/named_usda-c08c596234d308e0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/named_usda-c08c596234d308e0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nearest_usda-10995f4adc959e57-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nearest_usda-10995f4adc959e57-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nearest_usda-b5f3e1658cfccba1-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nearest_usda-b5f3e1658cfccba1-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-35cc6259e2a42af8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-35cc6259e2a42af8-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/pass_payload_usda-1eb9585660585792-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/pass_payload_usda-1eb9585660585792-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/prune_usda-2c1f87fb5fed04ec-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/prune_usda-2c1f87fb5fed04ec-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/prune_usda-5736fff05485b63c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/prune_usda-5736fff05485b63c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/prune_usda-dc6f664604596ee9-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/prune_usda-dc6f664604596ee9-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_source_camera_usda-454941280afc694a-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_source_camera_usda-454941280afc694a-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_source_usda-001715b7663b9aec-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_source_usda-001715b7663b9aec-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_source_usda-c512149bf344cb6d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_source_usda-c512149bf344cb6d-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/render_source_usda-ed9fdfef9ca2d27c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/render_source_usda-ed9fdfef9ca2d27c-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/volume_usda-93019f1c5ebc08a0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/volume_usda-93019f1c5ebc08a0-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/volume_usda-aafdaaa0da96ff01-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/volume_usda-aafdaaa0da96ff01-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/volume_usda-ca0a3fd05666d468-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/volume_usda-ca0a3fd05666d468-1.image diff --git a/crates/crust-core/tests/data/import_baselines/area_lights_usda-00d2dcd66a50f5a9-1.digest b/crates/crust-core/tests/data/import_baselines/area_lights_usda-00d2dcd66a50f5a9-1.digest new file mode 100644 index 000000000..ef7dd66d0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/area_lights_usda-00d2dcd66a50f5a9-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/pass", holdouts: 0, camera_hidden: 1 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/area_lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/area_lights.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 2 +light 0: area name Some("/World/Panel") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Bulb") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:894b34b3fec45c98 camera=0:cbf29ce484222325 shadow=2:894b34b3fec45c98 indirect=2:894b34b3fec45c98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d23ac7aa026facc8 +provenance light /World/Bulb: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Panel: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Panel +provenance geometry 1..2: /World/Bulb +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pass"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/area_lights_usda-00d2dcd66a50f5a9-1.image b/crates/crust-core/tests/data/import_baselines/area_lights_usda-00d2dcd66a50f5a9-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/area_lights_usda-00d2dcd66a50f5a9-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/area_lights_usda-9a0b2d022c966581-1.digest b/crates/crust-core/tests/data/import_baselines/area_lights_usda-9a0b2d022c966581-1.digest new file mode 100644 index 000000000..498a07026 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/area_lights_usda-9a0b2d022c966581-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/area_lights.usda"], invisible_overrides: Some(0) } +layer: $DIR/area_lights.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 2 +light 0: area name Some("/World/Panel") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Bulb") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:894b34b3fec45c98 camera=2:894b34b3fec45c98 shadow=2:894b34b3fec45c98 indirect=2:894b34b3fec45c98 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=1:d23ac7aa026facc8 +provenance light /World/Bulb: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Panel: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Panel +provenance geometry 1..2: /World/Bulb +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/area_lights_usda-9a0b2d022c966581-1.image b/crates/crust-core/tests/data/import_baselines/area_lights_usda-9a0b2d022c966581-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/area_lights_usda-9a0b2d022c966581-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/backdrop_usda-028712069f092956-1.digest b/crates/crust-core/tests/data/import_baselines/backdrop_usda-028712069f092956-1.digest new file mode 100644 index 000000000..036db1a5d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/backdrop_usda-028712069f092956-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/backdrop.usda"], invisible_overrides: Some(0) } +layer: $DIR/backdrop.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2f65027762d8ffb5 camera=2:2f65027762d8ffb5 shadow=2:2f65027762d8ffb5 indirect=2:2f65027762d8ffb5 +provenance geometry 0..1: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11147341635340358220, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/backdrop_usda-028712069f092956-1.image b/crates/crust-core/tests/data/import_baselines/backdrop_usda-028712069f092956-1.image new file mode 100644 index 000000000..ad6d19c3c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/backdrop_usda-028712069f092956-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 57c3651777bb1388 diff --git a/crates/crust-core/tests/data/import_baselines/backdrop_usda-3bd2b9c36e3253d2-1.digest b/crates/crust-core/tests/data/import_baselines/backdrop_usda-3bd2b9c36e3253d2-1.digest new file mode 100644 index 000000000..0f2c330a2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/backdrop_usda-3bd2b9c36e3253d2-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/pass", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/backdrop.usda"], invisible_overrides: Some(0) } +layer: $DIR/backdrop.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2f65027762d8ffb5 camera=2:2f65027762d8ffb5 shadow=2:2f65027762d8ffb5 indirect=2:2f65027762d8ffb5 +provenance geometry 0..1: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11147341635340358220, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pass"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/backdrop_usda-3bd2b9c36e3253d2-1.image b/crates/crust-core/tests/data/import_baselines/backdrop_usda-3bd2b9c36e3253d2-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/backdrop_usda-3bd2b9c36e3253d2-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-10fe121ff556305f-1.digest b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-10fe121ff556305f-1.digest new file mode 100644 index 000000000..bc11ae453 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-10fe121ff556305f-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/camera_visibility.usda"], invisible_overrides: Some(0) } +layer: $DIR/camera_visibility.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=0:cbf29ce484222325 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..1: /World/Masked +provenance geometry 1..2: /World/Blocker +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-10fe121ff556305f-1.image b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-10fe121ff556305f-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-10fe121ff556305f-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-a40bd9092e471647-1.digest b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-a40bd9092e471647-1.digest new file mode 100644 index 000000000..7b7f56655 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-a40bd9092e471647-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/pass", holdouts: 0, camera_hidden: 1 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/camera_visibility.usda"], invisible_overrides: Some(0) } +layer: $DIR/camera_visibility.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=0:cbf29ce484222325 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=0:cbf29ce484222325 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..1: /World/Masked +provenance geometry 1..2: /World/Blocker +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pass"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-a40bd9092e471647-1.image b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-a40bd9092e471647-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/camera_visibility_usda-a40bd9092e471647-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/expression_usda-a73e300d098781d5-1.digest b/crates/crust-core/tests/data/import_baselines/expression_usda-a73e300d098781d5-1.digest new file mode 100644 index 000000000..ef2ee146d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/expression_usda-a73e300d098781d5-1.digest @@ -0,0 +1,32 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/chars", holdouts: 2, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/expression.usda"], invisible_overrides: Some(0) } +layer: $DIR/expression.usda +layer: $DIR/expression_payload.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f6c33096abc28e3a camera=1:f6c33096abc28e3a shadow=1:f6c33096abc28e3a indirect=1:f6c33096abc28e3a +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:35cdd9a0d6e50805 camera=1:35cdd9a0d6e50805 shadow=1:35cdd9a0d6e50805 indirect=1:35cdd9a0d6e50805 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d51ecb642f0c8e15 camera=1:d51ecb642f0c8e15 shadow=1:d51ecb642f0c8e15 indirect=1:d51ecb642f0c8e15 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e82ca95ac2d366b8 camera=2:e82ca95ac2d366b8 shadow=2:e82ca95ac2d366b8 indirect=2:e82ca95ac2d366b8 +provenance geometry 0..1: /World/Prop3 +provenance geometry 1..2: /World/Prop2 +provenance geometry 2..3: /World/Prop1 +provenance geometry 3..4: /World/Prop0 +provenance geometry 4..5: /World/Chars/Ball +provenance geometry 5..6: /World/Chars/Hero/Skin +provenance mesh: MeshOrigin { geom_id: 5, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2, 3, 4] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/chars"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/expression_usda-a73e300d098781d5-1.image b/crates/crust-core/tests/data/import_baselines/expression_usda-a73e300d098781d5-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/expression_usda-a73e300d098781d5-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/expression_usda-f9c5b6a77f39c5a3-1.digest b/crates/crust-core/tests/data/import_baselines/expression_usda-f9c5b6a77f39c5a3-1.digest new file mode 100644 index 000000000..1b055536a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/expression_usda-f9c5b6a77f39c5a3-1.digest @@ -0,0 +1,32 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/meshes", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/expression.usda"], invisible_overrides: Some(0) } +layer: $DIR/expression.usda +layer: $DIR/expression_payload.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 5, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:f6c33096abc28e3a camera=1:f6c33096abc28e3a shadow=1:f6c33096abc28e3a indirect=1:f6c33096abc28e3a +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:35cdd9a0d6e50805 camera=1:35cdd9a0d6e50805 shadow=1:35cdd9a0d6e50805 indirect=1:35cdd9a0d6e50805 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d51ecb642f0c8e15 camera=1:d51ecb642f0c8e15 shadow=1:d51ecb642f0c8e15 indirect=1:d51ecb642f0c8e15 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +geom 5: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e82ca95ac2d366b8 camera=2:e82ca95ac2d366b8 shadow=2:e82ca95ac2d366b8 indirect=2:e82ca95ac2d366b8 +provenance geometry 0..1: /World/Prop3 +provenance geometry 1..2: /World/Prop2 +provenance geometry 2..3: /World/Prop1 +provenance geometry 3..4: /World/Prop0 +provenance geometry 4..5: /World/Chars/Ball +provenance geometry 5..6: /World/Chars/Hero/Skin +provenance mesh: MeshOrigin { geom_id: 5, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7377966807836294734, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [0, 1, 2, 3, 4] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/meshes"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/expression_usda-f9c5b6a77f39c5a3-1.image b/crates/crust-core/tests/data/import_baselines/expression_usda-f9c5b6a77f39c5a3-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/expression_usda-f9c5b6a77f39c5a3-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/instances_usda-6d1637bb6898476d-1.digest b/crates/crust-core/tests/data/import_baselines/instances_usda-6d1637bb6898476d-1.digest new file mode 100644 index 000000000..d0e7a2361 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instances_usda-6d1637bb6898476d-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/scatter", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/instances.usda"], invisible_overrides: Some(0) } +layer: $DIR/instances.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d51ecb642f0c8e15 camera=1:d51ecb642f0c8e15 shadow=1:d51ecb642f0c8e15 indirect=1:d51ecb642f0c8e15 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..2: /World/Scatter +provenance geometry 2..3: /World/Rock +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/scatter"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instances_usda-6d1637bb6898476d-1.image b/crates/crust-core/tests/data/import_baselines/instances_usda-6d1637bb6898476d-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instances_usda-6d1637bb6898476d-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/instances_usda-cff29432af1ee61b-1.digest b/crates/crust-core/tests/data/import_baselines/instances_usda-cff29432af1ee61b-1.digest new file mode 100644 index 000000000..8246ad853 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instances_usda-cff29432af1ee61b-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/inside", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/instances.usda"], invisible_overrides: Some(0) } +layer: $DIR/instances.usda +warning: Warning { code: RenderPassTargetInInstance, kind: Approximated, count: 1, prims: ["/Render/Passes/inside"], message: "/Render/Passes/inside: collection:matte targets /World/Rock/Body, inside an instance — membership is judged on the instance, so the target cannot be told apart from its siblings" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d51ecb642f0c8e15 camera=1:d51ecb642f0c8e15 shadow=1:d51ecb642f0c8e15 indirect=1:d51ecb642f0c8e15 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..2: /World/Scatter +provenance geometry 2..3: /World/Rock +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/inside"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instances_usda-cff29432af1ee61b-1.image b/crates/crust-core/tests/data/import_baselines/instances_usda-cff29432af1ee61b-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instances_usda-cff29432af1ee61b-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/matte_dome_usda-4775d0d18b535cf9-1.digest b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-4775d0d18b535cf9-1.digest new file mode 100644 index 000000000..2c7a439c1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-4775d0d18b535cf9-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/pass", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/matte_dome.usda"], invisible_overrides: Some(0) } +layer: $DIR/matte_dome.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2f65027762d8ffb5 camera=2:2f65027762d8ffb5 shadow=2:2f65027762d8ffb5 indirect=2:2f65027762d8ffb5 +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11147341635340358220, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pass"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/matte_dome_usda-4775d0d18b535cf9-1.image b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-4775d0d18b535cf9-1.image new file mode 100644 index 000000000..f874ef134 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-4775d0d18b535cf9-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9c57df03b09e1554 diff --git a/crates/crust-core/tests/data/import_baselines/matte_dome_usda-5051117d6744b051-1.digest b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-5051117d6744b051-1.digest new file mode 100644 index 000000000..d8811581b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-5051117d6744b051-1.digest @@ -0,0 +1,23 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/matte_dome.usda"], invisible_overrides: Some(0) } +layer: $DIR/matte_dome.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 1 +light 0: dome name Some("/World/Sky") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:2f65027762d8ffb5 camera=2:2f65027762d8ffb5 shadow=2:2f65027762d8ffb5 indirect=2:2f65027762d8ffb5 +provenance light /World/Sky: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/Floor +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11147341635340358220, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/matte_dome_usda-5051117d6744b051-1.image b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-5051117d6744b051-1.image new file mode 100644 index 000000000..e1a656b71 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/matte_dome_usda-5051117d6744b051-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 5a9f04a1349ce87a diff --git a/crates/crust-core/tests/data/import_baselines/named_usda-41961379ccb4d263-1.digest b/crates/crust-core/tests/data/import_baselines/named_usda-41961379ccb4d263-1.digest new file mode 100644 index 000000000..8c6da2abe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/named_usda-41961379ccb4d263-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/char", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/named.usda"], invisible_overrides: Some(0) } +layer: $DIR/named.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..1: /World/Prop +provenance geometry 1..2: /World/Char +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/named_usda-41961379ccb4d263-1.image b/crates/crust-core/tests/data/import_baselines/named_usda-41961379ccb4d263-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/named_usda-41961379ccb4d263-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/named_usda-4b720a100ef53272-1.digest b/crates/crust-core/tests/data/import_baselines/named_usda-4b720a100ef53272-1.digest new file mode 100644 index 000000000..91c14e9c6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/named_usda-4b720a100ef53272-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/bg", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/named.usda"], invisible_overrides: Some(0) } +layer: $DIR/named.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..1: /World/Prop +provenance geometry 1..2: /World/Char +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/bg"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/named_usda-4b720a100ef53272-1.image b/crates/crust-core/tests/data/import_baselines/named_usda-4b720a100ef53272-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/named_usda-4b720a100ef53272-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/named_usda-c08c596234d308e0-1.digest b/crates/crust-core/tests/data/import_baselines/named_usda-c08c596234d308e0-1.digest new file mode 100644 index 000000000..1c3f319fb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/named_usda-c08c596234d308e0-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/named.usda"], invisible_overrides: Some(0) } +layer: $DIR/named.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..1: /World/Prop +provenance geometry 1..2: /World/Char +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/named_usda-c08c596234d308e0-1.image b/crates/crust-core/tests/data/import_baselines/named_usda-c08c596234d308e0-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/named_usda-c08c596234d308e0-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/nearest_usda-10995f4adc959e57-1.digest b/crates/crust-core/tests/data/import_baselines/nearest_usda-10995f4adc959e57-1.digest new file mode 100644 index 000000000..448365903 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nearest_usda-10995f4adc959e57-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/nearest", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/nearest.usda"], invisible_overrides: Some(0) } +layer: $DIR/nearest.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..1: /World/Props/Crate +provenance geometry 1..2: /World/Props/Hero/Body +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/nearest"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nearest_usda-10995f4adc959e57-1.image b/crates/crust-core/tests/data/import_baselines/nearest_usda-10995f4adc959e57-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nearest_usda-10995f4adc959e57-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/nearest_usda-b5f3e1658cfccba1-1.digest b/crates/crust-core/tests/data/import_baselines/nearest_usda-b5f3e1658cfccba1-1.digest new file mode 100644 index 000000000..c40aece76 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nearest_usda-b5f3e1658cfccba1-1.digest @@ -0,0 +1,21 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/explicit", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/nearest.usda"], invisible_overrides: Some(0) } +layer: $DIR/nearest.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..1: /World/Props/Crate +provenance geometry 1..2: /World/Props/Hero/Body +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/explicit"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nearest_usda-b5f3e1658cfccba1-1.image b/crates/crust-core/tests/data/import_baselines/nearest_usda-b5f3e1658cfccba1-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nearest_usda-b5f3e1658cfccba1-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-35cc6259e2a42af8-1.digest b/crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-35cc6259e2a42af8-1.digest new file mode 100644 index 000000000..f08616e35 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-35cc6259e2a42af8-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/char", holdouts: 1, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/nested_not_composed.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested_not_composed.usda +warning: Warning { code: RenderPassNestedNotComposed, kind: Skipped, count: 1, prims: ["/Render/Passes/char"], message: "/Render/Passes/char: collection:matte includes /Sets.collection:hero, which a chunk of the streamed import does not compose — that nested collection contributes nothing there" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 0, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..1: /World/Prop +provenance geometry 1..2: /Chars/Sidekick +provenance geometry 2..3: /Chars/Hero +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-35cc6259e2a42af8-1.image b/crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-35cc6259e2a42af8-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_not_composed_usda-35cc6259e2a42af8-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/pass_payload_usda-1eb9585660585792-1.digest b/crates/crust-core/tests/data/import_baselines/pass_payload_usda-1eb9585660585792-1.digest new file mode 100644 index 000000000..c495c0c3f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pass_payload_usda-1eb9585660585792-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/fromPayload", holdouts: 3, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/pass_payload.usda"], invisible_overrides: Some(0) } +layer: $DIR/matte_payload.usda +layer: $DIR/pass_payload.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 0, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d51ecb642f0c8e15 camera=1:d51ecb642f0c8e15 shadow=1:d51ecb642f0c8e15 indirect=1:d51ecb642f0c8e15 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=1:468da3d80ce34d98 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance geometry 0..1: /World/Prop2 +provenance geometry 1..2: /World/Prop1 +provenance geometry 2..3: /World/Prop0 +provenance spheres: [0, 1, 2] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/fromPayload"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/pass_payload_usda-1eb9585660585792-1.image b/crates/crust-core/tests/data/import_baselines/pass_payload_usda-1eb9585660585792-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/pass_payload_usda-1eb9585660585792-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/prune_usda-2c1f87fb5fed04ec-1.digest b/crates/crust-core/tests/data/import_baselines/prune_usda-2c1f87fb5fed04ec-1.digest new file mode 100644 index 000000000..cb9548c77 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/prune_usda-2c1f87fb5fed04ec-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/pruning", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/prune.usda"], invisible_overrides: Some(0) } +layer: $DIR/prune.usda +warning: Warning { code: RenderPassCollectionNotRead, kind: Skipped, count: 1, prims: ["/Render/Passes/pruning"], message: "/Render/Passes/pruning: collection:prune restricts what renders, which crust does not read — rendered as if it were unauthored" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance geometry 0..1: /World/Set +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/pruning"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/prune_usda-2c1f87fb5fed04ec-1.image b/crates/crust-core/tests/data/import_baselines/prune_usda-2c1f87fb5fed04ec-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/prune_usda-2c1f87fb5fed04ec-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/prune_usda-5736fff05485b63c-1.digest b/crates/crust-core/tests/data/import_baselines/prune_usda-5736fff05485b63c-1.digest new file mode 100644 index 000000000..01ce42b70 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/prune_usda-5736fff05485b63c-1.digest @@ -0,0 +1,20 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/invisible", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/prune.usda"], invisible_overrides: Some(0) } +layer: $DIR/prune.usda +warning: Warning { code: RenderPassCollectionNotRead, kind: Skipped, count: 1, prims: ["/Render/Passes/invisible"], message: "/Render/Passes/invisible: collection:renderVisibility restricts what renders, which crust does not read — rendered as if it were unauthored" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance geometry 0..1: /World/Set +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/invisible"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/prune_usda-5736fff05485b63c-1.image b/crates/crust-core/tests/data/import_baselines/prune_usda-5736fff05485b63c-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/prune_usda-5736fff05485b63c-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/prune_usda-dc6f664604596ee9-1.digest b/crates/crust-core/tests/data/import_baselines/prune_usda-dc6f664604596ee9-1.digest new file mode 100644 index 000000000..ed95fe51a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/prune_usda-dc6f664604596ee9-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/quiet", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/prune.usda"], invisible_overrides: Some(0) } +layer: $DIR/prune.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 1, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:984632b55acb5495 camera=1:984632b55acb5495 shadow=1:984632b55acb5495 indirect=1:984632b55acb5495 +provenance geometry 0..1: /World/Set +provenance spheres: [0] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/quiet"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/prune_usda-dc6f664604596ee9-1.image b/crates/crust-core/tests/data/import_baselines/prune_usda-dc6f664604596ee9-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/prune_usda-dc6f664604596ee9-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/render_source_camera_usda-454941280afc694a-1.digest b/crates/crust-core/tests/data/import_baselines/render_source_camera_usda-454941280afc694a-1.digest new file mode 100644 index 000000000..e5a87ea8b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_source_camera_usda-454941280afc694a-1.digest @@ -0,0 +1,17 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/CharCam") +camera: Camera { origin: Vec3A(1.0, 0.0, 10.0), lower_left_corner: Vec3A(-1.0954998, -2.0954998, 0.0), horizontal: Vec3A(4.1909995, 0.0, 0.0), vertical: Vec3A(0.0, 4.1909995, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/char", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_source_camera.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_source_camera.usda +warning: Warning { code: RenderPassRenderSourceInvalid, kind: Refused, count: 1, prims: ["/Render/Passes/char"], message: "/Render/Passes/char: renderSource targets /World/CharCam, which is not a RenderSettings prim — reading the stage's render settings" } +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/CharCam"), cameras: ["/World/CharCam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/CharCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_source_camera_usda-454941280afc694a-1.image b/crates/crust-core/tests/data/import_baselines/render_source_camera_usda-454941280afc694a-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_source_camera_usda-454941280afc694a-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/render_source_usda-001715b7663b9aec-1.digest b/crates/crust-core/tests/data/import_baselines/render_source_usda-001715b7663b9aec-1.digest new file mode 100644 index 000000000..72e539c8b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_source_usda-001715b7663b9aec-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/CharCam") +camera: Camera { origin: Vec3A(1.0, 0.0, 10.0), lower_left_corner: Vec3A(-5.1163206, -1.5290802, 0.0), horizontal: Vec3A(12.232641, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/charSettings") +settings: RenderSettings { samples_per_pixel: 7, max_depth: 32, width: 16, height: 4, region: PixelRect { x0: 0, y0: 0, x1: 16, y1: 4 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [AovProduct { prim_path: "/Render/charProduct", name: "char.exr", vars: [AovVar { prim_path: "/Render/color", name: "color", channel_prefix: None, source: Color, components: 3, precision: Float, accumulation: Filtered, clear: 0.0, expression: None, raw: false, variance: false }], attributes: [] }], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/char", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_source.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_source.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/char"), keep_geometry: false }, render_settings: Some("/Render/charSettings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/CharCam"), cameras: ["/World/CharCam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/CharCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_source_usda-001715b7663b9aec-1.image b/crates/crust-core/tests/data/import_baselines/render_source_usda-001715b7663b9aec-1.image new file mode 100644 index 000000000..64bdea1f0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_source_usda-001715b7663b9aec-1.image @@ -0,0 +1 @@ +16x4 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/render_source_usda-c512149bf344cb6d-1.digest b/crates/crust-core/tests/data/import_baselines/render_source_usda-c512149bf344cb6d-1.digest new file mode 100644 index 000000000..c3ed2a327 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_source_usda-c512149bf344cb6d-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/CharCam") +camera: Camera { origin: Vec3A(1.0, 0.0, 10.0), lower_left_corner: Vec3A(-1.0954998, -2.0954998, 0.0), horizontal: Vec3A(4.1909995, 0.0, 0.0), vertical: Vec3A(0.0, 4.1909995, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_source.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_source.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/CharCam"), cameras: ["/World/CharCam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/CharCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_source_usda-c512149bf344cb6d-1.image b/crates/crust-core/tests/data/import_baselines/render_source_usda-c512149bf344cb6d-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_source_usda-c512149bf344cb6d-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/render_source_usda-ed9fdfef9ca2d27c-1.digest b/crates/crust-core/tests/data/import_baselines/render_source_usda-ed9fdfef9ca2d27c-1.digest new file mode 100644 index 000000000..5930d1ec6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_source_usda-ed9fdfef9ca2d27c-1.digest @@ -0,0 +1,16 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/CharCam") +camera: Camera { origin: Vec3A(1.0, 0.0, 10.0), lower_left_corner: Vec3A(-1.0954998, -2.0954998, 0.0), horizontal: Vec3A(4.1909995, 0.0, 0.0), vertical: Vec3A(0.0, 4.1909995, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/plain", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/render_source.usda"], invisible_overrides: Some(0) } +layer: $DIR/render_source.usda +lights: 0 +volumes: 0 +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/plain"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/CharCam"), cameras: ["/World/CharCam", "/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/CharCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/render_source_usda-ed9fdfef9ca2d27c-1.image b/crates/crust-core/tests/data/import_baselines/render_source_usda-ed9fdfef9ca2d27c-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/render_source_usda-ed9fdfef9ca2d27c-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/volume_usda-93019f1c5ebc08a0-1.digest b/crates/crust-core/tests/data/import_baselines/volume_usda-93019f1c5ebc08a0-1.digest new file mode 100644 index 000000000..95d74b5b0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/volume_usda-93019f1c5ebc08a0-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/matte", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/volume.usda"], invisible_overrides: Some(0) } +layer: $DIR/volume.usda +warning: Warning { code: RenderPassVolumeIgnored, kind: Skipped, count: 1, prims: ["/World/Fog"], message: "/World/Fog: a volume region in collection:matte of render pass /Render/Passes/matte, which crust does not apply to volumes — the camera sees it as without the pass" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 1 +volume 0: sigma_s Vec3A(0.5, 0.5, 0.5) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/matte"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/volume_usda-93019f1c5ebc08a0-1.image b/crates/crust-core/tests/data/import_baselines/volume_usda-93019f1c5ebc08a0-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/volume_usda-93019f1c5ebc08a0-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/volume_usda-aafdaaa0da96ff01-1.digest b/crates/crust-core/tests/data/import_baselines/volume_usda-aafdaaa0da96ff01-1.digest new file mode 100644 index 000000000..97b0f3db0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/volume_usda-aafdaaa0da96ff01-1.digest @@ -0,0 +1,19 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/hidden", holdouts: 0, camera_hidden: 0 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/volume.usda"], invisible_overrides: Some(0) } +layer: $DIR/volume.usda +warning: Warning { code: RenderPassVolumeIgnored, kind: Skipped, count: 1, prims: ["/World/Fog"], message: "/World/Fog: a volume region outside collection:cameraVisibility of render pass /Render/Passes/hidden, which crust does not apply to volumes — the camera sees it as without the pass" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 1 +volume 0: sigma_s Vec3A(0.5, 0.5, 0.5) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/hidden"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/volume_usda-aafdaaa0da96ff01-1.image b/crates/crust-core/tests/data/import_baselines/volume_usda-aafdaaa0da96ff01-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/volume_usda-aafdaaa0da96ff01-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/data/import_baselines/volume_usda-ca0a3fd05666d468-1.digest b/crates/crust-core/tests/data/import_baselines/volume_usda-ca0a3fd05666d468-1.digest new file mode 100644 index 000000000..ab32e0df1 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/volume_usda-ca0a3fd05666d468-1.digest @@ -0,0 +1,18 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/volume.usda"], invisible_overrides: Some(0) } +layer: $DIR/volume.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 1 +volume 0: sigma_s Vec3A(0.5, 0.5, 0.5) sigma_a Vec3A(0.0, 0.0, 0.0) g 0.0 emission Vec3A(0.0, 0.0, 0.0) mask RayMask(4294967295) class 65535 homogeneous true +world: 0 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +provenance spheres: [] +provenance volumes: ["/World/Fog"] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/volume_usda-ca0a3fd05666d468-1.image b/crates/crust-core/tests/data/import_baselines/volume_usda-ca0a3fd05666d468-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/volume_usda-ca0a3fd05666d468-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/render_passes.rs b/crates/crust-core/tests/render_passes.rs index 7c0336932..9b8ffb567 100644 --- a/crates/crust-core/tests/render_passes.rs +++ b/crates/crust-core/tests/render_passes.rs @@ -19,6 +19,13 @@ fn dir() -> PathBuf { /// A stage with `body` under `/World`, `/Render/settings` (8×8, 3 spp) /// and `passes` under `/Render/Passes`, plus `extra` at the root. fn stage(name: &str, body: &str, passes: &str, extra: &str) -> PathBuf { + stage_with(name, body, passes, "", extra) +} + +/// [`stage`], with `render` beside `/Render/settings` in `/Render`. (One +/// `Render` prim spec: a second, an `over`, in the same layer would make the +/// whole `/Render` an undefined `over`, which a scene index leaves out.) +fn stage_with(name: &str, body: &str, passes: &str, render: &str, extra: &str) -> PathBuf { let path = dir().join(format!("{name}.usda")); let text = format!( r#"#usda 1.0 @@ -43,6 +50,7 @@ def Scope "Render" {{ {passes} }} +{render} }} {extra} "# @@ -189,8 +197,6 @@ const CAMERAS: &str = r#" def Camera "Cam" "#; const CHAR_SETTINGS: &str = r#" -over "Render" -{ def RenderSettings "charSettings" { int2 resolution = (16, 4) @@ -207,7 +213,6 @@ over "Render" { string sourceName = "color" } -} "#; /// render-passes spec, "Each pass renders its own products" and "A pass with @@ -215,7 +220,7 @@ over "Render" /// parameter come from the pass's settings, and the provenance names them. #[test] fn the_render_source_chooses_the_settings() { - let path = stage( + let path = stage_with( "render_source", CAMERAS, &[ @@ -227,6 +232,7 @@ fn the_render_source_chooses_the_settings() { ] .concat(), CHAR_SETTINGS, + "", ); let char_pass = load(&path, Some("/Render/Passes/char")); assert_eq!(char_pass.settings.get_dimensions(), (16, 4)); From 68035367ca8dadd1b9f1d321ae301e79c0fd7ce9 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 23:02:04 +0100 Subject: [PATCH 20/95] parity: prototype numbers are the one listed exception The ALab and Moana runs with the index walk matched their baselines' images but not their reports: warnings inside prototypes named /__Prototype_83 for _82, _1 for _0. openusd numbers a stage's prototypes in the order they are first asked for, and the scene index's population walk asks in another order than the direct walk did; a streamed import numbers each chunk's stage from 0, so the number cannot be mapped between imports. The digest comparison, the sample report test and import_parity.sh write the digit run as `#` and compare the rest of the path. The import-parity spec lists the exception and its reason. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- crates/crust-core/src/parity.rs | 47 ++++++++++++++++++- crates/crust-render/tests/import_parity.rs | 5 ++ .../moho-import/specs/import-parity/spec.md | 15 ++++-- scripts/import_parity.sh | 6 ++- 4 files changed, 66 insertions(+), 7 deletions(-) diff --git a/crates/crust-core/src/parity.rs b/crates/crust-core/src/parity.rs index 62f30a356..d02272d61 100644 --- a/crates/crust-core/src/parity.rs +++ b/crates/crust-core/src/parity.rs @@ -160,9 +160,41 @@ pub fn digest(scene: &Scene, stage: &Path) -> String { normalise(&out, stage) } +/// `text` with each native prototype's number written `#` +/// (`/__Prototype_12/geo` → `/__Prototype_#/geo`): the one listed parity +/// exception (spec `import-parity`). openusd numbers a stage's prototypes in +/// the order something first asks for them, and the scene index's population +/// walk asks in another order than the direct importer's walk did, so the +/// same prototype gets another number. The number is an artifact of the +/// composition, not of the scene — USD gives prototype names no stability — +/// and a streamed import numbers each chunk's stage from 0, so the number +/// cannot even be mapped between two imports; only the digit run is written +/// out, everything else in the path is compared. +pub fn without_prototype_numbers(text: &str) -> String { + const MARK: &str = "__Prototype_"; + let mut out = String::with_capacity(text.len()); + let mut rest = text; + while let Some(at) = rest.find(MARK) { + let after = &rest[at + MARK.len()..]; + let digits = after.len() - after.trim_start_matches(|c: char| c.is_ascii_digit()).len(); + out.push_str(&rest[..at + MARK.len()]); + if digits > 0 { + out.push('#'); + } + rest = &after[digits..]; + } + out.push_str(rest); + out +} + /// The first line where `actual` differs from `expected`, with its number; -/// `None` when they are equal. +/// `None` when they are equal. Prototype numbers are not compared +/// ([`without_prototype_numbers`]). pub fn first_difference(expected: &str, actual: &str) -> Option { + let (expected, actual) = ( + without_prototype_numbers(expected), + without_prototype_numbers(actual), + ); let mut a = expected.lines(); let mut b = actual.lines(); let mut n = 1; @@ -384,6 +416,19 @@ mod tests { ); } + #[test] + fn prototype_numbers_are_not_compared() { + assert_eq!( + without_prototype_numbers("/__Prototype_83/MATERIAL /__Prototype_/x __Prototype_7"), + "/__Prototype_#/MATERIAL /__Prototype_/x __Prototype_#" + ); + assert_eq!( + first_difference("/__Prototype_1/a\n", "/__Prototype_0/a\n"), + None + ); + assert!(first_difference("/__Prototype_1/a\n", "/__Prototype_0/b\n").is_some()); + } + #[test] fn paths_are_written_relative_to_the_stage() { let stage = std::env::temp_dir().join("parity-test/scene.usda"); diff --git a/crates/crust-render/tests/import_parity.rs b/crates/crust-render/tests/import_parity.rs index 9bd04459e..786a5626a 100644 --- a/crates/crust-render/tests/import_parity.rs +++ b/crates/crust-render/tests/import_parity.rs @@ -111,6 +111,11 @@ fn compare(stage: &Path, record: bool) -> Option { file.display() )); }; + // The listed parity exception: prototype numbers are not compared. + let (expected, actual) = ( + crust_core::parity::without_prototype_numbers(&expected), + crust_core::parity::without_prototype_numbers(&actual), + ); if expected == actual { return None; } diff --git a/openspec/changes/moho-import/specs/import-parity/spec.md b/openspec/changes/moho-import/specs/import-parity/spec.md index b700e191a..2eb95f985 100644 --- a/openspec/changes/moho-import/specs/import-parity/spec.md +++ b/openspec/changes/moho-import/specs/import-parity/spec.md @@ -41,11 +41,16 @@ An import SHALL equal its baseline when all of these hold: - its `crust check --json` report matches, timings excluded; - its render at `-s 16 --indirect-clamp 0` is bitwise equal. -No tolerance SHALL apply, and no exception: a difference SHALL be fixed. Prim paths -that warnings and provenance name inside a native prototype SHALL be equal too, named -from the scene index's `primOrigin/scenePath`. A difference that cannot be fixed in -Crust SHALL be reported (a Moho gap goes to Moho), never accepted silently, normalised -or ignored. +No tolerance SHALL apply. A difference SHALL be fixed, or listed here with its reason. +The one listed exception SHALL be the number openusd gives a native prototype +(`/__Prototype_`): openusd numbers a stage's prototypes in the order they are first +asked for, the scene index's population walk asks in another order than the direct +importer's walk did, and a streamed import numbers each chunk's stage from 0, so the +number is a composition artifact that cannot be mapped between imports. The check +SHALL write it as `#` and compare the rest of every path, never ignore the path +wholesale. Prim paths inside a prototype SHALL otherwise be equal, named from the +scene index's `primOrigin/scenePath`. A difference that cannot be fixed in Crust SHALL +be reported (a Moho gap goes to Moho), never accepted silently. #### Scenario: An equal scene diff --git a/scripts/import_parity.sh b/scripts/import_parity.sh index 7ca81e753..f2cb100dc 100755 --- a/scripts/import_parity.sh +++ b/scripts/import_parity.sh @@ -52,11 +52,15 @@ trap 'rm -rf "$WORK"' EXIT # `$DIR`, so it compares across builds and checkouts. strip_report() { python3 -I -c ' -import json, sys, os +import json, sys, os, re report = json.load(open(sys.argv[1])) report.pop("import", None) text = json.dumps(report, indent=2, sort_keys=True) text = text.replace(os.path.dirname(os.path.abspath(sys.argv[2])), "$DIR") +# The listed parity exception (spec import-parity): openusd numbers a stage's +# prototypes in the order they are first asked for, which the scene index's +# population walk changes; the number is not compared, the rest of the path is. +text = re.sub(r"__Prototype_[0-9]+", "__Prototype_#", text) print(text) ' "$1" "$SCENE" } From 2e8bfd8187fe17195679b14f43c5b1a135359aa2 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 23:02:13 +0100 Subject: [PATCH 21/95] crust-core: render settings read from the scene index settings.rs reads the payload-free scene input instead of the index stage: the settings prim by its Hydra type, renderSettingsPrimPath from the root's __usdStageMetadata, the pass's renderSource and the camera and crust:dicingCamera targets from __usdRelationships, and every attribute (resolution, renderingColorSpace, the crust:* settings) from __usdAttributes with the direct readers' authored-versus-fallback rule (index/data.rs, PrimData). read_index, the live settings refresh and `crust ls` hand it a scene input over their index stage. The USD type named in a bad --pass error is read from the stage (stage_facts), since the index carries Hydra types only. Parity green (tasks 3.5, 4.1). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/implicit.rs | 11 +- .../src/scene/usd_import/index/data.rs | 140 ++++++++++ .../src/scene/usd_import/index/mod.rs | 1 + .../src/scene/usd_import/index/stage_facts.rs | 15 + .../src/scene/usd_import/listing.rs | 30 +- .../crust-core/src/scene/usd_import/live.rs | 12 +- crates/crust-core/src/scene/usd_import/mod.rs | 42 +-- .../src/scene/usd_import/products.rs | 6 +- .../src/scene/usd_import/settings.rs | 258 ++++++++++-------- openspec/changes/moho-import/tasks.md | 4 +- 10 files changed, 368 insertions(+), 151 deletions(-) create mode 100644 crates/crust-core/src/scene/usd_import/index/data.rs diff --git a/crates/crust-core/src/scene/usd_import/implicit.rs b/crates/crust-core/src/scene/usd_import/implicit.rs index 744f6ccf7..8f8f4f022 100644 --- a/crates/crust-core/src/scene/usd_import/implicit.rs +++ b/crates/crust-core/src/scene/usd_import/implicit.rs @@ -1021,7 +1021,16 @@ mod tests { .expect("stage opens"); let options = crate::UsdImportOptions::default(); let valid = ValidOptions::check(&options).expect("valid options"); - let read = read_index(&index, &path, path_str, &options, &valid).expect("index read"); + let scene = crate::scene::usd_import::index::input_chain(index.clone(), None, true); + let read = read_index( + &index, + scene.chain.as_ref(), + &path, + path_str, + &options, + &valid, + ) + .expect("index read"); assert!(read.subdiv.adaptive.is_none(), "no edge length: uniform"); (read.projection, scope.finish()) } diff --git a/crates/crust-core/src/scene/usd_import/index/data.rs b/crates/crust-core/src/scene/usd_import/index/data.rs new file mode 100644 index 000000000..852610841 --- /dev/null +++ b/crates/crust-core/src/scene/usd_import/index/data.rs @@ -0,0 +1,140 @@ +//! A prim of the scene index as the index readers see it: its Hydra type, and +//! Moho's generic attribute data (`__usdAttributes`, `__usdRelationships`), +//! read with the direct importer's authored-versus-fallback rule. +//! +//! The direct readers took an attribute's value only when a layer authored it +//! or it differed from its schema fallback (`attrs::value_at`): an unauthored +//! attribute resolves to its fallback, so that is "the value when authored". +//! [`PrimData::value`] applies the same rule to the generic data, which +//! carries each value with whether it is authored, so a reader moved onto the +//! index takes the same values as the one it replaces. The decoders are the +//! direct readers' own (`attrs::decode_*`), so the two cannot disagree on +//! which authored types they accept. + +use moho::data_source::{ContainerHandle, DataSource, locate}; +use moho::locator::Locator; +use moho::openusd::sdf; +use moho::scene_index::SceneIndex; +use moho::tokens::usd as generic; + +use super::super::attrs::{decode_bool, decode_f32, decode_i32, decode_text, decode_vec3}; + +/// One prim of a scene index, for an index reader. +pub(in crate::scene::usd_import) struct PrimData { + path: sdf::Path, + ty: String, + data: Option, +} + +impl PrimData { + /// The prim at `path` in `index`; [`PrimData::is_defined`] says whether + /// one is there. + pub(in crate::scene::usd_import) fn at(index: &dyn SceneIndex, path: &sdf::Path) -> Self { + let prim = index.prim(path); + PrimData { + path: path.clone(), + ty: prim.ty.as_str().to_owned(), + data: prim.data, + } + } + + pub(in crate::scene::usd_import) fn path(&self) -> &sdf::Path { + &self.path + } + + /// Whether a prim is at the path. + #[allow(dead_code)] + pub(in crate::scene::usd_import) fn is_defined(&self) -> bool { + self.data.is_some() + } + + /// The Hydra prim type (`renderSettings`, `mesh`, …), empty for none. + pub(in crate::scene::usd_import) fn ty(&self) -> &str { + &self.ty + } + + /// The data source at `locator` under the prim. + pub(in crate::scene::usd_import) fn locate( + &self, + locator: [&str; N], + ) -> Option { + locate(self.data.as_ref()?, &Locator::new(locator)) + } + + /// The generic entry of attribute `name`, when the prim has it. + fn attribute(&self, name: &str) -> Option { + self.locate([generic::ATTRIBUTES, name])? + .as_container() + .cloned() + } + + /// Whether a layer authors attribute `name`'s value. + pub(in crate::scene::usd_import) fn authored(&self, name: &str) -> bool { + self.attribute(name) + .and_then(|a| a.get(&generic::AUTHORED.into())) + .and_then(|d| d.value()) + .is_some_and(|v| matches!(v, sdf::Value::Bool(true))) + } + + /// Attribute `name`'s value at the index's time when a layer authors it, + /// else `None` — the direct readers' `value_at`: an unauthored attribute + /// resolves to its schema fallback, which the readers take as + /// "unauthored". + pub(in crate::scene::usd_import) fn value(&self, name: &str) -> Option { + if !self.authored(name) { + return None; + } + self.attribute(name)?.get(&generic::VALUE.into())?.value() + } + + pub(in crate::scene::usd_import) fn custom_i32(&self, name: &str) -> Option { + self.value(name).and_then(decode_i32) + } + + pub(in crate::scene::usd_import) fn custom_f32(&self, name: &str) -> Option { + self.value(name).and_then(decode_f32) + } + + pub(in crate::scene::usd_import) fn custom_bool(&self, name: &str) -> Option { + self.value(name).and_then(decode_bool) + } + + pub(in crate::scene::usd_import) fn custom_token(&self, name: &str) -> Option { + self.value(name).and_then(decode_text) + } + + #[allow(dead_code)] + pub(in crate::scene::usd_import) fn custom_color3(&self, name: &str) -> Option { + self.value(name).and_then(decode_vec3) + } + + /// The targets of relationship `name`, empty when it has none or the prim + /// has no such relationship. + pub(in crate::scene::usd_import) fn targets(&self, name: &str) -> Vec { + match self + .locate([generic::RELATIONSHIPS, name, generic::TARGETS]) + .and_then(|d| d.value()) + { + Some(sdf::Value::PathVec(targets)) => targets, + _ => Vec::new(), + } + } +} + +/// The stage metadatum `field` from the absolute root's `__usdStageMetadata` +/// (Moho's M3), with whether a layer authors it. +pub(in crate::scene::usd_import) fn stage_metadata( + index: &dyn SceneIndex, + field: &str, +) -> Option<(sdf::Value, bool)> { + let root = PrimData::at(index, &sdf::Path::abs_root()); + let value = root + .locate([generic::STAGE_METADATA, field, generic::VALUE])? + .value()?; + let authored = matches!( + root.locate([generic::STAGE_METADATA, field, generic::AUTHORED]) + .and_then(|d| d.value()), + Some(sdf::Value::Bool(true)) + ); + Some((value, authored)) +} diff --git a/crates/crust-core/src/scene/usd_import/index/mod.rs b/crates/crust-core/src/scene/usd_import/index/mod.rs index df3ac39cc..9ec9c44a5 100644 --- a/crates/crust-core/src/scene/usd_import/index/mod.rs +++ b/crates/crust-core/src/scene/usd_import/index/mod.rs @@ -40,6 +40,7 @@ use moho::scene_index::{CollectionMembership, SceneIndexHandle}; use moho::stage::StageSceneIndex; pub(super) mod bridge; +pub(super) mod data; pub(super) mod stage_facts; pub(super) mod walk; diff --git a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs index 3798c8906..4ecaa13e2 100644 --- a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs +++ b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs @@ -129,3 +129,18 @@ pub(in crate::scene::usd_import) fn invisible_overrides(stage: &Stage) -> u32 { } count } + +/// Why the host's pass is not a `RenderPass`, for its error: no prim there, or +/// the USD type the prim has. The USD type name is what the user authored and +/// reads in the error, and the scene index carries Hydra types only (a +/// `Scope` or an `Xform` has none), so it is read from the stage. +pub(in crate::scene::usd_import) fn not_a_pass(stage: &Stage, pass: &sdf::Path) -> String { + let prim = super::bridge::prim(stage, pass); + if !prim.is_valid().unwrap_or(false) { + return "there is no prim at this path on the stage".to_string(); + } + match prim.type_name().ok().flatten() { + Some(t) if !t.as_str().is_empty() => format!("a {} is not a RenderPass", t.as_str()), + _ => "a typeless prim is not a RenderPass".to_string(), + } +} diff --git a/crates/crust-core/src/scene/usd_import/listing.rs b/crates/crust-core/src/scene/usd_import/listing.rs index 4fef10585..db3cec24b 100644 --- a/crates/crust-core/src/scene/usd_import/listing.rs +++ b/crates/crust-core/src/scene/usd_import/listing.rs @@ -33,9 +33,7 @@ use super::implicit::Shape; use super::lights::{LightInputs, light_inputs}; use super::materials::{bound_material, surface_shader_id}; use super::products::{Framing, import_render_products}; -use super::settings::{ - CameraPick, import_render_settings, pick_camera, render_source, wanted_camera, -}; +use super::settings::{CameraPick, import_render_settings, pick_camera, wanted_camera}; use super::time::EvalTimeScope; use super::{ Prune, WalkScope, open_stage, prim_at, prune_reason, release_stage, stage_builder, stream_roots, @@ -85,13 +83,17 @@ pub(crate) fn list_records( // What the import reads before it meets a camera: the settings (the // image's aspect, which the aperture is conformed to) and the camera it // was told to use. - let products = import_render_products(&index, None, None); - let mut settings = import_render_settings(&index, None); + // The settings the import would read, through the scene index as the + // import reads them. + let scene = super::index::input_chain(index.clone(), frame, true); + let products = import_render_products(&index, scene.chain.as_ref(), None, None); + let mut settings = import_render_settings(scene.chain.as_ref(), None); if let Some((w, h)) = products.resolution { settings = settings.with_resolution(w, h); } let framing = products.framing; - let wanted = wanted_camera(None, products.camera, &index, None); + let wanted = wanted_camera(None, products.camera, scene.chain.as_ref(), None); + drop(scene); drop(index); let mut found: Found = Found::default(); @@ -253,7 +255,7 @@ fn record( bound: false, }), ListKind::Pass => ListRecord::Pass(PassRecord { - render_source: render_source(stage, prim.path()).map(|t| t.to_string()), + render_source: pass_render_source(stage, prim.path()).map(|t| t.to_string()), path, }), }) @@ -459,3 +461,17 @@ fn is_kind(stage: &Stage, prim: &Prim, kind: ListKind) -> bool { ListKind::Pass => matches!(UsdRenderPass::get(stage, path()), Ok(Some(_))), } } + +/// The first target of the pass at `path`'s `renderSource`, read off the +/// listed stage: `crust ls` reads the stage it lists, not a scene index. +fn pass_render_source(stage: &Stage, path: &sdf::Path) -> Option { + use openusd_schemas::render::{Pass, PassSchema}; + Pass::get(stage, path.clone()) + .ok() + .flatten()? + .render_source_rel() + .targets() + .ok()? + .into_iter() + .next() +} diff --git a/crates/crust-core/src/scene/usd_import/live.rs b/crates/crust-core/src/scene/usd_import/live.rs index deb4c1ea3..0f8571f15 100644 --- a/crates/crust-core/src/scene/usd_import/live.rs +++ b/crates/crust-core/src/scene/usd_import/live.rs @@ -623,8 +623,16 @@ fn refresh_settings( .load(InitialLoadSet::LoadNone) .open(path_str) .map_err(|e| Structural(format!("cannot open the stage: {e}")))?; - let read = read_index(&index, layer, path_str, &facts.options, &options) - .map_err(|e| Structural(format!("the settings: {e}")))?; + let scene = super::index::input_chain(index.clone(), facts.options.frame, true); + let read = read_index( + &index, + scene.chain.as_ref(), + layer, + path_str, + &facts.options, + &options, + ) + .map_err(|e| Structural(format!("the settings: {e}")))?; if Some(read.working) != facts.working { return Err(Structural("the working colour space changed".into())); } diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index 776d987a3..df9028c94 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -1150,10 +1150,19 @@ pub(crate) fn load_scene( projection, dicing, shutter, - } = read_index(&index, path, path_str, options, &valid)?; + } = read_index( + &index, + scene_input.chain.as_ref(), + path, + path_str, + options, + &valid, + )?; let pass = valid.pass.as_ref(); - let render_settings = settings::render_settings_path(&index, pass).map(|p| p.to_string()); - let settings_prim = settings::read_settings_prim(&index, pass).map(|p| p.to_string()); + let render_settings = + settings::render_settings_path(scene_input.chain.as_ref(), pass).map(|p| p.to_string()); + let settings_prim = + settings::read_settings_prim(scene_input.chain.as_ref(), pass).map(|p| p.to_string()); let chunks = stream_roots(&index); let subtrees: std::collections::HashSet = if subdiv.adaptive.is_some() { subtree_roots(&index) @@ -1469,6 +1478,7 @@ struct IndexRead { /// the two read the same settings by construction. fn read_index( index: &Stage, + scene: &dyn moho::scene_index::SceneIndex, path: &Path, path_str: &str, options: &crate::UsdImportOptions, @@ -1478,14 +1488,14 @@ fn read_index( // below goes through. let pass = valid.pass.as_ref(); if let Some(p) = pass { - settings::check_pass(index, p)?; + settings::check_pass(scene, index, p)?; debug!("Rendering pass {p}"); } // Render settings come first — the camera importer needs the aspect ratio. - let mut settings = import_render_settings(index, pass); + let mut settings = import_render_settings(scene, pass); // The products the render writes. The first one's camera and resolution // are the render's: the settings' own unless that product overrides them. - let products = import_render_products(index, Some(path), pass); + let products = import_render_products(index, scene, Some(path), pass); if let Some((w, h)) = products.resolution { settings = settings.with_resolution(w, h); } @@ -1503,26 +1513,26 @@ fn read_index( settings = settings .with_motion_blur(products.motion_blur) .with_depth_of_field(products.depth_of_field); - let domes_seen_by_camera = dome_light_camera_visibility(index, pass); - let exposure_compensation = enable_exposure_compensation(index, pass); + let domes_seen_by_camera = dome_light_camera_visibility(scene, pass); + let exposure_compensation = enable_exposure_compensation(scene, pass); // The working colour space, before any colour is read: every texture // request and authored colour is converted into it. let working = valid .working - .unwrap_or_else(|| render_settings_color_space(index, pass)); + .unwrap_or_else(|| render_settings_color_space(scene, pass)); debug!("Rendering in {} ({})", working.label(), working.name()); // Geometry, not tracer, settings: every mesh whose scheme is not `none` // is refined to this one level, so it must be known before the traversal. let subdiv_level = resolve_subdiv_level( options.subdivision_level, - render_settings_subdiv_level(index, pass), + render_settings_subdiv_level(scene, pass), ); debug!("Subdivision level {subdiv_level} for every mesh whose subdivisionScheme is not none"); // Which camera to render through: the host's explicit choice, else the // stage's own `RenderSettings.camera`. Decided here, on the index stage, // because the traversal needs it before it meets any camera. let wanted_camera = - settings::wanted_camera(valid.camera.clone(), products.camera.clone(), index, pass); + settings::wanted_camera(valid.camera.clone(), products.camera.clone(), scene, pass); if let Some(choice) = &wanted_camera { debug!("Rendering through {choice}"); } @@ -1533,7 +1543,7 @@ fn read_index( path, path_str, wanted_camera.as_ref(), - render_settings_dicing_camera(index, pass).as_ref(), + render_settings_dicing_camera(scene, pass).as_ref(), &settings, products.framing, valid.time, @@ -1542,7 +1552,7 @@ fn read_index( debug!("Motion is measured over time codes {open} .. {close}"); } let dicing = dicer.authored.then(|| dicer.path.clone()).flatten(); - let (subdiv, projection) = subdiv_policy(index, options, pass, subdiv_level, dicer); + let (subdiv, projection) = subdiv_policy(scene, options, pass, subdiv_level, dicer); if let Some(t) = valid.time { // The sampler's frame seed follows the frame being rendered, so an // image sequence gets independent noise per frame instead of one @@ -1852,7 +1862,7 @@ fn check_shutter_camera( /// silently. Finding the first camera's projection would take a traversal of /// its own. fn subdiv_policy( - index: &Stage, + scene: &dyn moho::scene_index::SceneIndex, options: &crate::UsdImportOptions, pass: Option<&sdf::Path>, subdiv_level: u32, @@ -1860,7 +1870,7 @@ fn subdiv_policy( ) -> (SubdivPolicy, Option) { let target = resolve_subdiv_edge_length( options.subdivision_edge_length, - render_settings_subdiv_edge_length(index, pass), + render_settings_subdiv_edge_length(scene, pass), ) .filter(|_| crate::config().subdiv); let Some(camera_path) = dicer.path else { @@ -1900,7 +1910,7 @@ fn subdiv_policy( }; let max = resolve_adaptive_max_level( options.subdivision_level, - render_settings_subdiv_level(index, pass), + render_settings_subdiv_level(scene, pass), ); info!( "Adaptive subdivision: unshared cage edges refined to at most {target} px through \ diff --git a/crates/crust-core/src/scene/usd_import/products.rs b/crates/crust-core/src/scene/usd_import/products.rs index c9890f2fb..13b88c28a 100644 --- a/crates/crust-core/src/scene/usd_import/products.rs +++ b/crates/crust-core/src/scene/usd_import/products.rs @@ -461,10 +461,11 @@ impl PrimvarKeep { /// the products' camera and framing (`crust ls`) passes `None`. pub(super) fn import_render_products( stage: &Stage, + scene: &dyn moho::scene_index::SceneIndex, stage_path: Option<&std::path::Path>, pass: Option<&sdf::Path>, ) -> RenderProducts { - let Some(path) = render_settings_path(stage, pass) else { + let Some(path) = render_settings_path(scene, pass) else { return RenderProducts::default(); }; let Some(settings) = UsdRenderSettings::get(stage, path.clone()).ok().flatten() else { @@ -1315,7 +1316,8 @@ mod tests { .open(path.to_str().unwrap()) .expect("stage opens"); let scope = crate::WarningScope::enter(); - let products = import_render_products(&stage, Some(&path), None); + let scene = crate::scene::usd_import::index::input_chain(stage.clone(), None, true); + let products = import_render_products(&stage, scene.chain.as_ref(), Some(&path), None); (products, scope.finish()) } diff --git a/crates/crust-core/src/scene/usd_import/settings.rs b/crates/crust-core/src/scene/usd_import/settings.rs index 047d2306d..aca75dfac 100644 --- a/crates/crust-core/src/scene/usd_import/settings.rs +++ b/crates/crust-core/src/scene/usd_import/settings.rs @@ -2,11 +2,9 @@ //! which camera the render was told to use. use crate::warning; -use openusd::sdf; -use openusd::usd::{Prim, Stage}; -use openusd_schemas::render::{ - Pass as UsdRenderPass, PassSchema, Settings as UsdRenderSettings, SettingsBaseSchema, -}; +use moho::openusd::sdf; +use moho::scene_index::SceneIndex; +use moho::tokens::prim_type; use tracing::debug; use crate::color::Space; @@ -15,8 +13,8 @@ use crate::light::LightSelection; use crate::sampler::SamplerKind; use crate::tracer::{RenderSettings, SamplingStrategy}; -use super::attrs::{custom_bool, custom_f32, custom_i32, custom_token, value_at}; -use super::prim_at; +use super::index::data::{PrimData, stage_metadata}; +use super::index::stage_facts; const DEFAULT_GUIDING_TRAIN_ITERATIONS: u32 = 4; const DEFAULT_GUIDING_PROB: f32 = 0.5; @@ -48,19 +46,19 @@ impl CameraChoice { /// The camera a render is told to use: the host's `requested` path (the /// CLI's `--camera`), else the first RenderProduct's camera (`product_camera`, /// which is the settings' own when the product names none), else the stage's -/// `RenderSettings.camera`. Read off the payload-free `index`, before any +/// `RenderSettings.camera`. Read off the payload-free scene, before any /// traversal meets a camera. The one precedence the import and `crust ls` /// both follow. pub(super) fn wanted_camera( requested: Option, product_camera: Option, - index: &Stage, + scene: &dyn SceneIndex, pass: Option<&sdf::Path>, ) -> Option { match requested { Some(p) => Some(CameraChoice::Requested(p)), None => product_camera - .or_else(|| render_settings_camera(index, pass)) + .or_else(|| render_settings_camera(scene, pass)) .map(CameraChoice::Settings), } } @@ -111,72 +109,69 @@ impl std::fmt::Display for CameraChoice { /// `/Render/settings`. The one answer every settings reader, the products /// and the provenance take, so a pass's own settings reach all of them. /// [`check_render_source`] warns about a target this passes over. -pub(super) fn render_settings_path(stage: &Stage, pass: Option<&sdf::Path>) -> Option { - pass.and_then(|p| render_source(stage, p)) - .filter(|target| is_render_settings(stage, target)) - .or_else(|| { - UsdRenderSettings::stage_settings_path(stage) - .ok() - .flatten() - .or_else(|| sdf::path("/Render/settings").ok()) - }) +/// +/// Read from the scene index: the pass and the settings prim by their Hydra +/// types, `renderSettingsPrimPath` from the root's `__usdStageMetadata`. +pub(super) fn render_settings_path( + scene: &dyn SceneIndex, + pass: Option<&sdf::Path>, +) -> Option { + pass.and_then(|p| render_source(scene, p)) + .filter(|target| is_render_settings(scene, target)) + .or_else(|| stage_settings_path(scene).or_else(|| sdf::path("/Render/settings").ok())) +} + +/// The stage's `renderSettingsPrimPath` metadatum as a path, when it names +/// one (`UsdRenderSettings::GetStageRenderSettings`'s source). +fn stage_settings_path(scene: &dyn SceneIndex) -> Option { + match stage_metadata(scene, "renderSettingsPrimPath")?.0 { + sdf::Value::String(p) if !p.is_empty() => sdf::Path::new(p.as_str()).ok(), + sdf::Value::Token(p) if !p.as_str().is_empty() => sdf::Path::new(p.as_str()).ok(), + _ => None, + } } /// The `RenderSettings` prim the render reads: [`render_settings_path`] when a /// settings prim is there, `None` when the stage has none and the render runs /// on the defaults. What `crust check` reports; the provenance keeps the path /// itself, so an edit that authors settings there is still a settings edit. -pub(super) fn read_settings_prim(stage: &Stage, pass: Option<&sdf::Path>) -> Option { - render_settings_path(stage, pass).filter(|p| is_render_settings(stage, p)) +pub(super) fn read_settings_prim( + scene: &dyn SceneIndex, + pass: Option<&sdf::Path>, +) -> Option { + render_settings_path(scene, pass).filter(|p| is_render_settings(scene, p)) } /// The first target of `pass`'s `renderSource` relationship, if it authors one. -pub(super) fn render_source(stage: &Stage, pass: &sdf::Path) -> Option { - UsdRenderPass::get(stage, pass.clone()) - .ok() - .flatten()? - .render_source_rel() - .targets() - .ok()? - .into_iter() - .next() +pub(super) fn render_source(scene: &dyn SceneIndex, pass: &sdf::Path) -> Option { + let prim = PrimData::at(scene, pass); + if prim.ty() != prim_type::RENDER_PASS { + return None; + } + prim.targets("renderSource").into_iter().next() } -fn is_render_settings(stage: &Stage, path: &sdf::Path) -> bool { - path.is_prim() - && UsdRenderSettings::get(stage, path.clone()) - .ok() - .flatten() - .is_some() +fn is_render_settings(scene: &dyn SceneIndex, path: &sdf::Path) -> bool { + path.is_prim() && PrimData::at(scene, path).ty() == prim_type::RENDER_SETTINGS } /// Checks the host's `pass` names a `RenderPass` prim on `stage`, and warns /// when its `renderSource` targets something [`render_settings_path`] passes -/// over. Run once per import, on the index stage, before anything is read. -pub(super) fn check_pass(stage: &Stage, pass: &sdf::Path) -> Result<(), crate::Error> { - if UsdRenderPass::get(stage, pass.clone()) - .ok() - .flatten() - .is_none() - { - let prim = prim_at(stage, pass.clone()); - let why = if !prim.is_valid().unwrap_or(false) { - "there is no prim at this path on the stage".to_string() - } else { - match prim.type_name().ok().flatten() { - Some(t) if !t.as_str().is_empty() => { - format!("a {} is not a RenderPass", t.as_str()) - } - _ => "a typeless prim is not a RenderPass".to_string(), - } - }; +/// over. Run once per import, on the payload-free scene, before anything is +/// read. +pub(super) fn check_pass( + scene: &dyn SceneIndex, + stage: &moho::openusd::usd::Stage, + pass: &sdf::Path, +) -> Result<(), crate::Error> { + if PrimData::at(scene, pass).ty() != prim_type::RENDER_PASS { return Err(crate::Error::PassNotFound { path: pass.to_string(), - why, + why: stage_facts::not_a_pass(stage, pass), }); } - if let Some(target) = render_source(stage, pass) - && !is_render_settings(stage, &target) + if let Some(target) = render_source(scene, pass) + && !is_render_settings(scene, &target) { warning!( RenderPassRenderSourceInvalid, @@ -190,11 +185,15 @@ pub(super) fn check_pass(stage: &Stage, pass: &sdf::Path) -> Result<(), crate::E /// The first target of the render settings' `camera` relationship — the USD /// way for a stage to say which of its cameras is the shot camera. -pub(super) fn render_settings_camera(stage: &Stage, pass: Option<&sdf::Path>) -> Option { - let s = UsdRenderSettings::get(stage, render_settings_path(stage, pass)?) - .ok() - .flatten()?; - s.camera_rel().targets().ok()?.into_iter().next() +pub(super) fn render_settings_camera( + scene: &dyn SceneIndex, + pass: Option<&sdf::Path>, +) -> Option { + let prim = PrimData::at(scene, &render_settings_path(scene, pass)?); + if prim.ty() != prim_type::RENDER_SETTINGS { + return None; + } + prim.targets("camera").into_iter().next() } /// Whether the camera sees the lights at infinity at all: Hydra's @@ -203,13 +202,16 @@ pub(super) fn render_settings_camera(stage: &Stage, pass: Option<&sdf::Path>) -> /// winning when both are authored. Default `true`. `false` hides every dome, /// distant light and backdrop from camera rays whatever the lights themselves /// author; how they illuminate is unchanged. -pub(super) fn dome_light_camera_visibility(stage: &Stage, pass: Option<&sdf::Path>) -> bool { - let Some(path) = render_settings_path(stage, pass) else { +pub(super) fn dome_light_camera_visibility( + scene: &dyn SceneIndex, + pass: Option<&sdf::Path>, +) -> bool { + let Some(path) = render_settings_path(scene, pass) else { return DEFAULT_DOME_LIGHT_CAMERA_VISIBILITY; }; - let prim = prim_at(stage, path); - custom_bool(&prim, "crust:domeLightCameraVisibility") - .or_else(|| custom_bool(&prim, "domeLightCameraVisibility")) + let prim = PrimData::at(scene, &path); + prim.custom_bool("crust:domeLightCameraVisibility") + .or_else(|| prim.custom_bool("domeLightCameraVisibility")) .unwrap_or(DEFAULT_DOME_LIGHT_CAMERA_VISIBILITY) } @@ -218,13 +220,16 @@ pub(super) fn dome_light_camera_visibility(stage: &Stage, pass: Option<&sdf::Pat /// off the `RenderSettings` prim, with `crust:enableExposureCompensation` /// winning when both are authored. Default `true`. `false` renders at a scale /// of 1 whatever the camera authors. -pub(super) fn enable_exposure_compensation(stage: &Stage, pass: Option<&sdf::Path>) -> bool { - let Some(path) = render_settings_path(stage, pass) else { +pub(super) fn enable_exposure_compensation( + scene: &dyn SceneIndex, + pass: Option<&sdf::Path>, +) -> bool { + let Some(path) = render_settings_path(scene, pass) else { return DEFAULT_ENABLE_EXPOSURE_COMPENSATION; }; - let prim = prim_at(stage, path); - custom_bool(&prim, "crust:enableExposureCompensation") - .or_else(|| custom_bool(&prim, "enableExposureCompensation")) + let prim = PrimData::at(scene, &path); + prim.custom_bool("crust:enableExposureCompensation") + .or_else(|| prim.custom_bool("enableExposureCompensation")) .unwrap_or(DEFAULT_ENABLE_EXPOSURE_COMPENSATION) } @@ -234,9 +239,12 @@ pub(super) fn enable_exposure_compensation(stage: &Stage, pass: Option<&sdf::Pat /// ([`resolve_subdiv_level`](super::attrs::resolve_subdiv_level)) applies the /// host override, the default and the clamp. A geometry setting, not a /// tracer one, so it stays out of [`RenderSettings`]. -pub(super) fn render_settings_subdiv_level(stage: &Stage, pass: Option<&sdf::Path>) -> Option { - let prim = prim_at(stage, render_settings_path(stage, pass)?); - custom_i32(&prim, "crust:subdivisionLevel") +pub(super) fn render_settings_subdiv_level( + scene: &dyn SceneIndex, + pass: Option<&sdf::Path>, +) -> Option { + let prim = PrimData::at(scene, &render_settings_path(scene, pass)?); + prim.custom_i32("crust:subdivisionLevel") } /// `crust:subdivisionEdgeLength` as authored on the `RenderSettings` prim: the @@ -245,11 +253,11 @@ pub(super) fn render_settings_subdiv_level(stage: &Stage, pass: Option<&sdf::Pat /// applies the host override and refuses a bad value. A geometry setting, like /// [`render_settings_subdiv_level`]. pub(super) fn render_settings_subdiv_edge_length( - stage: &Stage, + scene: &dyn SceneIndex, pass: Option<&sdf::Path>, ) -> Option { - let prim = prim_at(stage, render_settings_path(stage, pass)?); - custom_f32(&prim, "crust:subdivisionEdgeLength") + let prim = PrimData::at(scene, &render_settings_path(scene, pass)?); + prim.custom_f32("crust:subdivisionEdgeLength") } /// The first target of `crust:dicingCamera` on the `RenderSettings` prim: the @@ -259,15 +267,11 @@ pub(super) fn render_settings_subdiv_edge_length( /// caller checks the target is a camera. A geometry setting, like /// [`render_settings_subdiv_level`]. pub(super) fn render_settings_dicing_camera( - stage: &Stage, + scene: &dyn SceneIndex, pass: Option<&sdf::Path>, ) -> Option { - let prim = prim_at(stage, render_settings_path(stage, pass)?); - prim.relationship("crust:dicingCamera") - .targets() - .ok()? - .into_iter() - .next() + let prim = PrimData::at(scene, &render_settings_path(scene, pass)?); + prim.targets("crust:dicingCamera").into_iter().next() } /// The working colour space the stage asks for: `renderingColorSpace` on the @@ -275,11 +279,14 @@ pub(super) fn render_settings_dicing_camera( /// Unauthored or empty is `lin_rec709`; a name the config does not know, or a /// space that is not scene-linear, is refused with a warning and is /// `lin_rec709` too. -pub(super) fn render_settings_color_space(stage: &Stage, pass: Option<&sdf::Path>) -> Space { - let Some(path) = render_settings_path(stage, pass) else { +pub(super) fn render_settings_color_space( + scene: &dyn SceneIndex, + pass: Option<&sdf::Path>, +) -> Space { + let Some(path) = render_settings_path(scene, pass) else { return Space::LIN_REC709; }; - match custom_token(&prim_at(stage, path.clone()), "renderingColorSpace") { + match PrimData::at(scene, &path).custom_token("renderingColorSpace") { Some(name) if !name.is_empty() => { crate::color::working_space(&name).unwrap_or_else(|why| { warning!( @@ -294,28 +301,28 @@ pub(super) fn render_settings_color_space(stage: &Stage, pass: Option<&sdf::Path } } -pub(super) fn import_render_settings(stage: &Stage, pass: Option<&sdf::Path>) -> RenderSettings { - let Some(path) = render_settings_path(stage, pass) else { +pub(super) fn import_render_settings( + scene: &dyn SceneIndex, + pass: Option<&sdf::Path>, +) -> RenderSettings { + let Some(path) = render_settings_path(scene, pass) else { return default_settings(); }; - let s = match UsdRenderSettings::get(stage, path.clone()).ok().flatten() { - Some(s) => s, - None => { - debug!( - "No UsdRenderSettings at {} — using defaults for render settings", - path - ); - return default_settings(); - } - }; + let prim = PrimData::at(scene, &path); + if prim.ty() != prim_type::RENDER_SETTINGS { + debug!( + "No UsdRenderSettings at {} — using defaults for render settings", + path + ); + return default_settings(); + } let d = RenderSettings::default(); let (mut w, mut h) = d.get_dimensions(); - let prim = prim_at(stage, path); // A side that is not positive is refused rather than cast: `-1 as usize` // is a frame no camera can be conformed to, nor any buffer allocated for. - if let Some(v2) = value_at(&s.resolution_attr()).and_then(|v| v.try_as_vec_2i()) { + if let Some(v2) = prim.value("resolution").and_then(|v| v.try_as_vec_2i()) { if v2.x > 0 && v2.y > 0 { w = v2.x as usize; h = v2.y as usize; @@ -331,13 +338,14 @@ pub(super) fn import_render_settings(stage: &Stage, pass: Option<&sdf::Path>) -> } // Custom `crust:*` attrs. We look them up on the RenderSettings prim. - let spp = - custom_i32(&prim, "crust:samplesPerPixel").map_or(d.samples_per_pixel(), |n| n as u32); + let spp = prim + .custom_i32("crust:samplesPerPixel") + .map_or(d.samples_per_pixel(), |n| n as u32); // `crust:maxDepth` counts shaded path vertices, not bounces: 1 is the // camera hit alone (visible emission and direct lighting), and 0 would // shade nothing — a black frame. Both 0 and a negative depth (which a // cast would wrap to `u32::MAX`) are refused. - let max_depth = match custom_i32(&prim, "crust:maxDepth") { + let max_depth = match prim.custom_i32("crust:maxDepth") { Some(n) if n < 1 => { let fallback = d.max_depth(); warning!( @@ -353,7 +361,7 @@ pub(super) fn import_render_settings(stage: &Stage, pass: Option<&sdf::Path>) -> }; // A negative minimum is refused rather than cast: `-1 as u32` is // `u32::MAX`, which would overflow the first check point. - let min_spp = match custom_i32(&prim, "crust:minSamplesPerPixel") { + let min_spp = match prim.custom_i32("crust:minSamplesPerPixel") { Some(n) if n < 0 => { let fallback = d.min_samples_per_pixel(); warning!( @@ -366,18 +374,25 @@ pub(super) fn import_render_settings(stage: &Stage, pass: Option<&sdf::Path>) -> Some(n) => n as u32, None => d.min_samples_per_pixel(), }; - let variance = custom_f32(&prim, "crust:varianceThreshold").unwrap_or(d.variance_threshold()); - let frame = custom_i32(&prim, "crust:frame").map_or(d.frame(), |n| n as isize); + let variance = prim + .custom_f32("crust:varianceThreshold") + .unwrap_or(d.variance_threshold()); + let frame = prim + .custom_i32("crust:frame") + .map_or(d.frame(), |n| n as isize); // Path guiding (opt-in). - let guiding = custom_bool(&prim, "crust:pathGuiding").unwrap_or(false); - let guiding_iters = custom_i32(&prim, "crust:guidingTrainIterations") + let guiding = prim.custom_bool("crust:pathGuiding").unwrap_or(false); + let guiding_iters = prim + .custom_i32("crust:guidingTrainIterations") .unwrap_or(DEFAULT_GUIDING_TRAIN_ITERATIONS as i32) .max(1) as u32; - let guiding_prob = custom_f32(&prim, "crust:guidingProb").unwrap_or(DEFAULT_GUIDING_PROB); + let guiding_prob = prim + .custom_f32("crust:guidingProb") + .unwrap_or(DEFAULT_GUIDING_PROB); // MIS strategy: `power` (default) | `balance` | `light` | `bsdf`. - let strategy = match custom_token(&prim, "crust:samplingStrategy") { + let strategy = match prim.custom_token("crust:samplingStrategy") { None => SamplingStrategy::PowerMis, Some(name) => name.parse().unwrap_or_else(|e| { warning!( @@ -390,7 +405,7 @@ pub(super) fn import_render_settings(stage: &Stage, pass: Option<&sdf::Path>) -> }; // Light selection: `power` (default) | `uniform` | `learned` | `neural`. - let light_selection = match custom_token(&prim, "crust:lightSelection") { + let light_selection = match prim.custom_token("crust:lightSelection") { None => LightSelection::Power, Some(name) => name.parse().unwrap_or_else(|e| { warning!( @@ -405,7 +420,7 @@ pub(super) fn import_render_settings(stage: &Stage, pass: Option<&sdf::Path>) -> // Pixel reconstruction filter: `box` | `triangle` (default) | `gaussian` // | `blackman` | `mitchell`, each at its conventional radius unless // `crust:pixelFilterRadius` overrides it (in pixels, from the center). - let mut filter = match custom_token(&prim, "crust:pixelFilter") { + let mut filter = match prim.custom_token("crust:pixelFilter") { None => PixelFilter::default(), Some(name) => name.parse().unwrap_or_else(|e| { warning!( @@ -416,12 +431,12 @@ pub(super) fn import_render_settings(stage: &Stage, pass: Option<&sdf::Path>) -> PixelFilter::default() }), }; - if let Some(radius) = custom_f32(&prim, "crust:pixelFilterRadius") { + if let Some(radius) = prim.custom_f32("crust:pixelFilterRadius") { filter = filter.with_radius(radius); } // The QMC sampler: `sobol` (default) | `sobolBn` | `lattice` | // `latticeBn` | `pmj` | `pmjBn`. - let sampler = match custom_token(&prim, "crust:sampler") { + let sampler = match prim.custom_token("crust:sampler") { None => SamplerKind::default(), Some(name) => name.parse().unwrap_or_else(|e| { warning!( @@ -435,13 +450,14 @@ pub(super) fn import_render_settings(stage: &Stage, pass: Option<&sdf::Path>) -> // Firefly clamp on indirect light, in the film's linear units (the // largest channel of one sample's indirect radiance). Unauthored takes // the engine default; an authored 0 leaves the estimator unbiased. - let indirect_clamp = - custom_f32(&prim, "crust:indirectClamp").unwrap_or(crate::tracer::DEFAULT_INDIRECT_CLAMP); + let indirect_clamp = prim + .custom_f32("crust:indirectClamp") + .unwrap_or(crate::tracer::DEFAULT_INDIRECT_CLAMP); // Adaptive sampling's cross-neighbour tolerance, in convergence-index // units; negative turns the comparison off. A non-finite value cannot // be compared against, so it is refused rather than silently disabling // the guard. - let neighbour_tolerance = match custom_f32(&prim, "crust:adaptiveNeighbourTolerance") { + let neighbour_tolerance = match prim.custom_f32("crust:adaptiveNeighbourTolerance") { Some(t) if t.is_finite() => t, Some(t) => { warning!( @@ -504,9 +520,9 @@ pub(super) fn import_render_settings(stage: &Stage, pass: Option<&sdf::Path>) -> /// a warning above it (a count multiplies every vertex's shadow rays, so a /// typo there is a render that never ends), else the default with a warning. /// Unauthored is the default. -fn light_sample_count(prim: &Prim, name: &str) -> u32 { +fn light_sample_count(prim: &PrimData, name: &str) -> u32 { use crate::tracer::{DEFAULT_LIGHT_SAMPLES, MAX_LIGHT_SAMPLES}; - match custom_i32(prim, name) { + match prim.custom_i32(name) { Some(n) if n >= 1 && n as u32 > MAX_LIGHT_SAMPLES => { warning!( SettingsLightSamplesClamped, diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index de81b574e..082ef8051 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -146,13 +146,13 @@ this group, and kept for the whole change. stage. Verify parity green (`Scene::layers` and `Source` are in the digest), and that the time-range warnings match the baselines on a stage with and one without an authored range. -- [ ] 3.5 Make `crust check`, `crust diagnostic` and the session's import go through +- [x] 3.5 Make `crust check`, `crust diagnostic` and the session's import go through `load_scene`'s index walk. Verify with a crust-render test that `check --json` on `samples/cornellbox.usda` equals its baseline, timings aside. ## 4. Settings, products, precomp, passes and camera -- [ ] 4.1 Index reader for render settings: `renderSettings` from the scene input +- [x] 4.1 Index reader for render settings: `renderSettings` from the scene input (camera, resolution, pixel aspect, conform policy, data window, motion and depth of field toggles, `renderingColorSpace`), and `crust:*` from `namespacedSettings`. The active settings come from the scene globals and the host's pass. Replaces From b48dfb5952ae6ad437042a68d6892cac3314ea59 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 23:13:02 +0100 Subject: [PATCH 22/95] crust-core: products, vars and the precomp's settings read from the index products.rs reads the settings prim, its products and vars from the scene input: Hydra types for RenderSettings, RenderProduct and RenderVar, forwarded `products` and `orderedVars` targets and every attribute from the generic data, with Crust's own product-over-settings resolution and its warnings kept. The precomp reads its settings relationships and the display filters' inputs from the index; shader ids, kernel assets and sample-filter graphs are shading networks and move with the materials. The design records which data an index reader takes. Parity green (task 4.2). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/index/data.rs | 28 +++ .../src/scene/usd_import/precomp.rs | 68 ++++--- .../src/scene/usd_import/products.rs | 167 +++++++++--------- openspec/changes/moho-import/design.md | 9 + openspec/changes/moho-import/tasks.md | 17 +- 5 files changed, 174 insertions(+), 115 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/index/data.rs b/crates/crust-core/src/scene/usd_import/index/data.rs index 852610841..cb9c5c4e8 100644 --- a/crates/crust-core/src/scene/usd_import/index/data.rs +++ b/crates/crust-core/src/scene/usd_import/index/data.rs @@ -108,6 +108,34 @@ impl PrimData { self.value(name).and_then(decode_vec3) } + /// The names of the prim's attributes, the schema's declared ones + /// included, in the order the prim lists them. + pub(in crate::scene::usd_import) fn attribute_names(&self) -> Vec { + self.locate([generic::ATTRIBUTES]) + .and_then(|d| d.as_container().map(|c| c.names())) + .unwrap_or_default() + .into_iter() + .map(|n| n.as_str().to_owned()) + .collect() + } + + /// The forwarded targets of relationship `name` (a target that is itself a + /// relationship replaced by its targets), empty when it has none. + pub(in crate::scene::usd_import) fn forwarded_targets(&self, name: &str) -> Vec { + match self + .locate([generic::RELATIONSHIPS, name, generic::FORWARDED_TARGETS]) + .and_then(|d| d.value()) + { + Some(sdf::Value::PathVec(targets)) => targets, + _ => Vec::new(), + } + } + + /// Whether the prim has relationship `name`. + pub(in crate::scene::usd_import) fn has_relationship(&self, name: &str) -> bool { + self.locate([generic::RELATIONSHIPS, name]).is_some() + } + /// The targets of relationship `name`, empty when it has none or the prim /// has no such relationship. pub(in crate::scene::usd_import) fn targets(&self, name: &str) -> Vec { diff --git a/crates/crust-core/src/scene/usd_import/precomp.rs b/crates/crust-core/src/scene/usd_import/precomp.rs index fc2f7b54a..58fb4526e 100644 --- a/crates/crust-core/src/scene/usd_import/precomp.rs +++ b/crates/crust-core/src/scene/usd_import/precomp.rs @@ -14,7 +14,7 @@ use std::path::Path; use std::sync::Arc; use openusd::sdf; -use openusd::usd::{Prim, Stage}; +use openusd::usd::Stage; use tracing::debug; use crate::aov::{AovRequest, AovSource, AovVar, FilterSource, Precision}; @@ -24,7 +24,8 @@ use crate::precomp::{ use crate::warning; use super::assets::asset_path; -use super::attrs::{custom_bool, custom_f32, custom_i32, custom_token, decode_vec3, prim_value}; +use super::attrs::decode_vec3; +use super::index::data::PrimData; use super::materials::shader_info_id; use super::mtlx_network::translate_value_graph; use super::prim_at; @@ -37,23 +38,28 @@ const BEAUTY: &str = "beauty"; /// vars of `request` (`targets`, by var prim path) into their filters and /// dropping the ones that cannot be. `None` when the prim authors no filter /// list and no `crust:display`. +/// +/// The settings prim and the display filters' inputs are read from the scene +/// index; the filters' shader ids, kernel assets and sample-filter graphs are +/// shading networks, which still read the stage through the bridge until the +/// material family moves (`moho-import` task 9.2). pub(super) fn import_precomp( stage: &Stage, + scene: &dyn moho::scene_index::SceneIndex, stage_path: &Path, settings: &sdf::Path, request: &mut AovRequest, targets: &HashMap, ) -> Option> { - let prim = prim_at(stage, settings.clone()); + let prim = PrimData::at(scene, settings); + // A list the prim authors, empty included; none when it has no such + // relationship (a `crust:*` relationship exists only where authored). let list = |name: &str| -> Option> { - let rel = prim.relationship(name); - rel.has_authored_targets() - .unwrap_or(false) - .then(|| rel.targets().unwrap_or_default()) + prim.has_relationship(name).then(|| prim.targets(name)) }; let sample_paths = list("crust:sampleFilters"); let display_paths = list("crust:displayFilters"); - let display_name = custom_token(&prim, "crust:display").filter(|d| !d.is_empty()); + let display_name = prim.custom_token("crust:display").filter(|d| !d.is_empty()); if sample_paths.is_none() && display_paths.is_none() && display_name.is_none() { // Filter vars with no filter to read. drop_unresolved(request, targets, &[], &[]); @@ -79,6 +85,7 @@ pub(super) fn import_precomp( for (index, path) in display_paths.iter().enumerate() { let filter = read_display( stage, + scene, stage_path, path, index as u16, @@ -404,6 +411,7 @@ fn beauty_var() -> AovVar { #[allow(clippy::too_many_arguments)] fn read_display( stage: &Stage, + scene: &dyn moho::scene_index::SceneIndex, stage_path: &Path, path: &sdf::Path, index: u16, @@ -412,7 +420,7 @@ fn read_display( earlier: &[DisplayFilter], vars: &Vars<'_>, ) -> DisplayFilter { - let prim = prim_at(stage, path.clone()); + let prim = PrimData::at(scene, path); let shader = openusd_schemas::shade::Shader::get(stage, path.clone()) .ok() .flatten(); @@ -429,13 +437,16 @@ fn read_display( let op = match id.as_str() { "crust:convolve" => Operation::Convolve { input: image("in"), - kernel_path: asset_path(&prim.attribute("inputs:kernel"), stage_path), + kernel_path: asset_path( + &super::index::bridge::prim(stage, path).attribute("inputs:kernel"), + stage_path, + ), kernel: None, - scale: custom_f32(&prim, "inputs:kernelScale").unwrap_or(1.0), + scale: prim.custom_f32("inputs:kernelScale").unwrap_or(1.0), normalize: input_bool(&prim, "inputs:normalize").unwrap_or(true), }, "crust:blur" => { - let radius = custom_f32(&prim, "inputs:radius").unwrap_or(1.0); + let radius = prim.custom_f32("inputs:radius").unwrap_or(1.0); if radius.is_nan() || radius > crate::precomp::MAX_BLUR_RADIUS { warning!( PrecompInvalidValue, @@ -458,17 +469,19 @@ fn read_display( } else { Field::Radial { center: float2(&prim, "inputs:center"), - strength: custom_f32(&prim, "inputs:strength").unwrap_or(0.0), + strength: prim.custom_f32("inputs:strength").unwrap_or(0.0), } }; Operation::VectorBlur { input: image("in"), field, - taps: custom_i32(&prim, "inputs:taps").unwrap_or(8).clamp(1, 256) as u32, + taps: prim.custom_i32("inputs:taps").unwrap_or(8).clamp(1, 256) as u32, } } "crust:merge" => { - let token = custom_token(&prim, "inputs:operation").unwrap_or_else(|| "over".into()); + let token = prim + .custom_token("inputs:operation") + .unwrap_or_else(|| "over".into()); let mode = token.parse::().unwrap_or_else(|()| { warning!( SettingsInvalidValue, @@ -483,7 +496,7 @@ fn read_display( b: image("b"), alpha: authored(&prim, "inputs:alpha").then(|| image("alpha")), mode, - mix: custom_f32(&prim, "inputs:mix").unwrap_or(1.0), + mix: prim.custom_f32("inputs:mix").unwrap_or(1.0), } } "crust:grade" => Operation::Grade { @@ -537,9 +550,11 @@ impl ImageNames<'_> { /// The image `token inputs:` names: a RenderVar, a sample-filter /// output (`.`), an earlier display filter (its prim /// name), or `beauty`. - fn image(&self, prim: &Prim, input: &str) -> Image { + fn image(&self, prim: &PrimData, input: &str) -> Image { let path = self.path; - let Some(name) = custom_token(prim, &format!("inputs:{input}")).filter(|n| !n.is_empty()) + let Some(name) = prim + .custom_token(&format!("inputs:{input}")) + .filter(|n| !n.is_empty()) else { warning!( PrecompUnboundInput, @@ -613,18 +628,19 @@ impl ImageNames<'_> { } } -fn authored(prim: &Prim, name: &str) -> bool { - prim_value(prim, name).is_some() +fn authored(prim: &PrimData, name: &str) -> bool { + prim.value(name).is_some() } /// A bool input, authored as a bool or an int. -fn input_bool(prim: &Prim, name: &str) -> Option { - custom_bool(prim, name).or_else(|| custom_i32(prim, name).map(|i| i != 0)) +fn input_bool(prim: &PrimData, name: &str) -> Option { + prim.custom_bool(name) + .or_else(|| prim.custom_i32(name).map(|i| i != 0)) } /// A `float2` (or `double2`) input. -fn float2(prim: &Prim, name: &str) -> Option<[f32; 2]> { - match prim_value(prim, name)? { +fn float2(prim: &PrimData, name: &str) -> Option<[f32; 2]> { + match prim.value(name)? { sdf::Value::Vec2f(v) => Some([v.x, v.y]), sdf::Value::Vec2d(v) => Some([v.x as f32, v.y as f32]), _ => None, @@ -632,8 +648,8 @@ fn float2(prim: &Prim, name: &str) -> Option<[f32; 2]> { } /// A `color3f` input, or a float in every channel. -fn color(prim: &Prim, name: &str) -> Option<[f32; 3]> { - let v = prim_value(prim, name)?; +fn color(prim: &PrimData, name: &str) -> Option<[f32; 3]> { + let v = prim.value(name)?; decode_vec3(v.clone()) .map(|c| c.to_array()) .or_else(|| super::attrs::decode_f32(v).map(|f| [f; 3])) diff --git a/crates/crust-core/src/scene/usd_import/products.rs b/crates/crust-core/src/scene/usd_import/products.rs index 13b88c28a..5a30a95fc 100644 --- a/crates/crust-core/src/scene/usd_import/products.rs +++ b/crates/crust-core/src/scene/usd_import/products.rs @@ -21,12 +21,11 @@ use crate::warning; use std::cell::RefCell; use std::collections::HashMap; -use openusd::sdf; -use openusd::usd::{Prim, Stage}; -use openusd_schemas::render::{ - AspectRatioConformPolicy, Product as RenderProduct, ProductSchema, - Settings as UsdRenderSettings, SettingsBaseSchema, SettingsSchema, Var as RenderVar, -}; +use moho::openusd::sdf; +use moho::openusd::usd::{Prim, Stage}; +use moho::scene_index::SceneIndex; +use moho::tokens::prim_type; +use openusd_schemas::render::AspectRatioConformPolicy; use tracing::debug; use crate::aov::{ @@ -35,8 +34,8 @@ use crate::aov::{ }; use crate::region::PixelRect; -use super::attrs::{custom_bool, custom_token, decode_bool, decode_number, prim_value, value_at}; -use super::prim_at; +use super::attrs::{decode_bool, decode_number, prim_value}; +use super::index::data::PrimData; use super::settings::render_settings_path; const DRIVER_PARAMETERS: &str = "driver:parameters:"; @@ -159,25 +158,25 @@ struct Base { disable_depth_of_field: bool, } -fn read_resolution(view: &impl SettingsBaseSchema) -> Option<(usize, usize)> { - let v = value_at(&view.resolution_attr())?.try_as_vec_2i()?; +fn read_resolution(view: &PrimData) -> Option<(usize, usize)> { + let v = view.value("resolution")?.try_as_vec_2i()?; (v.x > 0 && v.y > 0).then_some((v.x as usize, v.y as usize)) } -fn read_data_window(view: &impl SettingsBaseSchema) -> Option<[f32; 4]> { - let v = value_at(&view.data_window_ndc_attr())?.try_as_vec_4f()?; +fn read_data_window(view: &PrimData) -> Option<[f32; 4]> { + let v = view.value("dataWindowNDC")?.try_as_vec_4f()?; Some([v.x, v.y, v.z, v.w]) } /// The authored `aspectRatioConformPolicy`; `None` when unauthored, or when /// it names none of the five policies, which is refused at the prim that /// authors it. -fn read_conform_policy(view: &impl SettingsBaseSchema) -> Option { - let value = value_at(&view.aspect_ratio_conform_policy_attr())?; +fn read_conform_policy(view: &PrimData) -> Option { + let value = view.value("aspectRatioConformPolicy")?; match AspectRatioConformPolicy::try_from(value.clone()) { Ok(policy) => Some(policy), Err(_) => { - let path = view.prim().path(); + let path = view.path(); warning!( ProductInvalidConformPolicy, at = path, @@ -203,12 +202,12 @@ fn describe_value(value: &sdf::Value) -> String { /// The authored `pixelAspectRatio`; `None` when unauthored, or when it is /// not a [`valid_pixel_aspect`], which is refused at the prim that authors /// it. -fn read_pixel_aspect(view: &impl SettingsBaseSchema) -> Option { - let value = value_at(&view.pixel_aspect_ratio_attr())?; +fn read_pixel_aspect(view: &PrimData) -> Option { + let value = view.value("pixelAspectRatio")?; match decode_number(value.clone()) { Some(a) if valid_pixel_aspect(a) => Some(a), _ => { - let path = view.prim().path(); + let path = view.path(); warning!( ProductInvalidPixelAspectRatio, at = path, @@ -221,8 +220,8 @@ fn read_pixel_aspect(view: &impl SettingsBaseSchema) -> Option { } } -fn read_camera(view: &impl SettingsBaseSchema) -> Option { - view.camera_rel().targets().ok()?.into_iter().next() +fn read_camera(view: &PrimData) -> Option { + view.targets("camera").into_iter().next() } impl Base { @@ -242,20 +241,23 @@ impl Base { } /// `view`'s authored opinions over `fallback`. - fn resolve(view: &impl SettingsBaseSchema, fallback: &Base) -> Base { + fn resolve(view: &PrimData, fallback: &Base) -> Base { Base { camera: read_camera(view).or_else(|| fallback.camera.clone()), resolution: read_resolution(view).or(fallback.resolution), data_window: read_data_window(view).or(fallback.data_window), conform: read_conform_policy(view).unwrap_or(fallback.conform), pixel_aspect: read_pixel_aspect(view).unwrap_or(fallback.pixel_aspect), - disable_motion_blur: value_at(&view.disable_motion_blur_attr()) + disable_motion_blur: view + .value("disableMotionBlur") .and_then(decode_bool) .unwrap_or(fallback.disable_motion_blur), - instantaneous_shutter: value_at(&view.instantaneous_shutter_attr()) + instantaneous_shutter: view + .value("instantaneousShutter") .and_then(decode_bool) .unwrap_or(fallback.instantaneous_shutter), - disable_depth_of_field: value_at(&view.disable_depth_of_field_attr()) + disable_depth_of_field: view + .value("disableDepthOfField") .and_then(decode_bool) .unwrap_or(fallback.disable_depth_of_field), } @@ -461,20 +463,22 @@ impl PrimvarKeep { /// the products' camera and framing (`crust ls`) passes `None`. pub(super) fn import_render_products( stage: &Stage, - scene: &dyn moho::scene_index::SceneIndex, + scene: &dyn SceneIndex, stage_path: Option<&std::path::Path>, pass: Option<&sdf::Path>, ) -> RenderProducts { let Some(path) = render_settings_path(scene, pass) else { return RenderProducts::default(); }; - let Some(settings) = UsdRenderSettings::get(stage, path.clone()).ok().flatten() else { + let settings = PrimData::at(scene, &path); + if settings.ty() != prim_type::RENDER_SETTINGS { return RenderProducts::default(); - }; - let mut out = read_products(stage, &path, &settings); + } + let mut out = read_products(scene, &path, &settings); if let Some(stage_path) = stage_path { out.request.precomp = super::precomp::import_precomp( stage, + scene, stage_path, &path, &mut out.request, @@ -485,12 +489,9 @@ pub(super) fn import_render_products( } /// The products of the settings prim `path`, before the precomp is read. -fn read_products(stage: &Stage, path: &sdf::Path, settings: &UsdRenderSettings) -> RenderProducts { +fn read_products(scene: &dyn SceneIndex, path: &sdf::Path, settings: &PrimData) -> RenderProducts { let path = path.clone(); - let targets = settings - .products_rel() - .forwarded_targets() - .unwrap_or_default(); + let targets = settings.forwarded_targets("products"); let base = Base::resolve(settings, &Base::unauthored()); if targets.is_empty() { return RenderProducts { @@ -528,20 +529,19 @@ fn read_products(stage: &Stage, path: &sdf::Path, settings: &UsdRenderSettings) let mut refused: Vec = Vec::new(); for product_path in targets { - let Some(product) = RenderProduct::get(stage, product_path.clone()) - .ok() - .flatten() - else { + let product = PrimData::at(scene, &product_path); + if product.ty() != prim_type::RENDER_PRODUCT { warning!( ProductNotARenderProduct, at = product_path, "{path}.products targets {product_path}, which is not a RenderProduct; skipped" ); continue; - }; - let prim = prim_at(stage, product_path.clone()); - let product_type = - custom_token(&prim, "productType").unwrap_or_else(|| "raster".to_owned()); + } + let prim = &product; + let product_type = prim + .custom_token("productType") + .unwrap_or_else(|| "raster".to_owned()); if product_type != "raster" { warning!( ProductUnsupportedType, @@ -638,14 +638,10 @@ fn read_products(stage: &Stage, path: &sdf::Path, settings: &UsdRenderSettings) ); } - let name = custom_token(&prim, "productName").unwrap_or_default(); + let name = prim.custom_token("productName").unwrap_or_default(); let mut seen = Vec::new(); let mut product_vars = Vec::new(); - for var_path in product - .ordered_vars_rel() - .forwarded_targets() - .unwrap_or_default() - { + for var_path in product.forwarded_targets("orderedVars") { if seen.contains(&var_path) { debug!("{product_path}: {var_path} is targeted twice; using it once"); continue; @@ -654,7 +650,7 @@ fn read_products(stage: &Stage, path: &sdf::Path, settings: &UsdRenderSettings) let var = vars .entry(var_path.clone()) .or_insert_with(|| { - resolve_var(stage, &var_path, &mut out.primvars, &mut out.filter_targets) + resolve_var(scene, &var_path, &mut out.primvars, &mut out.filter_targets) }) .clone(); // One DFA holds every expression of the render, each accepting @@ -683,7 +679,7 @@ fn read_products(stage: &Stage, path: &sdf::Path, settings: &UsdRenderSettings) } product_vars.extend(var); } - let attributes = driver_attributes(&prim); + let attributes = driver_attributes(prim); debug!( "{product_path}: {:?} with {} var(s): {}", name, @@ -797,10 +793,9 @@ fn describe_resolution(resolution: Option<(usize, usize)>) -> String { /// `aov:` namespace, which configures vars), for the EXR header: /// `driver:parameters:OpenEXR:` as ``, the rest by their name /// without the prefix (`artist`, `comment`). -fn driver_attributes(prim: &Prim) -> Vec<(String, String)> { +fn driver_attributes(prim: &PrimData) -> Vec<(String, String)> { let mut out: Vec<(String, String)> = prim - .authored_property_names() - .unwrap_or_default() + .attribute_names() .into_iter() .filter_map(|name| { let name = name.as_str(); @@ -808,7 +803,7 @@ fn driver_attributes(prim: &Prim) -> Vec<(String, String)> { if key.starts_with("aov:") { return None; } - let value = custom_token(prim, name)?; + let value = prim.custom_token(name)?; let key = key.strip_prefix("OpenEXR:").unwrap_or(key); Some((key.to_owned(), value)) }) @@ -819,8 +814,8 @@ fn driver_attributes(prim: &Prim) -> Vec<(String, String)> { /// A float attribute authored as any numeric type — Houdini writes /// `clearValue` as a float, hand-written files as an int. -fn custom_number(prim: &Prim, name: &str) -> Option { - prim_value(prim, name).and_then(decode_number) +fn custom_number(prim: &PrimData, name: &str) -> Option { + prim.value(name).and_then(decode_number) } /// Components and precision of an Sdf type name or a Houdini @@ -901,22 +896,22 @@ fn type_fits(source: AovSource, components: usize, precision: Precision) -> bool /// Hydra's `multiSampled`, then Arnold, Karma and RenderMan filter /// attributes. `None` when none is authored (or the one authored names a /// rule crust does not have, which is warned). -fn authored_accumulation(prim: &Prim) -> Option { - if let Some(multi) = custom_bool(prim, "driver:parameters:aov:multiSampled") { +fn authored_accumulation(prim: &PrimData) -> Option { + if let Some(multi) = prim.custom_bool("driver:parameters:aov:multiSampled") { return Some(if multi { Accumulation::Filtered } else { Accumulation::Closest }); } - if let Some(filter) = custom_token(prim, "arnold:filter") { + if let Some(filter) = prim.custom_token("arnold:filter") { return Some(if filter == "closest_filter" { Accumulation::Closest } else { Accumulation::Filtered }); } - if let Some(filter) = custom_token(prim, "driver:parameters:aov:filter") { + if let Some(filter) = prim.custom_token("driver:parameters:aov:filter") { let f = filter.trim_start(); return Some( if f.starts_with("[\"closest\"") || f.starts_with("closest") { @@ -927,7 +922,7 @@ fn authored_accumulation(prim: &Prim) -> Option { ); } for name in ["ri:accumulationRule", "ri:displayChannel:filter"] { - if let Some(rule) = custom_token(prim, name) { + if let Some(rule) = prim.custom_token(name) { return match rule.as_str() { "zmin" => Some(Accumulation::Closest), "filter" | "" => Some(Accumulation::Filtered), @@ -950,12 +945,13 @@ fn authored_accumulation(prim: &Prim) -> Option { /// One RenderVar as a channel layer, or `None` (warned) when crust cannot /// honour it. fn resolve_var( - stage: &Stage, + scene: &dyn SceneIndex, path: &sdf::Path, keep: &mut PrimvarKeep, filters: &mut HashMap, ) -> Option { - if RenderVar::get(stage, path.clone()).ok().flatten().is_none() { + let prim = PrimData::at(scene, path); + if prim.ty() != prim_type::RENDER_VAR { warning!( AovNotARenderVar, at = path, @@ -963,30 +959,28 @@ fn resolve_var( ); return None; } - let prim = prim_at(stage, path.clone()); let prim_name = path.name().unwrap_or_default().to_owned(); - let name = custom_token(&prim, "driver:parameters:aov:name") + let name = prim + .custom_token("driver:parameters:aov:name") .filter(|n| !n.is_empty()) .unwrap_or(prim_name); - let channel_prefix = custom_token(&prim, "driver:parameters:aov:channel_prefix") - .or_else(|| custom_token(&prim, "driver:parameters:aov:husk:channel_prefix")); + let channel_prefix = prim + .custom_token("driver:parameters:aov:channel_prefix") + .or_else(|| prim.custom_token("driver:parameters:aov:husk:channel_prefix")); // A filter output: its `sourceType` and `sourceName` are ignored. - if let Some(target) = prim - .relationship("crust:filter") - .targets() - .ok() - .and_then(|t| t.into_iter().next()) - { + if let Some(target) = prim.targets("crust:filter").into_iter().next() { return resolve_filter_var(&prim, path, name, channel_prefix, target, filters); } - let source_type = custom_token(&prim, "sourceType").unwrap_or_else(|| "raw".to_owned()); - let source_name = custom_token(&prim, "sourceName").unwrap_or_default(); + let source_type = prim + .custom_token("sourceType") + .unwrap_or_else(|| "raw".to_owned()); + let source_name = prim.custom_token("sourceName").unwrap_or_default(); let mut expression = None; let mut primvar = None; let mut raw = false; - let raw_authored = custom_bool(&prim, "crust:aov:raw") == Some(true); - let variance = custom_bool(&prim, "crust:aov:variance") == Some(true); + let raw_authored = prim.custom_bool("crust:aov:raw") == Some(true); + let variance = prim.custom_bool("crust:aov:variance") == Some(true); if variance && source_type != "lpe" { warning!( AovInvalidVariance, @@ -1121,8 +1115,9 @@ fn resolve_var( }; // An expression's variance is one scalar: unauthored, it is a float. - let type_name = custom_token(&prim, "driver:parameters:aov:format") - .or_else(|| custom_token(&prim, "dataType")) + let type_name = prim + .custom_token("driver:parameters:aov:format") + .or_else(|| prim.custom_token("dataType")) .unwrap_or_else(|| if variance { "float" } else { "color3f" }.to_owned()); let Some((components, precision)) = parse_data_type(&type_name) else { warning!( @@ -1145,7 +1140,8 @@ fn resolve_var( } // The role is the `dataType`'s (Houdini's `aov:format` names only // the storage, `float3` for a `point3f`). - let role = custom_token(&prim, "dataType") + let role = prim + .custom_token("dataType") .and_then(|t| PrimvarRole::of_type(&t)) .or_else(|| PrimvarRole::of_type(&type_name)) .unwrap_or(PrimvarRole::Float); @@ -1235,17 +1231,18 @@ pub(super) struct FilterTarget { /// float or half channels, whose filter the precomp import resolves. Its /// source is a placeholder until then. fn resolve_filter_var( - prim: &Prim, + prim: &PrimData, path: &sdf::Path, name: String, channel_prefix: Option, target: sdf::Path, filters: &mut HashMap, ) -> Option { - let type_name = custom_token(prim, "driver:parameters:aov:format") - .or_else(|| custom_token(prim, "dataType")) + let type_name = prim + .custom_token("driver:parameters:aov:format") + .or_else(|| prim.custom_token("dataType")) .unwrap_or_else(|| "color3f".to_owned()); - let radiance = custom_bool(prim, "crust:filter:radiance").unwrap_or(true); + let radiance = prim.custom_bool("crust:filter:radiance").unwrap_or(true); let placeholder = |components: usize| { AovSource::Filter(FilterSource { display: false, @@ -1279,7 +1276,9 @@ fn resolve_filter_var( path.to_string(), FilterTarget { filter: target, - output: custom_token(prim, "crust:filter:output").filter(|o| !o.is_empty()), + output: prim + .custom_token("crust:filter:output") + .filter(|o| !o.is_empty()), }, ); Some(AovVar { diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index 2b4e9622c..6b49b566f 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -235,6 +235,15 @@ first commit of the index walk. Each family then moves on its own to an **index index, path) that reads schemas and generic data and calls the same builders the direct reader calls. The move is accepted when `import-parity` is green against the unchanged baselines. +What an index reader reads: the Hydra schema where it carries exactly what the direct +reader read (prim types, transforms, topology, bindings, membership), and Moho's generic +attribute data where the direct reader depends on whether a value is authored, on +metadata, or on a renderer attribute (`crust:*`). The generic data is read with the +direct readers' rule — a value counts when a layer authors it (`index/data.rs`) — and +decoded by their own decoders, so the two readers cannot disagree. A flattened schema +that resolves opinions Crust resolves itself with warnings (UsdRender's products over +the settings) is not used in their place. + The bridge cannot reach a prim that exists only in Moho's namespace (re-rooted prototypes). So until instancing moves, the index route builds each input's chain without the two instancing filters, in `chain::input`'s order, with light linking over diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 082ef8051..c08c7f194 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -158,10 +158,16 @@ this group, and kept for the whole change. active settings come from the scene globals and the host's pass. Replaces `read_index`'s settings reads. Verify parity green, plus a test on `samples/aovs.usda` and the settings fixtures. -- [ ] 4.2 Index reader for products and vars (flattened `renderProducts`, - `driver:parameters:*`, `ri:*`, `crust:aov:*`, `crust:filter*`), and precomp filters - read from the generic data of the prims the settings' relationships target. Verify - parity green on `aovs.usda`, `aovs_lpe.usda`, `primvar_aovs.usda` and `precomp.usda`. +- [x] 4.2 Index reader for products and vars (`products`, `orderedVars` forwarded + targets, every `UsdRenderSettingsBase` attribute a product overrides, + `driver:parameters:*`, `ri:*`, `crust:aov:*`, `crust:filter*`), read from the generic + data with the direct reader's own resolution of product over settings (UsdRender's + compute-spec rule as Crust implements it, with its warnings), not from the flattened + `renderProducts`, which carries resolved values without the authored-ness those + warnings depend on. The precomp's settings relationships and display-filter inputs + read from the index; the filters' shader ids, kernel assets and sample-filter graphs + are shading networks and move with them (9.2). Verify parity green on `aovs.usda`, + `aovs_lpe.usda`, `primvar_aovs.usda` and `precomp.usda`. - [ ] 4.3 Index reader for the active pass: `renderPass` and its `collections` (`matte`, `cameraVisibility`, and `prune`/`renderVisibility` for the existing warning that they are not honoured, M6). Membership is judged per chunk at the instance or @@ -227,7 +233,8 @@ this group, and kept for the whole change. all-purpose binding, from the material binding resolving filter. Check it against `winning_binding_target` with a test that runs both on `purpose_bindings.usda` and the binding fixtures, while the direct reader still exists. Verify parity green. -- [ ] 9.2 Networks: `material` per render context (universal, `mtlx`, `ri`). Terminals, +- [ ] 9.2 Networks: `material` per render context (universal, `mtlx`, `ri`), and the + precomp's display-filter shader ids, kernel assets and sample-filter graphs. Terminals, `nodeIdentifier`, parameters with colour space and resolved asset paths, and connections feed `preview` (`UsdPreviewSurface`, `UsdUVTexture`, primvar readers), `mtlx_network` (inline `ND_*`), `PxrDisneyBsdf` and `PxrDisplace`. `crust:openpbr` is From e9accc38dec85801da746be65585b388c05c8af9 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 23:23:34 +0100 Subject: [PATCH 23/95] crust-core tests: a render pass applying all four collections matte and cameraVisibility are read (one holdout, one prim hidden from the camera); prune and renderVisibility each warn once. Baselines recorded from the direct importer (36537fed). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../all_four_usda-6bc85ac5d7d4207b-1.digest | 22 +++++++++++++++ .../all_four_usda-6bc85ac5d7d4207b-1.image | 1 + crates/crust-core/tests/render_passes.rs | 27 +++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 crates/crust-core/tests/data/import_baselines/all_four_usda-6bc85ac5d7d4207b-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/all_four_usda-6bc85ac5d7d4207b-1.image diff --git a/crates/crust-core/tests/data/import_baselines/all_four_usda-6bc85ac5d7d4207b-1.digest b/crates/crust-core/tests/data/import_baselines/all_four_usda-6bc85ac5d7d4207b-1.digest new file mode 100644 index 000000000..b64b07375 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/all_four_usda-6bc85ac5d7d4207b-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 3, max_depth: 32, width: 8, height: 8, region: PixelRect { x0: 0, y0: 0, x1: 8, y1: 8 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: Some(PassSummary { path: "/Render/Passes/all", holdouts: 1, camera_hidden: 1 }) +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/all_four.usda"], invisible_overrides: Some(0) } +layer: $DIR/all_four.usda +warning: Warning { code: RenderPassCollectionNotRead, kind: Skipped, count: 2, prims: ["/Render/Passes/all"], message: "/Render/Passes/all: collection:prune restricts what renders, which crust does not read — rendered as if it were unauthored" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 2 geometries, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 0, spheres: 2, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:468da3d80ce34d98 camera=0:cbf29ce484222325 shadow=1:468da3d80ce34d98 indirect=1:468da3d80ce34d98 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout true transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:d23ac7aa026facc8 camera=1:d23ac7aa026facc8 shadow=1:d23ac7aa026facc8 indirect=1:d23ac7aa026facc8 +provenance geometry 0..1: /World/Hidden +provenance geometry 1..2: /World/Held +provenance spheres: [0, 1] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: Some("/Render/Passes/all"), keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/all_four_usda-6bc85ac5d7d4207b-1.image b/crates/crust-core/tests/data/import_baselines/all_four_usda-6bc85ac5d7d4207b-1.image new file mode 100644 index 000000000..8aad9360c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/all_four_usda-6bc85ac5d7d4207b-1.image @@ -0,0 +1 @@ +8x8 16spp clamp-off 9fa9e040e0eedf25 diff --git a/crates/crust-core/tests/render_passes.rs b/crates/crust-core/tests/render_passes.rs index 9b8ffb567..b53d90aac 100644 --- a/crates/crust-core/tests/render_passes.rs +++ b/crates/crust-core/tests/render_passes.rs @@ -326,6 +326,33 @@ fn prune_and_render_visibility_warn_and_are_not_read() { } } +/// A pass applying all four of its collections: `matte` and +/// `cameraVisibility` are read, `prune` and `renderVisibility` each warn once +/// and leave what they name rendered. +#[test] +fn a_pass_applying_all_four_collections() { + let path = stage( + "all_four", + &[ball("Held", -2.0), ball("Hidden", 2.0)].concat(), + &pass( + "all", + " prepend rel collection:matte:includes = \n\ + prepend rel collection:cameraVisibility:excludes = \n\ + prepend rel collection:prune:includes = \n\ + prepend rel collection:renderVisibility:excludes = ", + ), + "", + ); + let scene = load(&path, Some("/Render/Passes/all")); + assert_eq!( + count(&scene, WarningCode::RenderPassCollectionNotRead), + 2, + "prune and renderVisibility each warn" + ); + let summary = scene.pass.as_ref().expect("a pass"); + assert_eq!((summary.holdouts, summary.camera_hidden), (1, 1)); +} + // --------------------------------------------------------------------------- // Membership // --------------------------------------------------------------------------- From 982a2ca2a61fbff8092f2d2eb86dbd7074ac1ddb Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 23:23:34 +0100 Subject: [PATCH 24/95] crust-core: the active render pass read from the scene index The pass's collection opinions come from the generic data (prune and renderVisibility for the warning that they are not read), and membership of matte and cameraVisibility is judged by the chunk's StageSceneIndex (its CollectionMembership, openusd's query with expressions and predicates), on the chunk being walked as before. Instances are found by __usdPrimInfo/niPrototypePath. The walk hands the pass the input it walks. Parity green (task 4.3). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/index/walk.rs | 15 +-- crates/crust-core/src/scene/usd_import/mod.rs | 6 +- .../crust-core/src/scene/usd_import/passes.rs | 114 +++++++++++++----- openspec/changes/moho-import/tasks.md | 2 +- 4 files changed, 92 insertions(+), 45 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/index/walk.rs b/crates/crust-core/src/scene/usd_import/index/walk.rs index d402ce3e7..5254c85b4 100644 --- a/crates/crust-core/src/scene/usd_import/index/walk.rs +++ b/crates/crust-core/src/scene/usd_import/index/walk.rs @@ -25,17 +25,14 @@ use moho::tokens::usd as generic; use super::super::xform::Timing; use super::super::{ImportCtx, Prune, visit_prim}; -use super::bridge; +use super::{Input, bridge}; -/// Walks `index` into `ctx`, reading each prim's families through the bridge -/// on `stage`, the stage `index` was built over. -pub(in crate::scene::usd_import) fn walk( - stage: &Stage, - index: &dyn SceneIndex, - ctx: &mut ImportCtx, -) { +/// Walks `input`'s chain into `ctx`, reading each prim's families through the +/// bridge on `stage`, the stage `input` was built over. +pub(in crate::scene::usd_import) fn walk(stage: &Stage, input: &Input, ctx: &mut ImportCtx) { + let index: &dyn SceneIndex = input.chain.as_ref(); if let Some(pass) = &mut ctx.pass { - pass.begin_chunk(stage); + pass.begin_chunk(input); } let mut stack: Vec<(sdf::Path, GMat4, bool, Timing)> = vec![( sdf::Path::abs_root(), diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index df9028c94..d8704db1f 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -898,7 +898,7 @@ fn traverse_stage( } // The stage read through Moho (design D4), walked from the root. let scene = index::Single::new(stage.clone(), time); - index::walk::walk(&stage, scene.input.chain.as_ref(), ctx); + index::walk::walk(&stage, &scene.input, ctx); ctx.layers .extend(index::stage_facts::layer_identifiers(&stage)); if skip_stage_teardown { @@ -939,7 +939,7 @@ fn traverse_stage( // children from the chunk's own input, in its stage's order // (design D5). let input = scene.add_chunk(stage.clone(), chunk); - index::walk::walk(&stage, input.chain.as_ref(), ctx); + index::walk::walk(&stage, &input, ctx); scene.remove_chunk(&input); drop(input); // Always dropped, the last chunk included: that is the memory @@ -1218,7 +1218,7 @@ pub(crate) fn load_scene( spheres: Vec::new(), arc_sources: options.keep_geometry.then(Vec::new), links: LightLinks::default(), - pass: pass.map(|p| ActivePass::read(&index, p)), + pass: pass.map(|p| ActivePass::read(scene_input.chain.as_ref(), p)), light_origins: Vec::new(), settings, framing: products.framing, diff --git a/crates/crust-core/src/scene/usd_import/passes.rs b/crates/crust-core/src/scene/usd_import/passes.rs index dd7cc1744..68df28836 100644 --- a/crates/crust-core/src/scene/usd_import/passes.rs +++ b/crates/crust-core/src/scene/usd_import/passes.rs @@ -34,8 +34,13 @@ use crate::warning; use std::ops::Range; -use openusd::sdf; -use openusd::usd::{CollectionAPI, MembershipQuery, Prim, Stage}; +use std::rc::Rc; + +use moho::openusd::sdf; +use moho::openusd::usd::CollectionAPI; +use moho::scene_index::{CollectionMembership, SceneIndex}; +use moho::stage::StageSceneIndex; +use moho::tokens::usd_prim_info as prim_info; use openusd_schemas::render::{COLLECTION_CAMERA_VISIBILITY, COLLECTION_MATTE, COLLECTION_PRUNE}; use tracing::debug; @@ -43,8 +48,9 @@ use crate::light::{Light, LightList}; use crate::ray::{MASK_CAMERA, RayMask}; use crate::rt_world::WorldBuilder; -use super::light_links::{Opinions, inside_instance, opinions}; -use super::prim_at; +use super::index::Input; +use super::index::data::PrimData; +use super::light_links::Opinions; /// `renderVisibility`, which `openusd-schemas` names no constant for. const COLLECTION_RENDER_VISIBILITY: &str = "renderVisibility"; @@ -91,11 +97,12 @@ impl Which { /// The active pass, through the traversal. pub(super) struct ActivePass { path: sdf::Path, - /// The chunk being walked's queries; `None` for a collection that - /// restricts nothing there. Decided per chunk, not on the index stage: - /// a pass can take its collections' opinions from a payload, which only - /// a chunk's stage loads. - queries: [Option; 2], + /// The chunk being walked's stage index, which answers membership for + /// each collection that restricts anything there (`None` for one that + /// does not). Decided per chunk, not on the payload-free scene: a pass can + /// take its collections' opinions from a payload, which only a chunk's + /// stage loads. + queries: [Option>; 2], /// Per collection, whether a target inside an instance / a nested /// collection a chunk does not compose was warned about already. warned_instance: [bool; 2], @@ -105,11 +112,13 @@ pub(super) struct ActivePass { } impl ActivePass { - /// The pass at `path` on the payload-free `index` stage, which + /// The pass at `path` on the payload-free scene, which /// [`super::settings::check_pass`] has found to be a `RenderPass`. Warns - /// once per collection it does not read that restricts anything. - pub(super) fn read(index: &Stage, path: &sdf::Path) -> Self { - let prim = prim_at(index, path.clone()); + /// once per collection it does not read that restricts anything (a pass's + /// `prune` and `renderVisibility` collections, which Moho lists among its + /// `collections`, M6; their opinions are read from the generic data). + pub(super) fn read(scene: &dyn SceneIndex, path: &sdf::Path) -> Self { + let prim = PrimData::at(scene, path); for (name, fallback_root) in [ (COLLECTION_PRUNE, false), (COLLECTION_RENDER_VISIBILITY, true), @@ -146,12 +155,13 @@ impl ActivePass { &self.path } - /// Builds the queries for the chunk `stage` is about to be walked from, - /// for each collection that restricts anything on that stage. - pub(super) fn begin_chunk(&mut self, stage: &Stage) { + /// Builds the queries for the chunk `input` is about to be walked from, + /// for each collection that restricts anything on its stage. + pub(super) fn begin_chunk(&mut self, input: &Input) { self.queries = [None, None]; - let prim = prim_at(stage, self.path.clone()); - if !prim.is_valid().unwrap_or(false) { + let index: &dyn SceneIndex = input.stage.as_ref(); + let prim = PrimData::at(index, &self.path); + if !prim.is_defined() { debug!( "Render pass {} is not composed on this chunk's stage", self.path @@ -160,18 +170,19 @@ impl ActivePass { } for (k, which) in [Which::Matte, Which::Camera].into_iter().enumerate() { if which.restricts(&opinions(&prim, which.name())) { - self.queries[k] = self.query(stage, &prim, which, k); + self.queries[k] = self.query(input, &prim, which, k); } } } fn query( &mut self, - stage: &Stage, - prim: &Prim, + input: &Input, + prim: &PrimData, which: Which, k: usize, - ) -> Option { + ) -> Option> { + let index: &dyn SceneIndex = input.stage.as_ref(); let name = which.name(); let path = &self.path; let o = opinions(prim, name); @@ -180,7 +191,7 @@ impl ActivePass { .includes .iter() .chain(&o.excludes) - .find(|t| inside_instance(stage, t)) + .find(|t| inside_instance(index, t)) { warning!( RenderPassTargetInInstance, @@ -193,7 +204,7 @@ impl ActivePass { if !self.warned_nested[k] && let Some(t) = o.includes.iter().find(|t| { CollectionAPI::instance_at_path(t) - .is_some_and(|(owner, _)| !prim_at(stage, owner).is_valid().unwrap_or(false)) + .is_some_and(|(owner, _)| !PrimData::at(index, &owner).is_defined()) }) { warning!( @@ -204,22 +215,28 @@ impl ActivePass { ); self.warned_nested[k] = true; } - match CollectionAPI::from_prim_unchecked(prim.clone(), name).membership_query() { - Ok(q) => Some(q), - Err(e) => { - debug!("{path}: collection:{name} unreadable ({e}) — read as its fallback"); - None - } + // The chunk's stage index judges membership through openusd's query, + // membership expressions and their predicates included. + if input.stage.includes(path, name, path).is_none() { + debug!("{path}: collection:{name} unreadable — read as its fallback"); + return None; } + Some(input.stage.clone()) } /// Whether the prim at `path` is held out, and whether it is hidden from /// the camera, by the chunk's queries. fn judge(&self, path: &sdf::Path) -> (bool, bool) { let [matte, camera] = &self.queries; + let includes = + |q: &Rc, which: Which| q.includes(&self.path, which.name(), path); ( - matte.as_ref().is_some_and(|q| q.is_included(path)), - camera.as_ref().is_some_and(|q| !q.is_included(path)), + matte + .as_ref() + .is_some_and(|q| includes(q, Which::Matte) == Some(true)), + camera + .as_ref() + .is_some_and(|q| includes(q, Which::Camera) == Some(false)), ) } @@ -287,3 +304,36 @@ impl ActivePass { } } } + +/// The opinions collection `name` authors on `prim`, from the generic data: +/// what decides whether it restricts anything, and what its warnings name. +fn opinions(prim: &PrimData, name: &str) -> Opinions { + let prop = |suffix: &str| format!("collection:{name}:{suffix}"); + Opinions { + includes: prim.targets(&prop("includes")), + excludes: prim.targets(&prop("excludes")), + include_root: prim.custom_bool(&prop("includeRoot")), + expansion_rule: prim.custom_token(&prop("expansionRule")), + expression: prim.value(&prop("membershipExpression")).is_some(), + } +} + +/// Whether some strict ancestor of `path` is a native instance (Moho's +/// `__usdPrimInfo/niPrototypePath`), i.e. `path` names geometry inside a +/// prototype. +fn inside_instance(index: &dyn SceneIndex, path: &sdf::Path) -> bool { + let mut p = path.parent(); + while let Some(a) = p { + if a.is_abs_root() { + return false; + } + if PrimData::at(index, &a) + .locate([prim_info::USD_PRIM_INFO, prim_info::NI_PROTOTYPE_PATH]) + .is_some() + { + return true; + } + p = a.parent(); + } + false +} diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index c08c7f194..3eb5f5d3a 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -168,7 +168,7 @@ this group, and kept for the whole change. read from the index; the filters' shader ids, kernel assets and sample-filter graphs are shading networks and move with them (9.2). Verify parity green on `aovs.usda`, `aovs_lpe.usda`, `primvar_aovs.usda` and `precomp.usda`. -- [ ] 4.3 Index reader for the active pass: `renderPass` and its `collections` +- [x] 4.3 Index reader for the active pass: `renderPass` and its `collections` (`matte`, `cameraVisibility`, and `prune`/`renderVisibility` for the existing warning that they are not honoured, M6). Membership is judged per chunk at the instance or instancer path, as today. Verify parity green on `crust-core/tests/render_passes.rs` From e97881ef83383470665cf0341383d4bad4aef07c Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 23:35:42 +0100 Subject: [PATCH 25/95] crust-core: cameras read from the scene index camera.rs reads the camera prim by its Hydra type and every attribute (projection, apertures and offsets, focal length, fStop and focus, clipping, shutter, exposure) from the generic data, and metersPerUnit with its authored-ness from the root's __usdStageMetadata (Moho's M3). The walk, the read ahead of the traversal (on the scene input, or an input over a stage masked to the camera), the first-camera search (now a walk of the scene index), the live settings refresh and `crust ls` all read through an index. The world transform still composes through the bridge until the transforms move (5.1). Parity green (task 4.4). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../crust-core/src/scene/usd_import/camera.rs | 176 +++++++++++------- .../src/scene/usd_import/index/data.rs | 4 + .../src/scene/usd_import/index/walk.rs | 12 +- .../src/scene/usd_import/listing.rs | 10 +- .../crust-core/src/scene/usd_import/live.rs | 14 +- crates/crust-core/src/scene/usd_import/mod.rs | 93 ++++----- openspec/changes/moho-import/tasks.md | 2 +- 7 files changed, 197 insertions(+), 114 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/camera.rs b/crates/crust-core/src/scene/usd_import/camera.rs index b2442fa5f..9e24b0b3f 100644 --- a/crates/crust-core/src/scene/usd_import/camera.rs +++ b/crates/crust-core/src/scene/usd_import/camera.rs @@ -1,9 +1,10 @@ //! `UsdGeomCamera` → [`Camera`]. use glam::{Mat4 as GMat4, Vec3, Vec3A}; -use openusd::sdf; -use openusd::usd::{Prim, Stage}; -use openusd_schemas::geom::{Camera as UsdCamera, CameraSchema, StageMetadata, tokens}; +use moho::openusd::sdf; +use moho::openusd::usd::{Prim, Stage}; +use moho::scene_index::SceneIndex; +use moho::tokens::prim_type; use openusd_schemas::render::{AspectRatioConformPolicy, conform_aperture}; use tracing::debug; @@ -11,7 +12,9 @@ use crate::camera::{Camera, MAX_CLIP_PLANES}; use crate::tracer::RenderSettings; use crate::warning; -use super::attrs::{attr_f32, attr_f64, decode_text, value_at}; +use super::attrs::decode_text; +use super::index::bridge; +use super::index::data::{PrimData, stage_metadata}; use super::prim_at; use super::products::{Framing, valid_pixel_aspect}; use super::xform::compose_with_parent; @@ -56,34 +59,37 @@ struct CameraFrame { height: f32, } +/// The camera at `path` in `scene`, when the prim there is one. +fn camera_at(scene: &dyn SceneIndex, path: &sdf::Path) -> Option { + let cam = PrimData::at(scene, path); + (cam.ty() == prim_type::CAMERA).then_some(cam) +} + impl CameraFrame { - fn read( - cam: &UsdCamera, - stage: &Stage, - prim: &Prim, - settings: &RenderSettings, - framing: Framing, - ) -> Self { - let world = local_to_world(stage, prim); - let focal_length = attr_f32(&cam.focal_length_attr()).unwrap_or(50.0); - let horiz_aperture = attr_f32(&cam.horizontal_aperture_attr()).unwrap_or(20.955); + /// `cam`'s frame, its world transform `world` (the transforms still read + /// through the bridge until they move to the index, `moho-import` 5.1). + fn read(cam: &PrimData, world: GMat4, settings: &RenderSettings, framing: Framing) -> Self { + let focal_length = cam.custom_f32("focalLength").unwrap_or(50.0); + let horiz_aperture = cam.custom_f32("horizontalAperture").unwrap_or(20.955); let (w, h) = settings.get_dimensions(); let (width, height) = (w as f32, h as f32); // An unauthored vertical aperture is the schema's fallback, conformed // like any other: under `expandAperture` an image wider than // 20.955 × 15.2908 widens the horizontal aperture, as USD frames it. - let vert_aperture = - attr_f32(&cam.vertical_aperture_attr()).unwrap_or(FALLBACK_VERTICAL_APERTURE); + let vert_aperture = cam + .custom_f32("verticalAperture") + .unwrap_or(FALLBACK_VERTICAL_APERTURE); let aperture = [horiz_aperture, vert_aperture]; let (conformed, pixel_aspect) = conform(framing.policy, (w, h), framing.pixel_aspect, aperture); // USD reads a token that names no projection as perspective. - let orthographic = value_at(&cam.projection_attr()) + let orthographic = cam + .value("projection") .and_then(decode_text) .is_some_and(|p| p == "orthographic"); let offset = [ - attr_f32(&cam.horizontal_aperture_offset_attr()).unwrap_or(0.0), - attr_f32(&cam.vertical_aperture_offset_attr()).unwrap_or(0.0), + cam.custom_f32("horizontalApertureOffset").unwrap_or(0.0), + cam.custom_f32("verticalApertureOffset").unwrap_or(0.0), ]; CameraFrame { eye: world.transform_point3(Vec3::ZERO), @@ -231,26 +237,28 @@ pub(super) struct CameraLens { /// The lens of the camera at `prim`, read as [`build_camera`] reads it. pub(super) fn camera_lens( + scene: &dyn SceneIndex, stage: &Stage, - prim: &Prim, + path: &sdf::Path, settings: &RenderSettings, framing: Framing, ) -> Option { - let cam = UsdCamera::get(stage, prim.path().clone()).ok().flatten()?; + let cam = camera_at(scene, path)?; + let world = local_to_world(stage, &bridge::prim(stage, path)); Some(lens( &cam, - &CameraFrame::read(&cam, stage, prim, settings, framing), + &CameraFrame::read(&cam, world, settings, framing), )) } -fn lens(cam: &UsdCamera, frame: &CameraFrame) -> CameraLens { +fn lens(cam: &PrimData, frame: &CameraFrame) -> CameraLens { CameraLens { focal_length: frame.focal_length, aperture: frame.aperture, conformed_aperture: frame.conformed, aperture_offset: frame.offset, - f_stop: attr_f32(&cam.f_stop_attr()).unwrap_or(0.0), - focus_distance: attr_f32(&cam.focus_distance_attr()).unwrap_or(10.0), + f_stop: cam.custom_f32("fStop").unwrap_or(0.0), + focus_distance: cam.custom_f32("focusDistance").unwrap_or(10.0), } } @@ -306,9 +314,9 @@ struct Clipping { refusals: ClippingRefusals, } -fn clipping(cam: &UsdCamera) -> Clipping { +fn clipping(cam: &PrimData) -> Clipping { let mut refusals = ClippingRefusals::default(); - let range = value_at(&cam.clipping_range_attr()).and_then(|v| match v { + let range = cam.value("clippingRange").and_then(|v| match v { sdf::Value::Vec2f(r) => Some([r.x, r.y]), sdf::Value::Vec2d(r) => Some([r.x as f32, r.y as f32]), _ => None, @@ -323,7 +331,7 @@ fn clipping(cam: &UsdCamera) -> Clipping { } None => (0.0, f32::INFINITY), }; - let authored: Vec<[f32; 4]> = match value_at(&cam.clipping_planes_attr()) { + let authored: Vec<[f32; 4]> = match cam.value("clippingPlanes") { Some(sdf::Value::Vec4fVec(v)) => v.iter().map(|p| [p.x, p.y, p.z, p.w]).collect(), Some(sdf::Value::Vec4dVec(v)) => v .iter() @@ -404,14 +412,16 @@ impl RenderCamera { /// The camera at `prim` and its exposure scale, `None` when `prim` is not a /// camera on `stage`. pub(super) fn build_camera( + scene: &dyn SceneIndex, stage: &Stage, - prim: &Prim, + path: &sdf::Path, settings: &RenderSettings, framing: Framing, ) -> Option { - let cam = UsdCamera::get(stage, prim.path().clone()).ok().flatten()?; - let frame = CameraFrame::read(&cam, stage, prim, settings, framing); - let (camera, refused_meters_per_unit) = lens_camera(&cam, stage, &frame, settings); + let cam = camera_at(scene, path)?; + let world = local_to_world(stage, &bridge::prim(stage, path)); + let frame = CameraFrame::read(&cam, world, settings, framing); + let (camera, refused_meters_per_unit) = lens_camera(&cam, scene, &frame, settings); let clip = clipping(&cam); let camera = camera.with_clipping(clip.near, clip.far, &clip.planes); let read = lens(&cam, &frame); @@ -449,18 +459,16 @@ impl ShutterOffsets { } } -fn offsets(cam: &UsdCamera) -> ShutterOffsets { +fn offsets(cam: &PrimData) -> ShutterOffsets { ShutterOffsets { - open: attr_f64(&cam.shutter_open_attr()).unwrap_or(0.0), - close: attr_f64(&cam.shutter_close_attr()).unwrap_or(0.0), + open: cam.custom_f64("shutter:open").unwrap_or(0.0), + close: cam.custom_f64("shutter:close").unwrap_or(0.0), } } -/// The shutter of the camera at `prim`, `None` when `prim` is not a camera -/// on `stage`. -pub(super) fn shutter_offsets(stage: &Stage, prim: &Prim) -> Option { - let cam = UsdCamera::get(stage, prim.path().clone()).ok().flatten()?; - Some(offsets(&cam)) +/// The shutter of the camera at `path`, `None` when no camera is there. +pub(super) fn shutter_offsets(scene: &dyn SceneIndex, path: &sdf::Path) -> Option { + Some(offsets(&camera_at(scene, path)?)) } /// The interval motion is measured over, read before the traversal from the @@ -526,12 +534,12 @@ impl Shutter { /// exactly 1. `exposure:fStop` is the photometric f-stop; the lens's /// depth-of-field `fStop` does not enter. Unchecked: a zero `exposure:fStop` /// gives infinity, which the import refuses once the camera is chosen. -fn exposure_scale(cam: &UsdCamera) -> f32 { - let time = attr_f32(&cam.exposure_time_attr()).unwrap_or(1.0); - let iso = attr_f32(&cam.exposure_iso_attr()).unwrap_or(100.0); - let f_stop = attr_f32(&cam.exposure_f_stop_attr()).unwrap_or(1.0); - let responsivity = attr_f32(&cam.exposure_responsivity_attr()).unwrap_or(1.0); - let exponent = attr_f32(&cam.exposure_attr()).unwrap_or(0.0); +fn exposure_scale(cam: &PrimData) -> f32 { + let time = cam.custom_f32("exposure:time").unwrap_or(1.0); + let iso = cam.custom_f32("exposure:iso").unwrap_or(100.0); + let f_stop = cam.custom_f32("exposure:fStop").unwrap_or(1.0); + let responsivity = cam.custom_f32("exposure:responsivity").unwrap_or(1.0); + let exponent = cam.custom_f32("exposure").unwrap_or(0.0); (time * iso * 2.0_f32.powf(exponent) * responsivity) / (100.0 * f_stop * f_stop) } @@ -540,16 +548,14 @@ const FALLBACK_METERS_PER_UNIT: f64 = 0.01; /// The stage's authored `metersPerUnit` (C++ `UsdGeomGetStageMetersPerUnit`, /// which reads only the root and session layers), `None` when no layer -/// authors it. Unchecked: [`lens_diameter`] refuses a value that is not a -/// length. -fn authored_meters_per_unit(stage: &Stage) -> Option { - if !stage - .has_authored_stage_metadata(tokens::METERS_PER_UNIT) - .unwrap_or(false) - { - return None; +/// authors it: the root's `__usdStageMetadata/metersPerUnit/{value, +/// authored}` (Moho's M3). Unchecked: [`lens_diameter`] refuses a value that +/// is not a length. +fn authored_meters_per_unit(scene: &dyn SceneIndex) -> Option { + match stage_metadata(scene, "metersPerUnit")? { + (sdf::Value::Double(m), true) => Some(m), + _ => None, } - stage.meters_per_unit().ok().flatten() } /// The lens diameter in scene units: `focalLength / fStop` millimetres, @@ -560,7 +566,7 @@ fn authored_meters_per_unit(stage: &Stage) -> Option { /// that is not finite, not positive, or so small that the diameter overflows /// `f32` is refused and reads as the fallback. fn lens_diameter( - stage: &Stage, + scene: &dyn SceneIndex, focal_length: f32, f_stop: f32, depth_of_field: bool, @@ -571,7 +577,7 @@ fn lens_diameter( let diameter = |meters_per_unit: f64| { (f64::from(focal_length) / f64::from(f_stop) * 0.001 / meters_per_unit) as f32 }; - match authored_meters_per_unit(stage) { + match authored_meters_per_unit(scene) { // A unit so small that the diameter overflows `f32` is no length // either: the lens would offset every ray to infinity. Some(m) if m.is_finite() && m > 0.0 && diameter(m).is_finite() => (diameter(m), None), @@ -583,8 +589,8 @@ fn lens_diameter( /// The ray-generating camera of `frame`, from its transform and lens, and /// the stage unit its lens refused. fn lens_camera( - cam: &UsdCamera, - stage: &Stage, + cam: &PrimData, + scene: &dyn SceneIndex, frame: &CameraFrame, settings: &RenderSettings, ) -> (Camera, Option) { @@ -617,7 +623,7 @@ fn lens_camera( let vfov_deg = 2.0 * frame.tan_half_vfov().atan().to_degrees(); let (aperture, refused_meters_per_unit) = - lens_diameter(stage, frame.focal_length, f_stop, settings.depth_of_field()); + lens_diameter(scene, frame.focal_length, f_stop, settings.depth_of_field()); // A pinhole has no focus plane, and USD's `focusDistance = 0` (what // GfCamera writes, and a DCC camera with focus off) would put the image // plane on the eye: every ray would have no direction. A pinhole's rays @@ -659,13 +665,15 @@ fn lens_camera( /// the aperture conformed. The same [`CameraFrame`] as [`build_camera`]'s. /// `None` when `prim` is not a camera on `stage`. pub(super) fn screen_projection( + scene: &dyn SceneIndex, stage: &Stage, - prim: &Prim, + path: &sdf::Path, settings: &RenderSettings, framing: Framing, ) -> Option { - let cam = UsdCamera::get(stage, prim.path().clone()).ok().flatten()?; - let frame = CameraFrame::read(&cam, stage, prim, settings, framing); + let cam = camera_at(scene, path)?; + let world = local_to_world(stage, &bridge::prim(stage, path)); + let frame = CameraFrame::read(&cam, world, settings, framing); if frame.orthographic { // Pixels per world unit at every distance, and the window's half // extents and centre in place of the tangents. A shifted window views @@ -791,6 +799,46 @@ mod tests { use crate::scene::usd_import::{read_camera_ahead, stage_builder}; use openusd::usd::InitialLoadSet; + // The readers take a scene index; these build one over the test's stage, + // so each test reads its camera as the import does. + fn scene_of(stage: &Stage) -> crate::scene::usd_import::index::Input { + crate::scene::usd_import::index::input_chain(stage.clone(), None, false) + } + + fn build_camera( + stage: &Stage, + prim: &Prim, + settings: &RenderSettings, + framing: Framing, + ) -> Option { + let scene = scene_of(stage); + super::build_camera(scene.chain.as_ref(), stage, prim.path(), settings, framing) + } + + fn camera_lens( + stage: &Stage, + prim: &Prim, + settings: &RenderSettings, + framing: Framing, + ) -> Option { + let scene = scene_of(stage); + super::camera_lens(scene.chain.as_ref(), stage, prim.path(), settings, framing) + } + + fn screen_projection( + stage: &Stage, + prim: &Prim, + settings: &RenderSettings, + framing: Framing, + ) -> Option { + let scene = scene_of(stage); + super::screen_projection(scene.chain.as_ref(), stage, prim.path(), settings, framing) + } + + fn authored_meters_per_unit(stage: &Stage) -> Option { + super::authored_meters_per_unit(scene_of(stage).chain.as_ref()) + } + /// A stage on a `.usda` holding `metadata` and nothing else. fn stage(name: &str, metadata: &str) -> Stage { let dir = std::env::temp_dir().join("crust_camera_units"); @@ -830,8 +878,10 @@ mod tests { .open(path_str) .expect("stage opens"); let named = named.map(|p| CameraChoice::Requested(sdf::path(p).unwrap())); + let scene = crate::scene::usd_import::index::input_chain(index.clone(), frame, true); read_camera_ahead( &index, + scene.chain.as_ref(), &path, path_str, named.as_ref(), diff --git a/crates/crust-core/src/scene/usd_import/index/data.rs b/crates/crust-core/src/scene/usd_import/index/data.rs index cb9c5c4e8..de0cb96d7 100644 --- a/crates/crust-core/src/scene/usd_import/index/data.rs +++ b/crates/crust-core/src/scene/usd_import/index/data.rs @@ -95,6 +95,10 @@ impl PrimData { self.value(name).and_then(decode_f32) } + pub(in crate::scene::usd_import) fn custom_f64(&self, name: &str) -> Option { + self.value(name).and_then(super::super::attrs::decode_f64) + } + pub(in crate::scene::usd_import) fn custom_bool(&self, name: &str) -> Option { self.value(name).and_then(decode_bool) } diff --git a/crates/crust-core/src/scene/usd_import/index/walk.rs b/crates/crust-core/src/scene/usd_import/index/walk.rs index 5254c85b4..6254f136b 100644 --- a/crates/crust-core/src/scene/usd_import/index/walk.rs +++ b/crates/crust-core/src/scene/usd_import/index/walk.rs @@ -45,6 +45,7 @@ pub(in crate::scene::usd_import) fn walk(stage: &Stage, input: &Input, ctx: &mut let pruned = prune(index, &path); let Some((world, hidden, timing)) = visit_prim( stage, + index, &prim, pruned, parent_world, @@ -64,7 +65,11 @@ pub(in crate::scene::usd_import) fn walk(stage: &Stage, input: &Input, ctx: &mut /// the stage index lists under the absolute root (as UsdImaging does), which /// the direct traversal never reached from the root — an instance takes its /// prototype's geometry through the instancing reader. -fn children(stage: &Stage, index: &dyn SceneIndex, path: &sdf::Path) -> Vec { +pub(in crate::scene::usd_import) fn children( + stage: &Stage, + index: &dyn SceneIndex, + path: &sdf::Path, +) -> Vec { let mut children = index.children(path); if path.is_abs_root() { children.retain(|c| !bridge::prim(stage, c).is_prototype().unwrap_or(false)); @@ -74,7 +79,10 @@ fn children(stage: &Stage, index: &dyn SceneIndex, path: &sdf::Path) -> Vec Option { +pub(in crate::scene::usd_import) fn prune( + index: &dyn SceneIndex, + path: &sdf::Path, +) -> Option { if path.is_abs_root() { return None; } diff --git a/crates/crust-core/src/scene/usd_import/listing.rs b/crates/crust-core/src/scene/usd_import/listing.rs index db3cec24b..d2bf6a48d 100644 --- a/crates/crust-core/src/scene/usd_import/listing.rs +++ b/crates/crust-core/src/scene/usd_import/listing.rs @@ -102,8 +102,13 @@ pub(crate) fn list_records( let mut first_camera: Option = None; let mut bound: HashSet = HashSet::new(); for_each_chunk(path, path_str, &chunks, |stage| { + // A camera's lens is read as the import reads it, through the scene + // index of the stage it is on. + let scene = (kind == ListKind::Camera) + .then(|| super::index::input_chain(stage.clone(), frame, false)); collect(stage, kind, Order::Authored, |prim, hidden| { - if let Some(r) = record(stage, prim, kind, hidden, &settings, framing) { + let scene = scene.as_ref().map(|s| s.chain.as_ref()); + if let Some(r) = record(stage, scene, prim, kind, hidden, &settings, framing) { found.push(prim.path().to_string(), r); } }); @@ -199,6 +204,7 @@ fn for_each_chunk( /// `bound`) left for the caller, who has seen every chunk. fn record( stage: &Stage, + scene: Option<&dyn moho::scene_index::SceneIndex>, prim: &Prim, kind: ListKind, hidden: bool, @@ -208,7 +214,7 @@ fn record( let path = prim.path().to_string(); Some(match kind { ListKind::Camera => { - let lens = camera_lens(stage, prim, settings, framing)?; + let lens = camera_lens(scene?, stage, prim.path(), settings, framing)?; ListRecord::Camera(CameraRecord { path, focal_length_mm: lens.focal_length, diff --git a/crates/crust-core/src/scene/usd_import/live.rs b/crates/crust-core/src/scene/usd_import/live.rs index 0f8571f15..6b3ddbbb5 100644 --- a/crates/crust-core/src/scene/usd_import/live.rs +++ b/crates/crust-core/src/scene/usd_import/live.rs @@ -13,7 +13,7 @@ use std::path::Path; use std::sync::Arc; use openusd::sdf; -use openusd::usd::{InitialLoadSet, Prim, Stage}; +use openusd::usd::{InitialLoadSet, Stage}; use std::collections::{BTreeMap, HashMap}; @@ -729,9 +729,15 @@ fn refresh_settings( let camera = camera.as_str(); let stage = open_stage(layer, path_str, Some(target.clone())) .map_err(|e| Structural(format!("cannot open the stage: {e}")))?; - let prim: Prim = prim_at(&stage, target.clone()); - let rc = build_camera(&stage, &prim, &read.settings, read.products.framing) - .ok_or_else(|| Structural(format!("{camera} is no longer a camera")))?; + let scene = super::index::input_chain(stage.clone(), facts.options.frame, false); + let rc = build_camera( + scene.chain.as_ref(), + &stage, + &target, + &read.settings, + read.products.framing, + ) + .ok_or_else(|| Structural(format!("{camera} is no longer a camera")))?; rc.warn_lens_units(Some(camera)); rc.warn_clipping(Some(camera)); let settings = apply_exposure( diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index d8704db1f..5bb10e340 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -61,8 +61,8 @@ use openusd::usd::{ InitialLoadSet, Prim, SchemaRegistry, Stage, StageBuilder, StagePopulationMask, }; use openusd_schemas::geom::{ - BasisCurves as UsdBasisCurves, Camera as UsdCamera, Mesh as UsdMesh, - NurbsCurves as UsdNurbsCurves, PointInstancer, Sphere as UsdSphere, + BasisCurves as UsdBasisCurves, Mesh as UsdMesh, NurbsCurves as UsdNurbsCurves, PointInstancer, + Sphere as UsdSphere, }; use openusd_schemas::lux::{ CylinderLight, DiskLight, DistantLight as UsdDistantLight, DomeLight, DomeLight_1, RectLight, @@ -314,6 +314,7 @@ struct ImportCtx<'a> { #[allow(clippy::too_many_arguments)] fn visit_prim( stage: &Stage, + index: &dyn moho::scene_index::SceneIndex, prim: &Prim, pruned: Option, parent_world: GMat4, @@ -345,7 +346,7 @@ fn visit_prim( if prim.is_instance().unwrap_or(false) { return None; } - visit_camera(stage, prim, ctx); + visit_camera(index, stage, prim, ctx); return Some((this_world, true, Timing::Static)); } @@ -469,7 +470,7 @@ fn visit_prim( if baked_moving { ctx.caches.motion.ignored.saw(prim); } - } else if visit_camera(stage, prim, ctx) { + } else if visit_camera(index, stage, prim, ctx) { // Recorded (and built, if it is the one) inside the call. A // moving camera is out of scope: it renders from the frame. } else if emit_light(stage, ctx, prim, this_world) { @@ -591,12 +592,13 @@ fn emit_light(stage: &Stage, ctx: &mut ImportCtx, prim: &Prim, world_xf: GMat4) /// Records `prim` if it is a camera — as a candidate for the error listing /// alternatives, and built when it is the one to render through. `false` when /// it is not a camera. -fn visit_camera(stage: &Stage, prim: &Prim, ctx: &mut ImportCtx) -> bool { - if UsdCamera::get(stage, prim.path().clone()) - .ok() - .flatten() - .is_none() - { +fn visit_camera( + index: &dyn moho::scene_index::SceneIndex, + stage: &Stage, + prim: &Prim, + ctx: &mut ImportCtx, +) -> bool { + if index.prim(prim.path()).ty.as_str() != moho::tokens::prim_type::CAMERA { return false; } ctx.cameras_seen.push(prim.path().clone()); @@ -606,7 +608,7 @@ fn visit_camera(stage: &Stage, prim: &Prim, ctx: &mut ImportCtx) -> bool { // camera is, and kept aside as the fallback while a named one // might still turn up later in the traversal. if ctx.camera.is_none() && (is_named || ctx.first_camera.is_none()) { - match build_camera(stage, prim, &ctx.settings, ctx.framing) { + match build_camera(index, stage, prim.path(), &ctx.settings, ctx.framing) { Some(c) if is_named || named.is_none() => { debug!("Imported USD camera at {}", prim.path()); ctx.camera = Some((c, prim.path().clone())); @@ -1540,6 +1542,7 @@ fn read_index( // else the render camera. Products do not override it. let (dicer, shutter) = read_camera_ahead( index, + scene, path, path_str, wanted_camera.as_ref(), @@ -1631,6 +1634,7 @@ struct Dicer { #[allow(clippy::too_many_arguments)] fn read_camera_ahead( index: &Stage, + scene: &dyn moho::scene_index::SceneIndex, path: &Path, path_str: &str, wanted_camera: Option<&CameraChoice>, @@ -1639,18 +1643,19 @@ fn read_camera_ahead( framing: products::Framing, frame: Option, ) -> Result<(Dicer, Shutter), crate::Error> { - let read_on = |stage: &Stage, at: &sdf::Path| { - let prim = prim_at(stage, at.clone()); - shutter_offsets(stage, &prim) - .map(|s| (screen_projection(stage, &prim, settings, framing), s)) + let read_on = |scene: &dyn moho::scene_index::SceneIndex, stage: &Stage, at: &sdf::Path| { + shutter_offsets(scene, at) + .map(|s| (screen_projection(scene, stage, at, settings, framing), s)) }; let read = |camera_path: &sdf::Path| -> Result<_, crate::Error> { - Ok(match read_on(index, camera_path) { + Ok(match read_on(scene, index, camera_path) { Some(r) => Some(r), None => { let started = Instant::now(); let stage = open_stage(path, path_str, Some(camera_path.clone()))?; - let r = read_on(&stage, camera_path); + let masked = index::input_chain(stage.clone(), frame, false); + let r = read_on(masked.chain.as_ref(), &stage, camera_path); + drop(masked); release_stage(stage, false); debug!( "Read {camera_path} ahead of the traversal from a stage masked to it in {:?}", @@ -1695,10 +1700,10 @@ fn read_camera_ahead( Shutter::new(Some(camera_path.clone()), *offsets, frame) } None => { - let first = first_camera(index); + let first = first_camera(index, scene); let offsets = first .as_ref() - .and_then(|p| shutter_offsets(index, &prim_at(index, p.clone()))) + .and_then(|p| shutter_offsets(scene, p)) .unwrap_or_default(); Shutter::new(first, offsets, frame) } @@ -1711,12 +1716,13 @@ fn read_camera_ahead( Ok((dicer, shutter)) } -/// The first camera the traversal would meet, on the payload-free `index`: -/// the same walk order (a stack, so the last child first), the same pruning, -/// an invisible subtree still walked, instances and `PointInstancer`s not +/// The first camera the traversal would meet, on the payload-free scene: the +/// same walk order (a stack, so the last child first), the same pruning, an +/// invisible subtree still walked, instances and point instancers not /// entered, and one top-level subtree after another when the import streams. /// A camera inside an unloaded payload is not seen. -fn first_camera(index: &Stage) -> Option { +fn first_camera(index: &Stage, scene: &dyn moho::scene_index::SceneIndex) -> Option { + use moho::tokens::{prim_type, usd_prim_info}; let chunks = stream_roots(index); let roots = if chunks.is_empty() { vec![sdf::Path::abs_root()] @@ -1724,34 +1730,37 @@ fn first_camera(index: &Stage) -> Option { chunks }; for root in roots { - let mut stack = vec![(prim_at(index, root), false)]; - while let Some((prim, parent_hidden)) = stack.pop() { - let pruned = prune_reason(&prim, WalkScope::Stage); - if pruned.is_some_and(|r| r != Prune::Invisible) { + let mut stack = vec![(root, false)]; + while let Some((path, parent_hidden)) = stack.pop() { + let prim = index::data::PrimData::at(scene, &path); + if !path.is_abs_root() && !prim.is_defined() { continue; } - let hidden = parent_hidden || pruned == Some(Prune::Invisible); - if prim.is_instance().unwrap_or(false) { + let pruned = index::walk::prune(scene, &path); + if pruned.is_some_and(|r| r != Prune::Invisible) { continue; } - if UsdCamera::get(index, prim.path().clone()) - .ok() - .flatten() + let hidden = parent_hidden || pruned == Some(Prune::Invisible); + if prim + .locate([ + usd_prim_info::USD_PRIM_INFO, + usd_prim_info::NI_PROTOTYPE_PATH, + ]) .is_some() - { - return Some(prim.path().clone()); - } - if !hidden - && PointInstancer::get(index, prim.path().clone()) - .ok() - .flatten() - .is_some() { continue; } - if let Ok(children) = prim.children() { - stack.extend(children.into_iter().map(|c| (c, hidden))); + if prim.ty() == prim_type::CAMERA { + return Some(path); } + if !hidden && prim.ty() == prim_type::INSTANCER { + continue; + } + stack.extend( + index::walk::children(index, scene, &path) + .into_iter() + .map(|c| (c, hidden)), + ); } } None diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 3eb5f5d3a..33b049f52 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -173,7 +173,7 @@ this group, and kept for the whole change. that they are not honoured, M6). Membership is judged per chunk at the instance or instancer path, as today. Verify parity green on `crust-core/tests/render_passes.rs` and `holdouts.rs`, including a pass that applies all four collections. -- [ ] 4.4 Index reader for cameras: the `camera` schema (projection, apertures and +- [x] 4.4 Index reader for cameras: the `camera` schema (projection, apertures and offsets, clipping, focus, shutter, exposure), `metersPerUnit` and its authored-ness from the root's `__usdStageMetadata/metersPerUnit/{value, authored}` (M3), and the dicing camera. Verify parity green on `camera_*.rs`, `aspect_conform.rs` and From f5fe582db5c2a303800748d6f9463cf6d2198ce1 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sun, 25 Oct 2026 23:37:12 +0100 Subject: [PATCH 26/95] openspec: moho-import task 4.5 done (the live settings refresh reads the index) The settings-and-camera rebuild in live.rs goes through read_index with a scene input over its index stage and builds the camera through an input over the stage masked to it, so it reads what the import reads; live.rs tests pass with the in-place versus re-import checks. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/tasks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 33b049f52..e841b1aa0 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -178,7 +178,7 @@ this group, and kept for the whole change. from the root's `__usdStageMetadata/metersPerUnit/{value, authored}` (M3), and the dicing camera. Verify parity green on `camera_*.rs`, `aspect_conform.rs` and `orthographic` fixtures, with `metersPerUnit` authored and not. -- [ ] 4.5 Move the settings-and-camera rebuild in `usd_import/live.rs` to the index +- [x] 4.5 Move the settings-and-camera rebuild in `usd_import/live.rs` to the index readers (D8). Verify that `crust-core/tests/live.rs` passes, with the in-place versus re-import bitwise checks. From c703e99f097c928584bccac114f0ce7084482af5 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 00:50:22 +0100 Subject: [PATCH 27/95] parity: baselines for the samples that need files outside the repository materialx_lion, materialx_teapot and materialx_showcase reference MaterialXTeapotLion-1.0, which is not committed: their check digests and images are recorded from the direct importer (36537fed) where the files exist, and compared there (CI skips them, as the sample test lists). The sample report test joins the image run's expected failures: the second import doubles the textures its report counts. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- ...erialx_lion_usda-a62e7b45a5b76dea-1.digest | 43 +++++++++++ ...lx_showcase_usda-1e9e0f7089dbbfd5-1.digest | 73 +++++++++++++++++++ ...ialx_teapot_usda-6ea1bea03dbe6c0d-1.digest | 49 +++++++++++++ scripts/parity_images.expected | 1 + 4 files changed, 166 insertions(+) create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_lion_usda-a62e7b45a5b76dea-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-1e9e0f7089dbbfd5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-6ea1bea03dbe6c0d-1.digest diff --git a/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-a62e7b45a5b76dea-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-a62e7b45a5b76dea-1.digest new file mode 100644 index 000000000..fce556b30 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_lion_usda-a62e7b45a5b76dea-1.digest @@ -0,0 +1,43 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.3, -0.52, 0.3), lower_left_corner: Vec3A(-0.20956933, -0.17536479, -0.026081339), horizontal: Vec3A(0.4632069, 0.26878545, 3.990106e-9), vertical: Vec3A(-0.044039004, 0.07589388, 0.2881804), u: Vec3A(0.86492956, 0.5018934, 7.4505815e-9), v: Vec3A(-0.14619102, 0.25193584, 0.9566381), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 12, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 42.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 0.6248 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_lion.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_lion.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/Geometry/lion_statue_lq.usd +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/lion.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 1060268, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1060268, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1068fc4a796550f2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1068fc4a796550f2 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:30d55baf131c75e7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:30d55baf131c75e7 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d4a5c9127205c3c5 camera=2:d4a5c9127205c3c5 shadow=2:d4a5c9127205c3c5 indirect=2:d4a5c9127205c3c5 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=79996:e73538b26933b929 camera=79996:e73538b26933b929 shadow=79996:e73538b26933b929 indirect=79996:e73538b26933b929 +geom 4: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=980266:787952c0e7711032 camera=980266:787952c0e7711032 shadow=980266:787952c0e7711032 indirect=980266:787952c0e7711032 +provenance material /World/Looks/GroundMaterial: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Statue/Looks/StatueMaterial: MaterialOrigin { slots: [3, 4], displaced: false } +provenance material read: ("/Statue/Looks/StatueMaterial", "/World/Statue/Looks/StatueMaterial") +provenance light /World/Key: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 2, geoms: 2..2 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Ground +provenance geometry 3..4: /World/Statue/base/base +provenance geometry 4..5: /World/Statue/statue/statue +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12600948678966428397, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6367222363041144018, n_points: 40000, n_indices: 239988, n_uvs: Some(40781), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5067503788512982755, n_points: 490133, n_indices: 1960532, n_uvs: Some(497721), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-1e9e0f7089dbbfd5-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-1e9e0f7089dbbfd5-1.digest new file mode 100644 index 000000000..4fcbf37c2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_showcase_usda-1e9e0f7089dbbfd5-1.digest @@ -0,0 +1,73 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.02, -1.08, 0.28), lower_left_corner: Vec3A(-0.2819569, -0.023333311, -0.038240433), horizontal: Vec3A(0.60391384, 0.0, -0.0), vertical: Vec3A(0.0, 0.046732187, 0.33647177), u: Vec3A(1.0, 0.0, -0.0), v: Vec3A(0.0, 0.13756837, 0.99049234), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 12, width: 1920, height: 1080, region: PixelRect { x0: 0, y0: 0, x1: 1920, y1: 1080 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 65.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 1.0904 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_showcase.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_showcase.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/Geometry/lion_statue_lq.usd +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Lion/lion.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/Geometry/teapot.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/teapot.usda +lights: 5 +light 0: area name Some("/World/Sweep") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Top") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: area name Some("/World/Fill") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 3: area name Some("/World/Key") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 4: dome name Some("/World/Ambient") lpe None pmf 0.2 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 11 geometries, PrimitiveBreakdown { triangles: 1320184, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1320184, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:95f4302540ae75bb camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:95f4302540ae75bb +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d3456bbfab5f963b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:d3456bbfab5f963b +geom 2: material #2 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:722fab8b7df8d571 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:722fab8b7df8d571 +geom 3: material #3 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:24a3f7e1c347d95d camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:24a3f7e1c347d95d +geom 4: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=48:ab362d3c1f55a37a camera=48:ab362d3c1f55a37a shadow=48:ab362d3c1f55a37a indirect=48:ab362d3c1f55a37a +geom 5: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:247a9f05691f6842 camera=2:247a9f05691f6842 shadow=2:247a9f05691f6842 indirect=2:247a9f05691f6842 +geom 6: material #5 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 0.52 motion [] pieces all=79996:fcb4179389611158 camera=79996:fcb4179389611158 shadow=79996:fcb4179389611158 indirect=79996:fcb4179389611158 +geom 7: material #5 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 0.52 motion [] pieces all=980266:412f800b00d9e4fc camera=980266:412f800b00d9e4fc shadow=980266:412f800b00d9e4fc indirect=980266:412f800b00d9e4fc +geom 8: material #6 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=39620:e598fda52b0339e5 camera=39620:e598fda52b0339e5 shadow=39620:e598fda52b0339e5 indirect=39620:e598fda52b0339e5 +geom 9: material #7 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(3) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=44096:6e172da5a7328a8d camera=44096:6e172da5a7328a8d shadow=44096:6e172da5a7328a8d indirect=44096:6e172da5a7328a8d +geom 10: material #7 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(4) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=176148:1bd75640dcbb45b5 camera=176148:1bd75640dcbb45b5 shadow=176148:1bd75640dcbb45b5 indirect=176148:1bd75640dcbb45b5 +provenance material /World/Lion/Looks/StatueMaterial: MaterialOrigin { slots: [6, 7], displaced: false } +provenance material /World/Looks/Sweep: MaterialOrigin { slots: [4, 5], displaced: false } +provenance material /World/Teapot/Looks/TeapotCeramic: MaterialOrigin { slots: [9, 10], displaced: false } +provenance material /World/Teapot/Looks/TeapotMetal: MaterialOrigin { slots: [8], displaced: false } +provenance material read: ("/Statue/Looks/StatueMaterial", "/World/Lion/Looks/StatueMaterial") +provenance material read: ("/Teapot/Looks/TeapotCeramic", "/World/Teapot/Looks/TeapotCeramic") +provenance material read: ("/Teapot/Looks/TeapotMetal", "/World/Teapot/Looks/TeapotMetal") +provenance light /World/Ambient: LightOrigin { index: 4, geoms: 4..4 } +provenance light /World/Fill: LightOrigin { index: 2, geoms: 2..3 } +provenance light /World/Key: LightOrigin { index: 3, geoms: 3..4 } +provenance light /World/Sweep: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Top: LightOrigin { index: 1, geoms: 1..2 } +provenance geometry 0..1: /World/Sweep +provenance geometry 1..2: /World/Top +provenance geometry 2..3: /World/Fill +provenance geometry 3..4: /World/Key +provenance geometry 4..5: /World/Cove +provenance geometry 5..6: /World/Floor +provenance geometry 6..7: /World/Lion/base/base +provenance geometry 7..8: /World/Lion/statue/statue +provenance geometry 8..9: /World/Teapot/Teapot_Handle/Teapot_Handle +provenance geometry 9..10: /World/Teapot/Teapot_Lid/Teapot_Lid +provenance geometry 10..11: /World/Teapot/Teapot_Body/Teapot_Body +provenance mesh: MeshOrigin { geom_id: 4, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 6, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 7, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 8, slot: 4, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 9, slot: 5, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 10, slot: 6, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14191107629590770974, n_points: 50, n_indices: 96, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9726477393562575874, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6367222363041144018, n_points: 40000, n_indices: 239988, n_uvs: Some(40781), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5067503788512982755, n_points: 490133, n_indices: 1960532, n_uvs: Some(497721), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 4: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1756143909479177731, n_points: 19812, n_indices: 79240, n_uvs: Some(20810), smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 5: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12119563787018499533, n_points: 22050, n_indices: 88192, n_uvs: Some(22250), smooth: true, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 6: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14759424648495852877, n_points: 88070, n_indices: 352296, n_uvs: Some(91044), smooth: true, material: 3 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-6ea1bea03dbe6c0d-1.digest b/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-6ea1bea03dbe6c0d-1.digest new file mode 100644 index 000000000..f32d2d3a2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/materialx_teapot_usda-6ea1bea03dbe6c0d-1.digest @@ -0,0 +1,49 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/ShotCam") +camera: Camera { origin: Vec3A(0.46, -0.5, 0.36), lower_left_corner: Vec3A(-0.17507109, -0.24858424, -0.04130861), horizontal: Vec3A(0.4534639, 0.40702486, 0.0), vertical: Vec3A(-0.07729147, 0.08610994, 0.32263348), u: Vec3A(0.74418515, 0.66797346, 0.0), v: Vec3A(-0.22550038, 0.25122857, 0.9412937), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 128, max_depth: 12, width: 960, height: 540, region: PixelRect { x0: 0, y0: 0, x1: 960, y1: 540 }, min_samples_per_pixel: 32, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 42.0, aperture: [36.0, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 0.7109 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/materialx_teapot.usda"], invisible_overrides: Some(0) } +layer: $DIR/materialx_teapot.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/Geometry/teapot.usda +layer: /home/philippe.llerena/Workspace/samples/MaterialXTeapotLion-1.0/Teapot/teapot.usda +lights: 3 +light 0: area name Some("/World/Rim") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Key") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 2: dome name Some("/World/Sky") lpe None pmf 0.33333334 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 6 geometries, PrimitiveBreakdown { triangles: 259870, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 259870, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:1068fc4a796550f2 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:1068fc4a796550f2 +geom 1: material #1 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:30d55baf131c75e7 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:30d55baf131c75e7 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:d4a5c9127205c3c5 camera=2:d4a5c9127205c3c5 shadow=2:d4a5c9127205c3c5 indirect=2:d4a5c9127205c3c5 +geom 3: material #3 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=39620:e6201f1def4ba88d camera=39620:e6201f1def4ba88d shadow=39620:e6201f1def4ba88d indirect=39620:e6201f1def4ba88d +geom 4: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=44096:e684c755747a3941 camera=44096:e684c755747a3941 shadow=44096:e684c755747a3941 indirect=44096:e684c755747a3941 +geom 5: material #4 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(2) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=176148:88e3658c815ba93d camera=176148:88e3658c815ba93d shadow=176148:88e3658c815ba93d indirect=176148:88e3658c815ba93d +provenance material /World/Looks/GroundMaterial: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Teapot/Looks/TeapotCeramic: MaterialOrigin { slots: [4, 5], displaced: false } +provenance material /World/Teapot/Looks/TeapotMetal: MaterialOrigin { slots: [3], displaced: false } +provenance material read: ("/Teapot/Looks/TeapotCeramic", "/World/Teapot/Looks/TeapotCeramic") +provenance material read: ("/Teapot/Looks/TeapotMetal", "/World/Teapot/Looks/TeapotMetal") +provenance light /World/Key: LightOrigin { index: 1, geoms: 1..2 } +provenance light /World/Rim: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 2, geoms: 2..2 } +provenance geometry 0..1: /World/Rim +provenance geometry 1..2: /World/Key +provenance geometry 2..3: /World/Ground +provenance geometry 3..4: /World/Teapot/Teapot_Handle/Teapot_Handle +provenance geometry 4..5: /World/Teapot/Teapot_Lid/Teapot_Lid +provenance geometry 5..6: /World/Teapot/Teapot_Body/Teapot_Body +provenance mesh: MeshOrigin { geom_id: 2, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 5, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12600948678966428397, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 1756143909479177731, n_points: 19812, n_indices: 79240, n_uvs: Some(20810), smooth: true, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12119563787018499533, n_points: 22050, n_indices: 88192, n_uvs: Some(22250), smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14759424648495852877, n_points: 88070, n_indices: 352296, n_uvs: Some(91044), smooth: true, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 1, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/ShotCam"), cameras: ["/World/ShotCam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/ShotCam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/scripts/parity_images.expected b/scripts/parity_images.expected index 49356dcfa..6e1e100ce 100644 --- a/scripts/parity_images.expected +++ b/scripts/parity_images.expected @@ -14,6 +14,7 @@ an_unauthored_and_a_full_window_are_the_same_region ctrl_c_writes_the_partial_render_and_exits_130 displaced_at_cage_logs_once_and_counts_every_mesh dome_texture_is_resolved_and_requested_from_the_host +every_sample_imports_as_its_baseline materialx_textures_reach_the_host_with_their_udim_token only_meshes_open_displacement_maps overscan_is_clipped_with_one_warning From 4568088bc9dfd60638bde63470794eddc1cc687b Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 01:25:44 +0100 Subject: [PATCH 28/95] crust-core: meshes, implicit shapes and spheres read from the scene index Every mesh read takes the prim's generic data (PrimData, in the index being walked, kept on the caches for readers reached through the bridge, like a prototype's parts): points, counts, indices, holes, the scheme, orientation, boundary and face-varying rules (typed reads with their schema fallbacks), creases and corners, normals and primvars with their indices, interpolation, elementSize, type name and colour space (the attribute's colorSpace, then colorSpace:name up the index's ancestors), crust:subdivisionLevel, the displacement bounds, crust:rayMask and crust:motion:translate. Implicit shapes are told by their Hydra type (Cylinder_1 and Capsule_1 by the radiusBottom their schema declares) and read their sizes the same way; a sphere its radius. The live mesh and sphere rebuilds read through an index of their stage. `crust ls` keeps a type-only test of the shapes. Parity green on every digest and image (tasks 6.1-6.4, 7.1, 7.2). The image script now matches only the parity check's own panics. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../crust-core/src/scene/usd_import/attrs.rs | 4 - .../src/scene/usd_import/implicit.rs | 145 +++++----- .../src/scene/usd_import/index/data.rs | 144 +++++++++- .../src/scene/usd_import/index/walk.rs | 2 + .../src/scene/usd_import/instancing.rs | 32 ++- .../src/scene/usd_import/listing.rs | 2 +- .../crust-core/src/scene/usd_import/live.rs | 22 +- .../crust-core/src/scene/usd_import/mesh.rs | 247 ++++++++---------- crates/crust-core/src/scene/usd_import/mod.rs | 37 ++- .../src/scene/usd_import/products.rs | 14 +- .../crust-core/src/scene/usd_import/shapes.rs | 16 +- openspec/changes/moho-import/tasks.md | 12 +- scripts/parity_images.sh | 4 +- 13 files changed, 412 insertions(+), 269 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/attrs.rs b/crates/crust-core/src/scene/usd_import/attrs.rs index 01c8b1cca..612423d5b 100644 --- a/crates/crust-core/src/scene/usd_import/attrs.rs +++ b/crates/crust-core/src/scene/usd_import/attrs.rs @@ -439,10 +439,6 @@ pub(super) fn attr_f32(attr: &Attribute) -> Option { value_at(attr).and_then(decode_f32) } -pub(super) fn attr_f64(attr: &Attribute) -> Option { - value_at(attr).and_then(decode_f64) -} - pub(super) fn attr_bool(attr: &Attribute) -> Option { value_at(attr).and_then(decode_bool) } diff --git a/crates/crust-core/src/scene/usd_import/implicit.rs b/crates/crust-core/src/scene/usd_import/implicit.rs index 8f8f4f022..ec09821a1 100644 --- a/crates/crust-core/src/scene/usd_import/implicit.rs +++ b/crates/crust-core/src/scene/usd_import/implicit.rs @@ -24,16 +24,14 @@ use glam::Vec3; use openusd::gf::Vec3f; use openusd::usd::Prim; use openusd_schemas::geom::{ - Axis as UsdAxis, Capsule, Capsule_1, Capsule_1Schema, CapsuleSchema, Cone, ConeSchema, Cube, - CubeSchema, Cylinder, Cylinder_1, Cylinder_1Schema, CylinderSchema, Plane, PlaneSchema, + Axis as UsdAxis, Capsule, Capsule_1, Cone, Cube, Cylinder, Cylinder_1, Plane, }; use tracing::debug; use super::adaptive::{Aabb, Cull, ScreenProjection}; -use super::attrs::attr_f64; +use super::index::data::PrimData; use super::materials::BoundMaterial; use super::mesh::{MeshPlace, MeshSource}; -use super::time::eval_time; /// An implicit shape's spine (`Cylinder`, `Cone`, `Capsule`) or normal /// (`Plane`) axis. @@ -444,16 +442,11 @@ pub(super) enum Shape { } /// `attr` at the render's time code, else the schema fallback `or`. -fn length_or(attr: &openusd::usd::Attribute, or: f64) -> f64 { - attr_f64(attr).unwrap_or(or) -} - /// `axis` at the render's time code, unauthored (or blocked) reading the /// schema fallback, `Z`. -fn axis_of(attr: &openusd::usd::Attribute) -> Axis { - attr.get_at::(eval_time()) - .ok() - .flatten() +fn axis_of(prim: &PrimData) -> Axis { + prim.resolved("axis") + .and_then(|v| UsdAxis::try_from(v).ok()) .unwrap_or_default() .into() } @@ -464,65 +457,72 @@ impl Shape { /// Every prim the walks do not read otherwise comes through here — each /// transform, material and shader — so one `Gprim` test turns those away /// before the seven schema tests. - pub(super) fn read(prim: &Prim) -> Option { - if !prim.is_a("Gprim").unwrap_or(false) { - return None; + pub(super) fn read(prim: &PrimData) -> Option { + use moho::tokens::prim_type as t; + // The Hydra type names the shape; `Cylinder_1` and `Capsule_1` share + // theirs with `Cylinder` and `Capsule`, and are told apart by the + // attributes their schema declares (`radiusBottom` for the `_1`s). + let length_or = |name: &str, or: f64| prim.custom_f64(name).unwrap_or(or); + let axis = || axis_of(prim); + match prim.ty() { + t::CUBE => Some(Shape::Cuboid { + size: length_or("size", 2.0), + }), + t::PLANE => Some(Shape::Plane { + width: length_or("width", 2.0), + length: length_or("length", 2.0), + axis: axis(), + }), + t::CYLINDER if prim.has_attribute("radiusBottom") => Some(Shape::Cylinder { + r_bottom: length_or("radiusBottom", 1.0), + r_top: length_or("radiusTop", 1.0), + height: length_or("height", 2.0), + axis: axis(), + }), + t::CYLINDER => { + let radius = length_or("radius", 1.0); + Some(Shape::Cylinder { + r_bottom: radius, + r_top: radius, + height: length_or("height", 2.0), + axis: axis(), + }) + } + t::CONE => Some(Shape::Cone { + radius: length_or("radius", 1.0), + height: length_or("height", 2.0), + axis: axis(), + }), + t::CAPSULE if prim.has_attribute("radiusBottom") => Some(Shape::Capsule { + r_bottom: length_or("radiusBottom", 0.5), + r_top: length_or("radiusTop", 0.5), + height: length_or("height", 1.0), + axis: axis(), + }), + t::CAPSULE => { + let radius = length_or("radius", 0.5); + Some(Shape::Capsule { + r_bottom: radius, + r_top: radius, + height: length_or("height", 1.0), + axis: axis(), + }) + } + _ => None, } + } + + /// Whether `prim` is one of the seven shapes [`Shape::read`] reads, from + /// its USD type alone: what `crust ls` asks of the stage it lists. + pub(super) fn is_shape(prim: &Prim) -> bool { let prim = || prim.clone(); - if let Ok(Some(s)) = Cube::from_prim(prim()) { - return Some(Shape::Cuboid { - size: length_or(&s.size_attr(), 2.0), - }); - } - if let Ok(Some(s)) = Plane::from_prim(prim()) { - return Some(Shape::Plane { - width: length_or(&s.width_attr(), 2.0), - length: length_or(&s.length_attr(), 2.0), - axis: axis_of(&s.axis_attr()), - }); - } - if let Ok(Some(s)) = Cylinder::from_prim(prim()) { - let radius = length_or(&s.radius_attr(), 1.0); - return Some(Shape::Cylinder { - r_bottom: radius, - r_top: radius, - height: length_or(&s.height_attr(), 2.0), - axis: axis_of(&s.axis_attr()), - }); - } - if let Ok(Some(s)) = Cylinder_1::from_prim(prim()) { - return Some(Shape::Cylinder { - r_bottom: length_or(&s.radius_bottom_attr(), 1.0), - r_top: length_or(&s.radius_top_attr(), 1.0), - height: length_or(&s.height_attr(), 2.0), - axis: axis_of(&s.axis_attr()), - }); - } - if let Ok(Some(s)) = Cone::from_prim(prim()) { - return Some(Shape::Cone { - radius: length_or(&s.radius_attr(), 1.0), - height: length_or(&s.height_attr(), 2.0), - axis: axis_of(&s.axis_attr()), - }); - } - if let Ok(Some(s)) = Capsule::from_prim(prim()) { - let radius = length_or(&s.radius_attr(), 0.5); - return Some(Shape::Capsule { - r_bottom: radius, - r_top: radius, - height: length_or(&s.height_attr(), 1.0), - axis: axis_of(&s.axis_attr()), - }); - } - if let Ok(Some(s)) = Capsule_1::from_prim(prim()) { - return Some(Shape::Capsule { - r_bottom: length_or(&s.radius_bottom_attr(), 0.5), - r_top: length_or(&s.radius_top_attr(), 0.5), - height: length_or(&s.height_attr(), 1.0), - axis: axis_of(&s.axis_attr()), - }); - } - None + matches!(Cube::from_prim(prim()), Ok(Some(_))) + || matches!(Plane::from_prim(prim()), Ok(Some(_))) + || matches!(Cylinder::from_prim(prim()), Ok(Some(_))) + || matches!(Cylinder_1::from_prim(prim()), Ok(Some(_))) + || matches!(Cone::from_prim(prim()), Ok(Some(_))) + || matches!(Capsule::from_prim(prim()), Ok(Some(_))) + || matches!(Capsule_1::from_prim(prim()), Ok(Some(_))) } /// The largest radius of a curved shape, which its radial count is chosen @@ -794,7 +794,7 @@ impl ImplicitPolicy { /// `bound` without its displacement, which an implicit shape does not apply: /// it has no chart to displace along, and a warning names the prim. -pub(super) fn undisplaced(prim: &Prim, bound: BoundMaterial) -> BoundMaterial { +pub(super) fn undisplaced(prim: &PrimData, bound: BoundMaterial) -> BoundMaterial { if bound.displacement.is_some() { warning!( GeomImplicitDisplacement, @@ -839,7 +839,10 @@ mod tests { root.children() .expect("children") .into_iter() - .map(|p| (p.path().to_string(), Shape::read(&p))) + .map(|p| { + let data = super::super::index::data::PrimData::test_at(&stage, p.path()); + (p.path().to_string(), Shape::read(&data)) + }) .collect() } diff --git a/crates/crust-core/src/scene/usd_import/index/data.rs b/crates/crust-core/src/scene/usd_import/index/data.rs index de0cb96d7..54b3f4f42 100644 --- a/crates/crust-core/src/scene/usd_import/index/data.rs +++ b/crates/crust-core/src/scene/usd_import/index/data.rs @@ -14,16 +14,20 @@ use moho::data_source::{ContainerHandle, DataSource, locate}; use moho::locator::Locator; use moho::openusd::sdf; -use moho::scene_index::SceneIndex; +use moho::scene_index::{SceneIndex, SceneIndexHandle}; use moho::tokens::usd as generic; use super::super::attrs::{decode_bool, decode_f32, decode_i32, decode_text, decode_vec3}; /// One prim of a scene index, for an index reader. +#[derive(Clone)] pub(in crate::scene::usd_import) struct PrimData { path: sdf::Path, ty: String, data: Option, + /// The index the prim was read from, when the reader may walk to its + /// ancestors ([`PrimData::in_index`]). + index: Option, } impl PrimData { @@ -35,9 +39,45 @@ impl PrimData { path: path.clone(), ty: prim.ty.as_str().to_owned(), data: prim.data, + index: None, } } + /// [`PrimData::at`], keeping `index` so the reader can walk to the + /// prim's ancestors ([`PrimData::parent`]). + pub(in crate::scene::usd_import) fn in_index( + index: &SceneIndexHandle, + path: &sdf::Path, + ) -> Self { + PrimData { + index: Some(index.clone()), + ..PrimData::at(index.as_ref(), path) + } + } + + /// The prim at `path` of a scene index over `stage`, at the default time: + /// how a unit test reads a prim as the import does. + #[cfg(test)] + pub(in crate::scene::usd_import) fn test_at( + stage: &moho::openusd::usd::Stage, + path: &sdf::Path, + ) -> Self { + let input = super::input_chain(stage.clone(), None, false); + PrimData::in_index(&input.chain, path) + } + + /// The prim's parent in the index it was read from with + /// [`PrimData::in_index`]; `None` at the root or without an index. + pub(in crate::scene::usd_import) fn parent(&self) -> Option { + let parent = self.path.parent()?; + Some(PrimData::in_index(self.index.as_ref()?, &parent)) + } + + /// The path of attribute `name`, for a warning that names it. + pub(in crate::scene::usd_import) fn attribute_path(&self, name: &str) -> String { + format!("{}.{name}", self.path) + } + pub(in crate::scene::usd_import) fn path(&self) -> &sdf::Path { &self.path } @@ -68,6 +108,12 @@ impl PrimData { .cloned() } + /// Whether the prim has attribute `name` (authored, or declared by its + /// schema). + pub(in crate::scene::usd_import) fn has_attribute(&self, name: &str) -> bool { + self.attribute(name).is_some() + } + /// Whether a layer authors attribute `name`'s value. pub(in crate::scene::usd_import) fn authored(&self, name: &str) -> bool { self.attribute(name) @@ -87,6 +133,41 @@ impl PrimData { self.attribute(name)?.get(&generic::VALUE.into())?.value() } + /// Attribute `name`'s value at the index's time, authored or its schema + /// fallback — a typed read (`Attribute::get_at`), not `value_at`. + pub(in crate::scene::usd_import) fn resolved(&self, name: &str) -> Option { + self.attribute(name)?.get(&generic::VALUE.into())?.value() + } + + /// Attribute `name`'s metadatum `key` (`interpolation`, `elementSize`, + /// `colorSpace`), when authored. + pub(in crate::scene::usd_import) fn metadata( + &self, + name: &str, + key: &str, + ) -> Option { + self.attribute(name)?.get(&key.into())?.value() + } + + /// Attribute `name`'s value type name (`normal3f[]`, `color3f`), empty + /// when the prim has no such attribute. + pub(in crate::scene::usd_import) fn type_name(&self, name: &str) -> String { + match self + .attribute(name) + .and_then(|a| a.get(&generic::TYPE_NAME.into())) + .and_then(|d| d.value()) + { + Some(sdf::Value::Token(t)) => t.as_str().to_owned(), + Some(sdf::Value::String(s)) => s, + _ => String::new(), + } + } + + pub(in crate::scene::usd_import) fn custom_i32_array(&self, name: &str) -> Option> { + self.value(name) + .and_then(super::super::attrs::decode_i32_array) + } + pub(in crate::scene::usd_import) fn custom_i32(&self, name: &str) -> Option { self.value(name).and_then(decode_i32) } @@ -170,3 +251,64 @@ pub(in crate::scene::usd_import) fn stage_metadata( ); Some((value, authored)) } + +/// The colour space attribute `name` of `prim` is authored in, as +/// `attrs::attr_color_space` resolves it on the stage: the attribute's own +/// `colorSpace` metadatum, else the `colorSpace:name` of its prim, else of +/// the nearest ancestor that authors one (walked in the index `prim` was read +/// from, [`PrimData::in_index`]) — through the OCIO config. A name the config +/// does not know is refused with a warning, and is `None` too. +pub(in crate::scene::usd_import) fn color_space( + prim: &PrimData, + name: &str, +) -> Option { + let own = prim + .metadata(name, generic::COLOR_SPACE) + .and_then(decode_text) + .filter(|n| !n.is_empty()); + let named = own.or_else(|| { + let mut at = Some(PrimData { + path: prim.path.clone(), + ty: prim.ty.clone(), + data: prim.data.clone(), + index: prim.index.clone(), + }); + while let Some(p) = at.filter(|p| !p.path.is_abs_root()) { + let named = p + .value("colorSpace:name") + .and_then(decode_text) + .filter(|n| !n.is_empty()); + if named.is_some() { + return named; + } + at = p.parent(); + } + None + })?; + let space = crate::color::Space::named(&named); + if space.is_none() { + let at = prim.attribute_path(name); + crate::warning!( + ColorUnknownSpace, + at = at.as_str(), + "{at}: colorSpace `{named}` is not defined by the OCIO config — the value is used as \ + authored" + ); + } + space +} + +/// `crust:rayMask` — `attrs::prim_ray_mask` read from the generic data. +pub(in crate::scene::usd_import) fn ray_mask(prim: &PrimData) -> crate::ray::RayMask { + prim.custom_i32("crust:rayMask") + .map(|m| crate::ray::RayMask(m as u32)) + .unwrap_or(crate::ray::MASK_ALL) +} + +/// `crust:motion:translate` — `attrs::prim_motion_translate` read from the +/// generic data. +pub(in crate::scene::usd_import) fn motion_translate(prim: &PrimData) -> Option { + prim.value("crust:motion:translate") + .and_then(decode_vec3) + .map(|v| glam::Vec3::new(v.x, v.y, v.z)) +} diff --git a/crates/crust-core/src/scene/usd_import/index/walk.rs b/crates/crust-core/src/scene/usd_import/index/walk.rs index 6254f136b..b8a437cf0 100644 --- a/crates/crust-core/src/scene/usd_import/index/walk.rs +++ b/crates/crust-core/src/scene/usd_import/index/walk.rs @@ -34,6 +34,7 @@ pub(in crate::scene::usd_import) fn walk(stage: &Stage, input: &Input, ctx: &mut if let Some(pass) = &mut ctx.pass { pass.begin_chunk(input); } + ctx.caches.scene = Some(input.chain.clone()); let mut stack: Vec<(sdf::Path, GMat4, bool, Timing)> = vec![( sdf::Path::abs_root(), GMat4::IDENTITY, @@ -59,6 +60,7 @@ pub(in crate::scene::usd_import) fn walk(stage: &Stage, input: &Input, ctx: &mut stack.push((child, world, hidden, timing.clone())); } } + ctx.caches.scene = None; } /// The children the walk descends into: the index's, less the prototypes diff --git a/crates/crust-core/src/scene/usd_import/instancing.rs b/crates/crust-core/src/scene/usd_import/instancing.rs index b14e158a3..b54b48021 100644 --- a/crates/crust-core/src/scene/usd_import/instancing.rs +++ b/crates/crust-core/src/scene/usd_import/instancing.rs @@ -256,10 +256,11 @@ pub(super) fn collect_proto_parts( "Volume at {} is inside a prototype — volumes cannot be instanced, skipped", prim.path() ); - } else if let Ok(Some(mesh)) = UsdMesh::get(stage, prim.path().clone()) { + } else if let Ok(Some(_)) = UsdMesh::get(stage, prim.path().clone()) { let bound = resolve_bound(stage, &prim, caches); let material = bound.material; - let displacement = super::mesh::prim_displacement(&prim, bound.displacement); + let data = caches.prim_data(prim.path()); + let displacement = super::mesh::prim_displacement(&data, bound.displacement); let displacement = displacement.as_deref(); // Unshared: the part's own world transform, for adaptive subdivision. let part_world = match place { @@ -271,8 +272,8 @@ pub(super) fn collect_proto_parts( // marks the slot as ineligible for baking, so a mesh used both // directly and as a prototype is not stored twice. if let Some(src) = mesh_source( - &prim, - &mesh, + &data, + &data, MeshNeeds::of( &*material, displacement, @@ -283,7 +284,7 @@ pub(super) fn collect_proto_parts( part_world .as_ref() .map_or(MeshPlace::Shared, MeshPlace::World), - ) && let Some(slot) = caches.meshes.intern(&prim, src, &material, displacement) + ) && let Some(slot) = caches.meshes.intern(&data, src, &material, displacement) { let faces = caches.meshes.slots[slot as usize].faces.clone(); let uvs = caches.meshes.slots[slot as usize].uvs.clone(); @@ -294,9 +295,9 @@ pub(super) fn collect_proto_parts( Arc::make_mut(&mut part.slots)[0].primvars = primvars; parts.push(part); } - } else if let Ok(Some(sphere)) = UsdSphere::get(stage, prim.path().clone()) { + } else if let Ok(Some(_)) = UsdSphere::get(stage, prim.path().clone()) { let material = resolve_material(stage, &prim, caches); - let radius = sphere_radius(&sphere); + let radius = sphere_radius(&caches.prim_data(prim.path())); let mut b = RtSceneBuilder::new(); // Local-space sphere at the origin: unlike the top-level // sphere path, which bakes the centre into world space, this @@ -306,7 +307,8 @@ pub(super) fn collect_proto_parts( center: Vec3A::ZERO, radius, }); - let primvars = constant_table(&prim, &*material, caches.working).map(Arc::new); + let data = caches.prim_data(prim.path()); + let primvars = constant_table(&data, &*material, caches.working).map(Arc::new); let mut part = ProtoPart::leaf( Arc::new(b.commit_with(crate::commit_options())), this_local, @@ -344,10 +346,11 @@ pub(super) fn collect_proto_parts( slot.strands = strands.map(Arc::new); parts.push(part); } - } else if let Some(shape) = Shape::read(&prim) { + } else if let Some(shape) = Shape::read(&caches.prim_data(prim.path())) { // An implicit shape is a mesh once tessellated, so it is a part // like any mesh: interned, built at the end of the walk. - let material = undisplaced(&prim, resolve_bound(stage, &prim, caches)).material; + let data = caches.prim_data(prim.path()); + let material = undisplaced(&data, resolve_bound(stage, &prim, caches)).material; let part_world = match place { ProtoPlace::Unshared(world) => Some(world * this_local), ProtoPlace::Shared => None, @@ -359,8 +362,9 @@ pub(super) fn collect_proto_parts( .as_ref() .map_or(MeshPlace::Shared, MeshPlace::World), ); - let src = with_constant_primvars(src, &prim, &*material, caches.working); - if let Some(slot) = caches.meshes.intern(&prim, src, &material, None) { + let data = caches.prim_data(prim.path()); + let src = with_constant_primvars(src, &data, &*material, caches.working); + if let Some(slot) = caches.meshes.intern(&data, src, &material, None) { let faces = caches.meshes.slots[slot as usize].faces.clone(); let uvs = caches.meshes.slots[slot as usize].uvs.clone(); let primvars = caches.meshes.slots[slot as usize].primvars.clone(); @@ -727,7 +731,7 @@ pub(super) fn emit_native_instance( caches .meshes .primvars - .report_placement(prim, "the instance prim"); + .report_placement(&caches.prim_data(prim.path()), "the instance prim"); let world_xf = span.open; // Adaptive subdivision refines a prototype by its size on screen only when // this is its one placement in its top-level subtree. @@ -1113,7 +1117,7 @@ pub(super) fn emit_point_instancer( caches .meshes .primvars - .report_placement(prim, "the PointInstancer"); + .report_placement(&caches.prim_data(prim.path()), "the PointInstancer"); // The version of its prototype each placement draws: the shared one, or — // in adaptive mode, for a target this instancer places once — one built // for that placement. diff --git a/crates/crust-core/src/scene/usd_import/listing.rs b/crates/crust-core/src/scene/usd_import/listing.rs index d2bf6a48d..b055b626c 100644 --- a/crates/crust-core/src/scene/usd_import/listing.rs +++ b/crates/crust-core/src/scene/usd_import/listing.rs @@ -316,7 +316,7 @@ fn bound_materials(stage: &Stage, out: &mut HashSet) { || matches!(UsdSphere::get(stage, p()), Ok(Some(_))) || matches!(UsdBasisCurves::get(stage, p()), Ok(Some(_))) || matches!(UsdNurbsCurves::get(stage, p()), Ok(Some(_))) - || (custom_token(&prim, "crust:volume:type").is_none() && Shape::read(&prim).is_some()); + || (custom_token(&prim, "crust:volume:type").is_none() && Shape::is_shape(&prim)); if geometry && let Some(m) = bound_material(stage, &prim) { out.insert(m.to_string()); } diff --git a/crates/crust-core/src/scene/usd_import/live.rs b/crates/crust-core/src/scene/usd_import/live.rs index 6b3ddbbb5..e8eb49e77 100644 --- a/crates/crust-core/src/scene/usd_import/live.rs +++ b/crates/crust-core/src/scene/usd_import/live.rs @@ -207,6 +207,12 @@ impl Rebuilding<'_> { ) } + /// A scene index over `stage`, at the import's time, for the readers + /// that have moved onto it: the same readers as the import's. + fn scene(&self, stage: &Stage) -> super::index::Input { + super::index::input_chain(stage.clone(), self.prov.stage.options.frame, false) + } + fn masked(&self, path: &sdf::Path) -> Result { open_stage(self.layer, self.path_str, Some(path.clone())) .map_err(|e| Structural(format!("cannot open the stage: {e}"))) @@ -409,7 +415,7 @@ impl Rebuilding<'_> { world: &World, ) -> Result { let prim = prim_at(stage, prim_path(prim_str)?); - let Ok(Some(sphere)) = UsdSphere::get(stage, prim.path().clone()) else { + let Ok(Some(_)) = UsdSphere::get(stage, prim.path().clone()) else { return Err(Structural(format!("{prim_str} is not a Sphere"))); }; let world_xf = local_to_world(stage, &prim); @@ -418,10 +424,12 @@ impl Rebuilding<'_> { // scratch world padded up to the id, which made a batch of spheres // quadratic. let mut scratch = WorldBuilder::new(); + let scene = self.scene(stage); + let data = super::index::data::PrimData::in_index(&scene.chain, prim.path()); let placed = emit_sphere( &mut scratch, &prim, - &sphere, + &data, Span::fixed(world_xf), world.material_of(id).clone(), self.working, @@ -476,7 +484,7 @@ impl Rebuilding<'_> { }; return Ok((world.edit_with(id, geometry, scale), None)); } - let Ok(Some(mesh)) = UsdMesh::get(stage, prim.path().clone()) else { + let Ok(Some(_)) = UsdMesh::get(stage, prim.path().clone()) else { return Err(Structural(format!("{prim_str} is not a Mesh"))); }; let slot_facts = self @@ -492,9 +500,11 @@ impl Rebuilding<'_> { let mut caches = self.caches(); let meshes = &mut caches.meshes; let needs = MeshNeeds::of(&*material, None, &meshes.primvars, meshes.working); + let scene = self.scene(stage); + let data = super::index::data::PrimData::in_index(&scene.chain, prim.path()); let src = mesh_source( - &prim, - &mesh, + &data, + &data, needs, &mut meshes.subdiv, MeshPlace::World(&world_xf), @@ -531,7 +541,7 @@ impl Rebuilding<'_> { ))); } let slot = meshes - .intern(&prim, src, &material, None) + .intern(&data, src, &material, None) .ok_or_else(|| Structural(format!("{prim_str} produces no triangles")))?; let s = &mut meshes.slots[slot as usize]; let geom = s diff --git a/crates/crust-core/src/scene/usd_import/mesh.rs b/crates/crust-core/src/scene/usd_import/mesh.rs index 89de39aa5..955670344 100644 --- a/crates/crust-core/src/scene/usd_import/mesh.rs +++ b/crates/crust-core/src/scene/usd_import/mesh.rs @@ -9,12 +9,10 @@ use std::sync::Arc; use crust_rt::{Geometry, Scene as RtScene, SceneBuilder as RtSceneBuilder}; use glam::{Affine3A, Mat4 as GMat4, Vec3, Vec3A}; -use openusd::gf::Vec3f; -use openusd::sdf; -use openusd::usd::Prim; +use moho::openusd::gf::Vec3f; +use moho::openusd::sdf; use openusd_schemas::geom::{ - FaceVaryingLinearInterpolation, GprimSchema, InterpolateBoundary, Mesh as UsdMesh, MeshSchema, - Orientation, PointBasedSchema, SubdivisionScheme, + FaceVaryingLinearInterpolation, InterpolateBoundary, Orientation, SubdivisionScheme, }; use rayon::prelude::*; use tracing::debug; @@ -27,14 +25,11 @@ use crate::scene::displace::{self, VertexChart}; use crate::scene::subdiv; use super::adaptive::{self, Aabb, Cull, ScreenRate}; -use super::attrs::{attr_color_space, decode_text}; -use super::attrs::{ - custom_f32, custom_i32, custom_i32_array, decode_f32_array, decode_i32_array, - decode_vec3f_array, prim_motion_translate, prim_ray_mask, prim_value, value_at, -}; +use super::attrs::decode_text; +use super::attrs::{decode_f32_array, decode_i32_array, decode_vec3f_array}; +use super::index::data::{PrimData, color_space, motion_translate, ray_mask}; use super::materials::BoundMaterial; use super::products::{KeptPrimvar, PrimvarKeep}; -use super::time::eval_time; use super::xform::Span; /// Identity of an imported mesh's shared geometry: a content hash of the @@ -302,7 +297,7 @@ impl SubdivPolicy { /// `place`. fn level_for( &mut self, - prim: &Prim, + prim: &PrimData, points: &[Vec3f], counts: &[i32], indices: &[i32], @@ -358,22 +353,18 @@ pub(super) enum MeshPlace<'a> { /// A mesh's `subdivisionScheme`, unauthored (or blocked) reading the schema /// fallback, `catmullClark`. -fn subdivision_scheme(mesh: &UsdMesh) -> SubdivisionScheme { - mesh.subdivision_scheme_attr() - .get_at::(eval_time()) - .ok() - .flatten() +fn subdivision_scheme(mesh: &PrimData) -> SubdivisionScheme { + mesh.resolved("subdivisionScheme") + .and_then(|v| SubdivisionScheme::try_from(v).ok()) .unwrap_or_default() } /// Whether a mesh authors `orientation = leftHanded`: its faces wind /// clockwise seen from their front. Unauthored (or blocked) reads the schema /// fallback, `rightHanded`. -fn left_handed(mesh: &UsdMesh) -> bool { - mesh.orientation_attr() - .get_at::(eval_time()) - .ok() - .flatten() +fn left_handed(mesh: &PrimData) -> bool { + mesh.resolved("orientation") + .and_then(|v| Orientation::try_from(v).ok()) .is_some_and(|o| o == Orientation::LeftHanded) } @@ -445,7 +436,7 @@ impl MeshArena { /// many prims share it, and displacement cannot change what is shared. pub(super) fn intern( &mut self, - prim: &Prim, + prim: &PrimData, src: MeshSource, material: &Arc, displacement: Option<&Displacement>, @@ -536,7 +527,7 @@ impl MeshArena { /// and records what it did. fn displace( &mut self, - prim: &Prim, + prim: &PrimData, src: &MeshSource, verts: &[[f32; 3]], d: &Displacement, @@ -680,8 +671,8 @@ fn commit_mesh(geom: MeshGeom) -> RtScene { /// ([`place_mesh_source`]), which says whether its motion was dropped. pub(super) fn emit_mesh( world: &mut WorldBuilder, - prim: &Prim, - mesh: &UsdMesh, + prim: &PrimData, + mesh: &PrimData, span: Span, bound: BoundMaterial, meshes: &mut MeshArena, @@ -736,7 +727,7 @@ pub(super) fn emit_mesh( /// baked, so that motion is dropped (`xform.motion_ignored`). pub(super) fn place_mesh_source( world: &mut WorldBuilder, - prim: &Prim, + prim: &PrimData, src: MeshSource, span: Span, bound: BoundMaterial, @@ -750,8 +741,8 @@ pub(super) fn place_mesh_source( } = bound; let want_faces = material.face_texture().is_some(); let want_uvs = material.uses_uv(); - let mask = prim_ray_mask(prim); - let motion = prim_motion_translate(prim); + let mask = ray_mask(prim); + let motion = motion_translate(prim); // Non-invertible placements (a zero scale axis) cannot be instanced — // bake the degenerate transform into world-space triangles as before. @@ -1092,17 +1083,17 @@ pub(super) fn bake_indices(mut tris: Vec<[u32; 3]>, l2w: &Affine3A) -> Vec<[u32; /// Reads a mesh prim's authored arrays. `None` when any of the three /// required attributes is missing. -pub(super) fn mesh_arrays(mesh: &UsdMesh) -> Option<(Vec, Vec, Vec)> { - let points = value_at(&mesh.points_attr()).and_then(decode_vec3f_array)?; - let counts = value_at(&mesh.face_vertex_counts_attr()).and_then(decode_i32_array)?; - let indices = value_at(&mesh.face_vertex_indices_attr()).and_then(decode_i32_array)?; +pub(super) fn mesh_arrays(mesh: &PrimData) -> Option<(Vec, Vec, Vec)> { + let points = mesh.value("points").and_then(decode_vec3f_array)?; + let counts = mesh.value("faceVertexCounts").and_then(decode_i32_array)?; + let indices = mesh.value("faceVertexIndices").and_then(decode_i32_array)?; Some((points, counts, indices)) } /// A mesh's `holeIndices` as a mask over its `n_faces` faces, empty when it /// authors none. An entry naming no face is dropped. -pub(super) fn mesh_holes(prim: &Prim, n_faces: usize) -> Vec { - let Some(authored) = custom_i32_array(prim, "holeIndices") else { +pub(super) fn mesh_holes(prim: &PrimData, n_faces: usize) -> Vec { + let Some(authored) = prim.custom_i32_array("holeIndices") else { return Vec::new(); }; let mut holes = vec![false; n_faces]; @@ -1177,7 +1168,7 @@ impl UvSource { /// `n_face_vertices` the length of its `faceVertexIndices`, which a `constant` /// or `uniform` chart needs to be spread over the face-vertices. pub(super) fn mesh_uvs( - prim: &Prim, + prim: &PrimData, preferred: Option<&str>, counts: &[i32], n_face_vertices: usize, @@ -1189,7 +1180,7 @@ pub(super) fn mesh_uvs( "primvars:st0", "primvars:UVMap", ]) { - let values = match prim_value(prim, name) { + let values = match prim.value(name) { // `texCoord2f[]` and `float2[]` are the same bits; which one an // exporter writes is a matter of taste. Some(sdf::Value::Vec2fVec(v)) => v.iter().map(|p| [p.x, p.y]).collect::>(), @@ -1198,13 +1189,8 @@ pub(super) fn mesh_uvs( if values.is_empty() { continue; } - let indices = custom_i32_array(prim, &format!("{name}:indices")); - let interpolation = prim - .attribute(name) - .metadata::("interpolation") - .ok() - .flatten() - .and_then(decode_text); + let indices = prim.custom_i32_array(&format!("{name}:indices")); + let interpolation = prim.metadata(name, "interpolation").and_then(decode_text); // USD's fallback interpolation for a primvar is `constant`, but for // `st` in practice it is always authored; treating an unauthored // metadatum as faceVarying would mis-index a vertex-interpolated @@ -1344,8 +1330,8 @@ pub(super) enum RefinedFaces { /// `None` when the required attributes are missing (matching /// [`mesh_arrays`]); any subdivision problem warns and degrades to the cage. pub(super) fn mesh_source( - prim: &Prim, - mesh: &UsdMesh, + prim: &PrimData, + mesh: &PrimData, mut needs: MeshNeeds<'_>, policy: &mut SubdivPolicy, place: MeshPlace<'_>, @@ -1375,8 +1361,8 @@ pub(super) fn mesh_source( /// after the render vars' (the count of which the caller records), every face /// reversed when `left_handed` (which the caller records too). fn read_mesh_source( - prim: &Prim, - mesh: &UsdMesh, + prim: &PrimData, + mesh: &PrimData, needs: MeshNeeds<'_>, policy: &mut SubdivPolicy, place: MeshPlace<'_>, @@ -1455,7 +1441,7 @@ fn read_mesh_source( left_handed: false, }; - if custom_i32(prim, "crust:subdivisionLevel").is_some() { + if prim.custom_i32("crust:subdivisionLevel").is_some() { warning!( SubdivLegacyLevel, at = prim.path(), @@ -1733,8 +1719,8 @@ impl<'a> MeshNeeds<'a> { /// addresses here, so those children would read no map at all. Its cage keeps /// every triangle addressable, so it stays the cage. fn effective_scheme( - prim: &Prim, - mesh: &UsdMesh, + prim: &PrimData, + mesh: &PrimData, counts: &[i32], displacement: Option<&Displacement>, policy: &mut SubdivPolicy, @@ -1763,13 +1749,11 @@ fn effective_scheme( } /// The mesh's `interpolateBoundary`, mapped one to one. -fn vtx_boundary(mesh: &UsdMesh) -> opensubdiv_rs::sdc::VtxBoundaryInterpolation { +fn vtx_boundary(mesh: &PrimData) -> opensubdiv_rs::sdc::VtxBoundaryInterpolation { use opensubdiv_rs::sdc::VtxBoundaryInterpolation as B; match mesh - .interpolate_boundary_attr() - .get_at::(eval_time()) - .ok() - .flatten() + .resolved("interpolateBoundary") + .and_then(|v| InterpolateBoundary::try_from(v).ok()) .unwrap_or_default() { InterpolateBoundary::None => B::None, @@ -1789,23 +1773,23 @@ struct SharpnessArrays { } impl SharpnessArrays { - fn read(mesh: &UsdMesh) -> Self { - let ints = |attr| { - value_at(&attr) + fn read(mesh: &PrimData) -> Self { + let ints = |name: &str| { + mesh.value(name) .and_then(decode_i32_array) .unwrap_or_default() }; - let floats = |attr| { - value_at(&attr) + let floats = |name: &str| { + mesh.value(name) .and_then(decode_f32_array) .unwrap_or_default() }; SharpnessArrays { - crease_indices: ints(mesh.crease_indices_attr()), - crease_lengths: ints(mesh.crease_lengths_attr()), - crease_sharpnesses: floats(mesh.crease_sharpnesses_attr()), - corner_indices: ints(mesh.corner_indices_attr()), - corner_sharpnesses: floats(mesh.corner_sharpnesses_attr()), + crease_indices: ints("creaseIndices"), + crease_lengths: ints("creaseLengths"), + crease_sharpnesses: floats("creaseSharpnesses"), + corner_indices: ints("cornerIndices"), + corner_sharpnesses: floats("cornerSharpnesses"), } } } @@ -1815,8 +1799,8 @@ impl SharpnessArrays { /// then renders on the material's constant inputs, as every subdivided mesh did /// before charts were refined. fn refinable_chart<'a>( - prim: &Prim, - mesh: &UsdMesh, + prim: &PrimData, + mesh: &PrimData, uvs: Option<&'a UvSource>, n_points: usize, n_face_vertices: usize, @@ -1933,12 +1917,13 @@ impl MeshSource { /// which the Moana island authors on every displaced mesh, in object space, /// the same frame. A constant's bound stays exact. pub(super) fn prim_displacement( - prim: &Prim, + prim: &PrimData, displacement: Option>, ) -> Option> { let d = displacement?; - let authored = custom_f32(prim, "crust:displacementBound") - .or_else(|| custom_f32(prim, "primvars:displacementbound:sphere")); + let authored = prim + .custom_f32("crust:displacementBound") + .or_else(|| prim.custom_f32("primvars:displacementbound:sphere")); match authored { Some(bound) => Some(Arc::new((*d).clone().with_authored_bound(Some(bound)))), None => Some(d), @@ -2004,13 +1989,11 @@ fn owner_charts(src: &MeshSource, n_points: usize, d: &Displacement) -> Vec opensubdiv_rs::sdc::FVarLinearInterpolation { +fn face_varying_linear(mesh: &PrimData) -> opensubdiv_rs::sdc::FVarLinearInterpolation { use opensubdiv_rs::sdc::FVarLinearInterpolation as Osd; match mesh - .face_varying_linear_interpolation_attr() - .get_at::(eval_time()) - .ok() - .flatten() + .resolved("faceVaryingLinearInterpolation") + .and_then(|v| FaceVaryingLinearInterpolation::try_from(v).ok()) .unwrap_or_default() { FaceVaryingLinearInterpolation::None => Osd::None, @@ -2128,7 +2111,7 @@ pub(super) fn placement_scale(l2w: &Affine3A) -> f32 { /// `n_base_faces` is the *authored cage's* face count /// ([`MeshSource::base_face_count`]) — never the refined count: subdivision /// changes the mesh's face count but Ptex ids keep indexing the cage. -fn check_face_count(prim: &Prim, n_base_faces: usize, material: &dyn Material) { +fn check_face_count(prim: &PrimData, n_base_faces: usize, material: &dyn Material) { let Some(tex) = material.face_texture() else { return; }; @@ -2182,7 +2165,7 @@ impl PrimvarData { /// it does not author, and, with one warning per var and prim, for one whose /// type the var cannot read. pub(super) fn mesh_primvars( - prim: &Prim, + prim: &PrimData, keep: &PrimvarKeep, n_points: usize, n_faces: usize, @@ -2214,7 +2197,7 @@ enum Read { } fn read_mesh_primvar( - prim: &Prim, + prim: &PrimData, kept: &KeptPrimvar, n_points: usize, n_faces: usize, @@ -2234,7 +2217,7 @@ fn read_mesh_primvar( } } -fn refuse_kept(prim: &Prim, kept: &KeptPrimvar, type_name: &str, why: &str) -> Read { +fn refuse_kept(prim: &PrimData, kept: &KeptPrimvar, type_name: &str, why: &str) -> Read { warning!( PrimvarMismatch, at = prim.path(), @@ -2249,13 +2232,8 @@ fn refuse_kept(prim: &Prim, kept: &KeptPrimvar, type_name: &str, why: &str) -> R } /// `primvars:`'s type name on `prim`, for a warning. -fn type_of(prim: &Prim, name: &str) -> String { - prim.attribute(format!("primvars:{name}")) - .type_name() - .ok() - .flatten() - .map(|t| t.as_str().to_string()) - .unwrap_or_default() +fn type_of(prim: &PrimData, name: &str) -> String { + prim.type_name(&format!("primvars:{name}")) } /// The primvar `name` a material reads, as `prim` authors it, its colours @@ -2263,14 +2241,14 @@ fn type_of(prim: &Prim, name: &str) -> String { /// author, and, with a warning, for one that cannot be read. `counts` are the /// mesh's points, faces and face-vertices. fn shading_primvar( - prim: &Prim, + prim: &PrimData, name: &str, working: Option, counts: (usize, usize, usize), ) -> Option { let (type_name, why) = match decode_mesh_primvar(prim, name, working, counts) { // Authored empty: as on curves, a material reading it is told. - Ok(None) if prim_value(prim, &format!("primvars:{name}")).is_some() => { + Ok(None) if prim.value(&format!("primvars:{name}")).is_some() => { (type_of(prim, name), "authored empty".to_string()) } Ok(p) => return p, @@ -2292,7 +2270,7 @@ fn shading_primvar( /// interpolation is refused with a warning. pub(super) fn with_constant_primvars( mut src: MeshSource, - prim: &Prim, + prim: &PrimData, material: &dyn Material, working: crate::color::Space, ) -> MeshSource { @@ -2309,7 +2287,7 @@ pub(super) fn with_constant_primvars( /// The table of an analytic sphere `prim`, whose material reads `material`'s /// constant primvars: `None` when it reads none the prim authors. pub(super) fn constant_table( - prim: &Prim, + prim: &PrimData, material: &dyn Material, working: crate::color::Space, ) -> Option { @@ -2322,7 +2300,11 @@ pub(super) fn constant_table( } /// One primvar of [`with_constant_primvars`] and [`constant_table`]. -fn constant_primvar(prim: &Prim, name: &str, working: crate::color::Space) -> Option { +fn constant_primvar( + prim: &PrimData, + name: &str, + working: crate::color::Space, +) -> Option { let p = shading_primvar(prim, name, Some(working), (0, 0, 0))?; if p.interp == PrimvarInterp::Constant { return Some(p); @@ -2344,22 +2326,19 @@ fn constant_primvar(prim: &Prim, name: &str, working: crate::color::Space) -> Op /// authored empty, which the AOVs read as unauthored and a material is warned /// of), `Err` with its type and the reason for one that cannot be read. fn decode_mesh_primvar( - prim: &Prim, + prim: &PrimData, name: &str, working: Option, (n_points, n_faces, n_face_vertices): (usize, usize, usize), ) -> Result, (String, String)> { let attr_name = format!("primvars:{name}"); - let Some(value) = prim_value(prim, &attr_name) else { + let Some(value) = prim.value(&attr_name) else { return Ok(None); }; - let attr = prim.attribute(&attr_name); let type_name = type_of(prim, name); let refuse = |why: String| Err((type_name.clone(), why)); - if let Some(n) = attr - .metadata::("elementSize") - .ok() - .flatten() + if let Some(n) = prim + .metadata(&attr_name, "elementSize") .and_then(|v| match v { sdf::Value::Int(n) => Some(n), _ => None, @@ -2379,17 +2358,15 @@ fn decode_mesh_primvar( // One attribute, one colour space: resolved once, not per value. if let Some(working) = working && type_name.starts_with("color3") - && let Some(space) = attr_color_space(&attr) + && let Some(space) = color_space(prim, &attr_name) { for v in &mut values { let rgb = crate::color::convert(Vec3A::new(v.v[0], v.v[1], v.v[2]), space, working); *v = rgb.into(); } } - let interp = match attr - .metadata::("interpolation") - .ok() - .flatten() + let interp = match prim + .metadata(&attr_name, "interpolation") .and_then(decode_text) .as_deref() { @@ -2407,7 +2384,7 @@ fn decode_mesh_primvar( }; // Authored indices that are not an `int[]` are refused, never read as // absent: the values would then be read unindexed. - let indices = match prim_value(prim, &format!("{attr_name}:indices")) { + let indices = match prim.value(&format!("{attr_name}:indices")) { None => None, Some(v) => match decode_i32_array(v) { Some(indices) => Some(indices), @@ -2441,7 +2418,7 @@ fn decode_mesh_primvar( /// any primvar. `None`, with a warning, for ones that cannot be read — not a /// normal type, or authored empty, which never gives way to `normals` — and /// the mesh then renders faceted, as one authoring none does. -fn authored_normals(prim: &Prim, counts: (usize, usize, usize)) -> Option { +fn authored_normals(prim: &PrimData, counts: (usize, usize, usize)) -> Option { let primvar_type = type_of(prim, "normals"); let (attr, type_name, why) = match decode_mesh_primvar(prim, "normals", None, counts) { // The decoder reads any numeric triple; normals are the normal types. @@ -2452,7 +2429,7 @@ fn authored_normals(prim: &Prim, counts: (usize, usize, usize)) -> Option return Some(n), Err((type_name, why)) => ("primvars:normals", type_name, why), - Ok(None) if prim_value(prim, "primvars:normals").is_some() => ( + Ok(None) if prim.value("primvars:normals").is_some() => ( "primvars:normals", primvar_type, "authored empty".to_string(), @@ -2480,19 +2457,13 @@ fn is_normal_array(type_name: &str) -> bool { /// reads a primvar: never indexed, and `vertex` when its `interpolation` is /// unauthored, as the schema specifies. fn point_normals( - prim: &Prim, + prim: &PrimData, (n_points, n_faces, n_face_vertices): (usize, usize, usize), ) -> Result, (String, String)> { - let Some(value) = prim_value(prim, "normals") else { + let Some(value) = prim.value("normals") else { return Ok(None); }; - let attr = prim.attribute("normals"); - let type_name = attr - .type_name() - .ok() - .flatten() - .map(|t| t.as_str().to_string()) - .unwrap_or_default(); + let type_name = prim.type_name("normals"); let refuse = |why: String| Err((type_name.clone(), why)); // The schema declares `normal3f[]`, which wins over an authored type // (`Attribute::type_name`), so only the value's shape is checked. @@ -2502,10 +2473,8 @@ fn point_normals( if values.is_empty() { return refuse("authored empty".into()); } - let interp = match attr - .metadata::("interpolation") - .ok() - .flatten() + let interp = match prim + .metadata("normals", "interpolation") .and_then(decode_text) .as_deref() { @@ -3370,8 +3339,8 @@ mod subdiv_policy_tests { let scope = crate::WarningScope::enter(); for name in ["/W/A", "/W/B"] { let p = sdf::path(name).unwrap(); - let prim = super::super::prim_at(&stage, p.clone()); - let mesh = UsdMesh::get(&stage, p).unwrap().expect("a mesh"); + let prim = super::super::index::data::PrimData::test_at(&stage, &p); + let mesh = prim.clone(); let src = mesh_source( &prim, &mesh, @@ -3407,8 +3376,8 @@ mod subdiv_policy_tests { .open(path.to_str().unwrap()) .expect("stage opens"); let p = sdf::path("/World/CubeTextured").unwrap(); - let prim = super::super::prim_at(&stage, p.clone()); - let mesh = UsdMesh::get(&stage, p).unwrap().expect("a mesh"); + let prim = super::super::index::data::PrimData::test_at(&stage, &p); + let mesh = prim.clone(); let d = Displacement::new(DisplacementValue::Uv(UvInput { tex: None, output: TexOutput::R, @@ -3548,8 +3517,8 @@ mod displacement_tests { .open(path.to_str().unwrap()) .expect("stage opens"); let p = sdf::path(name).unwrap(); - let prim = super::super::prim_at(&stage, p.clone()); - let mesh = UsdMesh::get(&stage, p).unwrap().expect("a mesh"); + let prim = super::super::index::data::PrimData::test_at(&stage, &p); + let mesh = prim.clone(); let mut arena = MeshArena::new(policy); // Close enough that the near faces dice finer than the far ones. let eye = GMat4::IDENTITY; @@ -3739,20 +3708,20 @@ def Mesh "G" ]; for (name, attrs, want) in cases { let (stage, p) = ground_stage(&format!("bound_{name}"), attrs); - let prim = super::super::prim_at(&stage, p); + let prim = super::super::index::data::PrimData::test_at(&stage, &p); let d = prim_displacement(&prim, Some(material.clone())).unwrap(); assert_eq!(d.bound, want, "{name}"); } let unbounded = Arc::new(uv_displacement()); let (stage, p) = ground_stage("bound_unset", ""); - let prim = super::super::prim_at(&stage, p); + let prim = super::super::index::data::PrimData::test_at(&stage, &p); assert_eq!( prim_displacement(&prim, Some(unbounded)).unwrap().bound, None ); let constant = Arc::new(Displacement::new(DisplacementValue::Constant(-0.2))); let (stage, p) = ground_stage("bound_const", "float crust:displacementBound = 9"); - let prim = super::super::prim_at(&stage, p); + let prim = super::super::index::data::PrimData::test_at(&stage, &p); assert_eq!( prim_displacement(&prim, Some(constant)).unwrap().bound, Some(0.2) @@ -3764,8 +3733,8 @@ def Mesh "G" #[test] fn a_bound_too_small_warns_without_clamping() { let (stage, p) = ground_stage("too_small", "float crust:displacementBound = 0.01"); - let prim = super::super::prim_at(&stage, p.clone()); - let mesh = UsdMesh::get(&stage, p).unwrap().unwrap(); + let prim = super::super::index::data::PrimData::test_at(&stage, &p); + let mesh = prim.clone(); // 0.4 · x − 0.2 on `Jumpy`: up to 0.2 away, far past 0.01. let d = prim_displacement(&prim, Some(Arc::new(uv_displacement()))).unwrap(); let mut arena = MeshArena::new(SubdivPolicy::new(2)); @@ -3818,8 +3787,8 @@ def Mesh "T" .unwrap(); let stage = stage_builder().open(path.to_str().unwrap()).unwrap(); let p = sdf::path("/T").unwrap(); - let prim = super::super::prim_at(&stage, p.clone()); - let mesh = UsdMesh::get(&stage, p).unwrap().unwrap(); + let prim = super::super::index::data::PrimData::test_at(&stage, &p); + let mesh = prim.clone(); let d = ptex_displacement(); let mut arena = MeshArena::new(SubdivPolicy::new(2)); let scope = crate::WarningScope::enter(); @@ -3912,8 +3881,8 @@ mod uv_chart_tests { ("/W/Short", [0, 0, 0, 0, 0, 0, 0, 0]), ] { let p = sdf::path(name).unwrap(); - let prim = super::super::prim_at(&stage, p.clone()); - let usd = UsdMesh::get(&stage, p).unwrap().expect("a mesh"); + let prim = super::super::index::data::PrimData::test_at(&stage, &p); + let usd = prim.clone(); let (_, counts, indices) = mesh_arrays(&usd).unwrap(); let uv = mesh_uvs(&prim, None, &counts, indices.len()).expect("a chart"); assert!(uv.face_varying, "{name}"); @@ -3949,8 +3918,8 @@ def Mesh "M" .open(path.to_str().unwrap()) .expect("stage opens"); let p = sdf::path("/M").unwrap(); - let prim = super::super::prim_at(&stage, p.clone()); - let mesh = UsdMesh::get(&stage, p).unwrap().expect("a mesh"); + let prim = super::super::index::data::PrimData::test_at(&stage, &p); + let mesh = prim.clone(); let mut policy = SubdivPolicy::new(0); let src = mesh_source( &prim, @@ -4022,8 +3991,8 @@ def Mesh "G" mut policy: SubdivPolicy, ) -> (MeshSource, Vec) { let (stage, p) = grid(name, scheme, holes); - let prim = super::super::prim_at(&stage, p.clone()); - let mesh = UsdMesh::get(&stage, p).unwrap().expect("a mesh"); + let prim = super::super::index::data::PrimData::test_at(&stage, &p); + let mesh = prim.clone(); let src = mesh_source( &prim, &mesh, diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index 5bb10e340..d810e43bb 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -416,13 +416,14 @@ fn visit_prim( } else if custom_token(prim, "crust:volume:type").is_some() { ctx.caches.motion.unmoved(prim, &timing); emit_volume(prim, this_world, &mut ctx.volumes, ctx.caches.working); - } else if let Ok(Some(mesh)) = UsdMesh::get(stage, prim.path().clone()) { + } else if let Ok(Some(_)) = UsdMesh::get(stage, prim.path().clone()) { ctx.caches.motion.drawn(prim, &timing); let mat = resolve_bound(stage, prim, &mut ctx.caches); + let data = ctx.caches.prim_data(prim.path()); let baked_moving = emit_mesh( &mut ctx.world, - prim, - &mesh, + &data, + &data, span, mat, &mut ctx.caches.meshes, @@ -431,11 +432,11 @@ fn visit_prim( if baked_moving { ctx.caches.motion.ignored.saw(prim); } - } else if let Ok(Some(sphere)) = UsdSphere::get(stage, prim.path().clone()) { + } else if let Ok(Some(_)) = UsdSphere::get(stage, prim.path().clone()) { ctx.caches.motion.drawn(prim, &timing); let mat = resolve_material(stage, prim, &mut ctx.caches); - if let Some(id) = emit_sphere(&mut ctx.world, prim, &sphere, span, mat, ctx.caches.working) - { + let data = ctx.caches.prim_data(prim.path()); + if let Some(id) = emit_sphere(&mut ctx.world, prim, &data, span, mat, ctx.caches.working) { ctx.spheres.push(id); } } else if let Ok(Some(curves)) = UsdBasisCurves::get(stage, prim.path().clone()) { @@ -450,17 +451,19 @@ fn visit_prim( let request = StrandRequest::of(&*mat, ctx.caches.working, &ctx.caches.meshes.primvars); let imported = nurbs_curve_segments(prim, &curves, request.as_ref()); emit_curves(&mut ctx.world, prim, imported, this_world, mat); - } else if let Some(shape) = Shape::read(prim) { + } else if let Some(shape) = Shape::read(&ctx.caches.prim_data(prim.path())) { ctx.caches.motion.drawn(prim, &timing); - let bound = undisplaced(prim, resolve_bound(stage, prim, &mut ctx.caches)); + let data = ctx.caches.prim_data(prim.path()); + let bound = undisplaced(&data, resolve_bound(stage, prim, &mut ctx.caches)); let src = ctx .caches .implicit .source(prim.path(), &shape, MeshPlace::World(&span.open)); - let src = with_constant_primvars(src, prim, &*bound.material, ctx.caches.working); + let data = ctx.caches.prim_data(prim.path()); + let src = with_constant_primvars(src, &data, &*bound.material, ctx.caches.working); let baked_moving = place_mesh_source( &mut ctx.world, - prim, + &data, src, span, bound, @@ -1988,6 +1991,9 @@ struct ImportCaches<'a> { epoch: u32, /// The host's decoder, for materials that carry a texture asset. assets: &'a dyn AssetLoader, + /// The chain of the input being walked ([`index::walk`]), set for the + /// walk's duration so it does not keep a dropped chunk's stage alive. + scene: Option, /// Root layer, the fallback anchor for an asset path openusd handed back /// unresolved. stage_path: &'a Path, @@ -2118,6 +2124,17 @@ impl<'a> ImportCaches<'a> { motion: TransformMotion::default(), working, luma: crate::color::luma(working), + scene: None, + } + } + + /// The prim at `path` of the scene index being walked, for a reader that + /// has moved onto the index but is reached from one still bridged (a + /// prototype's parts through the instancing reader). + fn prim_data(&self, path: &sdf::Path) -> index::data::PrimData { + match &self.scene { + Some(scene) => index::data::PrimData::in_index(scene, path), + None => unreachable!("a reader reached outside a walk of the scene index"), } } } diff --git a/crates/crust-core/src/scene/usd_import/products.rs b/crates/crust-core/src/scene/usd_import/products.rs index 5a30a95fc..3dc4ffaf4 100644 --- a/crates/crust-core/src/scene/usd_import/products.rs +++ b/crates/crust-core/src/scene/usd_import/products.rs @@ -22,7 +22,7 @@ use std::cell::RefCell; use std::collections::HashMap; use moho::openusd::sdf; -use moho::openusd::usd::{Prim, Stage}; +use moho::openusd::usd::Stage; use moho::scene_index::SceneIndex; use moho::tokens::prim_type; use openusd_schemas::render::AspectRatioConformPolicy; @@ -34,7 +34,7 @@ use crate::aov::{ }; use crate::region::PixelRect; -use super::attrs::{decode_bool, decode_number, prim_value}; +use super::attrs::{decode_bool, decode_number}; use super::index::data::PrimData; use super::settings::render_settings_path; @@ -368,7 +368,7 @@ impl PrimvarKeep { /// Kept primvar `i`, which geometry prim `prim` does not author: when an /// ancestor authors it, warns — once per entry — that it is not /// inherited. Walks the ancestors once per `(entry, ancestor)`. - pub(crate) fn report_inherited(&self, prim: &Prim, i: usize) { + pub(crate) fn report_inherited(&self, prim: &PrimData, i: usize) { if self.warned.borrow().get(i).copied().unwrap_or(false) { return; } @@ -380,7 +380,7 @@ impl PrimvarKeep { .authored_on .borrow_mut() .entry(key) - .or_insert_with(|| prim_value(&a, &name).is_some()); + .or_insert_with(|| a.value(&name).is_some()); if authored { self.warn_not_inherited(i, Some(prim), &a, "an ancestor"); return; @@ -392,13 +392,13 @@ impl PrimvarKeep { /// An instance prim or a `PointInstancer` (`what`) placing geometry: /// warns, once per entry, about each kept primvar it or an ancestor /// authors, which the placed geometry does not inherit. - pub(crate) fn report_placement(&self, placement: &Prim, what: &str) { + pub(crate) fn report_placement(&self, placement: &PrimData, what: &str) { for i in 0..self.entries.len() { if self.warned.borrow().get(i).copied().unwrap_or(false) { continue; } let name = format!("primvars:{}", self.entries[i].name); - if prim_value(placement, &name).is_some() { + if placement.value(&name).is_some() { self.warn_not_inherited(i, None, placement, what); } else { self.report_inherited(placement, i); @@ -408,7 +408,7 @@ impl PrimvarKeep { /// Warns that kept primvar `i`, which `what` authors on `on` (above the /// geometry prim `below`, when one asked), is not inherited. - fn warn_not_inherited(&self, i: usize, below: Option<&Prim>, on: &Prim, what: &str) { + fn warn_not_inherited(&self, i: usize, below: Option<&PrimData>, on: &PrimData, what: &str) { let e = &self.entries[i]; let above = below.map_or(String::new(), |b| format!(" above {}", b.path())); warning!( diff --git a/crates/crust-core/src/scene/usd_import/shapes.rs b/crates/crust-core/src/scene/usd_import/shapes.rs index c5516ff5a..f5727ac43 100644 --- a/crates/crust-core/src/scene/usd_import/shapes.rs +++ b/crates/crust-core/src/scene/usd_import/shapes.rs @@ -10,7 +10,7 @@ use openusd::sdf; use openusd::usd::Prim; use openusd_schemas::geom::{ BasisCurves as UsdBasisCurves, CurvesSchema, NurbsCurves as UsdNurbsCurves, NurbsCurvesSchema, - PointBasedSchema, Sphere as UsdSphere, SphereSchema, + PointBasedSchema, }; use tracing::debug; @@ -19,8 +19,8 @@ use crate::rt_world::WorldBuilder; use crate::strands::StrandTable; use super::attrs::{ - attr_f32, custom_token, decode_f32_array, decode_f64_array, decode_i32_array, - decode_vec3f_array, prim_motion_translate, prim_ray_mask, value_at, + custom_token, decode_f32_array, decode_f64_array, decode_i32_array, decode_vec3f_array, + prim_motion_translate, prim_ray_mask, value_at, }; use super::lights::similarity_scale; use super::strands::{CurveCounts, StrandBuilder, StrandRequest, VertexRecipe}; @@ -31,8 +31,8 @@ use super::xform::Span; // ----------------------------------------------------------------------- /// The authored `radius`, defaulting to USD's 1.0. -pub(super) fn sphere_radius(sphere: &UsdSphere) -> f32 { - attr_f32(&sphere.radius_attr()).unwrap_or(1.0) +pub(super) fn sphere_radius(sphere: &super::index::data::PrimData) -> f32 { + sphere.custom_f32("radius").unwrap_or(1.0) } /// A direct sphere over `span`. Under a similarity (uniform scale, no @@ -49,12 +49,12 @@ pub(super) fn sphere_radius(sphere: &UsdSphere) -> f32 { pub(super) fn emit_sphere( world: &mut WorldBuilder, prim: &Prim, - sphere: &UsdSphere, + data: &super::index::data::PrimData, span: Span, material: Arc, working: crate::color::Space, ) -> Option { - let radius = sphere_radius(sphere); + let radius = sphere_radius(data); let open = Affine3A::from_mat4(span.open); // A singular open placement has no inverse and no volume: nothing to see. if collapses(open.matrix3) { @@ -65,7 +65,7 @@ pub(super) fn emit_sphere( return None; } // The constant primvars its material reads, the only kind a sphere has. - let primvars = super::mesh::constant_table(prim, &*material, working).map(Arc::new); + let primvars = super::mesh::constant_table(data, &*material, working).map(Arc::new); let scale = similarity_scale(open.matrix3, &[0, 1, 2]); let center = open.transform_point3a(Vec3A::ZERO); debug!( diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index e841b1aa0..693c69144 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -194,30 +194,30 @@ this group, and kept for the whole change. ## 6. Meshes -- [ ] 6.1 Index reader for `mesh`: topology, holes, orientation, subdivision scheme and +- [x] 6.1 Index reader for `mesh`: topology, holes, orientation, subdivision scheme and tags, `doubleSided`, and points and normals (`primvars:normals` precedence) read once as whole arrays. It feeds `MeshSource` and the existing bake and instance placement path. Verify parity green on `cornellbox.usda`, `displacement.usda`, the subdivision fixtures and `mesh_normals.rs`. -- [ ] 6.2 Primvars: the render vars' primvars and materials' primvars with indices, +- [x] 6.2 Primvars: the render vars' primvars and materials' primvars with indices, interpolation, `elementSize` and colour space, de-indexed as the direct reader does. Constant primvars are read from the prim's own generic data, not the flattened (inherited) set (design, Risks). Verify parity green on `mesh_primvars.rs`, `primvar_aovs.usda` and `ptex_quads.usda`. -- [ ] 6.3 `crust:subdivisionLevel`, `crust:subdivisionEdgeLength`, +- [x] 6.3 `crust:subdivisionLevel`, `crust:subdivisionEdgeLength`, `crust:displacementBound` and `primvars:displacementbound:sphere` from generic data, and the adaptive level from the camera's projection. Verify parity green on the adaptive subdivision fixtures and `pxr_displace.usda`. -- [ ] 6.4 Move the mesh parts of `usd_import/live.rs` (`mesh_source`, bake helpers) to +- [x] 6.4 Move the mesh parts of `usd_import/live.rs` (`mesh_source`, bake helpers) to the index reader. Verify that `live.rs` and the `live-geometry-edits` tests pass. ## 7. Implicit shapes and spheres -- [ ] 7.1 Index readers for `sphere`, `cube`, `cone`, `cylinder`, `capsule` and `plane` +- [x] 7.1 Index readers for `sphere`, `cube`, `cone`, `cylinder`, `capsule` and `plane` (radius, size, height, axis, radiusTop/Bottom, width, length, doubleSided), tessellated by Crust's existing `implicit` code. Analytic spheres stay analytic. Verify parity green on `implicit_shapes.usda`, and that `geomutil_oracle` passes unchanged. -- [ ] 7.2 Move the sphere rebuild in `live.rs` to the index reader. Verify that +- [x] 7.2 Move the sphere rebuild in `live.rs` to the index reader. Verify that `live.rs` passes. ## 8. Curves diff --git a/scripts/parity_images.sh b/scripts/parity_images.sh index 6afc9ccf0..d0cbabbfb 100755 --- a/scripts/parity_images.sh +++ b/scripts/parity_images.sh @@ -29,9 +29,9 @@ CARGO_PROFILE_RELEASE_LTO=false CARGO_PROFILE_RELEASE_CODEGEN_UNITS=16 \ cargo test --release --workspace --no-fail-fast >"$LOG" 2>&1 status=0 -if grep -q "^parity: \|panicked.*parity.rs" "$LOG"; then +if grep -q "panicked at crates/crust-core/src/parity.rs" "$LOG"; then echo "IMPORTS DIFFER FROM THEIR BASELINES:" - grep -A3 "parity.rs" "$LOG" | grep "^parity:\|baseline:\|import:" | head -60 + grep -A3 "panicked at crates/crust-core/src/parity.rs" "$LOG" | grep "^parity:\|baseline:\|import:" | head -60 status=1 fi failed="$(grep -E '^test .* FAILED$' "$LOG" | sed 's/^test //; s/ \.\.\. FAILED$//' | sort -u)" From 6a1a16cecd747a58686be822e6b1d575d054e479 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 01:45:56 +0100 Subject: [PATCH 29/95] crust-core: basis and NURBS curves read from the scene index curve_segments and nurbs_curve_segments read points, counts, widths, type, basis, order, knots, point weights and ranges from the prim's generic data, and the strand table its primvars (values, indices, interpolation, type name, colour space up the index's ancestors) and the reserved primvars:curve: names. Curves in a prototype read through the walk's index too. Parity green on every digest and on the image run (task 8.1). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/instancing.rs | 15 ++-- .../crust-core/src/scene/usd_import/live.rs | 1 - crates/crust-core/src/scene/usd_import/mod.rs | 16 +++-- .../crust-core/src/scene/usd_import/shapes.rs | 72 ++++++++++--------- .../src/scene/usd_import/strands.rs | 51 +++++++------ openspec/changes/moho-import/tasks.md | 2 +- 6 files changed, 80 insertions(+), 77 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/instancing.rs b/crates/crust-core/src/scene/usd_import/instancing.rs index b54b48021..5b22cf4fa 100644 --- a/crates/crust-core/src/scene/usd_import/instancing.rs +++ b/crates/crust-core/src/scene/usd_import/instancing.rs @@ -63,10 +63,10 @@ const MAX_INSTANCE_NESTING: usize = 8; /// How a prototype version is placed, which decides how adaptive subdivision /// refines its meshes (see "Only unshared geometry is adaptive" in the design /// record). In uniform subdivision every version is [`ProtoPlace::Shared`]. -/// A curves prim in a prototype, read under whichever schema it has. +/// A curves prim in a prototype, by which schema it has. enum Curve { - Basis(UsdBasisCurves), - Nurbs(UsdNurbsCurves), + Basis, + Nurbs, } #[derive(Clone, Copy, Debug)] @@ -320,17 +320,18 @@ pub(super) fn collect_proto_parts( Arc::make_mut(&mut part.slots)[0].primvars = primvars; parts.push(part); } else if let Some(read) = match UsdBasisCurves::get(stage, prim.path().clone()) { - Ok(Some(curves)) => Some(Curve::Basis(curves)), + Ok(Some(_)) => Some(Curve::Basis), _ => match UsdNurbsCurves::get(stage, prim.path().clone()) { - Ok(Some(curves)) => Some(Curve::Nurbs(curves)), + Ok(Some(_)) => Some(Curve::Nurbs), _ => None, }, } { let material = resolve_material(stage, &prim, caches); let request = StrandRequest::of(&*material, caches.working, &caches.meshes.primvars); + let data = caches.prim_data(prim.path()); let imported = match &read { - Curve::Basis(c) => curve_segments(&prim, c, request.as_ref()), - Curve::Nurbs(c) => nurbs_curve_segments(&prim, c, request.as_ref()), + Curve::Basis => curve_segments(&data, &data, request.as_ref()), + Curve::Nurbs => nurbs_curve_segments(&data, &data, request.as_ref()), }; if let Some(Curves { batches, strands }) = imported { let mut part = ProtoPart::leaf( diff --git a/crates/crust-core/src/scene/usd_import/live.rs b/crates/crust-core/src/scene/usd_import/live.rs index e8eb49e77..6840c57bc 100644 --- a/crates/crust-core/src/scene/usd_import/live.rs +++ b/crates/crust-core/src/scene/usd_import/live.rs @@ -428,7 +428,6 @@ impl Rebuilding<'_> { let data = super::index::data::PrimData::in_index(&scene.chain, prim.path()); let placed = emit_sphere( &mut scratch, - &prim, &data, Span::fixed(world_xf), world.material_of(id).clone(), diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index d810e43bb..57b9a7900 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -436,21 +436,23 @@ fn visit_prim( ctx.caches.motion.drawn(prim, &timing); let mat = resolve_material(stage, prim, &mut ctx.caches); let data = ctx.caches.prim_data(prim.path()); - if let Some(id) = emit_sphere(&mut ctx.world, prim, &data, span, mat, ctx.caches.working) { + if let Some(id) = emit_sphere(&mut ctx.world, &data, span, mat, ctx.caches.working) { ctx.spheres.push(id); } - } else if let Ok(Some(curves)) = UsdBasisCurves::get(stage, prim.path().clone()) { + } else if let Ok(Some(_)) = UsdBasisCurves::get(stage, prim.path().clone()) { ctx.caches.motion.unmoved(prim, &timing); let mat = resolve_material(stage, prim, &mut ctx.caches); let request = StrandRequest::of(&*mat, ctx.caches.working, &ctx.caches.meshes.primvars); - let imported = curve_segments(prim, &curves, request.as_ref()); - emit_curves(&mut ctx.world, prim, imported, this_world, mat); - } else if let Ok(Some(curves)) = UsdNurbsCurves::get(stage, prim.path().clone()) { + let data = ctx.caches.prim_data(prim.path()); + let imported = curve_segments(&data, &data, request.as_ref()); + emit_curves(&mut ctx.world, &data, imported, this_world, mat); + } else if let Ok(Some(_)) = UsdNurbsCurves::get(stage, prim.path().clone()) { ctx.caches.motion.unmoved(prim, &timing); let mat = resolve_material(stage, prim, &mut ctx.caches); let request = StrandRequest::of(&*mat, ctx.caches.working, &ctx.caches.meshes.primvars); - let imported = nurbs_curve_segments(prim, &curves, request.as_ref()); - emit_curves(&mut ctx.world, prim, imported, this_world, mat); + let data = ctx.caches.prim_data(prim.path()); + let imported = nurbs_curve_segments(&data, &data, request.as_ref()); + emit_curves(&mut ctx.world, &data, imported, this_world, mat); } else if let Some(shape) = Shape::read(&ctx.caches.prim_data(prim.path())) { ctx.caches.motion.drawn(prim, &timing); let data = ctx.caches.prim_data(prim.path()); diff --git a/crates/crust-core/src/scene/usd_import/shapes.rs b/crates/crust-core/src/scene/usd_import/shapes.rs index f5727ac43..f3b44cf93 100644 --- a/crates/crust-core/src/scene/usd_import/shapes.rs +++ b/crates/crust-core/src/scene/usd_import/shapes.rs @@ -6,22 +6,15 @@ use std::sync::Arc; use crust_rt::{CubicCurveSegment, CurveSegment, Geometry, SceneBuilder as RtSceneBuilder}; use glam::{Affine3A, Mat3A, Mat4 as GMat4, Vec3A}; -use openusd::sdf; -use openusd::usd::Prim; -use openusd_schemas::geom::{ - BasisCurves as UsdBasisCurves, CurvesSchema, NurbsCurves as UsdNurbsCurves, NurbsCurvesSchema, - PointBasedSchema, -}; +use moho::openusd::sdf; use tracing::debug; use crate::material::Material; use crate::rt_world::WorldBuilder; use crate::strands::StrandTable; -use super::attrs::{ - custom_token, decode_f32_array, decode_f64_array, decode_i32_array, decode_vec3f_array, - prim_motion_translate, prim_ray_mask, value_at, -}; +use super::attrs::{decode_f32_array, decode_f64_array, decode_i32_array, decode_vec3f_array}; +use super::index::data::{PrimData, motion_translate, ray_mask}; use super::lights::similarity_scale; use super::strands::{CurveCounts, StrandBuilder, StrandRequest, VertexRecipe}; use super::xform::Span; @@ -31,7 +24,7 @@ use super::xform::Span; // ----------------------------------------------------------------------- /// The authored `radius`, defaulting to USD's 1.0. -pub(super) fn sphere_radius(sphere: &super::index::data::PrimData) -> f32 { +pub(super) fn sphere_radius(sphere: &PrimData) -> f32 { sphere.custom_f32("radius").unwrap_or(1.0) } @@ -48,13 +41,12 @@ pub(super) fn sphere_radius(sphere: &super::index::data::PrimData) -> f32 { /// Returns the id only of a static analytic sphere. pub(super) fn emit_sphere( world: &mut WorldBuilder, - prim: &Prim, - data: &super::index::data::PrimData, + prim: &PrimData, span: Span, material: Arc, working: crate::color::Space, ) -> Option { - let radius = sphere_radius(data); + let radius = sphere_radius(prim); let open = Affine3A::from_mat4(span.open); // A singular open placement has no inverse and no volume: nothing to see. if collapses(open.matrix3) { @@ -65,7 +57,7 @@ pub(super) fn emit_sphere( return None; } // The constant primvars its material reads, the only kind a sphere has. - let primvars = super::mesh::constant_table(data, &*material, working).map(Arc::new); + let primvars = super::mesh::constant_table(prim, &*material, working).map(Arc::new); let scale = similarity_scale(open.matrix3, &[0, 1, 2]); let center = open.transform_point3a(Vec3A::ZERO); debug!( @@ -75,8 +67,8 @@ pub(super) fn emit_sphere( center, scale ); - let mask = prim_ray_mask(prim); - let v = prim_motion_translate(prim); + let mask = ray_mask(prim); + let v = motion_translate(prim); let end = match span.close.filter(|_| span.moves()) { Some(close) => { let rel = Affine3A::from_mat4(close) * open.inverse(); @@ -266,12 +258,12 @@ fn basis_weights(m: &[[f32; 4]; 4]) -> [[f32; 4]; 4] { /// points covers `v` from `0` to `1` over its `n − 1` linear segments, or /// over its cubic spans in equal steps of its parameter. pub(super) fn curve_segments( - prim: &Prim, - curves: &UsdBasisCurves, + prim: &PrimData, + curves: &PrimData, request: Option<&StrandRequest>, ) -> Option { - let points = value_at(&curves.points_attr()).and_then(decode_vec3f_array); - let counts = value_at(&curves.curve_vertex_counts_attr()).and_then(decode_i32_array); + let points = curves.value("points").and_then(decode_vec3f_array); + let counts = curves.value("curveVertexCounts").and_then(decode_i32_array); let (points, counts) = match (points, counts) { (Some(p), Some(c)) => (p, c), _ => { @@ -285,14 +277,19 @@ pub(super) fn curve_segments( let pts: Vec = points.iter().map(|p| Vec3A::new(p.x, p.y, p.z)).collect(); // An authored but empty array is no widths at all: the default. - let widths: Vec = value_at(&curves.widths_attr()) + let widths: Vec = curves + .value("widths") .and_then(decode_f32_array) .filter(|w| !w.is_empty()) .unwrap_or_else(|| vec![1.0]); // USD defaults: type = cubic, basis = bezier. - let ty = custom_token(prim, "type").unwrap_or_else(|| "cubic".to_string()); - let basis_name = custom_token(prim, "basis").unwrap_or_else(|| "bezier".to_string()); + let ty = prim + .custom_token("type") + .unwrap_or_else(|| "cubic".to_string()); + let basis_name = prim + .custom_token("basis") + .unwrap_or_else(|| "bezier".to_string()); let (basis, vstep) = match basis_name.as_str() { "bezier" => (&BEZIER_M, 3usize), "bspline" => (&BSPLINE_M, 1), @@ -480,7 +477,7 @@ pub(super) fn curves_scene(batches: CurveBatches) -> crust_rt::Scene { /// its world transform. pub(super) fn emit_curves( world: &mut WorldBuilder, - prim: &Prim, + prim: &PrimData, curves: Option, world_xf: GMat4, material: Arc, @@ -504,7 +501,7 @@ pub(super) fn emit_curves( transform_end: None, }, material, - prim_ray_mask(prim), + ray_mask(prim), ); match strands { Some(table) => world.set_strands(id, Arc::new(table)), @@ -661,12 +658,12 @@ fn decode_ranges(v: sdf::Value) -> Option> { /// the straight cubics tracing them. Primvars are blossomed unweighted: a /// rational curve's are approximated with it. pub(super) fn nurbs_curve_segments( - prim: &Prim, - curves: &UsdNurbsCurves, + prim: &PrimData, + curves: &PrimData, request: Option<&StrandRequest>, ) -> Option { - let points = value_at(&curves.points_attr()).and_then(decode_vec3f_array); - let counts = value_at(&curves.curve_vertex_counts_attr()).and_then(decode_i32_array); + let points = curves.value("points").and_then(decode_vec3f_array); + let counts = curves.value("curveVertexCounts").and_then(decode_i32_array); let (points, counts) = match (points, counts) { (Some(p), Some(c)) => (p, c), _ => { @@ -679,10 +676,12 @@ pub(super) fn nurbs_curve_segments( }; let n_points = points.len(); let n_curves = counts.len(); - let orders = value_at(&curves.order_attr()) + let orders = curves + .value("order") .and_then(decode_i32_array) .unwrap_or_default(); - let knots = value_at(&curves.knots_attr()) + let knots = curves + .value("knots") .and_then(decode_f64_array) .unwrap_or_default(); let expected_knots: i64 = counts @@ -708,11 +707,13 @@ pub(super) fn nurbs_curve_segments( return None; } // An authored but empty array is no widths at all: the default. - let widths: Vec = value_at(&curves.widths_attr()) + let widths: Vec = curves + .value("widths") .and_then(decode_f32_array) .filter(|w| !w.is_empty()) .unwrap_or_else(|| vec![1.0]); - let mut weights = value_at(&curves.point_weights_attr()) + let mut weights = curves + .value("pointWeights") .and_then(decode_f64_array) .filter(|w| w.len() == n_points); // A zero, negative or non-finite weight has no projection back out of @@ -731,7 +732,8 @@ pub(super) fn nurbs_curve_segments( ); weights = None; } - let ranges = value_at(&curves.ranges_attr()) + let ranges = curves + .value("ranges") .and_then(decode_ranges) .filter(|r| r.len() == n_curves); let width_of = |global_idx: usize, curve_idx: usize| -> f64 { diff --git a/crates/crust-core/src/scene/usd_import/strands.rs b/crates/crust-core/src/scene/usd_import/strands.rs index 5e39a90fe..4cdc03743 100644 --- a/crates/crust-core/src/scene/usd_import/strands.rs +++ b/crates/crust-core/src/scene/usd_import/strands.rs @@ -10,15 +10,15 @@ use crust_mtlx::Val; use glam::Vec3A; -use openusd::sdf; -use openusd::usd::Prim; +use moho::openusd::sdf; use crate::color::Space; use crate::material::CurveNeeds; use crate::strands::{StrandSpan, StrandTable, StrandValues}; use crate::warning; -use super::attrs::{custom_i32_array, decode_text, in_working, prim_value}; +use super::attrs::decode_text; +use super::index::data::{PrimData, color_space}; use super::products::{KeptPrimvar, PrimvarKeep}; /// What a curves prim's material asks of it, and what reading it takes. @@ -219,12 +219,12 @@ pub(super) struct CurveCounts { impl StrandBuilder { /// Reads every primvar `request` asks for on `prim`, refusing (with a /// warning) any it cannot read, and the authored `primvars:curve:*`. - pub(super) fn new(prim: &Prim, request: &StrandRequest, counts: CurveCounts) -> Self { + pub(super) fn new(prim: &PrimData, request: &StrandRequest, counts: CurveCounts) -> Self { let reserved: Vec = prim - .attributes_in_namespace("primvars:curve") - .unwrap_or_default() + .attribute_names() .iter() - .map(|a| a.path().to_string()) + .filter(|n| n.starts_with("primvars:curve:")) + .map(|n| prim.attribute_path(n)) .collect(); if !reserved.is_empty() { warning!( @@ -300,7 +300,7 @@ impl StrandBuilder { /// when the material reads only the chart and the prim authors none: a /// table would then carry nothing a hit could read, and still cost its /// spans and take every hit off `World::intersect`'s plain path. - pub(super) fn finish(self, prim: &Prim) -> Option { + pub(super) fn finish(self, prim: &PrimData) -> Option { let done = |c: Option| -> Option { let c = c?; if c.overrun { @@ -355,7 +355,7 @@ impl StrandBuilder { /// prim's counts and the var's component count; `None`, with one warning per /// var and prim, for one the var cannot read, and silently for one that is /// not authored. -fn read_kept(prim: &Prim, kept: &KeptPrimvar, counts: CurveCounts) -> Option { +fn read_kept(prim: &PrimData, kept: &KeptPrimvar, counts: CurveCounts) -> Option { let channel = match decode_channel(prim, &kept.name, None, counts) { Ok(c) => c?, Err(why) => return refuse_kept(prim, kept, &why), @@ -367,7 +367,7 @@ fn read_kept(prim: &Prim, kept: &KeptPrimvar, counts: CurveCounts) -> Option Option { +fn refuse_kept(prim: &PrimData, kept: &KeptPrimvar, why: &str) -> Option { warning!( PrimvarMismatch, at = prim.path(), @@ -386,7 +386,7 @@ fn refuse_kept(prim: &Prim, kept: &KeptPrimvar, why: &str) -> Option { /// for one that is not authored. A `chart` must have two lanes, and is /// refused silently otherwise: the next name in the chart list is tried. fn read( - prim: &Prim, + prim: &PrimData, name: &str, working: Space, counts: CurveCounts, @@ -414,22 +414,16 @@ fn read( /// `Ok(None)` for one that is not authored; `Err` with the reason for one /// that cannot be read. fn decode_channel( - prim: &Prim, + prim: &PrimData, name: &str, working: Option, counts: CurveCounts, ) -> Result, String> { let attr_name = format!("primvars:{name}"); - let attr = prim.attribute(&attr_name); - let Some(value) = prim_value(prim, &attr_name) else { + let Some(value) = prim.value(&attr_name) else { return Ok(None); }; - let type_name = attr - .type_name() - .ok() - .flatten() - .map(|t| t.as_str().to_string()) - .unwrap_or_default(); + let type_name = prim.type_name(&attr_name); let color = type_name.starts_with("color3"); let Some(mut values) = decode(value) else { return Err(format!( @@ -439,12 +433,19 @@ fn decode_channel( if let Some(working) = working && color { + // `attrs::in_working`: converted from the space the attribute names, + // as authored when it names none. + let space = color_space(prim, &attr_name); for v in &mut values { - let rgb = in_working(&attr, Vec3A::new(v.v[0], v.v[1], v.v[2]), working); + let rgb = Vec3A::new(v.v[0], v.v[1], v.v[2]); + let rgb = match space { + Some(space) => crate::color::convert(rgb, space, working), + None => rgb, + }; *v = rgb.into(); } } - if let Some(indices) = custom_i32_array(prim, &format!("{attr_name}:indices")) { + if let Some(indices) = prim.custom_i32_array(&format!("{attr_name}:indices")) { let expanded: Option> = indices .iter() .map(|&i| usize::try_from(i).ok().and_then(|i| values.get(i).copied())) @@ -454,10 +455,8 @@ fn decode_channel( None => return Err("has indices out of its range".into()), } } - let interp = match attr - .metadata::("interpolation") - .ok() - .flatten() + let interp = match prim + .metadata(&attr_name, "interpolation") .and_then(decode_text) .as_deref() { diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 693c69144..5d31405e7 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -222,7 +222,7 @@ this group, and kept for the whole change. ## 8. Curves -- [ ] 8.1 Index readers for `basisCurves` and `nurbsCurves` (topology, widths, order, +- [x] 8.1 Index readers for `basisCurves` and `nurbsCurves` (topology, widths, order, knots, ranges, point weights) and the `primvars:curve*` and `st` primvars that strand requests read. Verify parity green on `curves.usda`, `hair.usda`, `hair_variation.usda`, `curve_attributes.rs` and `hair.rs`. From b3776295bd40ea003c79459e678ea09ef3a16ef2 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 01:54:34 +0100 Subject: [PATCH 30/95] crust-core: crust:volume:* regions read from the scene index The volume dispatch and emit_volume read the region's type, noise, grid, coefficients (colours converted from the space the attribute names, up the index's ancestors), anisotropy, density scale and size from the prim's generic data, in the walk and in a prototype's warning. The material's volume terminal moves with the material networks. Parity green (part of task 11.1). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../crust-core/src/scene/usd_import/attrs.rs | 8 --- .../src/scene/usd_import/index/data.rs | 19 +++++++ .../src/scene/usd_import/instancing.rs | 10 ++-- crates/crust-core/src/scene/usd_import/mod.rs | 13 +++-- .../crust-core/src/scene/usd_import/volume.rs | 50 +++++++++++-------- openspec/changes/moho-import/tasks.md | 2 + 6 files changed, 67 insertions(+), 35 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/attrs.rs b/crates/crust-core/src/scene/usd_import/attrs.rs index 612423d5b..2b2c16fa3 100644 --- a/crates/crust-core/src/scene/usd_import/attrs.rs +++ b/crates/crust-core/src/scene/usd_import/attrs.rs @@ -427,14 +427,6 @@ pub(super) fn in_working(attr: &Attribute, rgb: Vec3A, working: Space) -> Vec3A } } -pub(super) fn custom_f32_array(prim: &Prim, name: &str) -> Option> { - prim_value(prim, name).and_then(decode_f32_array) -} - -pub(super) fn custom_i32_array(prim: &Prim, name: &str) -> Option> { - prim_value(prim, name).and_then(decode_i32_array) -} - pub(super) fn attr_f32(attr: &Attribute) -> Option { value_at(attr).and_then(decode_f32) } diff --git a/crates/crust-core/src/scene/usd_import/index/data.rs b/crates/crust-core/src/scene/usd_import/index/data.rs index 54b3f4f42..65ba00502 100644 --- a/crates/crust-core/src/scene/usd_import/index/data.rs +++ b/crates/crust-core/src/scene/usd_import/index/data.rs @@ -168,6 +168,25 @@ impl PrimData { .and_then(super::super::attrs::decode_i32_array) } + pub(in crate::scene::usd_import) fn custom_f32_array(&self, name: &str) -> Option> { + self.value(name) + .and_then(super::super::attrs::decode_f32_array) + } + + /// A colour attribute in the working space: `attrs::custom_color`, its + /// space from [`color_space`]. + pub(in crate::scene::usd_import) fn custom_color( + &self, + name: &str, + working: crate::color::Space, + ) -> Option { + let rgb = self.value(name).and_then(decode_vec3)?; + Some(match color_space(self, name) { + Some(space) => crate::color::convert(rgb, space, working), + None => rgb, + }) + } + pub(in crate::scene::usd_import) fn custom_i32(&self, name: &str) -> Option { self.value(name).and_then(decode_i32) } diff --git a/crates/crust-core/src/scene/usd_import/instancing.rs b/crates/crust-core/src/scene/usd_import/instancing.rs index 5b22cf4fa..f8ca78ba0 100644 --- a/crates/crust-core/src/scene/usd_import/instancing.rs +++ b/crates/crust-core/src/scene/usd_import/instancing.rs @@ -40,8 +40,8 @@ use crate::primvars::PrimvarTable; use crate::rt_world::{FaceMap, UvMap, WorldBuilder}; use super::attrs::{ - custom_token, decode_i32_array, decode_i64_array, decode_vec3f_array, prim_motion_translate, - prim_ray_mask, value_at, + decode_i32_array, decode_i64_array, decode_vec3f_array, prim_motion_translate, prim_ray_mask, + value_at, }; use super::implicit::{Shape, undisplaced}; use super::materials::{resolve_bound, resolve_material}; @@ -249,7 +249,11 @@ pub(super) fn collect_proto_parts( // as a box. Volumes live outside the surface BVH entirely (their // bounds must not occlude shadow rays), so they cannot ride an // instance transform. Say so rather than dropping silently. - if custom_token(&prim, "crust:volume:type").is_some() { + if caches + .prim_data(prim.path()) + .custom_token("crust:volume:type") + .is_some() + { warning!( VolumeInPrototype, at = prim.path(), diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index 57b9a7900..8b31eddec 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -96,8 +96,7 @@ mod xform; use adaptive::{Frustum, ScreenProjection, ScreenRate}; use attrs::{ - custom_token, prim_value, resolve_adaptive_max_level, resolve_subdiv_edge_length, - resolve_subdiv_level, + prim_value, resolve_adaptive_max_level, resolve_subdiv_edge_length, resolve_subdiv_level, }; use camera::{ RenderCamera, Shutter, ShutterOffsets, build_camera, screen_projection, shutter_offsets, @@ -413,9 +412,15 @@ fn visit_prim( // Prototypes are conventionally authored beneath the // instancer; they are drawn through it, never on their own. return None; - } else if custom_token(prim, "crust:volume:type").is_some() { + } else if ctx + .caches + .prim_data(prim.path()) + .custom_token("crust:volume:type") + .is_some() + { ctx.caches.motion.unmoved(prim, &timing); - emit_volume(prim, this_world, &mut ctx.volumes, ctx.caches.working); + let data = ctx.caches.prim_data(prim.path()); + emit_volume(&data, this_world, &mut ctx.volumes, ctx.caches.working); } else if let Ok(Some(_)) = UsdMesh::get(stage, prim.path().clone()) { ctx.caches.motion.drawn(prim, &timing); let mat = resolve_bound(stage, prim, &mut ctx.caches); diff --git a/crates/crust-core/src/scene/usd_import/volume.rs b/crates/crust-core/src/scene/usd_import/volume.rs index ccbd94cfa..056431c9d 100644 --- a/crates/crust-core/src/scene/usd_import/volume.rs +++ b/crates/crust-core/src/scene/usd_import/volume.rs @@ -2,15 +2,12 @@ use crate::warning; use glam::{Mat4 as GMat4, Vec3A}; -use openusd::usd::Prim; use tracing::debug; use crate::color::Space; use crate::volume::{DensityField, VolumeRegion}; -use super::attrs::{ - custom_color, custom_f32, custom_f32_array, custom_i32, custom_i32_array, custom_token, -}; +use super::index::data::PrimData; /// Import a `crust:volume:*` prim as a `VolumeRegion`. The local box is /// `[-size/2, size/2]^3` when the prim authors a `size` attribute (a @@ -18,28 +15,35 @@ use super::attrs::{ /// `[-0.5, 0.5]^3` otherwise; placement, orientation and scale come from /// the composed prim transform. pub(super) fn emit_volume( - prim: &Prim, + prim: &PrimData, world_xf: GMat4, volumes: &mut Vec, working: Space, ) { - let ty = custom_token(prim, "crust:volume:type").expect("checked by dispatch"); + let ty = prim + .custom_token("crust:volume:type") + .expect("checked by dispatch"); let field = match ty.as_str() { "homogeneous" => DensityField::Homogeneous, "smoke" => DensityField::Noise { - scale: custom_f32(prim, "crust:volume:noiseScale").unwrap_or(4.0), - octaves: custom_i32(prim, "crust:volume:noiseOctaves") + scale: prim.custom_f32("crust:volume:noiseScale").unwrap_or(4.0), + octaves: prim + .custom_i32("crust:volume:noiseOctaves") .unwrap_or(4) .max(1) as u32, - gain: custom_f32(prim, "crust:volume:noiseGain").unwrap_or(0.5), - lacunarity: custom_f32(prim, "crust:volume:noiseLacunarity").unwrap_or(2.0), - threshold: custom_f32(prim, "crust:volume:noiseThreshold").unwrap_or(0.3), - seed: custom_i32(prim, "crust:volume:noiseSeed").unwrap_or(0) as u32, + gain: prim.custom_f32("crust:volume:noiseGain").unwrap_or(0.5), + lacunarity: prim + .custom_f32("crust:volume:noiseLacunarity") + .unwrap_or(2.0), + threshold: prim + .custom_f32("crust:volume:noiseThreshold") + .unwrap_or(0.3), + seed: prim.custom_i32("crust:volume:noiseSeed").unwrap_or(0) as u32, }, "grid" => { - let dims = custom_i32_array(prim, "crust:volume:gridDims"); - let data = custom_f32_array(prim, "crust:volume:gridData"); + let dims = prim.custom_i32_array("crust:volume:gridDims"); + let data = prim.custom_f32_array("crust:volume:gridData"); match (dims, data) { (Some(d), Some(data)) if d.len() == 3 => { let (nx, ny, nz) = ( @@ -87,12 +91,18 @@ pub(super) fn emit_volume( // Per-channel coefficients, so they are colours in the working space // like any other: converted only when `colorSpace` names another. - let sigma_s = custom_color(prim, "crust:volume:sigmaS", working).unwrap_or(Vec3A::splat(0.5)); - let sigma_a = custom_color(prim, "crust:volume:sigmaA", working).unwrap_or(Vec3A::ZERO); - let emission = custom_color(prim, "crust:volume:emission", working).unwrap_or(Vec3A::ZERO); - let g = custom_f32(prim, "crust:volume:anisotropy").unwrap_or(0.0); - let density_scale = custom_f32(prim, "crust:volume:densityScale").unwrap_or(1.0); - let half = custom_f32(prim, "size").map_or(0.5, |s| s * 0.5); + let sigma_s = prim + .custom_color("crust:volume:sigmaS", working) + .unwrap_or(Vec3A::splat(0.5)); + let sigma_a = prim + .custom_color("crust:volume:sigmaA", working) + .unwrap_or(Vec3A::ZERO); + let emission = prim + .custom_color("crust:volume:emission", working) + .unwrap_or(Vec3A::ZERO); + let g = prim.custom_f32("crust:volume:anisotropy").unwrap_or(0.0); + let density_scale = prim.custom_f32("crust:volume:densityScale").unwrap_or(1.0); + let half = prim.custom_f32("size").map_or(0.5, |s| s * 0.5); debug!( "Imported {} volume at {} (densityScale={})", diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 5d31405e7..8a9f2e226 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -283,6 +283,8 @@ this group, and kept for the whole change. - [ ] 11.1 Index reader for `crust:volume:*` regions from generic data, dispatched before geometry as today, and the material's volume terminal from the `material` network. Verify parity green on `fog.usda`, `materialx_volume.usda` and `medium.rs`. + (The regions and their dispatch read the index; the volume terminal moves with the + material networks, 9.2.) ## 12. Instancing and the standard chain From 06cbff642db2a0759359705a1e1f9f4e3db59b65 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 02:05:02 +0100 Subject: [PATCH 31/95] crust-core: material bindings read from the scene index The material a prim renders with is the scene index's resolved materialBindings (Moho's MaterialBindingResolvingSceneIndex): the full purpose's, else the all-purpose one's, answered whether or not the target is a Material the walked stage holds, as the outside-chunk materials need. A unit test checks it agrees with the direct resolution (bound_material) on every prim of six samples and a fixture with collection bindings, strongerThanDescendants and nested bindings, while the direct reader exists; `crust ls` keeps the direct one. Parity green (task 9.1). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/materials.rs | 117 +++++++++++++++++- openspec/changes/moho-import/tasks.md | 2 +- 2 files changed, 117 insertions(+), 2 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/materials.rs b/crates/crust-core/src/scene/usd_import/materials.rs index 2a1906808..8ded9fe87 100644 --- a/crates/crust-core/src/scene/usd_import/materials.rs +++ b/crates/crust-core/src/scene/usd_import/materials.rs @@ -278,6 +278,27 @@ pub(super) fn bound_material(stage: &Stage, prim: &Prim) -> Option { } } +/// The material bound to `prim` for a render, from the scene index's resolved +/// `materialBindings` (Moho's `MaterialBindingResolvingSceneIndex`): the +/// `full` purpose's, else the all-purpose one's — [`bound_material`]'s rule +/// (the closest binding, unless an ancestor's is `strongerThanDescendants`; +/// a collection binding including the prim over the direct one), answered +/// whether or not the target is a `Material` the walked stage holds. +pub(super) fn index_bound_material(prim: &super::index::data::PrimData) -> Option { + use moho::tokens::material_bindings as t; + [RENDER_BINDING_PURPOSE, ""] + .into_iter() + .find_map(|purpose| { + match prim + .locate([t::MATERIAL_BINDINGS, purpose, t::PATH])? + .value()? + { + sdf::Value::PathVec(mut paths) if paths.len() == 1 => paths.pop(), + _ => None, + } + }) +} + /// The `MaterialBindingAPI` of `path` or its nearest ancestor carrying it. fn nearest_binding_api(stage: &Stage, path: sdf::Path) -> Option { let mut path = Some(path); @@ -443,7 +464,7 @@ fn cached_material( prim: &Prim, caches: &mut ImportCaches<'_>, ) -> Option<((u32, String), sdf::Path)> { - let Some(mat_path) = bound_material(stage, prim) else { + let Some(mat_path) = index_bound_material(&caches.prim_data(prim.path())) else { debug!( "{} has no material binding — using default grey OpenPBR", prim.path() @@ -1536,3 +1557,97 @@ fn decode_crust_openpbr(shader: &Shader, working: Space, luma: utils::Luma) -> A Arc::new(o) } + +#[cfg(test)] +mod binding_tests { + use super::*; + use crate::scene::usd_import::index::data::PrimData; + use crate::scene::usd_import::index::input_chain; + + /// The scene index's resolved bindings agree with the direct resolution + /// (`bound_material`) on every prim of `stage`, a purpose-binding sample + /// and the collection, strength and nested-binding fixtures included. + fn agree(stage: &Stage) -> usize { + let input = input_chain(stage.clone(), None, false); + let mut bound = 0; + let mut stack = vec![sdf::Path::abs_root()]; + while let Some(path) = stack.pop() { + if !path.is_abs_root() { + let prim = super::super::prim_at(stage, path.clone()); + let direct = bound_material(stage, &prim); + let index = index_bound_material(&PrimData::in_index(&input.chain, &path)); + assert_eq!(direct, index, "{path}"); + bound += usize::from(direct.is_some()); + } + stack.extend(input.chain.children(&path)); + } + bound + } + + fn open(text_or_sample: &str) -> Stage { + let path = if text_or_sample.ends_with(".usda") { + std::path::Path::new(env!("CARGO_MANIFEST_DIR")) + .join("../../samples") + .join(text_or_sample) + } else { + let dir = std::env::temp_dir().join("crust_binding_agreement"); + std::fs::create_dir_all(&dir).expect("temp dir"); + let path = dir.join(format!("{:016x}.usda", { + use std::hash::{Hash, Hasher}; + let mut h = std::collections::hash_map::DefaultHasher::new(); + text_or_sample.hash(&mut h); + h.finish() + })); + std::fs::write(&path, text_or_sample).expect("write stage"); + path + }; + super::super::stage_builder() + .load(openusd::usd::InitialLoadSet::LoadAll) + .open(path.to_str().expect("utf-8")) + .expect("stage opens") + } + + #[test] + fn index_bindings_agree_with_the_direct_resolution() { + for sample in [ + "purpose_bindings.usda", + "cornellbox.usda", + "instancing.usda", + "nested_instancing.usda", + "materialx_basic.usda", + "render_passes.usda", + ] { + agree(&open(sample)); + } + let fixture = r#"#usda 1.0 +def Xform "W" ( + prepend apiSchemas = ["MaterialBindingAPI", "CollectionAPI:set"] +) +{ + rel material:binding = + rel material:binding:full = (bindMaterialAs = "strongerThanDescendants") + rel material:binding:collection:pick = [, ] + prepend rel collection:set:includes = + def Mesh "Plain" (prepend apiSchemas = ["MaterialBindingAPI"]) + { + rel material:binding:full = + } + def Mesh "Picked" {} + def Xform "Deep" (prepend apiSchemas = ["MaterialBindingAPI"]) + { + rel material:binding = + def Mesh "Leaf" {} + } +} +def Scope "Looks" +{ + def Material "A" {} + def Material "B" {} + def Material "C" {} + def Material "D" {} + def Material "E" {} +} +"#; + assert!(agree(&open(fixture)) > 0, "the fixture binds something"); + } +} diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 8a9f2e226..13157b470 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -229,7 +229,7 @@ this group, and kept for the whole change. ## 9. Materials -- [ ] 9.1 Binding: read `materialBindings` for the render purpose, then the +- [x] 9.1 Binding: read `materialBindings` for the render purpose, then the all-purpose binding, from the material binding resolving filter. Check it against `winning_binding_target` with a test that runs both on `purpose_bindings.usda` and the binding fixtures, while the direct reader still exists. Verify parity green. From 640cf8fdf1e44f65f674c1c50845e533d08b6c09 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 02:38:24 +0100 Subject: [PATCH 32/95] scripts: import_parity.sh quotes its Python without apostrophes The prototype-number comment inside the single-quoted Python of strip_report held two apostrophes, which closed the quote: every run failed with a shell syntax error. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- scripts/import_parity.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/import_parity.sh b/scripts/import_parity.sh index f2cb100dc..c14dc870b 100755 --- a/scripts/import_parity.sh +++ b/scripts/import_parity.sh @@ -57,8 +57,8 @@ report = json.load(open(sys.argv[1])) report.pop("import", None) text = json.dumps(report, indent=2, sort_keys=True) text = text.replace(os.path.dirname(os.path.abspath(sys.argv[2])), "$DIR") -# The listed parity exception (spec import-parity): openusd numbers a stage's -# prototypes in the order they are first asked for, which the scene index's +# The listed parity exception (spec import-parity): openusd numbers the stage +# prototypes in the order they are first asked for, which the scene index # population walk changes; the number is not compared, the rest of the path is. text = re.sub(r"__Prototype_[0-9]+", "__Prototype_#", text) print(text) From 21198414b272a6d34bc87c2a9a29011aaf8db62e Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 02:38:24 +0100 Subject: [PATCH 33/95] crust-core tests: point instancers and native instances nested A PointInstancer inside an instance, and one whose prototype is itself an instance, whose mesh is then reached as an instance proxy, as ALab's vegetation nests them. The second is what the index reads lost on ALab (13 335 geometries became 10 272) and Moana: no sample nested them so. Baselines recorded from the direct importer (36537fed). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- ...d_prototype_usda-a6e21e932b375f53-1.digest | 24 ++++ ...ed_prototype_usda-a6e21e932b375f53-1.image | 1 + .../plants_usda-13efccc9d3dd87ec-1.digest | 25 ++++ .../plants_usda-13efccc9d3dd87ec-1.image | 1 + .../crust-core/tests/instanced_instancers.rs | 126 ++++++++++++++++++ 5 files changed, 177 insertions(+) create mode 100644 crates/crust-core/tests/data/import_baselines/instanced_prototype_usda-a6e21e932b375f53-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instanced_prototype_usda-a6e21e932b375f53-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/plants_usda-13efccc9d3dd87ec-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/plants_usda-13efccc9d3dd87ec-1.image create mode 100644 crates/crust-core/tests/instanced_instancers.rs diff --git a/crates/crust-core/tests/data/import_baselines/instanced_prototype_usda-a6e21e932b375f53-1.digest b/crates/crust-core/tests/data/import_baselines/instanced_prototype_usda-a6e21e932b375f53-1.digest new file mode 100644 index 000000000..fe83f4ee0 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instanced_prototype_usda-a6e21e932b375f53-1.digest @@ -0,0 +1,24 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(1.0, 0.0, 10.0), lower_left_corner: Vec3A(-1.7183647, -1.5290802, 0.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/instanced_prototype.usda"], invisible_overrides: Some(0) } +layer: $DIR/instanced_prototype.usda +lights: 0 +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:61e4350a67ec8255 camera=2:61e4350a67ec8255 shadow=2:61e4350a67ec8255 indirect=2:61e4350a67ec8255 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:802f8cea72d34ba8 camera=2:802f8cea72d34ba8 shadow=2:802f8cea72d34ba8 indirect=2:802f8cea72d34ba8 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6b2659e60b0616d8 camera=2:6b2659e60b0616d8 shadow=2:6b2659e60b0616d8 indirect=2:6b2659e60b0616d8 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:61e4350a67ec8255 camera=2:61e4350a67ec8255 shadow=2:61e4350a67ec8255 indirect=2:61e4350a67ec8255 +provenance geometry 0..3: /World/Leaves +provenance geometry 3..4: /LeafAsset/Geo +provenance mesh: MeshOrigin { geom_id: 3, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11573210918765220906, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instanced_prototype_usda-a6e21e932b375f53-1.image b/crates/crust-core/tests/data/import_baselines/instanced_prototype_usda-a6e21e932b375f53-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instanced_prototype_usda-a6e21e932b375f53-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/plants_usda-13efccc9d3dd87ec-1.digest b/crates/crust-core/tests/data/import_baselines/plants_usda-13efccc9d3dd87ec-1.digest new file mode 100644 index 000000000..4d2ff1c48 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plants_usda-13efccc9d3dd87ec-1.digest @@ -0,0 +1,25 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(1.0, 0.0, 10.0), lower_left_corner: Vec3A(-1.7183647, -1.5290802, 0.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/plants.usda"], invisible_overrides: Some(0) } +layer: $DIR/plants.usda +lights: 0 +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 8 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=6:7ca69eda007f03f8 camera=6:7ca69eda007f03f8 shadow=6:7ca69eda007f03f8 indirect=6:7ca69eda007f03f8 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=6:1994446865d41765 camera=6:1994446865d41765 shadow=6:1994446865d41765 indirect=6:1994446865d41765 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:61e4350a67ec8255 camera=2:61e4350a67ec8255 shadow=2:61e4350a67ec8255 indirect=2:61e4350a67ec8255 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:802f8cea72d34ba8 camera=2:802f8cea72d34ba8 shadow=2:802f8cea72d34ba8 indirect=2:802f8cea72d34ba8 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6b2659e60b0616d8 camera=2:6b2659e60b0616d8 shadow=2:6b2659e60b0616d8 indirect=2:6b2659e60b0616d8 +provenance geometry 0..1: /World/B +provenance geometry 1..2: /World/A +provenance geometry 2..5: /Plant/Leaves +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11573210918765220906, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/plants_usda-13efccc9d3dd87ec-1.image b/crates/crust-core/tests/data/import_baselines/plants_usda-13efccc9d3dd87ec-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/plants_usda-13efccc9d3dd87ec-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/instanced_instancers.rs b/crates/crust-core/tests/instanced_instancers.rs new file mode 100644 index 000000000..473cbb868 --- /dev/null +++ b/crates/crust-core/tests/instanced_instancers.rs @@ -0,0 +1,126 @@ +//! Point instancers and native instances nested in each other, as ALab's +//! vegetation nests them: a `PointInstancer` inside an instance, and one whose +//! prototype is itself an instance, whose prims are then reached as instance +//! proxies. Import parity compares each scene with the direct importer's +//! baseline (`parity`). + +use crust_core::{Scene, WarningCode}; + +const STAGE: &str = r#"#usda 1.0 +( + defaultPrim = "World" +) + +def Xform "Plant" ( + instanceable = true +) +{ + def PointInstancer "Leaves" + { + rel prototypes = [] + int[] protoIndices = [0, 0, 0] + point3f[] positions = [(0, 0, 0), (1, 0, 0), (2, 0, 0)] + def Scope "Prototypes" + { + def Mesh "Leaf" + { + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 2, 3] + point3f[] points = [(0, 0, 0), (0.5, 0, 0), (0.5, 0.5, 0), (0, 0.5, 0)] + uniform token subdivisionScheme = "none" + } + } + } +} + +def Xform "World" +{ + def Camera "Cam" + { + double3 xformOp:translate = (1, 0, 10) + uniform token[] xformOpOrder = ["xformOp:translate"] + } + def Xform "A" ( + prepend references = + instanceable = true + ) + { + } + def Xform "B" ( + prepend references = + instanceable = true + ) + { + double3 xformOp:translate = (0, 2, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + } +} +"#; + +#[test] +fn a_point_instancer_inside_an_instance_places_its_prototypes() { + let dir = std::env::temp_dir().join("crust_instanced_instancers"); + std::fs::create_dir_all(&dir).expect("temp dir"); + let path = dir.join("plants.usda"); + std::fs::write(&path, STAGE).expect("write stage"); + let scene = Scene::from_usd(&path).expect("imports"); + let empty = scene + .warnings + .iter() + .find(|w| w.code == WarningCode::InstancingEmptyPrototype); + assert!(empty.is_none(), "{empty:?}"); + assert!(scene.world.count() > 0, "the leaves are placed"); +} + +/// A point instancer whose prototype is an instanceable reference: the +/// prototype's mesh is an instance proxy under it. +const INSTANCED_PROTOTYPE: &str = r#"#usda 1.0 +def Xform "LeafAsset" +{ + def Mesh "Geo" + { + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 2, 3] + point3f[] points = [(0, 0, 0), (0.5, 0, 0), (0.5, 0.5, 0), (0, 0.5, 0)] + uniform token subdivisionScheme = "none" + } +} +def Xform "World" +{ + def Camera "Cam" + { + double3 xformOp:translate = (1, 0, 10) + uniform token[] xformOpOrder = ["xformOp:translate"] + } + def PointInstancer "Leaves" + { + rel prototypes = [] + int[] protoIndices = [0, 0, 0] + point3f[] positions = [(0, 0, 0), (1, 0, 0), (2, 0, 0)] + def Scope "Prototypes" + { + def Xform "Leaf" ( + prepend references = + instanceable = true + ) + { + } + } + } +} +"#; + +#[test] +fn an_instanced_point_instancer_prototype_is_read_through_its_proxies() { + let dir = std::env::temp_dir().join("crust_instanced_instancers"); + std::fs::create_dir_all(&dir).expect("temp dir"); + let path = dir.join("instanced_prototype.usda"); + std::fs::write(&path, INSTANCED_PROTOTYPE).expect("write stage"); + let scene = Scene::from_usd(&path).expect("imports"); + let empty = scene + .warnings + .iter() + .find(|w| w.code == WarningCode::InstancingEmptyPrototype); + assert!(empty.is_none(), "{empty:?}"); + assert!(scene.world.count() > 1, "the leaves are placed"); +} From af4cfa13f576aa4cb8d76c25d745759bd6659d85 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 02:46:08 +0100 Subject: [PATCH 34/95] crust-core: bridged readers name instance proxies through their prototype The instancing reader, still on the bridge, reaches a point instancer's instanced prototype through instance proxies, which a scene index (like UsdImaging's) does not hold, so the moved mesh, curve and shape readers found no data there. PrimData::bridged reads such a prim's data from its prototype prim (Prim::prim_in_prototype, the same composed prim), still names it by its proxy path, and walks its ancestors the same way. Transitional: it goes when instancing moves to Moho's instancing filters. ALab's geometries are 13 335 again; parity green. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/index/data.rs | 43 ++++++++++++++++--- .../src/scene/usd_import/index/walk.rs | 2 +- crates/crust-core/src/scene/usd_import/mod.rs | 4 +- 3 files changed, 39 insertions(+), 10 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/index/data.rs b/crates/crust-core/src/scene/usd_import/index/data.rs index 65ba00502..10b7fe01b 100644 --- a/crates/crust-core/src/scene/usd_import/index/data.rs +++ b/crates/crust-core/src/scene/usd_import/index/data.rs @@ -28,6 +28,9 @@ pub(in crate::scene::usd_import) struct PrimData { /// The index the prim was read from, when the reader may walk to its /// ancestors ([`PrimData::in_index`]). index: Option, + /// The stage a bridged reader walks, when it may name an instance proxy + /// ([`PrimData::bridged`]): a transitional field, gone with the bridge. + proxies: Option, } impl PrimData { @@ -40,6 +43,33 @@ impl PrimData { ty: prim.ty.as_str().to_owned(), data: prim.data, index: None, + proxies: None, + } + } + + /// The prim at `path` for a reader the bridge reaches (a prototype's + /// parts through the instancing reader), which may name an instance + /// proxy, a prim the scene index — like UsdImaging's — does not hold: its + /// data are its prototype prim's (`Prim::prim_in_prototype`, the same + /// composed prim), still named by `path`, and its ancestors are walked + /// the same way. Transitional: the instancing family's move to Moho's + /// instancing filters retires it. + pub(in crate::scene::usd_import) fn bridged( + index: &SceneIndexHandle, + stage: &moho::openusd::usd::Stage, + path: &sdf::Path, + ) -> Self { + let in_prototype = stage + .prim(path) + .ok() + .filter(|p| p.is_instance_proxy().unwrap_or(false)) + .and_then(|p| p.prim_in_prototype().ok().flatten()) + .map(|p| p.path().clone()); + let data_path = in_prototype.as_ref().unwrap_or(path); + PrimData { + path: path.clone(), + proxies: Some(stage.clone()), + ..PrimData::in_index(index, data_path) } } @@ -70,7 +100,11 @@ impl PrimData { /// [`PrimData::in_index`]; `None` at the root or without an index. pub(in crate::scene::usd_import) fn parent(&self) -> Option { let parent = self.path.parent()?; - Some(PrimData::in_index(self.index.as_ref()?, &parent)) + let index = self.index.as_ref()?; + Some(match &self.proxies { + Some(stage) => PrimData::bridged(index, stage, &parent), + None => PrimData::in_index(index, &parent), + }) } /// The path of attribute `name`, for a warning that names it. @@ -286,12 +320,7 @@ pub(in crate::scene::usd_import) fn color_space( .and_then(decode_text) .filter(|n| !n.is_empty()); let named = own.or_else(|| { - let mut at = Some(PrimData { - path: prim.path.clone(), - ty: prim.ty.clone(), - data: prim.data.clone(), - index: prim.index.clone(), - }); + let mut at = Some(prim.clone()); while let Some(p) = at.filter(|p| !p.path.is_abs_root()) { let named = p .value("colorSpace:name") diff --git a/crates/crust-core/src/scene/usd_import/index/walk.rs b/crates/crust-core/src/scene/usd_import/index/walk.rs index b8a437cf0..12a616da9 100644 --- a/crates/crust-core/src/scene/usd_import/index/walk.rs +++ b/crates/crust-core/src/scene/usd_import/index/walk.rs @@ -34,7 +34,7 @@ pub(in crate::scene::usd_import) fn walk(stage: &Stage, input: &Input, ctx: &mut if let Some(pass) = &mut ctx.pass { pass.begin_chunk(input); } - ctx.caches.scene = Some(input.chain.clone()); + ctx.caches.scene = Some((input.chain.clone(), stage.clone())); let mut stack: Vec<(sdf::Path, GMat4, bool, Timing)> = vec![( sdf::Path::abs_root(), GMat4::IDENTITY, diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index 8b31eddec..0210205be 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -2000,7 +2000,7 @@ struct ImportCaches<'a> { assets: &'a dyn AssetLoader, /// The chain of the input being walked ([`index::walk`]), set for the /// walk's duration so it does not keep a dropped chunk's stage alive. - scene: Option, + scene: Option<(moho::scene_index::SceneIndexHandle, Stage)>, /// Root layer, the fallback anchor for an asset path openusd handed back /// unresolved. stage_path: &'a Path, @@ -2140,7 +2140,7 @@ impl<'a> ImportCaches<'a> { /// prototype's parts through the instancing reader). fn prim_data(&self, path: &sdf::Path) -> index::data::PrimData { match &self.scene { - Some(scene) => index::data::PrimData::in_index(scene, path), + Some((scene, stage)) => index::data::PrimData::bridged(scene, stage, path), None => unreachable!("a reader reached outside a walk of the scene index"), } } From 61ee0b561b175236b8a5f105016ad951062bbddd Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 03:23:54 +0100 Subject: [PATCH 35/95] crust-core tests: a binding inside an instanced point-instancer prototype The prototype's mesh is an instance proxy, and the stage resolves its binding in the proxy's namespace. Baselines recorded from the direct importer (36537fed). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- ...d_prototype_usda-bb6c56b87e0b6d66-1.digest | 29 ++++++++ ...ed_prototype_usda-bb6c56b87e0b6d66-1.image | 1 + .../crust-core/tests/instanced_instancers.rs | 67 +++++++++++++++++++ 3 files changed, 97 insertions(+) create mode 100644 crates/crust-core/tests/data/import_baselines/bound_instanced_prototype_usda-bb6c56b87e0b6d66-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/bound_instanced_prototype_usda-bb6c56b87e0b6d66-1.image diff --git a/crates/crust-core/tests/data/import_baselines/bound_instanced_prototype_usda-bb6c56b87e0b6d66-1.digest b/crates/crust-core/tests/data/import_baselines/bound_instanced_prototype_usda-bb6c56b87e0b6d66-1.digest new file mode 100644 index 000000000..a0509758b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/bound_instanced_prototype_usda-bb6c56b87e0b6d66-1.digest @@ -0,0 +1,29 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(1.0, 0.0, 10.0), lower_left_corner: Vec3A(-1.7183647, -1.5290802, 0.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/bound_instanced_prototype.usda"], invisible_overrides: Some(0) } +layer: $DIR/bound_instanced_prototype.usda +lights: 0 +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:61e4350a67ec8255 camera=2:61e4350a67ec8255 shadow=2:61e4350a67ec8255 indirect=2:61e4350a67ec8255 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:802f8cea72d34ba8 camera=2:802f8cea72d34ba8 shadow=2:802f8cea72d34ba8 indirect=2:802f8cea72d34ba8 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6b2659e60b0616d8 camera=2:6b2659e60b0616d8 shadow=2:6b2659e60b0616d8 indirect=2:6b2659e60b0616d8 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:61e4350a67ec8255 camera=2:61e4350a67ec8255 shadow=2:61e4350a67ec8255 indirect=2:61e4350a67ec8255 +provenance material /LeafAsset/Looks/Green: MaterialOrigin { slots: [3], displaced: false } +provenance material /World/Leaves/Prototypes/Leaf/Looks/Green: MaterialOrigin { slots: [0, 1, 2], displaced: false } +provenance material read: ("/LeafAsset/Looks/Green", "/World/Leaves/Prototypes/Leaf/Looks/Green") +provenance material read: ("/LeafAsset/Looks/Green/Surface", "/World/Leaves/Prototypes/Leaf/Looks/Green") +provenance geometry 0..3: /World/Leaves +provenance geometry 3..4: /LeafAsset/Geo +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11573210918765220906, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11573210918765220906, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/bound_instanced_prototype_usda-bb6c56b87e0b6d66-1.image b/crates/crust-core/tests/data/import_baselines/bound_instanced_prototype_usda-bb6c56b87e0b6d66-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/bound_instanced_prototype_usda-bb6c56b87e0b6d66-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/instanced_instancers.rs b/crates/crust-core/tests/instanced_instancers.rs index 473cbb868..b2bbf811f 100644 --- a/crates/crust-core/tests/instanced_instancers.rs +++ b/crates/crust-core/tests/instanced_instancers.rs @@ -124,3 +124,70 @@ fn an_instanced_point_instancer_prototype_is_read_through_its_proxies() { assert!(empty.is_none(), "{empty:?}"); assert!(scene.world.count() > 1, "the leaves are placed"); } + +/// [`INSTANCED_PROTOTYPE`] with a material bound inside the instanced asset: +/// its binding is resolved in the proxy's namespace, as the stage names it. +const BOUND_INSTANCED_PROTOTYPE: &str = r#"#usda 1.0 +def Xform "LeafAsset" +{ + def Mesh "Geo" (prepend apiSchemas = ["MaterialBindingAPI"]) + { + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 2, 3] + point3f[] points = [(0, 0, 0), (0.5, 0, 0), (0.5, 0.5, 0), (0, 0.5, 0)] + uniform token subdivisionScheme = "none" + rel material:binding = + } + def Scope "Looks" + { + def Material "Green" + { + token outputs:surface.connect = + def Shader "Surface" + { + uniform token info:id = "UsdPreviewSurface" + color3f inputs:diffuseColor = (0.1, 0.6, 0.1) + token outputs:surface + } + } + } +} +def Xform "World" +{ + def Camera "Cam" + { + double3 xformOp:translate = (1, 0, 10) + uniform token[] xformOpOrder = ["xformOp:translate"] + } + def PointInstancer "Leaves" + { + rel prototypes = [] + int[] protoIndices = [0, 0, 0] + point3f[] positions = [(0, 0, 0), (1, 0, 0), (2, 0, 0)] + def Scope "Prototypes" + { + def Xform "Leaf" ( + prepend references = + instanceable = true + ) + { + } + } + } +} +"#; + +#[test] +fn a_binding_inside_an_instanced_prototype_is_named_in_the_proxys_namespace() { + let dir = std::env::temp_dir().join("crust_instanced_instancers"); + std::fs::create_dir_all(&dir).expect("temp dir"); + let path = dir.join("bound_instanced_prototype.usda"); + std::fs::write(&path, BOUND_INSTANCED_PROTOTYPE).expect("write stage"); + let scene = Scene::from_usd(&path).expect("imports"); + let fallback = scene + .warnings + .iter() + .find(|w| w.code == WarningCode::MaterialFallbackDefault); + assert!(fallback.is_none(), "{fallback:?}"); + assert!(scene.world.count() > 1, "the leaves are placed"); +} From 848457c50a3da95fed9643024991d2719c28f332 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 03:23:54 +0100 Subject: [PATCH 36/95] crust-core: a bridged proxy's binding is named in the proxy's namespace A proxy's data are its prototype prim's, so the scene index resolves its material binding to a path in the prototype (/__Prototype_N/...), where the stage names the same material under the instance. ALab's bonsai prototypes then resolved their materials under other keys, which changed the provenance and how meshes were shared. The binding's target is moved from the prototype root to the instance root, as the stage names it. ALab's digest now matches the direct importer's but for one line (an `over Camera`, reported separately). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/index/data.rs | 31 +++++++++++++++++++ .../src/scene/usd_import/materials.rs | 4 ++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/crates/crust-core/src/scene/usd_import/index/data.rs b/crates/crust-core/src/scene/usd_import/index/data.rs index 10b7fe01b..d4ae0599c 100644 --- a/crates/crust-core/src/scene/usd_import/index/data.rs +++ b/crates/crust-core/src/scene/usd_import/index/data.rs @@ -31,6 +31,9 @@ pub(in crate::scene::usd_import) struct PrimData { /// The stage a bridged reader walks, when it may name an instance proxy /// ([`PrimData::bridged`]): a transitional field, gone with the bridge. proxies: Option, + /// For an instance proxy, `(prototype root, instance root)`: where the + /// prim's data were read, and where the proxy's namespace puts them. + proxy_roots: Option<(sdf::Path, sdf::Path)>, } impl PrimData { @@ -44,6 +47,7 @@ impl PrimData { data: prim.data, index: None, proxies: None, + proxy_roots: None, } } @@ -66,13 +70,40 @@ impl PrimData { .and_then(|p| p.prim_in_prototype().ok().flatten()) .map(|p| p.path().clone()); let data_path = in_prototype.as_ref().unwrap_or(path); + // The two roots: strip the components the paths share at their ends. + let proxy_roots = in_prototype.as_ref().map(|proto| { + let (mut a, mut b) = (proto.clone(), path.clone()); + while a.name() == b.name() + && let (Some(pa), Some(pb)) = (a.parent(), b.parent()) + && !pa.is_abs_root() + { + (a, b) = (pa, pb); + } + (a, b) + }); PrimData { path: path.clone(), proxies: Some(stage.clone()), + proxy_roots, ..PrimData::in_index(index, data_path) } } + /// A path the prim's data name (a material binding's target), in the + /// namespace the prim is named in: for an instance proxy, a path inside + /// its prototype moved under the instance, as the stage names it there. + pub(in crate::scene::usd_import) fn in_own_namespace(&self, target: sdf::Path) -> sdf::Path { + let Some((proto, instance)) = &self.proxy_roots else { + return target; + }; + target + .as_str() + .strip_prefix(proto.as_str()) + .filter(|rest| rest.is_empty() || rest.starts_with('/') || rest.starts_with('.')) + .and_then(|rest| sdf::Path::new(format!("{instance}{rest}").as_str()).ok()) + .unwrap_or(target) + } + /// [`PrimData::at`], keeping `index` so the reader can walk to the /// prim's ancestors ([`PrimData::parent`]). pub(in crate::scene::usd_import) fn in_index( diff --git a/crates/crust-core/src/scene/usd_import/materials.rs b/crates/crust-core/src/scene/usd_import/materials.rs index 8ded9fe87..fdb32cafa 100644 --- a/crates/crust-core/src/scene/usd_import/materials.rs +++ b/crates/crust-core/src/scene/usd_import/materials.rs @@ -293,7 +293,9 @@ pub(super) fn index_bound_material(prim: &super::index::data::PrimData) -> Optio .locate([t::MATERIAL_BINDINGS, purpose, t::PATH])? .value()? { - sdf::Value::PathVec(mut paths) if paths.len() == 1 => paths.pop(), + sdf::Value::PathVec(mut paths) if paths.len() == 1 => { + paths.pop().map(|p| prim.in_own_namespace(p)) + } _ => None, } }) From 30de0a1f56829ba3f02d9797ee907489ae6a0131 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 03:41:29 +0100 Subject: [PATCH 37/95] openspec: moho-import records the gaps found migrating, and a progress run Two Moho gaps block the families still on the bridge: __usdPrimInfo lacks Hydra's typeName and apiSchemas (unsupported-type and unknown-type warnings, DomeLight against DomeLight_1, ShapingAPI's cone fallback, the --pass error), and a sampled data source gives no sample times at the default time (the time-sampled-transform warnings without -f). The open questions gain undefined prims (ALab's `over Camera`). The usd-scene-import design record keeps the progress run: ALab and Moana reports and images equal their baselines; ALab's memory 1.93x, Moana's 1.01x. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/design.md | 34 +++++++++++++++++++++++ openspec/specs/usd-scene-import/design.md | 18 ++++++++++++ 2 files changed, 52 insertions(+) diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index 6b49b566f..a3db4ea89 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -383,6 +383,30 @@ all of them, with tests, and merged into Moho's `main` at `fc391a5`, the rev Cru input's children in its own order, then the prims implied by deeper roots. D5 still does not rely on it above a chunk root. +### Moho-side gaps found while migrating (open) + +Moving the families onto the index found two more gaps. Each blocks the readers that +need it; none is worked around in Crust. + +- **M8. The USD prim type and applied API schemas.** Hydra's `__usdPrimInfo` + (`UsdImagingUsdPrimInfoSchema`) carries `typeName` and `apiSchemas` (with `specifier` + and `kind`); Moho's carries only the native-instancing entries. Crust needs the USD + type where a Hydra type does not tell it: the `geom.unsupported_type` warning counts + unread Gprims by USD type (an `IsA Gprim` test on it), `xform.unknown_type` warns on a + type the schema registry does not know, `DomeLight` and `DomeLight_1` share the Hydra + type `domeLight` but read different attributes, and a bad `--pass` error names the + USD type. A light's `ShapingAPI` changes its cone fallback, which needs the applied + API schemas. Until then those readers stay on the bridge (the `--pass` error reads + the stage in `stage_facts`). +- **M9. Time variance at the default time.** A sampled data source answers + `sample_times` only when the index has a time, so at the default time (a render + without `-f`) a consumer cannot ask whether a transform might vary. Crust warns about + time-sampled transforms over a shutter with no frame (`time.motion_needs_frame`, + `camera.shutter_instantaneous`), which needs it. The transform family (5.1, 5.2) + waits on it. (Crust also composes transforms in `f32` from `f64` locals; reading + Moho's local `xform/matrix` rather than the flattened world matrix keeps those bits, + so that part needs nothing from Moho.) + ## Risks / Trade-offs - **[Visit order differs, so geometry ids differ, so the image differs]** → D5 walks @@ -439,6 +463,16 @@ all of them, with tests, and merged into Moho's `main` at `fc391a5`, the rev Cru ## Open Questions +- **Undefined prims.** The direct importer walked every prim, defined or not; the scene + index, like UsdImaging, holds only defined ones (`active`, `defined`, not abstract). + An `over`-only prim is not defined in USD, but the direct importer read it by its type: + ALab's `trailer_cameras` layers author `over Camera "renderCam"` under their camera + rigs, and the direct importer listed those as cameras one could render through + (`cameras` in the provenance, the alternatives a missing `--camera` error names). The + index import does not. Adopt USD's rule as a behavioural change (re-baselining ALab's + digest), or keep it as a listed parity exception? Left to the user; until decided it is + reported, not normalised. (A test fixture relied on it by accident, authoring two specs + of one prim in one layer; it was corrected.) - **Primvar inheritance.** USD (and Hydra's flattening) makes an ancestor's constant primvar visible to descendants, and Crust reads a prim's own only. Adopting inheritance is a behavioural change to `usd-scene-import`, proposed separately after diff --git a/openspec/specs/usd-scene-import/design.md b/openspec/specs/usd-scene-import/design.md index 39db35306..555cd939a 100644 --- a/openspec/specs/usd-scene-import/design.md +++ b/openspec/specs/usd-scene-import/design.md @@ -1631,6 +1631,24 @@ Moho's streaming spike on Moana, the reference for streaming memory (D) holds (B)'s memory bound within 0.38 GiB and reads every prim's data through the index, six times slower than raw reads. +### Progress run (settings to curves on the index) + +`scripts/import_parity.sh check` on the same machine at `848457c5`, where settings, +products, passes, cameras, meshes, implicit shapes, spheres, curves, volume regions and +material bindings read the scene index, and transforms, materials, lights and instancing +still read through the bridge: + +| scene | report and 16 spp image | peak memory (ratio) | `Parse USD stage` (ratio) | +|---|---|---|---| +| ALab | equal | 21.12 GiB (1.93) | 46.90 s (1.51) | +| Moana | equal | 24.22 GiB (1.01) | 210.14 s (1.21) | + +ALab's digest matches the direct importer's but for the cameras the provenance lists: +an `over Camera` the direct importer counted is not a defined prim, so the index does +not hold it (the change's open question "Undefined prims"). ALab's memory doubles: every +stage scene index caches every prim it populates, and the single-stage import keeps its +index for the whole walk. Reported, not gated. + ## Provenance and in-place rebuilds An imported `Scene` carries `provenance` (`crust_core::live::Provenance`): which `World` From 649ce494e0a272531585fd73109518cd72ab9293 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 05:44:12 +0100 Subject: [PATCH 38/95] openspec: moho-import does not import undefined prims, its one behaviour change The user's decision: as USD and UsdImaging have it, an `over` no layer defines is not imported, where the direct importer read it by its type. Recorded as D3a, in scene-index-import (with a scenario) and in the parity rule for re-recording a baseline. It changes no committed baseline (the one fixture that met it was malformed and corrected); on ALab it drops three `over Camera` prims from the provenance's cameras only. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/design.md | 24 +++++++++++-------- .../moho-import/specs/import-parity/spec.md | 3 +++ .../specs/scene-index-import/spec.md | 8 +++++++ 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index a3db4ea89..cef048687 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -169,6 +169,20 @@ bridge, `EvalTimeScope` and the prototype epoch are deleted together in the fina group, once every family reads the index and parity holds on the samples, fixtures, ALab and Moana. +### D3a. The one behaviour change: undefined prims are not imported + +The direct importer walked every prim, defined or not, and read an `over`-only prim by +its type. USD defines no such prim, and the scene index, like UsdImaging, holds only +defined ones (`active`, `defined`, not abstract). The user's decision: the import follows +USD's rule, and an `over` with no `def` anywhere is not imported. It is the one change +of behaviour this change makes. On the committed samples and fixtures it changes no +baseline: the one fixture that met it authored two specs of one prim in one layer by +accident, and was corrected rather than re-baselined. On ALab it drops three cameras the +direct importer listed from the provenance (`over Camera "renderCam"` under the +`trailer_cameras` rigs), which the recorded `crust check` report and image do not show; +nothing else changes. A baseline that changes for this reason only is re-recorded, and +each such change is checked to be explained by it. + ### D4. Index layout: S0's merged index, the consumer deciding what is in - **Single stage** (fewer than 4 subtrees, or `CRUST_STREAM_IMPORT=0`): one @@ -463,16 +477,6 @@ need it; none is worked around in Crust. ## Open Questions -- **Undefined prims.** The direct importer walked every prim, defined or not; the scene - index, like UsdImaging, holds only defined ones (`active`, `defined`, not abstract). - An `over`-only prim is not defined in USD, but the direct importer read it by its type: - ALab's `trailer_cameras` layers author `over Camera "renderCam"` under their camera - rigs, and the direct importer listed those as cameras one could render through - (`cameras` in the provenance, the alternatives a missing `--camera` error names). The - index import does not. Adopt USD's rule as a behavioural change (re-baselining ALab's - digest), or keep it as a listed parity exception? Left to the user; until decided it is - reported, not normalised. (A test fixture relied on it by accident, authoring two specs - of one prim in one layer; it was corrected.) - **Primvar inheritance.** USD (and Hydra's flattening) makes an ancestor's constant primvar visible to descendants, and Crust reads a prim's own only. Adopting inheritance is a behavioural change to `usd-scene-import`, proposed separately after diff --git a/openspec/changes/moho-import/specs/import-parity/spec.md b/openspec/changes/moho-import/specs/import-parity/spec.md index 2eb95f985..b25020aa6 100644 --- a/openspec/changes/moho-import/specs/import-parity/spec.md +++ b/openspec/changes/moho-import/specs/import-parity/spec.md @@ -42,6 +42,9 @@ An import SHALL equal its baseline when all of these hold: - its render at `-s 16 --indirect-clamp 0` is bitwise equal. No tolerance SHALL apply. A difference SHALL be fixed, or listed here with its reason. +Undefined prims are not imported (the change's one behaviour change, in +`scene-index-import`): a baseline that differs for that reason only SHALL be re-recorded, +each changed baseline checked to be explained by it. The one listed exception SHALL be the number openusd gives a native prototype (`/__Prototype_`): openusd numbers a stage's prototypes in the order they are first asked for, the scene index's population walk asks in another order than the direct diff --git a/openspec/changes/moho-import/specs/scene-index-import/spec.md b/openspec/changes/moho-import/specs/scene-index-import/spec.md index b7b82cf0b..62b9419e4 100644 --- a/openspec/changes/moho-import/specs/scene-index-import/spec.md +++ b/openspec/changes/moho-import/specs/scene-index-import/spec.md @@ -59,6 +59,9 @@ same thing, as recorded in the baselines (`import-parity`): - the same prims pruned (abstract, inactive, `proxy`/`guide` purpose, invisible), with invisible subtrees still searched for cameras. +The one exception SHALL be undefined prims: an `over` that no layer defines SHALL NOT be +imported, as USD and UsdImaging have it, where the direct importer read it by its type. + Renderer attributes (`crust:*`) SHALL be read from the scene index's generic attribute data, with the same authored-versus-fallback rule as the direct importer. @@ -74,6 +77,11 @@ data, with the same authored-versus-fallback rule as the direct importer. - **THEN** the light and the proxies are not imported, and `--camera` can still name the rig's camera, as with the direct importer +#### Scenario: An undefined prim + +- **WHEN** a layer authors `over Camera "renderCam"` and no layer defines that prim +- **THEN** the import does not hold it: it is no camera the render can go through + #### Scenario: Warnings - **WHEN** a stage's baseline records warnings from the direct importer From c9bf19a8639ba8df96a98c0ca5ae0a8bda9843d2 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 05:44:30 +0100 Subject: [PATCH 39/95] openspec: moho-import D3a names the one ALab camera undefined prims drop Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/design.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index cef048687..28ea6e592 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -177,7 +177,7 @@ defined ones (`active`, `defined`, not abstract). The user's decision: the impor USD's rule, and an `over` with no `def` anywhere is not imported. It is the one change of behaviour this change makes. On the committed samples and fixtures it changes no baseline: the one fixture that met it authored two specs of one prim in one layer by -accident, and was corrected rather than re-baselined. On ALab it drops three cameras the +accident, and was corrected rather than re-baselined. On ALab it drops one camera the direct importer listed from the provenance (`over Camera "renderCam"` under the `trailer_cameras` rigs), which the recorded `crust check` report and image do not show; nothing else changes. A baseline that changes for this reason only is re-recorded, and From e92598ea7437e7b2ac9263e222ec264053912064 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 07:08:13 +0100 Subject: [PATCH 40/95] parity: the image run lists the guided Cornell box, nondeterministic on both routes guided_tiles_and_rows_are_bit_identical renders cornellbox_guided.usda with another hash in about 1 run in 6, on the direct importer too, while its digest always matches: not an import difference. The expected list takes a reason after `#`, a listed test's `parity:` panic no longer fails the run, and the design records the cause as a crust-render follow-up. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/design.md | 10 ++++++++++ scripts/parity_images.expected | 1 + scripts/parity_images.sh | 22 ++++++++++++++++------ 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index 28ea6e592..51b9f7ddb 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -362,6 +362,16 @@ A difference that is correct (for example a Hydra semantic Crust should adopt) i let through. It is recorded under Open Questions and left for its own behavioural change. +The image run (`scripts/parity_images.sh`) lists the tests it expects to fail in +`scripts/parity_images.expected`, each with its reason. All but one fail because the +second import and its render are visible to them (asset requests, log lines, timings). +The exception is `guided_tiles_and_rows_are_bit_identical`. Its `cornellbox_guided.usda` +image differs from the baseline in about 1 run in 6, always with the same other hash, +on the direct importer as on the index import. Its digest always matches. Guided +rendering is nondeterministic there; that is not an import difference. It is listed so +that the run stays meaningful, and its cause is a crust-render follow-up to investigate +separately, outside this change. + ### Moho-side follow-ups (closed in Moho's `scene-index-gaps`) Planning this change found seven gaps in Moho. Moho's change `scene-index-gaps` closed diff --git a/scripts/parity_images.expected b/scripts/parity_images.expected index 6e1e100ce..fb11e3c92 100644 --- a/scripts/parity_images.expected +++ b/scripts/parity_images.expected @@ -15,6 +15,7 @@ ctrl_c_writes_the_partial_render_and_exits_130 displaced_at_cage_logs_once_and_counts_every_mesh dome_texture_is_resolved_and_requested_from_the_host every_sample_imports_as_its_baseline +guided_tiles_and_rows_are_bit_identical # guided rendering is nondeterministic (about 1 run in 6, the direct importer's too); not an import difference materialx_textures_reach_the_host_with_their_udim_token only_meshes_open_displacement_maps overscan_is_clipped_with_one_warning diff --git a/scripts/parity_images.sh b/scripts/parity_images.sh index d0cbabbfb..566519ec8 100755 --- a/scripts/parity_images.sh +++ b/scripts/parity_images.sh @@ -12,9 +12,10 @@ # Cargo.toml) to keep the build short. The second import and its render are # visible to the few tests that count asset requests or log lines, time a # render, or render a material that panics on purpose; those fail in this mode -# and are listed in scripts/parity_images.expected. The run passes when no -# import differs from its baseline (no `parity:` panic) and every other failure -# is a listed one. +# and are listed in scripts/parity_images.expected (`#` starts a comment +# there, giving each entry's reason). The run passes when no import differs +# from its baseline (no `parity:` panic, except in a listed test) and every +# other failure is a listed one. set -uo pipefail cd "$(dirname "$0")/.." @@ -29,13 +30,22 @@ CARGO_PROFILE_RELEASE_LTO=false CARGO_PROFILE_RELEASE_CODEGEN_UNITS=16 \ cargo test --release --workspace --no-fail-fast >"$LOG" 2>&1 status=0 -if grep -q "panicked at crates/crust-core/src/parity.rs" "$LOG"; then +expected="$(sed 's/#.*//; s/[[:space:]]*$//; /^$/d' scripts/parity_images.expected | sort -u)" +# A `parity:` panic in a listed test is that test's listed failure. +differ="$(grep -A3 "panicked at crates/crust-core/src/parity.rs" "$LOG" \ + | LISTED="$expected" awk ' + BEGIN { n = split(ENVIRON["LISTED"], l, "\n"); for (i = 1; i <= n; i++) skip[l[i]] = 1 } + /panicked at crates\/crust-core\/src\/parity.rs/ { + name = $0; sub(/^thread \047/, "", name); sub(/\047.*/, "", name); keep = !(name in skip); next + } + keep && /^parity:|baseline:|import:/ { print }')" +if [ -n "$differ" ]; then echo "IMPORTS DIFFER FROM THEIR BASELINES:" - grep -A3 "panicked at crates/crust-core/src/parity.rs" "$LOG" | grep "^parity:\|baseline:\|import:" | head -60 + printf '%s\n' "$differ" | head -60 status=1 fi failed="$(grep -E '^test .* FAILED$' "$LOG" | sed 's/^test //; s/ \.\.\. FAILED$//' | sort -u)" -unexpected="$(comm -23 <(printf '%s\n' "$failed" | sed '/^$/d') <(sort -u scripts/parity_images.expected))" +unexpected="$(comm -23 <(printf '%s\n' "$failed" | sed '/^$/d') <(printf '%s\n' "$expected"))" if [ -n "$unexpected" ]; then echo "TESTS FAILING THAT ARE NOT EXPECTED TO IN THIS MODE:" printf '%s\n' "$unexpected" From 3e0945755e29a68fca1fc63204690f2ef0375c5a Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 07:08:29 +0100 Subject: [PATCH 41/95] openspec: moho-import records M10, a network node outside a chunk's mask Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/design.md | 12 +++++++++++- openspec/changes/moho-import/tasks.md | 4 +++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index 51b9f7ddb..d327874c1 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -409,7 +409,7 @@ all of them, with tests, and merged into Moho's `main` at `fc391a5`, the rev Cru ### Moho-side gaps found while migrating (open) -Moving the families onto the index found two more gaps. Each blocks the readers that +Moving the families onto the index found three more gaps. Each blocks the readers that need it; none is worked around in Crust. - **M8. The USD prim type and applied API schemas.** Hydra's `__usdPrimInfo` @@ -430,6 +430,16 @@ need it; none is worked around in Crust. waits on it. (Crust also composes transforms in `f32` from `f64` locals; reading Moho's local `xform/matrix` rather than the flattened world matrix keeps those bits, so that part needs nothing from Moho.) +- **M10. A network node outside a chunk's mask.** On a stage masked to a chunk, Moho's + `material` network drops an input whose upstream shader is off the stage: neither the + node nor the connection is there, so `streaming::unresolved` cannot list the node and + the side input (D4) never brings it in. A streamed material wired to a shared node + outside its chunk then loses that input (`usd_scene.rs`, + `a_streamed_material_reads_a_shared_node_outside_its_subtree`), where the direct + reader composes the node. Moho will keep such a connection, naming the node by its + absolute path, and fill the node after the merge from the prim at that path, as light + linking runs after the merge. The material networks (9.2) wait on it, kept off the + branch until then. ## Risks / Trade-offs diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 13157b470..cb40c70be 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -239,7 +239,9 @@ this group, and kept for the whole change. connections feed `preview` (`UsdPreviewSurface`, `UsdUVTexture`, primvar readers), `mtlx_network` (inline `ND_*`), `PxrDisneyBsdf` and `PxrDisplace`. `crust:openpbr` is read from the material's generic data. Verify parity green on every `materialx_*`, - `openpbr_showcase.usda`, `ptex_quads.usda` and `mtlx_surfaces.rs`. + `openpbr_showcase.usda`, `ptex_quads.usda` and `mtlx_surfaces.rs`. Waits on Moho's M10 + (design, "Moho-side gaps found while migrating"); also verify + `a_streamed_material_reads_a_shared_node_outside_its_subtree` in `usd_scene.rs`. - [ ] 9.3 `.mtlx` references: read the arc through `stage_facts` (D7) as `mtlx_reference` does, unless `mtlx-format-plugin` has landed, in which case the composed shader prims are read like any network. Verify parity green on From 89ebbe1d2d3e2732f56ae30ab6acf5422a341de6 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 07:30:30 +0100 Subject: [PATCH 42/95] crust: the .mtlx reference arc is read in stage_facts (9.3) A material's reference to a .mtlx file composes nothing without a MaterialX file-format plugin, so the index has nothing to carry: the arc is read off the layer specs, as before, from the one module that holds the import's reads of what is not scene description (design D7). It moves to the composed shader prims when mtlx-format-plugin lands. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/index/stage_facts.rs | 83 ++++++++++++++++++- .../src/scene/usd_import/materials.rs | 70 +--------------- openspec/changes/moho-import/tasks.md | 2 +- 3 files changed, 83 insertions(+), 72 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs index 4ecaa13e2..9c5e7214d 100644 --- a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs +++ b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs @@ -1,7 +1,8 @@ //! What the import reads from a stage that is not scene description (design //! D7), kept in one place so every such read is visible: the layers a scene -//! composed, the files of its root layer stack, and the `invisible` overrides -//! its strongest layer authors. They describe the stage's files and layer +//! composed, the files of its root layer stack, the `invisible` overrides +//! its strongest layer authors, and a material's `.mtlx` reference, an arc +//! that composes nothing ([`mtlx_reference`]). They describe the stage's files and layer //! specs — a host's business, not a scene index's — so they are read from the //! stage, never from Moho. A stage-wide fact Moho does carry is read there: //! the time range's authored-ness, from the absolute root's @@ -144,3 +145,81 @@ pub(in crate::scene::usd_import) fn not_a_pass(stage: &Stage, pass: &sdf::Path) _ => "a typeless prim is not a RenderPass".to_string(), } } + +/// The `.mtlx` file and material node a `Material` prim references, if any. +/// +/// Read off the *layer specs* rather than the composed prim, because there is +/// nothing composed to read: without a MaterialX file-format plugin the +/// reference resolves to no layer at all, so the arc survives only as authored +/// metadata. The first `.mtlx` found wins. +/// +/// Not scene description the index can give (design D7): the arc to a file no +/// file-format plugin reads composes nothing, so Moho has nothing to carry. +/// It moves to the composed shader prims when `mtlx-format-plugin` lands. +pub(in crate::scene::usd_import) fn mtlx_reference( + stage: &Stage, + mat_path: &sdf::Path, +) -> Option<(std::path::PathBuf, String)> { + // The composed stage path is not where the reference is *authored*: a shot + // layer referencing `teapot.usda` sees the material at + // `/World/Teapot/Looks/TeapotCeramic`, while the arc is authored at + // `/Teapot/Looks/TeapotCeramic` inside the asset layer. Only the prim's + // composition graph knows both, so the candidate spec paths come from its + // nodes rather than from the stage path. + let mut paths = vec![mat_path.clone()]; + if let Ok(graph) = super::super::prim_at(stage, mat_path.clone()) + .prim_index() + .graph() + { + for node in graph.all_nodes() { + let p = node.path().clone(); + if !paths.contains(&p) { + paths.push(p); + } + } + } + + for id in stage.layer_identifiers() { + let Some(layer) = stage.layer(&id) else { + continue; + }; + // Every candidate path against every layer. The cross product is a + // handful of lookups — a material's graph has a few nodes and a stage + // a few layers — and it sidesteps having to map a node's `LayerId` + // back to an identifier, which openusd does not expose. + for path in &paths { + let Ok(Some(spec)) = layer.prim(path.clone()) else { + continue; + }; + let Ok(Some(sdf::Value::ReferenceListOp(list))) = spec.field("references") else { + continue; + }; + // Every list-op bucket, because which one a reference lands in + // depends on whether it was authored as `prepend`, `append` or a + // bare assignment — and all three mean "this material is that + // document". + let items = list + .explicit_items() + .iter() + .chain(list.prepended_items().iter()) + .chain(list.appended_items().iter()) + .chain(list.added_items().iter()); + for r in items { + if !r.asset_path.to_ascii_lowercase().ends_with(".mtlx") { + continue; + } + // Anchored against the *authoring layer's* directory, the same + // rule `asset_path` follows for textures and for the + // same reason: `Looks/teapot_ceramic_ldX.mtlx` is relative to + // `teapot.usda`, which need not be the stage root. + let base = std::path::Path::new(&id).parent()?.to_path_buf(); + let file = base.join(&r.asset_path); + let node = crate::materialx::material_node_of(r.prim_path.as_str()) + .unwrap_or_default() + .to_string(); + return Some((file, node)); + } + } + } + None +} diff --git a/crates/crust-core/src/scene/usd_import/materials.rs b/crates/crust-core/src/scene/usd_import/materials.rs index fdb32cafa..fcecad20a 100644 --- a/crates/crust-core/src/scene/usd_import/materials.rs +++ b/crates/crust-core/src/scene/usd_import/materials.rs @@ -918,7 +918,7 @@ fn resolve_material_uncached( // stage of ordinary USD materials should not pay for that. macro_rules! try_mtlx { () => { - if let Some((file, node)) = mtlx_reference(stage, mat_path) + if let Some((file, node)) = super::index::stage_facts::mtlx_reference(stage, mat_path) && let Some(m) = load_mtlx_material(&file, &node, mat_path, caches) { debug!( @@ -1256,74 +1256,6 @@ fn disney_to_openpbr( o } -/// The `.mtlx` file and material node a `Material` prim references, if any. -/// -/// Read off the *layer specs* rather than the composed prim, because there is -/// nothing composed to read: without a MaterialX file-format plugin the -/// reference resolves to no layer at all, so the arc survives only as authored -/// metadata. The first `.mtlx` found wins. -fn mtlx_reference(stage: &Stage, mat_path: &sdf::Path) -> Option<(std::path::PathBuf, String)> { - // The composed stage path is not where the reference is *authored*: a shot - // layer referencing `teapot.usda` sees the material at - // `/World/Teapot/Looks/TeapotCeramic`, while the arc is authored at - // `/Teapot/Looks/TeapotCeramic` inside the asset layer. Only the prim's - // composition graph knows both, so the candidate spec paths come from its - // nodes rather than from the stage path. - let mut paths = vec![mat_path.clone()]; - if let Ok(graph) = prim_at(stage, mat_path.clone()).prim_index().graph() { - for node in graph.all_nodes() { - let p = node.path().clone(); - if !paths.contains(&p) { - paths.push(p); - } - } - } - - for id in stage.layer_identifiers() { - let Some(layer) = stage.layer(&id) else { - continue; - }; - // Every candidate path against every layer. The cross product is a - // handful of lookups — a material's graph has a few nodes and a stage - // a few layers — and it sidesteps having to map a node's `LayerId` - // back to an identifier, which openusd does not expose. - for path in &paths { - let Ok(Some(spec)) = layer.prim(path.clone()) else { - continue; - }; - let Ok(Some(sdf::Value::ReferenceListOp(list))) = spec.field("references") else { - continue; - }; - // Every list-op bucket, because which one a reference lands in - // depends on whether it was authored as `prepend`, `append` or a - // bare assignment — and all three mean "this material is that - // document". - let items = list - .explicit_items() - .iter() - .chain(list.prepended_items().iter()) - .chain(list.appended_items().iter()) - .chain(list.added_items().iter()); - for r in items { - if !r.asset_path.to_ascii_lowercase().ends_with(".mtlx") { - continue; - } - // Anchored against the *authoring layer's* directory, the same - // rule `asset_path` follows for textures and for the - // same reason: `Looks/teapot_ceramic_ldX.mtlx` is relative to - // `teapot.usda`, which need not be the stage root. - let base = std::path::Path::new(&id).parent()?.to_path_buf(); - let file = base.join(&r.asset_path); - let node = crate::materialx::material_node_of(r.prim_path.as_str()) - .unwrap_or_default() - .to_string(); - return Some((file, node)); - } - } - } - None -} - /// Parses a `.mtlx` and turns the named material node into a [`Material`]. /// /// Asset paths inside the document are relative to the document itself (the diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index cb40c70be..b69187b4b 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -242,7 +242,7 @@ this group, and kept for the whole change. `openpbr_showcase.usda`, `ptex_quads.usda` and `mtlx_surfaces.rs`. Waits on Moho's M10 (design, "Moho-side gaps found while migrating"); also verify `a_streamed_material_reads_a_shared_node_outside_its_subtree` in `usd_scene.rs`. -- [ ] 9.3 `.mtlx` references: read the arc through `stage_facts` (D7) as +- [x] 9.3 `.mtlx` references: read the arc through `stage_facts` (D7) as `mtlx_reference` does, unless `mtlx-format-plugin` has landed, in which case the composed shader prims are read like any network. Verify parity green on `materialx_teapot.usda` and `materialx_lion.usda`. From 87816b44adc6d0ad7801a320247d3a2315cdb379 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 08:17:41 +0100 Subject: [PATCH 43/95] deps: moho at 788b1ac (M8, M9, M10) and openusd repointed to Moho's fork at d7d2a29 Moho's main at 788b1ac carries M8 (__usdPrimInfo typeName, specifier, apiSchemas, kind, isLoaded), M9 (mightBeTimeVarying), M10 (off-mask material nodes, resolved after the merge) and its repin of openusd to doubleailes/openusd d7d2a29 (upstream 0a4bb1b plus mxpv/openusd#175's clip fixes). The patch moves to that fork and rev in the same commit, so the build keeps one openusd (Cargo.lock, cargo tree -i, one_openusd.rs). The API moves met: Shader::id() is node_def().shader_id() (the raw info:id fallback is kept, so a non-id implementation source still reads as before); conform_aperture takes an Option policy; RenderSpec paths are sdf::Path; the RenderPass collection-name constants are gone and spelled in passes.rs. Every digest, check report and image equals its baseline: the debug suite with external samples passes (2654), and the image run differs nowhere (one guided-render cancellation unit test failed under load and passes alone). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- Cargo.lock | 8 ++++---- Cargo.toml | 10 +++++++--- crates/crust-core/src/scene/usd_import/camera.rs | 4 ++-- crates/crust-core/src/scene/usd_import/materials.rs | 12 ++++++------ crates/crust-core/src/scene/usd_import/passes.rs | 9 ++++++++- crates/crust-core/tests/usd_products.rs | 4 ++-- crates/crust-core/tests/usd_scene.rs | 4 +++- deny.toml | 2 +- openspec/changes/moho-import/design.md | 12 ++++++++++-- 9 files changed, 43 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4b476b3f0..e2e123084 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1285,7 +1285,7 @@ dependencies = [ [[package]] name = "moho" version = "0.1.0" -source = "git+https://github.com/doubleailes/Moho?rev=fc391a5ca55b83078a1a157b3f17b793118cd6b9#fc391a5ca55b83078a1a157b3f17b793118cd6b9" +source = "git+https://github.com/doubleailes/Moho?rev=788b1ac5354898277c3488532f58e0ca6d8ab9bb#788b1ac5354898277c3488532f58e0ca6d8ab9bb" dependencies = [ "openusd", "openusd-schemas", @@ -1409,7 +1409,7 @@ source = "git+https://github.com/doubleailes/OpenSubdiv-rs?tag=0.5.0#c672796f958 [[package]] name = "openusd" version = "0.8.0" -source = "git+https://github.com/mxpv/openusd?rev=68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f#68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f" +source = "git+https://github.com/doubleailes/openusd?rev=d7d2a29406871508b6ec3ffe9173a5941b1c6123#d7d2a29406871508b6ec3ffe9173a5941b1c6123" dependencies = [ "bitflags 2.13.2", "bytemuck", @@ -1431,7 +1431,7 @@ dependencies = [ [[package]] name = "openusd-build" version = "0.8.0" -source = "git+https://github.com/mxpv/openusd?rev=68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f#68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f" +source = "git+https://github.com/doubleailes/openusd?rev=d7d2a29406871508b6ec3ffe9173a5941b1c6123#d7d2a29406871508b6ec3ffe9173a5941b1c6123" dependencies = [ "openusd", "prettyplease", @@ -1446,7 +1446,7 @@ dependencies = [ [[package]] name = "openusd-schemas" version = "0.8.0" -source = "git+https://github.com/mxpv/openusd?rev=68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f#68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f" +source = "git+https://github.com/doubleailes/openusd?rev=d7d2a29406871508b6ec3ffe9173a5941b1c6123#d7d2a29406871508b6ec3ffe9173a5941b1c6123" dependencies = [ "bitflags 2.13.2", "derive_more", diff --git a/Cargo.toml b/Cargo.toml index c4e1504a0..9fd07989e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -94,7 +94,7 @@ openusd-schemas = { version = "0.8", default-features = false } # openusd in the build. Moho re-exports it (`moho::openusd`), and new index-route # code names openusd through that re-export. Bumped with the openusd rev, in the # order written there. -moho = { git = "https://github.com/doubleailes/Moho", rev = "fc391a5ca55b83078a1a157b3f17b793118cd6b9" } +moho = { git = "https://github.com/doubleailes/Moho", rev = "788b1ac5354898277c3488532f58e0ca6d8ab9bb" } # The hot loops are spread across crates: the integrator in `crust-core` # calls the kernel in `crust-rt`, which calls `glam`'s SIMD vector ops. @@ -158,9 +158,13 @@ panic = "unwind" # `[workspace.dependencies]`, so the requirement stays the release's `0.8` and # dropping this section is the whole revert to it. # +# The source is the fork Moho pins (`doubleailes/openusd`, upstream plus the +# clip fixes of mxpv/openusd#175): a git source is URL plus reference, so the +# URL must match Moho's too. +# # One rev across the stack: Moho, crust-render and Mantle all resolve this # commit. Bump in order — Moho, then crust-render (this rev *and* the `moho` # rev above), then Mantle. `cargo update -p openusd` no longer moves it. [patch.crates-io] -openusd = { git = "https://github.com/mxpv/openusd", rev = "68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f" } -openusd-schemas = { git = "https://github.com/mxpv/openusd", rev = "68a867a69f3fb429a30f9e1155a0a30a3d2cdf9f" } +openusd = { git = "https://github.com/doubleailes/openusd", rev = "d7d2a29406871508b6ec3ffe9173a5941b1c6123" } +openusd-schemas = { git = "https://github.com/doubleailes/openusd", rev = "d7d2a29406871508b6ec3ffe9173a5941b1c6123" } diff --git a/crates/crust-core/src/scene/usd_import/camera.rs b/crates/crust-core/src/scene/usd_import/camera.rs index 9e24b0b3f..96629248b 100644 --- a/crates/crust-core/src/scene/usd_import/camera.rs +++ b/crates/crust-core/src/scene/usd_import/camera.rs @@ -190,7 +190,7 @@ fn conform( i32::try_from(width).unwrap_or(i32::MAX), i32::try_from(height).unwrap_or(i32::MAX), ]; - let conformed = conform_aperture(policy, resolution, pixel_aspect, aperture); + let conformed = conform_aperture(Some(policy), resolution, pixel_aspect, aperture); let (size, pixel_aspect) = (conformed.aperture_size, conformed.pixel_aspect_ratio); // A pixel aspect `adjustPixelAspectRatio` derived that no EXR can hold // (an aperture over a million times wider than the image, or a @@ -198,7 +198,7 @@ fn conform( // square-pixel frame that keeps the whole aperture, `expandAperture`. if !valid_pixel_aspect(pixel_aspect) { let size = conform_aperture( - AspectRatioConformPolicy::ExpandAperture, + Some(AspectRatioConformPolicy::ExpandAperture), resolution, 1.0, aperture, diff --git a/crates/crust-core/src/scene/usd_import/materials.rs b/crates/crust-core/src/scene/usd_import/materials.rs index fcecad20a..10cafa2f5 100644 --- a/crates/crust-core/src/scene/usd_import/materials.rs +++ b/crates/crust-core/src/scene/usd_import/materials.rs @@ -1133,13 +1133,13 @@ pub(super) fn default_material() -> Arc { } pub(super) fn shader_info_id(shader: &Shader) -> Option { - // `Shader::id()` is the higher-level accessor and does the correct - // `get::()` (which extracts from both String and Token variants). - if let Ok(Some(id)) = shader.id() { - return Some(id); + // `UsdShadeNodeDefAPI::GetShaderId`: the composed `info:id` when the + // shader's implementation source is `id`. + if let Ok(Some(id)) = shader.node_def().shader_id() { + return Some(id.as_str().to_owned()); } - // Fallback for older openusd revisions or shaders that author info:id - // via a raw attribute rather than the schema helper. + // Otherwise the raw `info:id`, as the import has always read it whatever + // the implementation source says. value_at(&shader.attribute("info:id")).and_then(decode_text) } diff --git a/crates/crust-core/src/scene/usd_import/passes.rs b/crates/crust-core/src/scene/usd_import/passes.rs index 68df28836..caf8a7c9c 100644 --- a/crates/crust-core/src/scene/usd_import/passes.rs +++ b/crates/crust-core/src/scene/usd_import/passes.rs @@ -41,10 +41,17 @@ use moho::openusd::usd::CollectionAPI; use moho::scene_index::{CollectionMembership, SceneIndex}; use moho::stage::StageSceneIndex; use moho::tokens::usd_prim_info as prim_info; -use openusd_schemas::render::{COLLECTION_CAMERA_VISIBILITY, COLLECTION_MATTE, COLLECTION_PRUNE}; use tracing::debug; use crate::light::{Light, LightList}; + +// A `RenderPass`'s collections (`UsdRenderPass`'s schema). openusd-schemas +// dropped its constants for them at d7d2a29, keeping only the +// `renderVisibility` view (`Pass::render_visibility_collection`), so the +// names are spelled here. +const COLLECTION_CAMERA_VISIBILITY: &str = "cameraVisibility"; +const COLLECTION_PRUNE: &str = "prune"; +const COLLECTION_MATTE: &str = "matte"; use crate::ray::{MASK_CAMERA, RayMask}; use crate::rt_world::WorldBuilder; diff --git a/crates/crust-core/tests/usd_products.rs b/crates/crust-core/tests/usd_products.rs index 6771f1c9b..54e25e99e 100644 --- a/crates/crust-core/tests/usd_products.rs +++ b/crates/crust-core/tests/usd_products.rs @@ -494,11 +494,11 @@ fn the_resolver_agrees_with_compute_render_spec() { assert_eq!(spec.products.len(), scene.aovs.products.len()); for (theirs, ours) in spec.products.iter().zip(&scene.aovs.products) { - assert_eq!(theirs.render_product_path, ours.prim_path); + assert_eq!(theirs.render_product_path.as_str(), ours.prim_path); assert_eq!(theirs.name, ours.name); let [w, h] = theirs.resolution; assert_eq!((w as usize, h as usize), scene.settings.get_dimensions()); - assert_eq!(theirs.camera_path.as_deref(), Some("/World/cam")); + assert_eq!(theirs.camera_path.as_str(), "/World/cam"); let their_vars: Vec<_> = theirs .render_var_indices .iter() diff --git a/crates/crust-core/tests/usd_scene.rs b/crates/crust-core/tests/usd_scene.rs index 11903ad64..b352d758d 100644 --- a/crates/crust-core/tests/usd_scene.rs +++ b/crates/crust-core/tests/usd_scene.rs @@ -315,9 +315,11 @@ fn openpbr_showcase_materials_all_decode() { .find_map(TerminalSource::shader) .unwrap_or_else(|| panic!("Material {} has no surface shader", p)); let id = shader - .id() + .node_def() + .shader_id() .unwrap() .unwrap_or_else(|| panic!("Shader at {} has no info:id", shader.path())); + let id = id.as_str(); assert_eq!( id, "crust:openpbr", "Material {} shader id was {:?}, expected `crust:openpbr`", diff --git a/deny.toml b/deny.toml index 9a10ea6dd..115d7d933 100644 --- a/deny.toml +++ b/deny.toml @@ -66,5 +66,5 @@ allow-registry = ["https://github.com/rust-lang/crates.io-index"] allow-git = [ "https://github.com/doubleailes/Moho", "https://github.com/doubleailes/OpenSubdiv-rs", - "https://github.com/mxpv/openusd", + "https://github.com/doubleailes/openusd", ] diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index d327874c1..1b11ff7cd 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -61,8 +61,12 @@ through Moho (`scripts/streaming-spike.sh --with-d`). **Moho's rev.** The plan was written while Moho's gaps M1 to M7 were open. Moho's change `scene-index-gaps` closed them and merged into Moho's `main` at `fc391a5` (Moho-side -follow-ups, below); the workspace pins `moho` at that rev, and builds against it as CI -does, with no local patch. +follow-ups, below); the workspace pinned `moho` at that rev, and builds against it as CI +does, with no local patch. Moho's M8 to M10 (gaps found while migrating, below) merged +at `788b1ac`, together with Moho's repin of openusd to `doubleailes/openusd` at +`d7d2a29` (upstream `0a4bb1b` plus the clip fixes of mxpv/openusd#175). The workspace +pins `moho` at `788b1ac` and patches openusd to that same fork and rev, in one commit +(D1). **Constraints.** - Moho pins openusd by `rev`. crust-render patches by `branch = "main"`, which locks to @@ -127,6 +131,10 @@ checks guard it: Rejected: the patch keeps the `0.8` requirement, so dropping it is still the whole revert. +Since Moho's `788b1ac` the rev is `d7d2a29406871508b6ec3ffe9173a5941b1c6123` of +`https://github.com/doubleailes/openusd`, the fork Moho pins, so the patch names that +URL (a git source is URL plus reference). The same three checks hold. + The bump order becomes Moho, then crust-render, then Mantle. `cargo update -p openusd` stops being the way to move. A bump edits both revs: Moho's rev in the `moho` entry and the openusd rev in the patch. `CLAUDE.md` says so. From ca5e7ce9dc26ca0055cb0990e5c4219cec07211a Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 08:58:19 +0100 Subject: [PATCH 44/95] usd-scene-import design: ALab and Moana after the repin to openusd d7d2a29 Reports and 16 spp images equal their baselines; ALab's peak stays at 1.93x (the stage scene index's cache, not openusd's read, sets it), and the times are recorded with the run's load noted. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/specs/usd-scene-import/design.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/openspec/specs/usd-scene-import/design.md b/openspec/specs/usd-scene-import/design.md index 555cd939a..aac4f477b 100644 --- a/openspec/specs/usd-scene-import/design.md +++ b/openspec/specs/usd-scene-import/design.md @@ -1649,6 +1649,22 @@ not hold it (the change's open question "Undefined prims"). ALab's memory double stage scene index caches every prim it populates, and the single-stage import keeps its index for the whole walk. Reported, not gated. +### Run after the repin (Moho `788b1ac`, openusd `doubleailes/openusd` `d7d2a29`) + +`scripts/import_parity.sh check` on the same machine at `87816b44`, the bump that brought +Moho's M8 to M10 and its repin of openusd to the fork carrying mxpv/openusd#175's clip +fixes, with the families as in the progress run above: + +| scene | report and 16 spp image | peak memory (ratio) | `Parse USD stage` (ratio) | +|---|---|---|---| +| ALab | equal | 21.12 GiB (1.93) | 45.77 s (1.47) | +| Moana | equal | 24.09 GiB (1.01) | 235.49 s (1.36) | + +One run each; a debug build and test run shared the machine with Moana, so its time is +an upper bound. The clip fixes take openusd's own read of ALab from 26.0 to 11.1 GiB, +but the import's peak is the stage scene index's cache of every populated prim (the +progress run's note), so it does not move. Reported, not gated. + ## Provenance and in-place rebuilds An imported `Scene` carries `provenance` (`crust_core::live::Provenance`): which `World` From a824551aee86d77507a637c7bf22552249cd7951 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 08:58:39 +0100 Subject: [PATCH 45/95] crust: material networks and precomp graphs read the scene index (9.2) The material readers build from Moho's `material` networks: per render context, terminals, node identifiers, parameters (value, type, colour space, an interface connection followed) and connections feed preview (UsdPreviewSurface, UsdUVTexture, primvar readers), the inline MaterialX translation, PxrDisneyBsdf, PxrDisplace and ptex; crust:openpbr and a node's own inputs come from the node prim's generic data. They read at the top of the chain, which now ends, as Moho's chain::standard and chain::merged do, in MaterialNodeResolvingSceneIndex (M10): a streamed material wired to a shared node outside its chunk gets that node from the merged inputs. The precomp's display filters and sample-filter graphs read generic data: a NodeGraph is no material, so its graph is walked from its prims' connections, a Shader told by __usdPrimInfo/typeName (M8), and kernel assets from the input's value. Connection targets are split with split_property (sdf::Path::name() keeps the prim name). Parity: the debug suite with external samples passes (2654), and the image run renders every import as its baseline. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../crust-core/src/scene/usd_import/assets.rs | 2 +- .../src/scene/usd_import/index/data.rs | 52 ++ .../src/scene/usd_import/index/mod.rs | 26 +- .../src/scene/usd_import/index/network.rs | 384 ++++++++++++++ .../src/scene/usd_import/index/walk.rs | 13 +- .../src/scene/usd_import/listing.rs | 2 +- .../crust-core/src/scene/usd_import/live.rs | 6 +- .../src/scene/usd_import/materials.rs | 479 ++++++++++++------ crates/crust-core/src/scene/usd_import/mod.rs | 16 +- .../src/scene/usd_import/mtlx_network.rs | 470 +++++++---------- .../src/scene/usd_import/precomp.rs | 52 +- .../src/scene/usd_import/preview.rs | 377 +++++++++----- .../src/scene/usd_import/products.rs | 5 +- openspec/changes/moho-import/tasks.md | 2 +- 14 files changed, 1269 insertions(+), 617 deletions(-) create mode 100644 crates/crust-core/src/scene/usd_import/index/network.rs diff --git a/crates/crust-core/src/scene/usd_import/assets.rs b/crates/crust-core/src/scene/usd_import/assets.rs index 004fe624b..5802b4f48 100644 --- a/crates/crust-core/src/scene/usd_import/assets.rs +++ b/crates/crust-core/src/scene/usd_import/assets.rs @@ -194,7 +194,7 @@ pub(super) fn asset_path(attr: &Attribute, stage_path: &Path) -> Option /// An asset value as a path: openusd's `resolved_path` when it has one, else /// the authored string, a relative one anchored against the root layer. -fn asset_value_path(value: &sdf::Value, stage_path: &Path) -> Option { +pub(super) fn asset_value_path(value: &sdf::Value, stage_path: &Path) -> Option { let (authored, resolved) = match value { sdf::Value::AssetPath(p) => (p.as_str().to_string(), p.resolved_path()), sdf::Value::String(p) => (p.clone(), None), diff --git a/crates/crust-core/src/scene/usd_import/index/data.rs b/crates/crust-core/src/scene/usd_import/index/data.rs index d4ae0599c..8260e9ee2 100644 --- a/crates/crust-core/src/scene/usd_import/index/data.rs +++ b/crates/crust-core/src/scene/usd_import/index/data.rs @@ -89,6 +89,35 @@ impl PrimData { } } + /// The prim's children in the index it was read from (instance proxies + /// through their prototype, as [`PrimData::bridged`] reads them), in the + /// index's order. + pub(in crate::scene::usd_import) fn children(&self) -> Vec { + let Some(index) = &self.index else { + return Vec::new(); + }; + let data_path = match &self.proxy_roots { + Some((proto, instance)) => self + .path + .as_str() + .strip_prefix(instance.as_str()) + .and_then(|rest| sdf::Path::new(format!("{proto}{rest}").as_str()).ok()) + .unwrap_or_else(|| self.path.clone()), + None => self.path.clone(), + }; + index + .children(&data_path) + .into_iter() + .map(|child| { + let path = self.in_own_namespace(child); + match &self.proxies { + Some(stage) => PrimData::bridged(index, stage, &path), + None => PrimData::in_index(index, &path), + } + }) + .collect() + } + /// A path the prim's data name (a material binding's target), in the /// namespace the prim is named in: for an instance proxy, a path inside /// its prototype moved under the instance, as the stage names it there. @@ -158,6 +187,21 @@ impl PrimData { &self.ty } + /// The USD prim type name (`Shader`, `Xform`), empty for a typeless prim: + /// `__usdPrimInfo/typeName` (Hydra's `UsdImagingUsdPrimInfoSchema`, + /// Moho's M8), for a reader the Hydra type does not tell enough. + pub(in crate::scene::usd_import) fn usd_type(&self) -> String { + use moho::tokens::usd_prim_info as info; + match self + .locate([info::USD_PRIM_INFO, info::TYPE_NAME]) + .and_then(|d| d.value()) + { + Some(sdf::Value::Token(t)) => t.as_str().to_owned(), + Some(sdf::Value::String(s)) => s, + _ => String::new(), + } + } + /// The data source at `locator` under the prim. pub(in crate::scene::usd_import) fn locate( &self, @@ -277,6 +321,14 @@ impl PrimData { self.value(name).and_then(decode_vec3) } + /// The connections attribute `name` authors, each a property path. + pub(in crate::scene::usd_import) fn connections(&self, name: &str) -> Vec { + match self.metadata(name, generic::CONNECTIONS) { + Some(sdf::Value::PathVec(targets)) => targets, + _ => Vec::new(), + } + } + /// The names of the prim's attributes, the schema's declared ones /// included, in the order the prim lists them. pub(in crate::scene::usd_import) fn attribute_names(&self) -> Vec { diff --git a/crates/crust-core/src/scene/usd_import/index/mod.rs b/crates/crust-core/src/scene/usd_import/index/mod.rs index 9ec9c44a5..84af8806d 100644 --- a/crates/crust-core/src/scene/usd_import/index/mod.rs +++ b/crates/crust-core/src/scene/usd_import/index/mod.rs @@ -32,7 +32,7 @@ use std::rc::Rc; use moho::filter::{ FlatteningSceneIndex, LightLinkingSceneIndex, MaterialBindingResolvingSceneIndex, - MergingSceneIndex, RenderSettingsFlatteningSceneIndex, + MaterialNodeResolvingSceneIndex, MergingSceneIndex, RenderSettingsFlatteningSceneIndex, }; use moho::openusd::sdf; use moho::openusd::usd::{Stage, TimeCode}; @@ -41,6 +41,7 @@ use moho::stage::StageSceneIndex; pub(super) mod bridge; pub(super) mod data; +pub(super) mod network; pub(super) mod stage_facts; pub(super) mod walk; @@ -76,11 +77,12 @@ pub(super) fn input_chain(stage: Stage, time: Option, include_unloaded: boo } /// A single-stage import's index: one input with light linking over it, -/// judged by the stage (`moho::chain::standard`'s shape). +/// judged by the stage, and the material-node resolution last +/// (`moho::chain::standard`'s shape). pub(super) struct Single { pub(super) input: Input, - /// The top of the chain: what readers read once families move. - #[allow(dead_code)] + /// The top of the chain: what the material readers read, and every + /// reader once the families move. pub(super) top: SceneIndexHandle, } @@ -88,20 +90,24 @@ impl Single { pub(super) fn new(stage: Stage, time: Option) -> Self { let input = input_chain(stage, time, false); let membership: Rc = input.stage.clone(); - let top = LightLinkingSceneIndex::new(input.chain.clone(), Some(membership)); + let top = MaterialNodeResolvingSceneIndex::new(LightLinkingSceneIndex::new( + input.chain.clone(), + Some(membership), + )); Single { input, top } } } /// A streamed import's index: light linking over a merging index of the -/// payload-free scene input and the chunk being walked -/// (`moho::chain::merged`'s shape). +/// payload-free scene input and the chunk being walked, and the +/// material-node resolution last, which fills a network's node outside the +/// chunk from the merged inputs (`moho::chain::merged`'s shape). pub(super) struct Streamed { merging: Rc, /// The scene input, weakest and permanent. scene: Input, - /// The top of the chain: what readers read once families move. - #[allow(dead_code)] + /// The top of the chain: what the material readers read, and every + /// reader once the families move. pub(super) top: SceneIndexHandle, time: Option, } @@ -113,7 +119,7 @@ impl Streamed { let merging = MergingSceneIndex::new(); merging.add_input_scene(scene.chain.clone(), sdf::Path::abs_root()); let input: SceneIndexHandle = merging.clone(); - let top = LightLinkingSceneIndex::new(input, None); + let top = MaterialNodeResolvingSceneIndex::new(LightLinkingSceneIndex::new(input, None)); Streamed { merging, scene, diff --git a/crates/crust-core/src/scene/usd_import/index/network.rs b/crates/crust-core/src/scene/usd_import/index/network.rs new file mode 100644 index 000000000..0ebf9840f --- /dev/null +++ b/crates/crust-core/src/scene/usd_import/index/network.rs @@ -0,0 +1,384 @@ +//! A material's shading networks as the scene index gives them: Moho's +//! `material` data source, Hydra's material network schema — per render +//! context, the shader nodes reachable from the terminals, each with its +//! identifier, its parameters (the values its authored inputs carry, a +//! connection to an interface input followed) and its input connections to +//! upstream nodes' outputs. +//! +//! The readers that build Crust's materials (`preview`, `mtlx_network`, +//! `materials`) walk these networks, and read a node's own attributes, where +//! the direct readers read the shader input itself rather than what it is +//! connected to, from the node prim's generic data ([`Network::prim`]). + +use std::collections::{BTreeMap, HashSet}; + +use moho::data_source::{ContainerHandle, DataSource}; +use moho::openusd::sdf; +use moho::tokens::material as t; + +use super::data::PrimData; + +/// A node's input connection: the upstream node's name and output. +#[derive(Clone, Debug, PartialEq, Eq)] +pub(in crate::scene::usd_import) struct Connection { + pub(in crate::scene::usd_import) node: String, + pub(in crate::scene::usd_import) output: String, +} + +/// A node parameter: the value an authored input carries (an interface +/// input's, when connected to one), its type name and its value attribute's +/// own `colorSpace`. +#[derive(Clone, Debug, Default)] +pub(in crate::scene::usd_import) struct Parameter { + pub(in crate::scene::usd_import) value: Option, + #[allow(dead_code)] + pub(in crate::scene::usd_import) type_name: Option, + pub(in crate::scene::usd_import) color_space: Option, + /// For a value graph ([`graph`]) only: the graph's own interface input + /// the parameter is connected to, a channel the host supplies per + /// evaluation, `value` its default. + pub(in crate::scene::usd_import) interface: Option, +} + +/// One shader node. +#[derive(Clone, Debug, Default)] +pub(in crate::scene::usd_import) struct Node { + /// `info:id`, empty when the shader authors none. + pub(in crate::scene::usd_import) id: String, + pub(in crate::scene::usd_import) parameters: BTreeMap, + pub(in crate::scene::usd_import) connections: BTreeMap>, +} + +/// One render context's network. +#[derive(Clone, Debug, Default)] +pub(in crate::scene::usd_import) struct Network { + /// The material prim the network belongs to. + pub(in crate::scene::usd_import) material: sdf::Path, + /// By node name: the node's path relative to the material, or its stage + /// path when it lies outside the material. + pub(in crate::scene::usd_import) nodes: BTreeMap, + /// By terminal (`surface`, `displacement`, `volume`). + pub(in crate::scene::usd_import) terminals: BTreeMap, +} + +fn container(source: Option) -> Option { + source?.as_container().cloned() +} + +fn token(source: Option) -> Option { + match source?.value()? { + sdf::Value::Token(t) => Some(t.as_str().to_owned()), + sdf::Value::String(s) => Some(s), + _ => None, + } +} + +fn connection(source: &ContainerHandle) -> Option { + Some(Connection { + node: token(source.get(&t::UPSTREAM_NODE_PATH.into()))?, + output: token(source.get(&t::UPSTREAM_NODE_OUTPUT_NAME.into()))?, + }) +} + +fn node(source: &ContainerHandle) -> Node { + let mut node = Node { + id: token(source.get(&t::NODE_IDENTIFIER.into())).unwrap_or_default(), + ..Node::default() + }; + if let Some(parameters) = container(source.get(&t::PARAMETERS.into())) { + for name in parameters.names() { + let Some(p) = container(parameters.get(&name)) else { + continue; + }; + node.parameters.insert( + name.as_str().to_owned(), + Parameter { + value: p.get(&t::VALUE.into()).and_then(|d| d.value()), + type_name: token(p.get(&t::TYPE_NAME.into())), + color_space: token(p.get(&t::COLOR_SPACE.into())), + interface: None, + }, + ); + } + } + if let Some(connections) = container(source.get(&t::INPUT_CONNECTIONS.into())) { + for name in connections.names() { + let Some(links) = connections.get(&name).and_then(|d| d.as_vector().cloned()) else { + continue; + }; + let links: Vec = (0..links.len()) + .filter_map(|i| container(links.get(i))) + .filter_map(|c| connection(&c)) + .collect(); + node.connections.insert(name.as_str().to_owned(), links); + } + } + node +} + +/// The networks of the material `material`, by render context (`""` the +/// universal one); empty for a prim that is not a material. +pub(in crate::scene::usd_import) fn networks(material: &PrimData) -> BTreeMap { + let mut out = BTreeMap::new(); + let Some(contexts) = container(material.locate([t::MATERIAL])) else { + return out; + }; + for context in contexts.names() { + let Some(network) = container(contexts.get(&context)) else { + continue; + }; + let mut n = Network { + material: material.path().clone(), + ..Network::default() + }; + if let Some(nodes) = container(network.get(&t::NODES.into())) { + for name in nodes.names() { + if let Some(source) = container(nodes.get(&name)) { + n.nodes.insert(name.as_str().to_owned(), node(&source)); + } + } + } + if let Some(terminals) = container(network.get(&t::TERMINALS.into())) { + for name in terminals.names() { + if let Some(c) = container(terminals.get(&name)).and_then(|c| connection(&c)) { + n.terminals.insert(name.as_str().to_owned(), c); + } + } + } + out.insert(context.as_str().to_owned(), n); + } + out +} + +impl Network { + /// The stage path of the node named `name`. + pub(in crate::scene::usd_import) fn path(&self, name: &str) -> Option { + if name.starts_with('/') { + sdf::Path::new(name).ok() + } else { + sdf::Path::new(format!("{}/{name}", self.material).as_str()).ok() + } + } + + /// The node named `name`'s prim, for its own attributes, read by `at` + /// (the walked index, through the bridge where the material is named + /// inside an instance). + pub(in crate::scene::usd_import) fn prim( + &self, + at: &dyn Fn(&sdf::Path) -> PrimData, + name: &str, + ) -> Option { + Some(at(&self.path(name)?)) + } + + /// The node a terminal reads, with its name. + pub(in crate::scene::usd_import) fn terminal(&self, terminal: &str) -> Option<(&str, &Node)> { + let c = self.terminals.get(terminal)?; + self.nodes + .get_key_value(&c.node) + .map(|(k, v)| (k.as_str(), v)) + } +} + +/// The terminal `terminal` resolved over `contexts` in order, the universal +/// context last when not listed (`UsdShadeMaterial::ComputeSurfaceSource`): +/// the first context with that terminal commits, and its node is `None` +/// when the terminal's source is no shader. +pub(in crate::scene::usd_import) fn resolve<'a>( + networks: &'a BTreeMap, + terminal: &str, + contexts: &[&str], +) -> Option<(&'a Network, Option<(&'a str, &'a Node)>)> { + let universal_listed = contexts.contains(&""); + contexts + .iter() + .copied() + .chain((!universal_listed).then_some("")) + .find_map(|context| { + let network = networks.get(context)?; + network + .terminals + .contains_key(terminal) + .then(|| (network, network.terminal(terminal))) + }) +} + +/// How many forwarding hops (graph outputs, interface inputs) one connection +/// of a value graph may take before the walk gives up on it: a cycle, in +/// practice. +const MAX_HOPS: usize = 32; + +/// What a value graph's `outputs:` reads. +#[derive(Clone, Debug)] +pub(in crate::scene::usd_import) enum GraphOutput { + /// A shader node's output. + Node(Connection), + /// A value: the output's own, an interface input's, or (with + /// [`Parameter::interface`]) the graph's interface channel. + Value(Parameter), +} + +/// A `NodeGraph` read as a value graph (a sample filter's): its shader nodes, +/// as a material [`Network`] holds them (named by stage path), and its +/// outputs. +#[derive(Clone, Debug, Default)] +pub(in crate::scene::usd_import) struct Graph { + pub(in crate::scene::usd_import) network: Network, + /// Each `outputs:`, by attribute path: the name, its USD type and + /// what it reads. + pub(in crate::scene::usd_import) outputs: Vec<(String, String, GraphOutput)>, + /// What could not be followed, for one warning per graph. + pub(in crate::scene::usd_import) reported: Vec, +} + +/// The value graph at `graph`, read from the prims' generic data +/// (`__usdAttributes`): a sample filter's graph is no material, so the +/// scene index gives it no `material` network. Connections are followed as +/// a material network's are (`UsdShadeConnectableAPI`'s value-producing +/// attributes: through `NodeGraph` outputs and interface inputs to a shader +/// output or a value), except that one to the graph's own interface input +/// is that channel ([`Parameter::interface`]). A node is a prim whose USD +/// type is `Shader` (`__usdPrimInfo/typeName`). +pub(in crate::scene::usd_import) fn graph( + at: &dyn Fn(&sdf::Path) -> PrimData, + graph: &sdf::Path, +) -> Graph { + let prim = at(graph); + let mut walk = GraphWalk { + at, + graph: graph.clone(), + active: HashSet::new(), + out: Graph { + network: Network { + material: graph.clone(), + ..Network::default() + }, + ..Graph::default() + }, + }; + let mut names: Vec = prim + .attribute_names() + .into_iter() + .filter(|n| n.starts_with("outputs:")) + .collect(); + names.sort_by_key(|n| prim.attribute_path(n)); + for full in names { + let Some(name) = full.strip_prefix("outputs:") else { + continue; + }; + let usd_type = prim.type_name(&full); + match walk.resolve(&prim, &full, 0) { + Some(output) => walk.out.outputs.push((name.to_owned(), usd_type, output)), + None => walk + .out + .reported + .push(format!("{graph}.outputs:{name}: connects to nothing")), + } + } + walk.out +} + +struct GraphWalk<'a> { + at: &'a dyn Fn(&sdf::Path) -> PrimData, + graph: sdf::Path, + /// Shader prims being walked, for cycle detection. + active: HashSet, + out: Graph, +} + +impl GraphWalk<'_> { + /// Where attribute `name` of `prim` leads: an upstream shader output, a + /// value, or the graph's interface channel. `None` when it leads nowhere + /// (an unconnected, unauthored input; a cycle). + fn resolve(&mut self, prim: &PrimData, name: &str, hops: usize) -> Option { + let Some(target) = prim.connections(name).into_iter().next() else { + // An input or output with no connection forwards its own value, + // if it has one. + return prim.value(name).map(|value| { + GraphOutput::Value(Parameter { + value: Some(value), + type_name: Some(prim.type_name(name)).filter(|t| !t.is_empty()), + color_space: color_space_of(prim, name), + interface: None, + }) + }); + }; + if hops >= MAX_HOPS { + self.out.reported.push(format!( + "{}: connection chain too long — cut", + prim.attribute_path(name) + )); + return None; + } + let (prim_path, prop) = target.split_property()?; + let prop = prop.to_owned(); + let upstream = (self.at)(&prim_path); + if prim_path == self.graph + && let Some(channel) = prop.strip_prefix("inputs:") + { + return Some(GraphOutput::Value(Parameter { + value: upstream.value(&prop), + type_name: Some(upstream.type_name(&prop)).filter(|t| !t.is_empty()), + color_space: color_space_of(&upstream, &prop), + interface: Some(channel.to_owned()), + })); + } + match prop.strip_prefix("outputs:") { + Some(output) if upstream.usd_type() == "Shader" => { + let node = self.node(&upstream)?; + Some(GraphOutput::Node(Connection { + node, + output: output.to_owned(), + })) + } + // A container's output or interface input forwards whatever it + // is connected to, or its own value. + _ => self.resolve(&upstream, &prop, hops + 1), + } + } + + /// The node for the shader prim `prim`, walking it (and everything + /// upstream of it) on first use; its name is its stage path. + fn node(&mut self, prim: &PrimData) -> Option { + let name = prim.path().to_string(); + if self.out.network.nodes.contains_key(&name) { + return Some(name); + } + if !self.active.insert(name.clone()) { + self.out + .reported + .push(format!("{name}: connection cycle — cut")); + return None; + } + let mut node = Node { + id: prim.custom_token("info:id").unwrap_or_default(), + ..Node::default() + }; + for full in prim.attribute_names() { + let Some(input) = full.strip_prefix("inputs:") else { + continue; + }; + match self.resolve(prim, &full, 0) { + Some(GraphOutput::Node(c)) => { + node.connections.insert(input.to_owned(), vec![c]); + } + Some(GraphOutput::Value(p)) => { + node.parameters.insert(input.to_owned(), p); + } + None => {} + } + } + self.active.remove(&name); + self.out.network.nodes.insert(name.clone(), node); + Some(name) + } +} + +/// Attribute `name`'s own authored `colorSpace`. +fn color_space_of(prim: &PrimData, name: &str) -> Option { + match prim.metadata(name, moho::tokens::usd::COLOR_SPACE)? { + sdf::Value::Token(t) => Some(t.as_str().to_owned()), + sdf::Value::String(s) => Some(s), + _ => None, + } +} diff --git a/crates/crust-core/src/scene/usd_import/index/walk.rs b/crates/crust-core/src/scene/usd_import/index/walk.rs index 12a616da9..31c450f31 100644 --- a/crates/crust-core/src/scene/usd_import/index/walk.rs +++ b/crates/crust-core/src/scene/usd_import/index/walk.rs @@ -28,13 +28,21 @@ use super::super::{ImportCtx, Prune, visit_prim}; use super::{Input, bridge}; /// Walks `input`'s chain into `ctx`, reading each prim's families through the -/// bridge on `stage`, the stage `input` was built over. -pub(in crate::scene::usd_import) fn walk(stage: &Stage, input: &Input, ctx: &mut ImportCtx) { +/// bridge on `stage`, the stage `input` was built over. `top` is the top of +/// the import's chain, over `input` (and, streamed, the other inputs): what +/// the material readers read. +pub(in crate::scene::usd_import) fn walk( + stage: &Stage, + input: &Input, + top: &moho::scene_index::SceneIndexHandle, + ctx: &mut ImportCtx, +) { let index: &dyn SceneIndex = input.chain.as_ref(); if let Some(pass) = &mut ctx.pass { pass.begin_chunk(input); } ctx.caches.scene = Some((input.chain.clone(), stage.clone())); + ctx.caches.top = Some(top.clone()); let mut stack: Vec<(sdf::Path, GMat4, bool, Timing)> = vec![( sdf::Path::abs_root(), GMat4::IDENTITY, @@ -61,6 +69,7 @@ pub(in crate::scene::usd_import) fn walk(stage: &Stage, input: &Input, ctx: &mut } } ctx.caches.scene = None; + ctx.caches.top = None; } /// The children the walk descends into: the index's, less the prototypes diff --git a/crates/crust-core/src/scene/usd_import/listing.rs b/crates/crust-core/src/scene/usd_import/listing.rs index b055b626c..d55f2b047 100644 --- a/crates/crust-core/src/scene/usd_import/listing.rs +++ b/crates/crust-core/src/scene/usd_import/listing.rs @@ -86,7 +86,7 @@ pub(crate) fn list_records( // The settings the import would read, through the scene index as the // import reads them. let scene = super::index::input_chain(index.clone(), frame, true); - let products = import_render_products(&index, scene.chain.as_ref(), None, None); + let products = import_render_products(scene.chain.as_ref(), None, None); let mut settings = import_render_settings(scene.chain.as_ref(), None); if let Some((w, h)) = products.resolution { settings = settings.with_resolution(w, h); diff --git a/crates/crust-core/src/scene/usd_import/live.rs b/crates/crust-core/src/scene/usd_import/live.rs index 6840c57bc..6cf99ca8f 100644 --- a/crates/crust-core/src/scene/usd_import/live.rs +++ b/crates/crust-core/src/scene/usd_import/live.rs @@ -198,13 +198,15 @@ struct Rebuilding<'a> { impl Rebuilding<'_> { fn caches(&self) -> ImportCaches<'_> { - ImportCaches::new( + let mut caches = ImportCaches::new( self.assets, self.layer, SubdivPolicy::new(self.prov.stage.subdiv_level), self.working, self.prov.stage.mtlx_library.clone(), - ) + ); + caches.time = self.prov.stage.options.frame; + caches } /// A scene index over `stage`, at the import's time, for the readers diff --git a/crates/crust-core/src/scene/usd_import/materials.rs b/crates/crust-core/src/scene/usd_import/materials.rs index 10cafa2f5..0e13241d0 100644 --- a/crates/crust-core/src/scene/usd_import/materials.rs +++ b/crates/crust-core/src/scene/usd_import/materials.rs @@ -11,19 +11,16 @@ use glam::Vec3A; use openusd::sdf; use openusd::usd::{CollectionAPI, Prim, PrimPredicate, Stage}; use openusd_schemas::shade::{ - BindingStrength, CollectionBinding, Connectable, Material as UsdMaterial, MaterialBindingAPI, - ProducerFilter, Shader, TerminalSource, + BindingStrength, CollectionBinding, Material as UsdMaterial, MaterialBindingAPI, Shader, + TerminalSource, }; use tracing::debug; use crate::color::Space; use crate::material::{DispRemap, Displacement, DisplacementValue, Material, OpenPBR}; -use super::assets::{asset_path, load_ptex, load_uv_texture}; -use super::attrs::{ - attr_bool, attr_f32, attr_own_color_space, attr_vec3, custom_color3, custom_f32, custom_token, - decode_number, decode_text, in_working, value_at, -}; +use super::assets::{asset_value_path, load_ptex, load_uv_texture}; +use super::attrs::{custom_token, decode_number, decode_text, value_at}; use super::preview::{preview_displacement, preview_surface_material}; use super::{ImportCaches, prim_at}; @@ -695,54 +692,97 @@ pub(super) fn resolve_displacement( mtlx: Option>, caches: &mut ImportCaches<'_>, ) -> Option { - let found = if let Some(shader) = child_shader(stage, mat_path, "PxrDisplace") { - pxr_displacement(stage, mat_path, &shader, caches) + let src = MatSource::new(stage, mat_path, caches); + let found = if let Some(child) = src.child_with_id("PxrDisplace") { + // The node as the network has it; one no terminal reaches is read + // off its prim, authored inputs and connections as they stand. + let (network, name) = match src.node_at(child.path()) { + Some((network, name, _)) => (network.clone(), name.to_owned()), + None => detached_node(&src, &child), + }; + pxr_displacement(&src, &network, &name, caches) } else if let Some(field) = mtlx { Some(Displacement::new(DisplacementValue::Field { field, scale: 1.0, })) } else { - preview_displacement_of(stage, mat_path, caches) + preview_displacement_of(&src, caches) }?; // An authored bound on the material; a mesh prim's own overrides it. - let bound = custom_f32(&prim_at(stage, mat_path.clone()), "crust:displacementBound"); + let bound = src.prim.custom_f32("crust:displacementBound"); Some(found.with_authored_bound(bound)) } -/// The material's child `Shader` with this `info:id`, if any. -fn child_shader(stage: &Stage, mat_path: &sdf::Path, id: &str) -> Option { - let children = prim_at(stage, mat_path.clone()).children().ok()?; - // A token or a string, as `has_shader_id` accepts. - let child = children - .iter() - .find(|c| custom_token(c, "info:id").as_deref() == Some(id))?; - Shader::get(stage, child.path().clone()).ok().flatten() -} - -/// The value a shader input carries, its connection to the Material's -/// interface followed — how the island authors every parameter. -fn input_value(shader: &Shader, name: &str) -> Option { - shader - .input(name) - .value_producing_attributes(ProducerFilter::Any) - .ok()? - .into_iter() - .find_map(|a| value_at(a.attribute())) +/// A shader no terminal of the material reaches, as a one-node network named +/// by its stage path: its `info:id`, its authored inputs' values and its +/// inputs' connections, each to the upstream prim's output. +fn detached_node( + src: &MatSource, + prim: &super::index::data::PrimData, +) -> (super::index::network::Network, String) { + use super::index::network::{Connection, Network, Node, Parameter}; + let mut node = Node { + id: prim.custom_token("info:id").unwrap_or_default(), + ..Node::default() + }; + for name in prim.attribute_names() { + let Some(base) = name.strip_prefix("inputs:") else { + continue; + }; + let connections: Vec = prim + .connections(&name) + .into_iter() + .filter_map(|target| { + let (prim, prop) = target.split_property()?; + let output = prop.strip_prefix("outputs:")?.to_owned(); + Some(Connection { + node: prim.to_string(), + output, + }) + }) + .collect(); + if !connections.is_empty() { + node.connections.insert(base.to_owned(), connections); + } else if let Some(value) = prim.value(&name) { + node.parameters.insert( + base.to_owned(), + Parameter { + value: Some(value), + ..Parameter::default() + }, + ); + } + } + let name = prim.path().to_string(); + let mut network = Network { + material: src.path.clone(), + ..Network::default() + }; + network.nodes.insert(name.clone(), node); + (network, name) } -fn input_f32(shader: &Shader, name: &str) -> Option { - input_value(shader, name).and_then(decode_number) +/// A node parameter's number (`input_f32`). +fn param_f32(node: &super::index::network::Node, name: &str) -> Option { + node.parameters + .get(name) + .and_then(|p| p.value.clone()) + .and_then(decode_number) } -/// The shader whose output drives `shader.inputs:`, if one does. -fn upstream_shader(stage: &Stage, shader: &Shader, name: &str) -> Option { - let produced = shader - .input(name) - .value_producing_attributes(ProducerFilter::ShaderOutputsOnly) - .ok()?; - let source = produced.first()?; - Shader::get(stage, source.path().prim_path()).ok().flatten() +/// The node an input of `node` is connected to, with its name, when it is a +/// shader of the network (`upstream_shader`). +fn upstream<'n>( + network: &'n super::index::network::Network, + node: &str, + name: &str, +) -> Option<(&'n str, &'n super::index::network::Node)> { + let c = network.nodes.get(node)?.connections.get(name)?.first()?; + network + .nodes + .get_key_value(&c.node) + .map(|(k, v)| (k.as_str(), v)) } /// RenderMan's `PxrDisplace`, read the way `PxrDisneyBsdf` is: off the @@ -759,18 +799,15 @@ fn upstream_shader(stage: &Stage, shader: &Shader, name: &str) -> Option /// `dispScalar` (another blend operation, a UV `PxrTexture`) is refused with a /// warning, and so are `dispVector` / `modelDispVector`. fn pxr_displacement( - stage: &Stage, - mat_path: &sdf::Path, - displace: &Shader, + src: &MatSource, + network: &super::index::network::Network, + displace: &str, caches: &mut ImportCaches<'_>, ) -> Option { + let mat_path = &src.path; + let node = network.nodes.get(displace)?; for vector in ["dispVector", "modelDispVector"] { - let input = displace.input(vector); - let connected = input - .value_producing_attributes(ProducerFilter::ShaderOutputsOnly) - .ok() - .is_some_and(|p| !p.is_empty()); - if connected { + if node.connections.get(vector).is_some_and(|c| !c.is_empty()) { warning!( DisplacementVectorIgnored, at = mat_path, @@ -779,22 +816,22 @@ fn pxr_displacement( ); } } - let amount = input_f32(displace, "dispAmount").filter(|a| a.is_finite() && *a != 0.0)?; + let amount = param_f32(node, "dispAmount").filter(|a| a.is_finite() && *a != 0.0)?; - let Some(mut source) = upstream_shader(stage, displace, "dispScalar") else { + let Some((mut source, mut source_node)) = upstream(network, displace, "dispScalar") else { // A constant scalar: a uniform offset. - let s = input_f32(displace, "dispScalar").unwrap_or(0.0); + let s = param_f32(node, "dispScalar").unwrap_or(0.0); let c = amount * s; return (c != 0.0 && c.is_finite()) .then(|| Displacement::new(DisplacementValue::Constant(c))); }; let mut remap = DispRemap::None; - if shader_info_id(&source).as_deref() == Some("PxrDispTransform") { + if source_node.id == "PxrDispTransform" { // RenderMan's defaults for anything unauthored. - let mode = input_f32(&source, "dispRemapMode").unwrap_or(0.0) as i32; - let center = input_f32(&source, "dispCenter").unwrap_or(0.5); - let depth = input_f32(&source, "dispDepth").unwrap_or(1.0); - let height = input_f32(&source, "dispHeight").unwrap_or(1.0); + let mode = param_f32(source_node, "dispRemapMode").unwrap_or(0.0) as i32; + let center = param_f32(source_node, "dispCenter").unwrap_or(0.5); + let depth = param_f32(source_node, "dispDepth").unwrap_or(1.0); + let height = param_f32(source_node, "dispHeight").unwrap_or(1.0); remap = match mode { 1 => DispRemap::Centered { center }, 2 => DispRemap::DepthHeight { @@ -804,53 +841,51 @@ fn pxr_displacement( }, _ => DispRemap::None, }; - source = upstream_shader(stage, &source, "dispScalar")?; + (source, source_node) = upstream(network, source, "dispScalar")?; } - let refuse = |what: &Shader| { + let id = |n: &super::index::network::Node| (!n.id.is_empty()).then(|| n.id.clone()); + let refuse = |name: &str, what: &super::index::network::Node| { + let at = network + .path(name) + .map_or_else(|| name.to_owned(), |p| p.to_string()); warning!( DisplacementUnevaluated, at = mat_path, - "Material {mat_path}: PxrDisplace.dispScalar is driven by {} ({:?}), which \ + "Material {mat_path}: PxrDisplace.dispScalar is driven by {at} ({:?}), which \ crust does not evaluate — the surface is not displaced", - what.path(), - shader_info_id(what) + id(what) ); }; - let sources = match shader_info_id(&source).as_deref() { - Some("PxrPtexture") => vec![source], + let sources: Vec<&super::index::network::Node> = match source_node.id.as_str() { + "PxrPtexture" => vec![source_node], // RenderMan's `PxrBlend` operation 18 is multiply — the island also // uses it to mask its bump colour. `resultR` of the blend is the // product of the two inputs' red channels. - Some("PxrBlend") if input_f32(&source, "operation").map(|o| o as i32) == Some(18) => { - let top = upstream_shader(stage, &source, "topRGB"); - let bottom = upstream_shader(stage, &source, "bottomRGB"); + "PxrBlend" if param_f32(source_node, "operation").map(|o| o as i32) == Some(18) => { + let top = upstream(network, source, "topRGB"); + let bottom = upstream(network, source, "bottomRGB"); match (top, bottom) { - (Some(t), Some(b)) - if [&t, &b] - .iter() - .all(|s| shader_info_id(s).as_deref() == Some("PxrPtexture")) => - { + (Some((_, t)), Some((_, b))) if [t, b].iter().all(|s| s.id == "PxrPtexture") => { vec![t, b] } _ => { - refuse(&source); + refuse(source, source_node); return None; } } } _ => { - refuse(&source); + refuse(source, source_node); return None; } }; let mut maps = Vec::with_capacity(sources.len()); for tex in &sources { let file = tex - .input("filename") - .value_producing_attributes(ProducerFilter::Any) - .ok()? - .into_iter() - .find_map(|a| asset_path(a.attribute(), caches.stage_path))?; + .parameters + .get("filename") + .and_then(|p| p.value.as_ref()) + .and_then(|v| asset_value_path(v, caches.stage_path))?; maps.push(crate::PtexRef(load_ptex( &file, crate::ColorSpace::RAW, @@ -867,18 +902,14 @@ fn pxr_displacement( /// The preview surface's `inputs:displacement`, when the material shades /// with a `UsdPreviewSurface`. -fn preview_displacement_of( - stage: &Stage, - mat_path: &sdf::Path, - caches: &mut ImportCaches<'_>, -) -> Option { - let mat = UsdMaterial::get(stage, mat_path.clone()).ok().flatten()?; - let resolved = mat.surface_source(SURFACE_RENDER_CONTEXTS).ok().flatten()?; - let shader = resolved.sources().iter().find_map(TerminalSource::shader)?; - if shader_info_id(shader).as_deref() != Some("UsdPreviewSurface") { +fn preview_displacement_of(src: &MatSource, caches: &mut ImportCaches<'_>) -> Option { + let (network, node) = + super::index::network::resolve(&src.networks, "surface", SURFACE_RENDER_CONTEXTS)?; + let (shader, node) = node?; + if node.id != "UsdPreviewSurface" { return None; } - preview_displacement(stage, mat_path, shader, caches) + preview_displacement(src, network, shader, caches) } /// Render contexts `surface_source` is asked for, strongest first. @@ -907,6 +938,7 @@ fn resolve_material_uncached( mat_path: &sdf::Path, caches: &mut ImportCaches<'_>, ) -> Arc { + use super::index::network::resolve; // A material whose whole definition is a reference into a `.mtlx` composes // to a prim with a `Material` type name and *nothing inside it*, because // openusd ships no MaterialX file-format plugin. So every schema query @@ -933,19 +965,17 @@ fn resolve_material_uncached( // Which shader ids are MaterialX: the standard `ND_…`, and the ids the // import's node library defines. let library = caches.materials.library.clone(); - let mat = match UsdMaterial::get(stage, mat_path.clone()) { - Ok(Some(m)) => m, - _ => { - try_mtlx!(); - warning!( - MaterialFallbackDefault, - at = mat_path, - "Material at {} not resolvable — using default grey OpenPBR", - mat_path - ); - return default_material(); - } - }; + let src = MatSource::new(stage, mat_path, caches); + if src.prim.ty() != moho::tokens::prim_type::MATERIAL { + try_mtlx!(); + warning!( + MaterialFallbackDefault, + at = mat_path, + "Material at {} not resolvable — using default grey OpenPBR", + mat_path + ); + return default_material(); + } // Checked before asking for the surface source, because that answer cannot // be trusted to name the network that matters. A material carrying several @@ -956,55 +986,60 @@ fn resolve_material_uncached( // `.connect`ed to the material's interface rather than authored as values. // Decoding that gives a material with every parameter at its default: the // island rendered uniformly pale and glossy instead of matte dark rock. - if has_shader_id(stage, mat_path, "PxrDisneyBsdf") { + if src.child_with_id("PxrDisneyBsdf").is_some() { debug!( "Material {mat_path}: PxrDisneyBsdf child shader — decoding it off the Material prim" ); - return Arc::new(disney_to_openpbr(stage, mat_path, caches)); + return Arc::new(disney_to_openpbr(&src, caches)); } + let is_mtlx = |id: &str| super::mtlx_network::is_mtlx_id(id, &library); // A `volume` terminal makes the material Typhoon's surface-volume // material: the volume is the medium inside the bound geometry, under the // MaterialX surface of the same network when there is one, and a // transparent medium boundary when there is none. - if let Some(volume) = terminal_shader(mat.volume_source(VOLUME_RENDER_CONTEXTS)).filter(|s| { - shader_info_id(s).is_some_and(|id| super::mtlx_network::is_mtlx_id(&id, &library)) - }) { + let volume = resolve(&src.networks, "volume", VOLUME_RENDER_CONTEXTS) + .and_then(|(network, node)| node.map(|(name, node)| (network, name, node))) + .filter(|(_, _, node)| is_mtlx(&node.id)); + if let Some((volume_network, volume_name, _)) = volume { // Each context is checked for MaterialX on its own: an `mtlx` // surface that is not a MaterialX shader must not hide a universal // one that is. - let is_mtlx = |s: &Shader| { - shader_info_id(s).is_some_and(|id| super::mtlx_network::is_mtlx_id(&id, &library)) + let mtlx_surface = |contexts: &[&str]| { + resolve(&src.networks, "surface", contexts) + .and_then(|(network, node)| node.map(|(name, node)| (network, name, node))) + .filter(|(_, _, node)| is_mtlx(&node.id)) }; - let surface = terminal_shader(mat.surface_source(&["mtlx"])) - .filter(is_mtlx) - .or_else(|| terminal_shader(mat.surface_source(&[""])).filter(is_mtlx)); + let surface = mtlx_surface(&["mtlx"]).or_else(|| mtlx_surface(&[""])); + let other = + resolve(&src.networks, "surface", SURFACE_RENDER_CONTEXTS).and_then(|(_, node)| node); if surface.is_none() - && let Some(other) = terminal_shader(mat.surface_source(SURFACE_RENDER_CONTEXTS)) + && let Some((_, other)) = other { warning!( MaterialVolumeIgnored, at = mat_path, "Material {mat_path}: the volume terminal is MaterialX but the surface ({}) \ is not — the volume is ignored", - shader_info_id(&other).unwrap_or_default() + other.id ); - } else if let Some(m) = - inline_mtlx_material(stage, mat_path, surface.as_ref(), Some(&volume), caches) - { - return m; + } else { + if let Some(m) = inline_mtlx_material( + &src, + surface.map(|(n, name, _)| (n, name)), + Some((volume_network, volume_name)), + caches, + ) { + return m; + } } } - // openusd 0.7 hands back the whole resolved terminal — every source - // driving it, in connection order — where 0.6 returned the one shader. - // The first source whose endpoint is a `Shader`-typed prim is that shader; - // a source can point at an untyped prim, which is USD's invalid-shader - // result and not something to decode. - let resolved = mat.surface_source(SURFACE_RENDER_CONTEXTS).ok().flatten(); - let Some(shader) = resolved - .as_ref() - .and_then(|terminal| terminal.sources().iter().find_map(TerminalSource::shader)) + // The surface terminal over the render contexts in preference order: the + // first context that has one commits, and its node is the shader (none + // when the terminal's source is no `Shader`, USD's invalid-shader result). + let Some((network, Some((shader, node)))) = + resolve(&src.networks, "surface", SURFACE_RENDER_CONTEXTS) else { // The MaterialX case reaches here when the material prim itself // composed (a wrapper layer `over`s it, so the prim exists) but @@ -1019,19 +1054,22 @@ fn resolve_material_uncached( return default_material(); }; - let shader_id = shader_info_id(shader); + let shader_id = (!node.id.is_empty()).then(|| node.id.clone()); debug!("Material {mat_path}: surface shader id = {shader_id:?}"); match shader_id.as_deref() { - Some("crust:openpbr") => decode_crust_openpbr(shader, caches.working, caches.luma), + Some("crust:openpbr") => match src.node(network, shader) { + Some(prim) => decode_crust_openpbr(&prim, caches.working, caches.luma), + None => default_material(), + }, Some("UsdPreviewSurface") => { // The preview surface may still be the Ptex-driven one — the Moana // island wires its `diffuseColor` to a Ptex node — so consult the // material's own interface input either way. - preview_surface_material(stage, mat_path, shader, caches) + preview_surface_material(&src, network, shader, caches) } - Some("PxrDisneyBsdf") => Arc::new(disney_to_openpbr(stage, mat_path, caches)), - Some(id) if super::mtlx_network::is_mtlx_id(id, &library) => { - inline_mtlx_material(stage, mat_path, Some(shader), None, caches) + Some("PxrDisneyBsdf") => Arc::new(disney_to_openpbr(&src, caches)), + Some(id) if is_mtlx(id) => { + inline_mtlx_material(&src, Some((network, shader)), None, caches) .unwrap_or_else(default_material) } Some(other) => { @@ -1082,23 +1120,23 @@ fn terminal_shader( .and_then(|t| t.sources().iter().find_map(TerminalSource::shader).cloned()) } -/// Builds a material from an inline MaterialX network: the shaders driving +/// Builds a material from an inline MaterialX network: the nodes driving /// the `surface` and `volume` terminals, translated into one document /// ([`super::mtlx_network`]) and compiled as a `.mtlx`'s would be. Textures /// arrive as absolute paths, so they resolve against nothing further. fn inline_mtlx_material( - stage: &Stage, - mat_path: &sdf::Path, - surface: Option<&Shader>, - volume: Option<&Shader>, + src: &MatSource, + surface: Option<(&super::index::network::Network, &str)>, + volume: Option<(&super::index::network::Network, &str)>, caches: &mut ImportCaches<'_>, ) -> Option> { + let mat_path = &src.path; let net = super::mtlx_network::translate( - stage, + &|p| src.at(p), caches.stage_path, &caches.materials.library, - surface.map(|s| &**s), - volume.map(|s| &**s), + surface, + volume, ); if !net.reported.is_empty() { warning!( @@ -1128,6 +1166,115 @@ fn inline_mtlx_material( ) } +/// A material as the index readers read it: its prim and its networks +/// ([`super::index::network`]) in a scene index — the walked input's when it +/// holds the material, else one over the stage the material was found on (a +/// material outside the chunk, or an in-place rebuild's) — and the nodes' +/// prims, for what a shader input authors itself. +pub(super) struct MatSource { + /// The material's path, in the namespace it is bound in. + pub(super) path: sdf::Path, + pub(super) prim: super::index::data::PrimData, + pub(super) networks: std::collections::BTreeMap, + index: moho::scene_index::SceneIndexHandle, + stage: Stage, + /// The input built over `stage`, when the walked one does not hold the + /// material: kept alive with the source. + _input: Option, +} + +impl MatSource { + /// The material at `mat_path`, found on `home`. + pub(super) fn new(home: &Stage, mat_path: &sdf::Path, caches: &ImportCaches<'_>) -> Self { + use super::index::data::PrimData; + // Read at the top of the import's chain, where the material-node + // resolution has filled a node outside the walked chunk (Moho's M10), + // on the walked stage for the bridge's prototype mapping. + let walked = + caches + .scene + .as_ref() + .zip(caches.top.as_ref()) + .and_then(|((_, stage), top)| { + let prim = PrimData::bridged(top, stage, mat_path); + (prim.ty() == moho::tokens::prim_type::MATERIAL) + .then(|| (top.clone(), stage.clone(), prim)) + }); + let (index, stage, prim, input) = match walked { + Some((index, stage, prim)) => (index, stage, prim, None), + None => { + let input = super::index::input_chain(home.clone(), caches.time, false); + let prim = PrimData::bridged(&input.chain, home, mat_path); + (input.chain.clone(), home.clone(), prim, Some(input)) + } + }; + MatSource { + path: mat_path.clone(), + networks: super::index::network::networks(&prim), + prim, + index, + stage, + _input: input, + } + } + + /// The prim at `path`, read as the material is. + pub(super) fn at(&self, path: &sdf::Path) -> super::index::data::PrimData { + super::index::data::PrimData::bridged(&self.index, &self.stage, path) + } + + /// The prim of the node named `name` in `network`. + pub(super) fn node( + &self, + network: &super::index::network::Network, + name: &str, + ) -> Option { + network.prim(&|p| self.at(p), name) + } + + /// The material's child prim whose `info:id` is `id` (a token or a string, + /// as `has_shader_id` accepts), if any. + fn child_with_id(&self, id: &str) -> Option { + self.prim + .children() + .into_iter() + .find(|c| c.custom_token("info:id").as_deref() == Some(id)) + } + + /// The node at stage path `path` in any of the material's networks, with + /// its network and name. + fn node_at( + &self, + path: &sdf::Path, + ) -> Option<( + &super::index::network::Network, + &str, + &super::index::network::Node, + )> { + self.networks.values().find_map(|n| { + n.nodes + .iter() + .find(|(name, _)| n.path(name).as_ref() == Some(path)) + .map(|(name, node)| (n, name.as_str(), node)) + }) + } +} + +/// `name` through the OCIO config, warning at `at` (an attribute's path) when +/// it does not know it: `attrs::named_space`. +pub(super) fn named_space(at: &str, name: &str) -> Option { + let space = Space::named(name); + if space.is_none() { + warning!( + ColorUnknownSpace, + at = at, + "{at}: colorSpace `{name}` is not defined by the OCIO config — the value is used as \ + authored" + ); + } + space +} + pub(super) fn default_material() -> Arc { Arc::new(OpenPBR::diffuse(Vec3A::new(0.5, 0.5, 0.5))) } @@ -1179,16 +1326,13 @@ fn has_shader_id(stage: &Stage, mat_path: &sdf::Path, id: &str) -> bool { /// under a flat `1 − fuzz_weight`) replaced the base entirely — the lava rocks /// lost their Ptex detail and rendered as smooth blue-grey plastic. A weight is not a weight just because it shares a /// name, and there is no honest scalar between the two. -fn disney_to_openpbr( - stage: &Stage, - mat_path: &sdf::Path, - caches: &mut ImportCaches<'_>, -) -> OpenPBR { - let prim = prim_at(stage, mat_path.clone()); +fn disney_to_openpbr(src: &MatSource, caches: &mut ImportCaches<'_>) -> OpenPBR { + let mat_path = &src.path; + let prim = &src.prim; // Called with the whole attribute name, `inputs:` included: a literal, so // reading an input allocates no name. - let f = |n: &str| custom_f32(&prim, n); - let c = |n: &str| custom_color3(&prim, n); + let f = |n: &str| prim.custom_f32(n); + let c = |n: &str| prim.custom_color3(n); let mut o = OpenPBR { luma: caches.luma, @@ -1205,8 +1349,12 @@ fn disney_to_openpbr( // `colorSpace:name` does not, since it describes linear colour values and // this one is display-encoded by convention. if let Some(rgb) = c("inputs:baseColor") { - let source = - attr_own_color_space(&prim.attribute("inputs:baseColor")).unwrap_or(Space::G22_REC709); + let source = prim + .metadata("inputs:baseColor", "colorSpace") + .and_then(decode_text) + .filter(|n| !n.is_empty()) + .and_then(|n| named_space(&prim.attribute_path("inputs:baseColor"), &n)) + .unwrap_or(Space::G22_REC709); o.base_color = crate::color::convert(rgb, source, caches.working); } if let Some(v) = f("inputs:metallic") { @@ -1240,7 +1388,7 @@ fn disney_to_openpbr( o.geometry_thin_walled = v != 0.0; } - o.base_color_ptex = material_ptex(stage, mat_path, caches); + o.base_color_ptex = material_ptex(src, caches); debug!( "PxrDisneyBsdf {mat_path}: baseColor={:?} (authored {:?}) roughness={} metalness={} \ fuzz={} coat={} ior={} ptex={}", @@ -1384,21 +1532,26 @@ fn compile_mtlx( /// `HwPtexTexture_1.file` for the GL preview both `.connect` to it — so /// reading it directly gets the file without walking either network. pub(super) fn material_ptex( - stage: &Stage, - mat_path: &sdf::Path, + src: &MatSource, caches: &mut ImportCaches<'_>, ) -> Option { - let prim = prim_at(stage, mat_path.clone()); - let path = asset_path(&prim.attribute("inputs:surfaceMap"), caches.stage_path)?; + let path = src + .prim + .value("inputs:surfaceMap") + .and_then(|v| asset_value_path(&v, caches.stage_path))?; let space = crate::ColorSpace::new(Space::G22_REC709, caches.working); - load_ptex(&path, space, mat_path, caches).map(crate::PtexRef) + load_ptex(&path, space, &src.path, caches).map(crate::PtexRef) } /// Decode a `crust:openpbr` shader into the OpenPBR material. Every input /// name is camelCase mirror of the Rust snake_case, e.g. `base_color` → /// `inputs:baseColor`, `subsurface_radius_scale` → `inputs:subsurfaceRadiusScale`. -fn decode_crust_openpbr(shader: &Shader, working: Space, luma: utils::Luma) -> Arc { +fn decode_crust_openpbr( + shader: &super::index::data::PrimData, + working: Space, + luma: utils::Luma, +) -> Arc { let mut o = OpenPBR { luma, ..OpenPBR::default() @@ -1406,15 +1559,13 @@ fn decode_crust_openpbr(shader: &Shader, working: Space, luma: utils::Luma) -> A // Inputs by their whole attribute name (`inputs:roughness`): the names are // literals, so none is built per read. - let f = |n: &str, d: f32| attr_f32(&shader.attribute(n)).unwrap_or(d); + let f = |n: &str, d: f32| shader.custom_f32(n).unwrap_or(d); // Every colour is authored in the working space unless its `colorSpace` // metadatum names another (`in_working`); `v` reads a vector that is not // a colour and is never converted. - let c = |n: &str, d: Vec3A| { - attr_vec3(&shader.attribute(n)).map_or(d, |v| in_working(&shader.attribute(n), v, working)) - }; - let v = |n: &str, d: Vec3A| attr_vec3(&shader.attribute(n)).unwrap_or(d); - let b = |n: &str, d: bool| attr_bool(&shader.attribute(n)).unwrap_or(d); + let c = |n: &str, d: Vec3A| shader.custom_color(n, working).unwrap_or(d); + let v = |n: &str, d: Vec3A| shader.custom_color3(n).unwrap_or(d); + let b = |n: &str, d: bool| shader.custom_bool(n).unwrap_or(d); // Base o.base_weight = f("inputs:baseWeight", o.base_weight); diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index 0210205be..d6a7d8e8f 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -910,7 +910,7 @@ fn traverse_stage( } // The stage read through Moho (design D4), walked from the root. let scene = index::Single::new(stage.clone(), time); - index::walk::walk(&stage, &scene.input, ctx); + index::walk::walk(&stage, &scene.input, &scene.top, ctx); ctx.layers .extend(index::stage_facts::layer_identifiers(&stage)); if skip_stage_teardown { @@ -951,7 +951,7 @@ fn traverse_stage( // children from the chunk's own input, in its stage's order // (design D5). let input = scene.add_chunk(stage.clone(), chunk); - index::walk::walk(&stage, &input, ctx); + index::walk::walk(&stage, &input, &scene.top, ctx); scene.remove_chunk(&input); drop(input); // Always dropped, the last chunk included: that is the memory @@ -1224,6 +1224,7 @@ pub(crate) fn load_scene( frame_posed, asks_time, ), + time, ..ImportCaches::new(assets, path, subdiv, working, mtlx_library()) }, pending_meshes: Vec::new(), @@ -1507,7 +1508,7 @@ fn read_index( let mut settings = import_render_settings(scene, pass); // The products the render writes. The first one's camera and resolution // are the render's: the settings' own unless that product overrides them. - let products = import_render_products(index, scene, Some(path), pass); + let products = import_render_products(scene, Some(path), pass); if let Some((w, h)) = products.resolution { settings = settings.with_resolution(w, h); } @@ -1998,9 +1999,16 @@ struct ImportCaches<'a> { epoch: u32, /// The host's decoder, for materials that carry a texture asset. assets: &'a dyn AssetLoader, + /// The import's time code, for a scene index the readers build over a + /// stage of their own (a material outside the chunk). + time: Option, /// The chain of the input being walked ([`index::walk`]), set for the /// walk's duration so it does not keep a dropped chunk's stage alive. scene: Option<(moho::scene_index::SceneIndexHandle, Stage)>, + /// The top of the import's chain while a walk runs ([`index::walk`]): + /// the material readers read networks there, after the material-node + /// resolution (Moho's M10). + top: Option, /// Root layer, the fallback anchor for an asset path openusd handed back /// unresolved. stage_path: &'a Path, @@ -2131,7 +2139,9 @@ impl<'a> ImportCaches<'a> { motion: TransformMotion::default(), working, luma: crate::color::luma(working), + time: None, scene: None, + top: None, } } diff --git a/crates/crust-core/src/scene/usd_import/mtlx_network.rs b/crates/crust-core/src/scene/usd_import/mtlx_network.rs index a69f3dca0..1725eb856 100644 --- a/crates/crust-core/src/scene/usd_import/mtlx_network.rs +++ b/crates/crust-core/src/scene/usd_import/mtlx_network.rs @@ -9,14 +9,15 @@ //! stage, how Houdini and Maya export one, and how NVIDIA's Typhoon (the //! OpenUSD reference renderer's hdEmbree) receives every material it renders. //! -//! The network is translated node for node into the document crust-mtlx's -//! parser would have produced from the equivalent XML — the category and type -//! from the nodedef name, each input's literal formatted as the text a `value` -//! attribute holds and read back through the same -//! [`crust_mtlx::parse_literal`] — so a network shades exactly as the -//! same network in a `.mtlx` does. Connections through `NodeGraph` outputs and -//! through `Material` / `NodeGraph` interface inputs are followed to the -//! shader output or the literal they forward. +//! The network is read as the scene index gives it — the material's +//! `material` network ([`super::index::network`]), Hydra's material network +//! schema, its connections through `NodeGraph` outputs and interface inputs +//! already followed to a shader output or the value they forward — and +//! translated node for node into the document crust-mtlx's parser would have +//! produced from the equivalent XML: the category and type from the nodedef +//! name, each parameter's value formatted as the text a `value` attribute +//! holds and read back through the same [`crust_mtlx::parse_literal`], so a +//! network shades exactly as the same network in a `.mtlx` does. //! //! A shader id the import's MaterialX node library defines (a studio node //! whose nodedef name breaks the `ND_` convention) is read through its @@ -24,21 +25,15 @@ //! translated document is expanded against that library //! ([`crust_mtlx::Doc::expand`]), as a `.mtlx` is. -use std::collections::{HashMap, HashSet}; +use std::collections::{BTreeSet, HashMap, HashSet}; use std::path::Path; use crust_mtlx::{Doc, Input, Library, Node, Source, Val}; use openusd::sdf; -use openusd::usd::{Attribute, Prim, Stage}; -use super::assets::asset_path; -use super::materials::shader_info_id; -use super::prim_at; -use super::time::eval_time; - -/// How many forwarding hops (graph outputs, interface inputs) one connection -/// may take before the translation gives up on it — a cycle, in practice. -const MAX_HOPS: usize = 32; +use super::assets::asset_value_path; +use super::index::data::PrimData; +use super::index::network::{self as shading, GraphOutput, Network as Shading, Parameter}; /// A translated network: the document, and the node each terminal names. pub(super) struct Network { @@ -55,27 +50,28 @@ pub(super) fn is_mtlx_id(id: &str, library: &Library) -> bool { id.starts_with("ND_") || library.nodedef(id).is_some() } -/// Translates the networks under the shader prims `surface` and `volume` -/// (either may be absent) into one document. +/// Translates the networks under the nodes `surface` and `volume` (either +/// may be absent; each a network and a node name in it, the networks of the +/// render contexts the terminals resolved in) into one document. `at` reads +/// a node's prim, for its `outputs:out` type. pub(super) fn translate( - stage: &Stage, + at: &dyn Fn(&sdf::Path) -> PrimData, stage_path: &Path, library: &Library, - surface: Option<&Prim>, - volume: Option<&Prim>, + surface: Option<(&Shading, &str)>, + volume: Option<(&Shading, &str)>, ) -> Network { let mut b = Builder { - stage, + at, stage_path, library, nodes: Vec::new(), names: HashMap::new(), active: HashSet::new(), reported: Vec::new(), - interface: None, }; - let surface = surface.and_then(|p| b.node(p)); - let volume = volume.and_then(|p| b.node(p)); + let surface = surface.and_then(|(net, name)| b.node(net, name)); + let volume = volume.and_then(|(net, name)| b.node(net, name)); let mut doc = Doc::from_nodes(b.nodes); doc.expand(library); Network { @@ -87,7 +83,7 @@ pub(super) fn translate( } struct Builder<'s> { - stage: &'s Stage, + at: &'s dyn Fn(&sdf::Path) -> PrimData, stage_path: &'s Path, library: &'s Library, nodes: Vec, @@ -96,9 +92,6 @@ struct Builder<'s> { /// Shader prims being translated, for cycle detection. active: HashSet, reported: Vec, - /// The value graph being translated ([`translate_value_graph`]), whose - /// own interface inputs are the host's channels rather than literals. - interface: Option, } /// A translated value graph: its document, and each of the graph prim's @@ -110,55 +103,47 @@ pub(super) struct ValueNetwork { pub(super) reported: Vec, } -/// Translates the `NodeGraph` prim `graph` as a value graph: its shaders -/// node for node, as [`translate`] does, except that a connection to one of -/// the graph's own interface inputs becomes a [`Source::Interface`] of that -/// name — a channel the host supplies per evaluation — carrying the input's -/// authored value as its default. +/// Translates the `NodeGraph` at `graph` as a value graph +/// ([`shading::graph`], read from generic data): its shaders node for node, +/// as [`translate`] does, except that a connection to one of the graph's own +/// interface inputs becomes a [`Source::Interface`] of that name — a channel +/// the host supplies per evaluation — carrying the input's authored value as +/// its default. pub(super) fn translate_value_graph( - stage: &Stage, + at: &dyn Fn(&sdf::Path) -> PrimData, stage_path: &Path, - graph: &Prim, + graph: &sdf::Path, ) -> ValueNetwork { - let path = graph.path().as_str().to_string(); + let path = graph.as_str().to_string(); + let read = shading::graph(at, graph); // A sample filter reads standard nodes only: no custom nodedef is // resolved, so the document needs no expansion. let library = Library::default(); let mut b = Builder { - stage, + at, stage_path, library: &library, nodes: Vec::new(), names: HashMap::new(), active: HashSet::new(), - reported: Vec::new(), - interface: Some(path.clone()), + reported: read.reported, }; let mut outputs = Vec::new(); - let mut attrs = graph.attributes().unwrap_or_default(); - attrs.sort_by(|a, b| a.path().as_str().cmp(b.path().as_str())); - for attr in attrs { - let full = attr.path().split_property().map(|(_, n)| n.to_string()); - let Some(name) = full.as_deref().and_then(|n| n.strip_prefix("outputs:")) else { - continue; - }; - let usd_type = attr - .type_name() - .ok() - .flatten() - .map(|t| t.as_str().to_string()) - .unwrap_or_default(); - let resolved = b.resolve(&attr, 0); - match resolved { - Some(Resolved::Node { name: node, output }) => { - outputs.push((name.to_string(), node, output)); - } - Some(other) => { + for (name, usd_type, output) in read.outputs { + match output { + GraphOutput::Node(c) => match b.node(&read.network, &c.node) { + Some(node) => outputs.push((name, node, (c.output != "out").then_some(c.output))), + None => b + .reported + .push(format!("{path}.outputs:{name}: connects to nothing")), + }, + GraphOutput::Value(parameter) => { // An output wired straight to an interface input, or holding // a value: a `constant` node forwards it. let node = format!("{path}.outputs:{name}"); let mtype = mtlx_type(&usd_type); - if let Some(input) = b.resolved_input("value", &usd_type, other) { + let at = format!("{path}.outputs:{name}"); + if let Some(input) = b.parameter_input("value", &at, &usd_type, ¶meter) { b.nodes.push(Node { category: "constant".into(), name: node.clone(), @@ -168,12 +153,9 @@ pub(super) fn translate_value_graph( version: None, colorspace: None, }); - outputs.push((name.to_string(), node, None)); + outputs.push((name, node, None)); } } - None => b - .reported - .push(format!("{path}.outputs:{name}: connects to nothing")), } } ValueNetwork { @@ -184,242 +166,162 @@ pub(super) fn translate_value_graph( } impl Builder<'_> { - /// The node for the shader prim `prim`, translating it (and everything - /// upstream of it) on first use. `None` for a prim that is not a - /// MaterialX shader. - fn node(&mut self, prim: &Prim) -> Option { - let path = prim.path().as_str().to_string(); - if let Some(name) = self.names.get(&path) { + /// The node for the shader node `name` of `net`, translating it (and + /// everything upstream of it) on first use. `None` for a node that is not + /// a MaterialX shader, or that the network does not hold (a prim that is + /// no `Shader`). + fn node(&mut self, net: &Shading, name: &str) -> Option { + let path = net.path(name)?; + let key = path.as_str().to_string(); + if let Some(name) = self.names.get(&key) { return Some(name.clone()); } - if !self.active.insert(path.clone()) { - self.reported - .push(format!("{path}: connection cycle — cut")); + let node = net.nodes.get(name)?; + if !self.active.insert(key.clone()) { + self.reported.push(format!("{key}: connection cycle — cut")); return None; } - let shader = openusd_schemas::shade::Shader::get(self.stage, prim.path().clone()) - .ok() - .flatten(); - let id = shader.as_ref().and_then(shader_info_id); - let Some(id) = id.filter(|id| is_mtlx_id(id, self.library)) else { + if !is_mtlx_id(&node.id, self.library) { self.reported.push(format!( - "{path}: not a MaterialX shader ({}) — its input falls back to the default", - shader - .as_ref() - .and_then(shader_info_id) - .unwrap_or_else(|| "no info:id".into()) + "{key}: not a MaterialX shader ({}) — its input falls back to the default", + if node.id.is_empty() { + "no info:id" + } else { + &node.id + } )); - self.active.remove(&path); + self.active.remove(&key); return None; - }; + } // A library nodedef is named exactly, version included, so the // expansion instantiates that one and not its category's default. - let (category, type_name, version) = match self.library.nodedef(&id) { + let (category, type_name, version) = match self.library.nodedef(&node.id) { Some(def) => ( def.node.clone(), def.instance_type().to_string(), def.version.clone(), ), None => { - let (category, nd_type) = nodedef_category(&id); - let type_name = node_type(&category, nd_type, prim); + let (category, nd_type) = nodedef_category(&node.id); + let out = (self.at)(&path).type_name("outputs:out"); + let type_name = node_type( + &category, + nd_type, + Some(out.as_str()).filter(|t| !t.is_empty()), + ); (category, type_name, None) } }; + let names: BTreeSet<&String> = node + .parameters + .keys() + .chain(node.connections.keys()) + .collect(); let mut inputs = Vec::new(); - for attr in prim.attributes().unwrap_or_default() { - let full = attr.path().split_property().map(|(_, n)| n.to_string()); - let Some(name) = full.as_deref().and_then(|n| n.strip_prefix("inputs:")) else { - continue; + for input in names { + let at = format!("{key}.inputs:{input}"); + // As UsdImaging's graph walk: a connection wins over a value. + let made = match node.connections.get(input).and_then(|c| c.first()) { + Some(c) => self.node(net, &c.node).map(|upstream| { + let type_name = self + .nodes + .iter() + .find(|n| n.name == upstream) + .map(|n| n.type_name.clone()) + .unwrap_or_else(|| "float".to_string()); + Input { + name: input.clone(), + type_name, + source: Source::Node { + name: upstream, + output: (c.output != "out").then(|| c.output.clone()), + }, + colorspace: None, + text: None, + interface: None, + } + }), + None => match node.parameters.get(input) { + Some(p) => self.parameter_input(input, &at, "", p), + None => None, + }, }; - if let Some(input) = self.input(name, &attr) { - inputs.push(input); + if let Some(made) = made { + inputs.push(made); } } - self.active.remove(&path); - self.names.insert(path.clone(), path.clone()); + self.active.remove(&key); + self.names.insert(key.clone(), key.clone()); self.nodes.push(Node { category, - name: path.clone(), + name: key.clone(), type_name, inputs, graph: None, version, colorspace: None, }); - Some(path) - } - - /// One `inputs:` attribute as a MaterialX input: a connection to - /// the node it resolves to, or its literal. - fn input(&mut self, name: &str, attr: &Attribute) -> Option { - let usd_type = attr - .type_name() - .ok() - .flatten() - .map(|t| t.as_str().to_string()) - .unwrap_or_default(); - let resolved = self.resolve(attr, 0)?; - self.resolved_input(name, &usd_type, resolved) + Some(key) } - /// The input `name` (of USD type `usd_type`) as where its connection - /// ended. - fn resolved_input(&mut self, name: &str, usd_type: &str, resolved: Resolved) -> Option { - let usd_type = usd_type.to_string(); - match resolved { - Resolved::Interface { - attr, - name: channel, - } => { - let ty = attr - .type_name() - .ok() - .flatten() - .map(|t| t.as_str().to_string()) - .unwrap_or(usd_type); - let mtype = mtlx_type(&ty); - let default = attr - .get_at::(eval_time()) - .ok() - .flatten() - .and_then(|_| self.literal_text(&attr, mtype)) - .and_then(|text| literal_value(&text, mtype)); - let colorspace = attr - .metadata::("colorSpace") - .ok() - .flatten() - .and_then(|v| v.as_str().map(str::to_owned)); - Some(Input { - name: name.to_string(), - type_name: mtype.to_string(), - source: Source::Interface { - name: channel, - default, - }, - colorspace, - text: None, - interface: None, - }) - } - Resolved::Node { name: node, output } => { - let type_name = self - .nodes - .iter() - .find(|n| n.name == node) - .map(|n| n.type_name.clone()) - .unwrap_or_else(|| mtlx_type(&usd_type).to_string()); - Some(Input { - name: name.to_string(), - type_name, - source: Source::Node { name: node, output }, - colorspace: None, - text: None, - interface: None, - }) - } - Resolved::Value(owner) => { - let ty = owner - .type_name() - .ok() - .flatten() - .map(|t| t.as_str().to_string()) - .unwrap_or(usd_type); - let mtype = mtlx_type(&ty); - let text = self.literal_text(&owner, mtype)?; - let Some(value) = literal_value(&text, mtype) else { - // Left unauthored, so it takes its nodedef default. - self.reported - .push(format!("{}: {text:?} is not a {mtype} value", owner.path())); - return None; - }; - let source = Source::Value(value); - let colorspace = owner - .metadata::("colorSpace") - .ok() - .flatten() - .and_then(|v| v.as_str().map(str::to_owned)); - Some(Input { - name: name.to_string(), - type_name: mtype.to_string(), - source, - colorspace, - text: Some(text), - interface: None, - }) - } + /// The input `name` taking the parameter `p` (its USD type `usd_type` + /// when the parameter carries none): a literal, or the value graph's + /// interface channel. + fn parameter_input( + &mut self, + name: &str, + at: &str, + usd_type: &str, + p: &Parameter, + ) -> Option { + let ty = p.type_name.as_deref().unwrap_or(usd_type); + let mtype = mtlx_type(ty); + if let Some(channel) = &p.interface { + let default = p + .value + .as_ref() + .and_then(|v| self.literal_text(v, at, mtype)) + .and_then(|text| literal_value(&text, mtype)); + return Some(Input { + name: name.to_string(), + type_name: mtype.to_string(), + source: Source::Interface { + name: channel.clone(), + default, + }, + colorspace: p.color_space.clone(), + text: None, + interface: None, + }); } - } - - /// Follows `attr`'s connection — through graph outputs and interface - /// inputs — to a shader output or to the attribute whose value it takes. - /// `None` when it leads nowhere (an unconnected, unauthored interface - /// input, a non-MaterialX shader, a cycle): the input stays unauthored - /// and takes its nodedef default. - fn resolve(&mut self, attr: &Attribute, hops: usize) -> Option { - let targets = attr.connections().unwrap_or_default(); - let Some(target) = targets.first() else { - // An `inputs:` / `outputs:` with no connection forwards its own - // value, if it has one. - return attr - .get_at::(eval_time()) - .ok() - .flatten() - .map(|_| Resolved::Value(attr.clone())); - }; - if hops >= MAX_HOPS { + let text = self.literal_text(p.value.as_ref()?, at, mtype)?; + let Some(value) = literal_value(&text, mtype) else { + // Left unauthored, so it takes its nodedef default. self.reported - .push(format!("{}: connection chain too long — cut", attr.path())); + .push(format!("{at}: {text:?} is not a {mtype} value")); return None; - } - let (prim_path, prop) = target.split_property()?; - // An interface input of the value graph being translated: the - // host's channel, whatever value it authors. - if self.interface.as_deref() == Some(prim_path.as_str()) - && let Some(channel) = prop.strip_prefix("inputs:") - { - let attr = prim_at(self.stage, prim_path.clone()).attribute(prop); - return Some(Resolved::Interface { - attr, - name: channel.to_string(), - }); - } - let prim = prim_at(self.stage, prim_path); - let is_shader = prim - .type_name() - .ok() - .flatten() - .is_some_and(|t| t.as_str() == "Shader"); - match prop.strip_prefix("outputs:") { - Some(output) if is_shader => { - let name = self.node(&prim)?; - Some(Resolved::Node { - name, - output: (output != "out").then(|| output.to_string()), - }) - } - // A container's output or interface input forwards whatever it - // is connected to, or its own value. - _ => { - let next = prim.attribute(prop); - self.resolve(&next, hops + 1) - } - } + }; + Some(Input { + name: name.to_string(), + type_name: mtype.to_string(), + source: Source::Value(value), + colorspace: p.color_space.clone(), + text: Some(text), + interface: None, + }) } - /// An attribute's value as the text a MaterialX `value` attribute would - /// hold. `filename`s are resolved against the layer that authored them, - /// as every USD asset path is, and written absolute. - fn literal_text(&mut self, attr: &Attribute, mtype: &str) -> Option { - let value = attr.get_at::(eval_time()).ok().flatten()?; + /// A value as the text a MaterialX `value` attribute would hold. + /// `filename`s are written absolute, resolved as every USD asset path is. + fn literal_text(&mut self, value: &sdf::Value, at: &str, mtype: &str) -> Option { let join = |v: &[f64]| { v.iter() .map(|x| format!("{}", *x as f32)) .collect::>() .join(", ") }; - Some(match &value { + Some(match value { sdf::Value::Bool(b) => b.to_string(), sdf::Value::Int(i) => i.to_string(), sdf::Value::Float(x) => format!("{x}"), @@ -436,14 +338,15 @@ impl Builder<'_> { sdf::Value::Matrix3d(m) => join(&m.0), sdf::Value::String(s) => s.clone(), sdf::Value::Token(t) => t.as_str().to_string(), - sdf::Value::AssetPath(_) if mtype == "filename" => asset_path(attr, self.stage_path)? - .to_string_lossy() - .into_owned(), + sdf::Value::AssetPath(_) if mtype == "filename" => { + asset_value_path(value, self.stage_path)? + .to_string_lossy() + .into_owned() + } sdf::Value::AssetPath(p) => p.as_str().to_string(), other => { self.reported.push(format!( - "{}: value of type {:?} not translated", - attr.path(), + "{at}: value of type {:?} not translated", std::mem::discriminant(other) )); return None; @@ -452,21 +355,6 @@ impl Builder<'_> { } } -/// Where a connection ends. -enum Resolved { - /// A shader output: the node, and the output when not the default `out`. - Node { - name: String, - output: Option, - }, - /// The attribute whose value the input takes. - Value(Attribute), - /// An interface input of the value graph being translated - /// ([`translate_value_graph`]): the channel `name`, and the attribute - /// whose value is its default. - Interface { attr: Attribute, name: String }, -} - /// The MaterialX type tokens a nodedef name spells its signature with. const TYPES: [&str; 18] = [ "float", @@ -538,7 +426,7 @@ fn nodedef_category(id: &str) -> (String, Option<&str>) { /// The MaterialX type of a node: a closure or shader type when its category /// or signature says so, else its `outputs:out`'s USD type, else the /// signature's. -fn node_type(category: &str, signature: Option<&str>, prim: &Prim) -> String { +fn node_type(category: &str, signature: Option<&str>, out: Option<&str>) -> String { let closure = |t: &str| match t { "bsdf" => Some("BSDF"), "edf" => Some("EDF"), @@ -566,13 +454,7 @@ fn node_type(category: &str, signature: Option<&str>, prim: &Prim) -> String { return sig.to_string(); } } - let out = prim - .attribute("outputs:out") - .type_name() - .ok() - .flatten() - .map(|t| t.as_str().to_string()); - match out.as_deref().map(mtlx_type) { + match out.map(mtlx_type) { Some(t) if t != "string" => t.to_string(), _ => signature.unwrap_or("float").to_string(), } @@ -703,8 +585,20 @@ mod tests { let stage = super::super::stage_builder() .open(path.to_str().unwrap()) .expect("stage opens"); - let prim = super::super::prim_at(&stage, openusd::sdf::path("/S").unwrap()); - let net = translate(&stage, &path, &library, Some(&prim), None); + let network = super::shading::Network { + material: openusd::sdf::path("/").unwrap(), + nodes: [( + "/S".to_string(), + super::shading::Node { + id: "ND_k_v2".into(), + ..Default::default() + }, + )] + .into(), + ..Default::default() + }; + let at = |p: &openusd::sdf::Path| PrimData::test_at(&stage, p); + let net = translate(&at, &path, &library, Some((&network, "/S")), None); assert!(net.doc.reported.is_empty(), "{:?}", net.doc.reported); let c = net .doc diff --git a/crates/crust-core/src/scene/usd_import/precomp.rs b/crates/crust-core/src/scene/usd_import/precomp.rs index 58fb4526e..cc91a93f3 100644 --- a/crates/crust-core/src/scene/usd_import/precomp.rs +++ b/crates/crust-core/src/scene/usd_import/precomp.rs @@ -14,7 +14,6 @@ use std::path::Path; use std::sync::Arc; use openusd::sdf; -use openusd::usd::Stage; use tracing::debug; use crate::aov::{AovRequest, AovSource, AovVar, FilterSource, Precision}; @@ -23,12 +22,10 @@ use crate::precomp::{ }; use crate::warning; -use super::assets::asset_path; +use super::assets::asset_value_path; use super::attrs::decode_vec3; use super::index::data::PrimData; -use super::materials::shader_info_id; use super::mtlx_network::translate_value_graph; -use super::prim_at; use super::products::FilterTarget; /// The name a sample filter input reads the beauty radiance by. @@ -39,12 +36,13 @@ const BEAUTY: &str = "beauty"; /// dropping the ones that cannot be. `None` when the prim authors no filter /// list and no `crust:display`. /// -/// The settings prim and the display filters' inputs are read from the scene -/// index; the filters' shader ids, kernel assets and sample-filter graphs are -/// shading networks, which still read the stage through the bridge until the -/// material family moves (`moho-import` task 9.2). +/// Read from the scene index: the settings prim and the display filters from +/// their generic data, and the sample filters' graphs (no material, so no +/// `material` network) from their prims' generic data +/// ([`super::index::network::graph`]). Whether a prim is a `Shader` — whose +/// `info:id` alone names a display operation or a graph node — is its USD +/// type, `__usdPrimInfo/typeName`. pub(super) fn import_precomp( - stage: &Stage, scene: &dyn moho::scene_index::SceneIndex, stage_path: &Path, settings: &sdf::Path, @@ -71,7 +69,7 @@ pub(super) fn import_precomp( // The sample filters' graphs first: a var reading one needs its outputs. let graphs: Vec = sample_paths .iter() - .map(|p| Graph::read(stage, stage_path, p)) + .map(|p| Graph::read(scene, stage_path, p)) .collect(); drop_unresolved(request, targets, &graphs, &display_paths); let vars = Vars::of(request); @@ -84,7 +82,6 @@ pub(super) fn import_precomp( let mut display: Vec = Vec::with_capacity(display_paths.len()); for (index, path) in display_paths.iter().enumerate() { let filter = read_display( - stage, scene, stage_path, path, @@ -122,6 +119,11 @@ pub(super) fn import_precomp( Some(Arc::new(precomp)) } +/// Whether `prim` is a `Shader` (`UsdShadeShader`): its USD type. +fn is_shader(prim: &PrimData) -> bool { + prim.usd_type() == "Shader" +} + /// Every var of the render, by layer name: the first var of that name wins, /// in product order. struct Vars<'a> { @@ -149,9 +151,12 @@ struct Graph { } impl Graph { - fn read(stage: &Stage, stage_path: &Path, path: &sdf::Path) -> Graph { - let prim = prim_at(stage, path.clone()); - let network = translate_value_graph(stage, stage_path, &prim); + fn read( + scene: &dyn moho::scene_index::SceneIndex, + stage_path: &Path, + path: &sdf::Path, + ) -> Graph { + let network = translate_value_graph(&|p| PrimData::at(scene, p), stage_path, path); let roots: Vec<(&str, Option<&str>)> = network .outputs .iter() @@ -410,7 +415,6 @@ fn beauty_var() -> AovVar { /// Display filter `index` at `path`. #[allow(clippy::too_many_arguments)] fn read_display( - stage: &Stage, scene: &dyn moho::scene_index::SceneIndex, stage_path: &Path, path: &sdf::Path, @@ -421,10 +425,13 @@ fn read_display( vars: &Vars<'_>, ) -> DisplayFilter { let prim = PrimData::at(scene, path); - let shader = openusd_schemas::shade::Shader::get(stage, path.clone()) - .ok() - .flatten(); - let id = shader.as_ref().and_then(shader_info_id).unwrap_or_default(); + // A `Shader`'s `info:id` (`UsdShadeShader::GetIdAttr`), none on any + // other prim. + let id = if is_shader(&prim) { + prim.custom_token("info:id").unwrap_or_default() + } else { + String::new() + }; let names = ImageNames { path, index, @@ -437,10 +444,9 @@ fn read_display( let op = match id.as_str() { "crust:convolve" => Operation::Convolve { input: image("in"), - kernel_path: asset_path( - &super::index::bridge::prim(stage, path).attribute("inputs:kernel"), - stage_path, - ), + kernel_path: prim + .value("inputs:kernel") + .and_then(|v| asset_value_path(&v, stage_path)), kernel: None, scale: prim.custom_f32("inputs:kernelScale").unwrap_or(1.0), normalize: input_bool(&prim, "inputs:normalize").unwrap_or(true), diff --git a/crates/crust-core/src/scene/usd_import/preview.rs b/crates/crust-core/src/scene/usd_import/preview.rs index 2f4e2155b..00079f7c0 100644 --- a/crates/crust-core/src/scene/usd_import/preview.rs +++ b/crates/crust-core/src/scene/usd_import/preview.rs @@ -1,24 +1,172 @@ -//! `UsdPreviewSurface` (+ `UsdUVTexture`) → [`OpenPBR`] / [`crate::PreviewSurface`]. +//! `UsdPreviewSurface` (+ `UsdUVTexture`) → [`OpenPBR`] / [`crate::PreviewSurface`], +//! read from the material's network in the scene index ([`super::index::network`]). use crate::warning; use std::sync::Arc; use glam::Vec3A; -use openusd::sdf; -use openusd::usd::Stage; -use openusd_schemas::shade; -use openusd_schemas::shade::{ - Connectable, ProducerFilter, ReadPreviewSurface, Shader, ShadingAttribute, -}; +use moho::openusd::sdf; use tracing::debug; use crate::color::Space; use crate::material::{Displacement, DisplacementValue, Material, OpenPBR}; use super::ImportCaches; -use super::assets::{asset_path, load_uv_texture}; -use super::attrs::{attr_own_color_space, decode_float4, in_working, value_at}; -use super::materials::{material_ptex, shader_info_id}; +use super::assets::{asset_value_path, load_uv_texture}; +use super::attrs::decode_float4; +use super::index::data::{PrimData, color_space}; +use super::index::network::{self, Network}; +use super::materials::{MatSource, material_ptex, named_space}; + +/// `UsdUVTexture`'s identifier and its inputs. +mod tk { + pub(super) const USD_UV_TEXTURE: &str = "UsdUVTexture"; + pub(super) const USD_PRIMVAR_READER_FLOAT2: &str = "UsdPrimvarReader_float2"; + pub(super) const FILE: &str = "file"; + pub(super) const ST: &str = "st"; + pub(super) const VARNAME: &str = "varname"; + pub(super) const SOURCE_COLOR_SPACE: &str = "sourceColorSpace"; + pub(super) const FALLBACK: &str = "fallback"; + pub(super) const SCALE: &str = "scale"; + pub(super) const BIAS: &str = "bias"; + pub(super) const WRAP_S: &str = "wrapS"; + pub(super) const WRAP_T: &str = "wrapT"; +} + +/// One `UsdPreviewSurface` input, as openusd-schemas' `read_preview_surface` +/// reads it: the `UsdUVTexture` feeding it (its first upstream node, when it +/// is one with a `file`), else the value the shader authors on the input +/// itself (an interface connection is not followed), else unset. +enum Channel { + Unset, + Value(T), + Texture, +} + +impl Channel { + fn value(&self) -> Option<&T> { + match self { + Channel::Value(v) => Some(v), + _ => None, + } + } + + fn textured(&self) -> bool { + matches!(self, Channel::Texture) + } + + fn is_set(&self) -> bool { + !matches!(self, Channel::Unset) + } +} + +/// A `UsdPreviewSurface` read off the network: its node and every channel. +struct PreviewRead { + diffuse_color: Channel, + emissive_color: Channel, + specular_color: Channel, + metallic: Channel, + roughness: Channel, + clearcoat: Channel, + clearcoat_roughness: Channel, + opacity: Channel, + opacity_threshold: Channel, + ior: Channel, + normal: Channel, + occlusion: Channel, +} + +/// Whether input `name` of the node `node` is fed by a `UsdUVTexture` with a +/// `file` value (`connected_texture_file`). +fn connected_texture(network: &Network, node: &str, name: &str) -> bool { + let Some(first) = network + .nodes + .get(node) + .and_then(|n| n.connections.get(name)) + .and_then(|c| c.first()) + else { + return false; + }; + network.nodes.get(&first.node).is_some_and(|tex| { + tex.id == tk::USD_UV_TEXTURE + && tex + .parameters + .get(tk::FILE) + .and_then(|p| p.value.as_ref()) + .and_then(sdf::Value::as_str) + .is_some() + }) +} + +fn color_channel(network: &Network, node: &str, prim: &PrimData, name: &str) -> Channel { + if connected_texture(network, node, name) { + return Channel::Texture; + } + match prim.resolved(&format!("inputs:{name}")) { + Some(sdf::Value::Vec3f(v)) => Channel::Value(Vec3A::new(v.x, v.y, v.z)), + Some(sdf::Value::Vec3d(v)) => { + Channel::Value(Vec3A::new(v.x as f32, v.y as f32, v.z as f32)) + } + Some(sdf::Value::Vec3h(v)) => { + Channel::Value(Vec3A::new(v.x.to_f32(), v.y.to_f32(), v.z.to_f32())) + } + _ => Channel::Unset, + } +} + +fn scalar_channel(network: &Network, node: &str, prim: &PrimData, name: &str) -> Channel { + if connected_texture(network, node, name) { + return Channel::Texture; + } + match prim.resolved(&format!("inputs:{name}")) { + Some(sdf::Value::Float(f)) => Channel::Value(f), + Some(sdf::Value::Double(d)) => Channel::Value(d as f32), + Some(sdf::Value::Half(h)) => Channel::Value(h.to_f32()), + Some(sdf::Value::Int(i)) => Channel::Value(i as f32), + _ => Channel::Unset, + } +} + +/// The material's `UsdPreviewSurface`, as `read_preview_surface` finds it: the +/// universal surface terminal, else the authored contexts' in sorted order; +/// `None` unless its first source is a `UsdPreviewSurface` node. +fn read_preview(src: &MatSource) -> Option { + let resolved = network::resolve(&src.networks, "surface", &[]).or_else(|| { + let mut contexts: Vec<&str> = src + .networks + .iter() + .filter(|(c, n)| !c.is_empty() && n.terminals.contains_key("surface")) + .map(|(c, _)| c.as_str()) + .collect(); + contexts.sort(); + (!contexts.is_empty()) + .then(|| network::resolve(&src.networks, "surface", &contexts)) + .flatten() + })?; + let (network, Some((node, shader))) = resolved else { + return None; + }; + if shader.id != "UsdPreviewSurface" { + return None; + } + let prim = src.node(network, node)?; + let c = |name: &str| color_channel(network, node, &prim, name); + let f = |name: &str| scalar_channel(network, node, &prim, name); + Some(PreviewRead { + diffuse_color: c("diffuseColor"), + emissive_color: c("emissiveColor"), + specular_color: c("specularColor"), + metallic: f("metallic"), + roughness: f("roughness"), + clearcoat: f("clearcoat"), + clearcoat_roughness: f("clearcoatRoughness"), + opacity: f("opacity"), + opacity_threshold: f("opacityThreshold"), + ior: f("ior"), + normal: c("normal"), + occlusion: f("occlusion"), + }) +} /// A `UsdPreviewSurface` material: its constants as an [`OpenPBR`], wrapped in /// a [`crate::PreviewSurface`] when any input is driven by a `UsdUVTexture`. @@ -26,20 +174,25 @@ use super::materials::{material_ptex, shader_info_id}; /// An untextured surface — and one whose every texture connection turned out /// unusable — stays the plain `OpenPBR` it always was, so it neither builds a /// UV table nor pays a per-hit evaluation. +/// +/// `shader` is the surface node the material resolves to (in `network`), whose +/// inputs are followed to textures and whose colours name their space. pub(super) fn preview_surface_material( - stage: &Stage, - mat_path: &sdf::Path, - shader: &Shader, + src: &MatSource, + network: &Network, + shader: &str, caches: &mut ImportCaches<'_>, ) -> Arc { use crate::material::preview_surface::Target; - let ps = shade::read_preview_surface(stage, mat_path).ok().flatten(); - let mut base = match &ps { - Some(ps) => preview_surface_openpbr(ps, shader, caches.working), - None => OpenPBR::diffuse(Vec3A::new(0.5, 0.5, 0.5)), + let mat_path = &src.path; + let shader_prim = src.node(network, shader); + let ps = read_preview(src); + let mut base = match (&ps, &shader_prim) { + (Some(ps), Some(prim)) => preview_surface_openpbr(ps, prim, caches.working), + _ => OpenPBR::diffuse(Vec3A::new(0.5, 0.5, 0.5)), }; - base.base_color_ptex = material_ptex(stage, mat_path, caches); + base.base_color_ptex = material_ptex(src, caches); base.luma = caches.luma; let Some(ps) = ps else { return Arc::new(base); @@ -49,20 +202,20 @@ pub(super) fn preview_surface_material( // to a `UsdUVTexture` output, which is the question; the walk below then // reads the whole node rather than just its file. let textured = [ - (Target::DiffuseColor, ps.diffuse_color.texture().is_some()), - (Target::EmissiveColor, ps.emissive_color.texture().is_some()), - (Target::Metallic, ps.metallic.texture().is_some()), - (Target::Roughness, ps.roughness.texture().is_some()), + (Target::DiffuseColor, ps.diffuse_color.textured()), + (Target::EmissiveColor, ps.emissive_color.textured()), + (Target::Metallic, ps.metallic.textured()), + (Target::Roughness, ps.roughness.textured()), // Translucency only: a textured cutout mask is read apart, below. ( Target::Opacity, - ps.opacity.texture().is_some() && opacity_transmission(&ps), + ps.opacity.textured() && opacity_transmission(&ps), ), - (Target::Ior, ps.ior.texture().is_some()), - (Target::Clearcoat, ps.clearcoat.texture().is_some()), + (Target::Ior, ps.ior.textured()), + (Target::Clearcoat, ps.clearcoat.textured()), ( Target::ClearcoatRoughness, - ps.clearcoat_roughness.texture().is_some(), + ps.clearcoat_roughness.textured(), ), ]; let mut inputs = Vec::new(); @@ -77,8 +230,8 @@ pub(super) fn preview_surface_material( for (target, is_textured) in textured { if is_textured && let Some((input, varname)) = preview_uv_input( - stage, - mat_path, + src, + network, shader, target.input_name(), if target.is_colour() { @@ -93,8 +246,8 @@ pub(super) fn preview_surface_material( inputs.push((target, input)); } } - let normal = if ps.normal.texture().is_some() { - preview_uv_input(stage, mat_path, shader, "normal", TexRole::Value, caches).map( + let normal = if ps.normal.textured() { + preview_uv_input(src, network, shader, "normal", TexRole::Value, caches).map( |(input, varname)| { note(varname); input @@ -106,8 +259,8 @@ pub(super) fn preview_surface_material( // `opacityThreshold > 0` with a textured opacity: the mask is sampled // per hit. (A constant one is already thresholded into // `geometry_opacity`.) - let cutout = if !opacity_transmission(&ps) && ps.opacity.texture().is_some() { - preview_uv_input(stage, mat_path, shader, "opacity", TexRole::Value, caches).map( + let cutout = if !opacity_transmission(&ps) && ps.opacity.textured() { + preview_uv_input(src, network, shader, "opacity", TexRole::Value, caches).map( |(input, varname)| { note(varname); let threshold = ps.opacity_threshold.value().copied().unwrap_or(0.0); @@ -180,62 +333,48 @@ enum TexRole { /// `role` says what the texture holds, which decides its decode (see /// [`TexRole`]). fn preview_uv_input( - stage: &Stage, - mat_path: &sdf::Path, - shader: &Shader, + src: &MatSource, + network: &Network, + shader: &str, name: &str, role: TexRole, caches: &mut ImportCaches<'_>, ) -> Option<(crate::material::preview_surface::UvInput, Option)> { use crate::material::preview_surface::{TexOutput, UvInput, Wrap}; - use shade::nodes::tokens as tk; - let surface_input = shader.input(name); - let produced = surface_input - .value_producing_attributes(ProducerFilter::ShaderOutputsOnly) - .ok()?; - let source = produced.first()?; - let output = match source { - ShadingAttribute::Output(o) => TexOutput::from_name(o.base_name()), - ShadingAttribute::Input(_) => None, - }; - let Some(output) = output else { + let mat_path = &src.path; + let source = network.nodes.get(shader)?.connections.get(name)?.first()?; + let Some(output) = TexOutput::from_name(&source.output) else { + let at = network + .path(&source.node) + .map_or_else(|| source.node.clone(), |p| p.to_string()); warning!( PreviewUnsupportedConnection, at = mat_path, - "UsdPreviewSurface at {mat_path}: {name} connects to {}, not a UsdUVTexture \ - r/g/b/a/rgb output — using its constant", - source.path() + "UsdPreviewSurface at {mat_path}: {name} connects to {at}.outputs:{}, not a \ + UsdUVTexture r/g/b/a/rgb output — using its constant", + source.output ); return None; }; - let tex = Shader::get(stage, source.path().prim_path()) - .ok() - .flatten()?; - if shader_info_id(&tex).as_deref() != Some(tk::USD_UV_TEXTURE) { + let tex = network.nodes.get(&source.node)?; + if tex.id != tk::USD_UV_TEXTURE { return None; } + let tex_path = network.path(&source.node)?; - // The value an input carries, connection followed. - let value = |input: &shade::Input| -> Option { - let produced = input.value_producing_attributes(ProducerFilter::Any).ok()?; - value_at(produced.first()?.attribute()) - }; - let token = |input: &str| value(&tex.input(input)).and_then(|v| v.as_str().map(str::to_owned)); - let float4 = |input: &str| value(&tex.input(input)).and_then(decode_float4); + // The value an input carries, an interface connection followed: the + // node's parameter. + let value = |input: &str| tex.parameters.get(input).and_then(|p| p.value.clone()); + let token = |input: &str| value(input).and_then(|v| v.as_str().map(str::to_owned)); + let float4 = |input: &str| value(input).and_then(decode_float4); - let file = tex - .input(tk::FILE) - .value_producing_attributes(ProducerFilter::Any) - .ok() - .and_then(|p| p.into_iter().next()) - .and_then(|a| asset_path(a.attribute(), caches.stage_path)); + let file = value(tk::FILE).and_then(|v| asset_value_path(&v, caches.stage_path)); let Some(file) = file else { warning!( PreviewTextureWithoutFile, - at = tex.path(), - "UsdUVTexture {}: no inputs:file — {name} keeps its constant", - tex.path() + at = tex_path, + "UsdUVTexture {tex_path}: no inputs:file — {name} keeps its constant" ); return None; }; @@ -243,7 +382,7 @@ fn preview_uv_input( // metadatum, when authored, which wins over `sourceColorSpace`, the older // and coarser UsdUVTexture mechanism. Only the attribute's own: a scope's // `colorSpace:name` describes its colour values, not how an image file - // is encoded (see `attr_own_color_space`). + // is encoded (see `attrs::attr_own_color_space`). // // A texture that is not a colour is never moved to other primaries, // whatever the file or the working space: a change of primaries mixes a @@ -260,11 +399,11 @@ fn preview_uv_input( } } else { let file_space = tex - .input(tk::FILE) - .value_producing_attributes(ProducerFilter::Any) - .ok() - .and_then(|p| p.into_iter().next()) - .and_then(|a| attr_own_color_space(a.attribute())); + .parameters + .get(tk::FILE) + .and_then(|p| p.color_space.as_deref()) + .filter(|n| !n.is_empty()) + .and_then(|n| named_space(&format!("{tex_path}.inputs:{}", tk::FILE), n)); match file_space { Some(space) => crate::ColorSpace::new(space, caches.working), None => source, @@ -273,26 +412,23 @@ fn preview_uv_input( // Which chart the texture reads. crust carries one per mesh (see // `mesh_uvs`), so a reader naming another primvar is approximated by it. - let st = tex.input(tk::ST); let mut varname = None; - if let Some(reader) = st - .value_producing_attributes(ProducerFilter::ShaderOutputsOnly) - .ok() - .and_then(|p| p.into_iter().next()) - { - let reader = Shader::get(stage, reader.path().prim_path()).ok().flatten(); - let id = reader.as_ref().and_then(shader_info_id); - match (&reader, id.as_deref()) { + if let Some(reader) = tex.connections.get(tk::ST).and_then(|c| c.first()) { + let node = network.nodes.get(&reader.node); + let id = node.map(|n| n.id.clone()).filter(|id| !id.is_empty()); + match (node, id.as_deref()) { (Some(reader), Some(tk::USD_PRIMVAR_READER_FLOAT2)) => { - varname = - value(&reader.input(tk::VARNAME)).and_then(|v| v.as_str().map(str::to_owned)); + varname = reader + .parameters + .get(tk::VARNAME) + .and_then(|p| p.value.as_ref()) + .and_then(|v| v.as_str().map(str::to_owned)); } _ => warning!( PreviewUnreadSt, - at = tex.path(), - "UsdUVTexture {}: st is driven by {id:?}, which is not read — using the \ - mesh chart unchanged", - tex.path() + at = tex_path, + "UsdUVTexture {tex_path}: st is driven by {id:?}, which is not read — using the \ + mesh chart unchanged" ), } } @@ -308,7 +444,11 @@ fn preview_uv_input( // roughness map the dataset does not ship, and roughness 0 turned it into // a mirror where the schema's 0.5 is an ordinary surface. let fallback = float4(tk::FALLBACK) - .or_else(|| value_at(surface_input.attribute()).and_then(decode_float4)) + .or_else(|| { + src.node(network, shader)? + .value(&format!("inputs:{name}")) + .and_then(decode_float4) + }) .or_else(|| preview_surface_default(name)) .unwrap_or([0.0, 0.0, 0.0, 1.0]); let loaded = load_uv_texture(&file, space, mat_path, caches).map(crate::TextureRef); @@ -349,30 +489,28 @@ fn preview_uv_input( /// a shading input does. The texture's primvar reader names the chart the /// mesh reads when the surface itself reads none. pub(super) fn preview_displacement( - stage: &Stage, - mat_path: &sdf::Path, - shader: &Shader, + src: &MatSource, + network: &Network, + shader: &str, caches: &mut ImportCaches<'_>, ) -> Option { - let input = shader.input("displacement"); - let textured = input - .value_producing_attributes(ProducerFilter::ShaderOutputsOnly) - .ok() - .is_some_and(|p| !p.is_empty()); + let node = network.nodes.get(shader)?; + let textured = node + .connections + .get("displacement") + .is_some_and(|c| !c.is_empty()); let constant = |c: f32| { (c != 0.0 && c.is_finite()).then(|| Displacement::new(DisplacementValue::Constant(c))) }; if textured { - let Some((uv, varname)) = preview_uv_input( - stage, - mat_path, - shader, - "displacement", - TexRole::Data, - caches, - ) else { + let Some((uv, varname)) = + preview_uv_input(src, network, shader, "displacement", TexRole::Data, caches) + else { // Already warned about; the input keeps its own constant. - let own = value_at(input.attribute()).and_then(decode_float4)?; + let own = src + .node(network, shader)? + .value("inputs:displacement") + .and_then(decode_float4)?; return constant(own[0]); }; if uv.tex.is_none() { @@ -380,11 +518,10 @@ pub(super) fn preview_displacement( } return Some(Displacement::new(DisplacementValue::Uv(uv)).with_uv_primvar(varname)); } - let value = input - .value_producing_attributes(ProducerFilter::Any) - .ok() - .and_then(|p| p.into_iter().next()) - .and_then(|a| value_at(a.attribute())) + let value = node + .parameters + .get("displacement") + .and_then(|p| p.value.clone()) .and_then(decode_float4)?; let c = value[0]; (c != 0.0 && c.is_finite()).then(|| Displacement::new(DisplacementValue::Constant(c))) @@ -420,12 +557,16 @@ fn preview_surface_default(input: &str) -> Option<[f32; 4]> { /// /// The two colours are in the working space unless their `colorSpace` /// metadatum names another ([`in_working`]). -fn preview_surface_openpbr(ps: &ReadPreviewSurface, shader: &Shader, working: Space) -> OpenPBR { +fn preview_surface_openpbr(ps: &PreviewRead, shader: &PrimData, working: Space) -> OpenPBR { let mut o = OpenPBR::default(); - let color = |name: &str, rgb: Vec3A| in_working(&shader.attribute(name), rgb, working); + // `attrs::in_working`, the space from the shader's own attribute. + let color = |name: &str, rgb: Vec3A| match color_space(shader, name) { + Some(space) => crate::color::convert(rgb, space, working), + None => rgb, + }; if let Some(rgb) = ps.diffuse_color.value() { - o.base_color = color("inputs:diffuseColor", Vec3A::new(rgb[0], rgb[1], rgb[2])); + o.base_color = color("inputs:diffuseColor", *rgb); } if let Some(m) = ps.metallic.value() { o.base_metalness = *m; @@ -443,7 +584,7 @@ fn preview_surface_openpbr(ps: &ReadPreviewSurface, shader: &Shader, working: Sp } } if let Some(rgb) = ps.emissive_color.value() { - o.emission_color = color("inputs:emissiveColor", Vec3A::new(rgb[0], rgb[1], rgb[2])); + o.emission_color = color("inputs:emissiveColor", *rgb); let max = rgb[0].max(rgb[1]).max(rgb[2]); if max > 0.0 { o.emission_luminance = 1.0; @@ -472,6 +613,6 @@ fn preview_surface_openpbr(ps: &ReadPreviewSurface, shader: &Shader, working: Sp /// ALab authors all of its glass (opacity ≈ 0, ior ≈ 1.49). Above 0 it is a /// mask that keeps or discards each point whole, which is the host cutout /// `geometry_opacity` names and does not refract at all. -fn opacity_transmission(ps: &ReadPreviewSurface) -> bool { +fn opacity_transmission(ps: &PreviewRead) -> bool { ps.opacity_threshold.value().is_none_or(|t| *t <= 0.0) } diff --git a/crates/crust-core/src/scene/usd_import/products.rs b/crates/crust-core/src/scene/usd_import/products.rs index 3dc4ffaf4..3909f6be6 100644 --- a/crates/crust-core/src/scene/usd_import/products.rs +++ b/crates/crust-core/src/scene/usd_import/products.rs @@ -22,7 +22,6 @@ use std::cell::RefCell; use std::collections::HashMap; use moho::openusd::sdf; -use moho::openusd::usd::Stage; use moho::scene_index::SceneIndex; use moho::tokens::prim_type; use openusd_schemas::render::AspectRatioConformPolicy; @@ -462,7 +461,6 @@ impl PrimvarKeep { /// kernel asset paths resolve against) is given; a reader that only wants /// the products' camera and framing (`crust ls`) passes `None`. pub(super) fn import_render_products( - stage: &Stage, scene: &dyn SceneIndex, stage_path: Option<&std::path::Path>, pass: Option<&sdf::Path>, @@ -477,7 +475,6 @@ pub(super) fn import_render_products( let mut out = read_products(scene, &path, &settings); if let Some(stage_path) = stage_path { out.request.precomp = super::precomp::import_precomp( - stage, scene, stage_path, &path, @@ -1316,7 +1313,7 @@ mod tests { .expect("stage opens"); let scope = crate::WarningScope::enter(); let scene = crate::scene::usd_import::index::input_chain(stage.clone(), None, true); - let products = import_render_products(&stage, scene.chain.as_ref(), Some(&path), None); + let products = import_render_products(scene.chain.as_ref(), Some(&path), None); (products, scope.finish()) } diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index b69187b4b..3d81e1b1c 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -233,7 +233,7 @@ this group, and kept for the whole change. all-purpose binding, from the material binding resolving filter. Check it against `winning_binding_target` with a test that runs both on `purpose_bindings.usda` and the binding fixtures, while the direct reader still exists. Verify parity green. -- [ ] 9.2 Networks: `material` per render context (universal, `mtlx`, `ri`), and the +- [x] 9.2 Networks: `material` per render context (universal, `mtlx`, `ri`), and the precomp's display-filter shader ids, kernel assets and sample-filter graphs. Terminals, `nodeIdentifier`, parameters with colour space and resolved asset paths, and connections feed `preview` (`UsdPreviewSurface`, `UsdUVTexture`, primvar readers), From 08c33d3af4bfeedbc93ff33df6664a7092e13463 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 09:34:54 +0100 Subject: [PATCH 46/95] crust: materials outside a streamed chunk come from a side input (9.4) What a chunk depends on and no input holds -- a material in another chunk's payload, a node outside the chunk -- is listed by moho::streaming::unresolved over the merged index right after the chunk is added. A stage masked to those paths (and to what it held before) is opened, and a chain over it replaces the side input, weaker than the chunk and stronger than the payload-free scene input; rounds repeat until one resolves nothing new, at most MAX_SIDE_STAGE_OPENS per chunk, and the side input is removed after the last chunk. This replaces material_stage's own side-stage opening; material_stage now only picks the stage of the input holding a material (chunk, side or scene input) for what is read off a stage. New fixtures (streamed_materials.rs), with baselines from the direct importer: /World/Looks beside four geometry chunks (held by the scene input), and a material only inside another chunk's payload (held by the side input). The Cornell box streams in the sample suite. The debug suite (2656) and the image run equal their baselines. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/index/mod.rs | 65 +++++- .../src/scene/usd_import/materials.rs | 186 ++++-------------- crates/crust-core/src/scene/usd_import/mod.rs | 32 +++ .../beside_usda-05e27d2e70a17830-1.digest | 34 ++++ .../beside_usda-05e27d2e70a17830-1.image | 1 + .../payload_usda-af189ff27792ed9c-1.digest | 37 ++++ .../payload_usda-af189ff27792ed9c-1.image | 1 + crates/crust-core/tests/streamed_materials.rs | 121 ++++++++++++ openspec/changes/moho-import/design.md | 14 +- openspec/changes/moho-import/tasks.md | 6 +- 10 files changed, 344 insertions(+), 153 deletions(-) create mode 100644 crates/crust-core/tests/data/import_baselines/beside_usda-05e27d2e70a17830-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/beside_usda-05e27d2e70a17830-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/payload_usda-af189ff27792ed9c-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/payload_usda-af189ff27792ed9c-1.image create mode 100644 crates/crust-core/tests/streamed_materials.rs diff --git a/crates/crust-core/src/scene/usd_import/index/mod.rs b/crates/crust-core/src/scene/usd_import/index/mod.rs index 84af8806d..cca92b059 100644 --- a/crates/crust-core/src/scene/usd_import/index/mod.rs +++ b/crates/crust-core/src/scene/usd_import/index/mod.rs @@ -106,6 +106,11 @@ pub(super) struct Streamed { merging: Rc, /// The scene input, weakest and permanent. scene: Input, + /// The side input (design D4): a stage masked to the prims the chunks + /// depend on and no input holds (`moho::streaming::unresolved`), + /// weaker than the chunk and stronger than the scene input, with what + /// its stage is masked to. + side: std::cell::RefCell)>>, /// The top of the chain: what the material readers read, and every /// reader once the families move. pub(super) top: SceneIndexHandle, @@ -123,6 +128,7 @@ impl Streamed { Streamed { merging, scene, + side: std::cell::RefCell::new(None), top, time, } @@ -143,8 +149,63 @@ impl Streamed { self.merging.remove_input_scene(&chunk.chain); } - /// The scene input, for the stage facts. - #[allow(dead_code)] + /// Grows the side input until the merged index holds everything the + /// chunk just added depends on, or a round resolves nothing new: each + /// round opens a stage (`open`) masked to what the side stage held and + /// to every unresolved path not under it, and replaces the side input + /// with one over that stage, inserted after the chunk. A path no stage + /// holds (a dangling binding) stays unresolved and, once masked in, + /// opens nothing more. At most `rounds` opens per chunk. Returns the + /// side stage and its mask when they changed. + pub(super) fn resolve_outside( + &self, + rounds: usize, + open: &dyn Fn(Vec) -> Option, + ) -> Option<(Stage, Vec)> { + let mut changed = None; + for _ in 0..rounds { + let mask: Vec = self + .side + .borrow() + .as_ref() + .map(|(_, m)| m.clone()) + .unwrap_or_default(); + let covered = |p: &sdf::Path| mask.iter().any(|m| p.has_prefix(m)); + let missing: Vec = moho::streaming::unresolved(self.merging.as_ref()) + .into_iter() + .filter(|p| !covered(p)) + .collect(); + if missing.is_empty() { + break; + } + let mut paths = mask.clone(); + paths.extend(missing); + paths.sort(); + paths.dedup(); + let Some(stage) = open(paths.clone()) else { + break; + }; + let input = input_chain(stage.clone(), self.time, false); + if let Some((old, _)) = self.side.borrow_mut().take() { + self.merging.remove_input_scene(&old.chain); + } + // After the chunk (position 0), before the scene input. + self.merging + .insert_input_scene(1, input.chain.clone(), sdf::Path::abs_root()); + *self.side.borrow_mut() = Some((input, paths.clone())); + changed = Some((stage, paths)); + } + changed + } + + /// Removes the side input, after the last chunk. + pub(super) fn remove_side(&self) { + if let Some((old, _)) = self.side.borrow_mut().take() { + self.merging.remove_input_scene(&old.chain); + } + } + + /// The scene input, for the stage facts and the materials it holds. pub(super) fn scene(&self) -> &Input { &self.scene } diff --git a/crates/crust-core/src/scene/usd_import/materials.rs b/crates/crust-core/src/scene/usd_import/materials.rs index 0e13241d0..0e42b0398 100644 --- a/crates/crust-core/src/scene/usd_import/materials.rs +++ b/crates/crust-core/src/scene/usd_import/materials.rs @@ -9,7 +9,7 @@ use std::time::Instant; use glam::Vec3A; use openusd::sdf; -use openusd::usd::{CollectionAPI, Prim, PrimPredicate, Stage}; +use openusd::usd::{CollectionAPI, Prim, Stage}; use openusd_schemas::shade::{ BindingStrength, CollectionBinding, Material as UsdMaterial, MaterialBindingAPI, Shader, TerminalSource, @@ -86,27 +86,32 @@ pub(super) fn mtlx_library() -> Arc { Arc::new(library) } -/// A stage masked to the materials streamed chunks bind from outside -/// themselves, kept across chunks and released with the last -/// ([`super::traverse_stage`]). +/// The side stage of a streamed import (design D4): masked to the prims the +/// chunks depend on that no input holds (`moho::streaming::unresolved`), +/// read by the side input of the merged index, kept across chunks and +/// released with the last ([`super::traverse_stage`]). /// -/// A chunk's mask is its subtree, so a `Material` in a sibling subtree — a -/// top-level `/MaterialX/Materials` scope beside the geometry, as a DCC's -/// MaterialX export writes it — is not on the stage that traverses the +/// A chunk's mask is its subtree, so a `Material` in another chunk's payload, +/// or a shared node graph there, is not on the stage that traverses the /// geometry bound to it. Re-opening the chunk with a wider mask would /// compose its geometry twice; this stage composes the materials alone. #[derive(Default)] pub(super) struct OutsideMaterials { - /// What `stage` is masked to: every out-of-chunk binding target met so - /// far, found or not, so that a dangling binding opens nothing twice. - mask: Vec, - stage: Option, + /// What `stage` is masked to: every path the chunks depended on outside + /// every input so far, found or not, so that a dangling binding opens + /// nothing twice. + pub(super) mask: Vec, + pub(super) stage: Option, + /// The payload-free scene input's chain and stage, while a streamed + /// import walks its chunks: a material no payload hides composes there. + pub(super) scene: Option<(moho::scene_index::SceneIndexHandle, Stage)>, } impl OutsideMaterials { /// Drops the stage, handing back the layers it composed. pub(super) fn release(&mut self) -> Vec { self.mask.clear(); + self.scene = None; self.stage .take() .map(|s| s.layer_identifiers()) @@ -494,145 +499,36 @@ fn cached_material( Some((key, mat_path)) } -/// How many times one material may widen the side stage while following its -/// network's connections out of the prims already masked in: one more prim -/// subtree per hop of a chain of shared node graphs. -const MAX_SIDE_STAGE_OPENS: usize = 8; - -/// The stage to resolve the material at `mat_path` on: `stage` itself when -/// its population mask holds the material's whole subtree and every prim its -/// network connects to — always, outside a streamed import — and otherwise -/// the stage [`OutsideMaterials`] keeps, masked to them. -/// -/// That stage is opened at the first miss it cannot answer, masked to every -/// binding target outside the chunk ([`outside_binding_targets`]), to the -/// material and the prims its connections reach ([`connected_outside`]), and -/// to all it was masked to before, so one chunk costs at most one open per -/// hop into a shared node graph, and a chunk binding nothing new none. -fn material_stage(stage: &Stage, mat_path: &sdf::Path, caches: &mut ImportCaches<'_>) -> Stage { +/// How many times one chunk may widen the side input while following what +/// its prims depend on out of the prims already masked in: one more prim +/// subtree per hop of a chain of shared node graphs +/// ([`super::index::Streamed::resolve_outside`]). +pub(super) const MAX_SIDE_STAGE_OPENS: usize = 8; + +/// The stage the material at `mat_path` composes on, for what is read off +/// the stage rather than the index (a `.mtlx` reference, the composition +/// arcs): `stage` when its population mask holds the material — always, +/// outside a streamed import — else the stage of the streamed import's +/// input that holds it ([`OutsideMaterials`]): the side stage when it is +/// masked in there, else the payload-free scene's when no payload hides it. +fn material_stage(stage: &Stage, mat_path: &sdf::Path, caches: &ImportCaches<'_>) -> Stage { // Prototypes are populated whatever the mask; their paths are not in it. - if mat_path.as_str().starts_with("/__Prototype") { + if mat_path.as_str().starts_with("/__Prototype") || stage.mask().includes_subtree(mat_path) { return stage.clone(); } - let mask = stage.mask(); - let mut need = vec![mat_path.clone()]; - if mask.includes_subtree(mat_path) { - let reached: Vec<_> = connected_outside(stage, mat_path) - .into_iter() - .filter(|t| !mask.includes_subtree(t)) - .collect(); - if reached.is_empty() { - return stage.clone(); - } - need.extend(reached); - } - let Some(path_str) = caches.stage_path.to_str() else { - return stage.clone(); - }; - let mut bound: Option> = None; - for _ in 0..MAX_SIDE_STAGE_OPENS { - let outside = &mut caches.materials.outside; - let covered = |p: &sdf::Path| outside.mask.iter().any(|m| p.has_prefix(m)); - if let Some(side) = &outside.stage - && need.iter().all(covered) - { - // What the masked-in prims connect to, followed on the stage - // that holds them. - let more: Vec<_> = connected_outside(side, mat_path) - .into_iter() - .filter(|t| !covered(t)) - .collect(); - if more.is_empty() { - return side.clone(); - } - need.extend(more); - } - let started = Instant::now(); - // The mask moves only with a stage opened to it. - let mut paths = outside.mask.clone(); - paths.extend( - bound - .get_or_insert_with(|| outside_binding_targets(stage)) - .iter() - .cloned(), - ); - paths.extend(need.iter().cloned()); - paths.sort(); - paths.dedup(); - match super::open_stage_masked(caches.stage_path, path_str, Some(paths.clone())) { - Ok(side) => { - debug!( - "Opened a stage for {} material path(s) outside the chunk in {:?}", - paths.len(), - started.elapsed() - ); - let outside = &mut caches.materials.outside; - outside.mask = paths; - outside.stage = Some(side); - } - // Resolved on the chunk, the material reports itself - // unresolvable, as it did before this stage existed. - Err(e) => { - debug!("Could not open a stage for materials outside the chunk: {e}"); - return stage.clone(); - } - } - } - match &caches.materials.outside.stage { - Some(side) => side.clone(), - None => stage.clone(), - } -} - -/// The prims outside the material at `mat_path` that its network's -/// connections reach on `stage`, followed through each reached prim's own -/// subtree as far as `stage` populates it: a material wired into a shared -/// node graph, and that graph into another. -fn connected_outside(stage: &Stage, mat_path: &sdf::Path) -> Vec { - let mut roots = vec![mat_path.clone()]; - let mut next = 0; - while next < roots.len() { - let mut stack = vec![prim_at(stage, roots[next].clone())]; - next += 1; - while let Some(prim) = stack.pop() { - for attr in prim.authored_attributes().unwrap_or_default() { - for target in attr.connections().unwrap_or_default() { - let target = target.prim_path(); - if !roots.iter().any(|r| target.has_prefix(r)) { - roots.push(target); - } - } - } - stack.extend(prim.children().unwrap_or_default()); - } + let outside = &caches.materials.outside; + if let Some(side) = &outside.stage + && outside.mask.iter().any(|m| mat_path.has_prefix(m)) + { + return side.clone(); } - roots.split_off(1) -} - -/// The prim paths every `material:binding*` relationship on `stage` targets -/// outside its population mask, instance proxies included. A collection -/// binding's collection is a property path and is skipped: its material is -/// the target that matters. -fn outside_binding_targets(stage: &Stage) -> Vec { - let mask = stage.mask(); - let mut paths = Vec::new(); - let _ = stage.traverse(PrimPredicate::DEFAULT_PROXIES, |p| paths.push(p.clone())); - let mut targets = Vec::new(); - for path in paths { - let prim = prim_at(stage, path); - for rel in prim.authored_relationships().unwrap_or_default() { - if !rel.name().starts_with("material:binding") { - continue; - } - targets.extend( - rel.targets() - .unwrap_or_default() - .into_iter() - .filter(|t| t.is_prim() && !mask.includes_subtree(t)), - ); - } + if let Some((index, scene)) = &outside.scene + && super::index::data::PrimData::at(index.as_ref(), mat_path).ty() + == moho::tokens::prim_type::MATERIAL + { + return scene.clone(); } - targets + stage.clone() } /// The prims outside the material at `mat_path` that its network reads: the diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index d6a7d8e8f..384d9fe10 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -928,6 +928,11 @@ fn traverse_stage( unreachable!("the scene input lives until the chunks are walked"); }; let scene = index::Streamed::new(scene_input, time); + ctx.caches.materials.outside.scene = scene + .scene() + .stage + .stage() + .map(|stage| (scene.scene().chain.clone(), stage)); for (n, chunk) in chunks.iter().enumerate() { // Per chunk rather than per prim: this is the loop whose memory // high-water mark the streaming import exists to bound, so the @@ -951,6 +956,32 @@ fn traverse_stage( // children from the chunk's own input, in its stage's order // (design D5). let input = scene.add_chunk(stage.clone(), chunk); + // What the chunk depends on and no input holds — a material in + // another chunk's payload, a node outside the chunk — comes from + // the side input (design D4). + let open = |paths: Vec| { + let started = Instant::now(); + let n = paths.len(); + match open_stage_masked(path, path_str, Some(paths)) { + Ok(side) => { + debug!( + "Opened a side stage for {n} path(s) outside the chunk in {:?}", + started.elapsed() + ); + Some(side) + } + Err(e) => { + debug!("Could not open a side stage for paths outside the chunk: {e}"); + None + } + } + }; + if let Some((side, mask)) = + scene.resolve_outside(materials::MAX_SIDE_STAGE_OPENS, &open) + { + ctx.caches.materials.outside.stage = Some(side); + ctx.caches.materials.outside.mask = mask; + } index::walk::walk(&stage, &input, &scene.top, ctx); scene.remove_chunk(&input); drop(input); @@ -979,6 +1010,7 @@ fn traverse_stage( ctx.pending_meshes.len() ); } + scene.remove_side(); drop(scene); // The materials the chunks bound from outside themselves, dropped // before the top-level commit as every chunk's stage is. diff --git a/crates/crust-core/tests/data/import_baselines/beside_usda-05e27d2e70a17830-1.digest b/crates/crust-core/tests/data/import_baselines/beside_usda-05e27d2e70a17830-1.digest new file mode 100644 index 000000000..66b62fa5d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/beside_usda-05e27d2e70a17830-1.digest @@ -0,0 +1,34 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/beside.usda"], invisible_overrides: Some(0) } +layer: $DIR/beside.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:658935472ec9d838 camera=2:658935472ec9d838 shadow=2:658935472ec9d838 indirect=2:658935472ec9d838 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:71682785a2d90a85 camera=2:71682785a2d90a85 shadow=2:71682785a2d90a85 indirect=2:71682785a2d90a85 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e52d9a39978026c5 camera=2:e52d9a39978026c5 shadow=2:e52d9a39978026c5 indirect=2:e52d9a39978026c5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7f0030950a4845b8 camera=2:7f0030950a4845b8 shadow=2:7f0030950a4845b8 indirect=2:7f0030950a4845b8 +provenance material /World/Looks/Red: MaterialOrigin { slots: [0, 1, 2, 3], displaced: false } +provenance geometry 0..1: /World/A/Quad +provenance geometry 1..2: /World/B/Quad +provenance geometry 2..3: /World/C/Quad +provenance geometry 3..4: /World/D/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5062424276489054560, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9056688765093257811, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 204846636954257726, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10907505002769619754, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/beside_usda-05e27d2e70a17830-1.image b/crates/crust-core/tests/data/import_baselines/beside_usda-05e27d2e70a17830-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/beside_usda-05e27d2e70a17830-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/payload_usda-af189ff27792ed9c-1.digest b/crates/crust-core/tests/data/import_baselines/payload_usda-af189ff27792ed9c-1.digest new file mode 100644 index 000000000..4540872f3 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/payload_usda-af189ff27792ed9c-1.digest @@ -0,0 +1,37 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/payload.usda"], invisible_overrides: Some(0) } +layer: $DIR/b.usda +layer: $DIR/payload.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 8, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:658935472ec9d838 camera=2:658935472ec9d838 shadow=2:658935472ec9d838 indirect=2:658935472ec9d838 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:71682785a2d90a85 camera=2:71682785a2d90a85 shadow=2:71682785a2d90a85 indirect=2:71682785a2d90a85 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e52d9a39978026c5 camera=2:e52d9a39978026c5 shadow=2:e52d9a39978026c5 indirect=2:e52d9a39978026c5 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7f0030950a4845b8 camera=2:7f0030950a4845b8 shadow=2:7f0030950a4845b8 indirect=2:7f0030950a4845b8 +provenance material /World/B/Looks/Blue: MaterialOrigin { slots: [0, 1, 2, 3], displaced: false } +provenance material read: ("/B/Looks/Blue", "/World/B/Looks/Blue") +provenance material read: ("/B/Looks/Blue/S", "/World/B/Looks/Blue") +provenance geometry 0..1: /World/A/Quad +provenance geometry 1..2: /World/B/Geo/Quad +provenance geometry 2..3: /World/C/Quad +provenance geometry 3..4: /World/D/Quad +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 1, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5062424276489054560, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9056688765093257811, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 204846636954257726, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10907505002769619754, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/payload_usda-af189ff27792ed9c-1.image b/crates/crust-core/tests/data/import_baselines/payload_usda-af189ff27792ed9c-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/payload_usda-af189ff27792ed9c-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/streamed_materials.rs b/crates/crust-core/tests/streamed_materials.rs new file mode 100644 index 000000000..3e216869c --- /dev/null +++ b/crates/crust-core/tests/streamed_materials.rs @@ -0,0 +1,121 @@ +//! Materials a streamed chunk binds from outside itself (the `moho-import` +//! change, task 9.4): from the payload-free scene input when no payload +//! hides them, from the side input over a stage masked to them when one +//! does. Each import is checked against the direct importer's baseline +//! (`crust_core::parity`), and each quad's colour says which material it +//! got. + +#![allow(clippy::unwrap_used)] + +use crust_core::{MASK_CAMERA, Ray, Scene, Vec3A, WarningCode}; + +fn quad(name: &str, x: f32, mat: &str) -> String { + format!( + r#" + def Xform "{name}" + {{ + def Mesh "Quad" (prepend apiSchemas = ["MaterialBindingAPI"]) + {{ + uniform token subdivisionScheme = "none" + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 2, 3] + point3f[] points = [({x0}, 0, 0), ({x1}, 0, 0), ({x1}, 1, 0), ({x0}, 1, 0)] + rel material:binding = <{mat}> + }} + }}"#, + x0 = x, + x1 = x + 1.0 + ) +} + +fn material(name: &str, rgb: (f32, f32, f32)) -> String { + format!( + r#" + def Material "{name}" + {{ + token outputs:surface.connect = + def Shader "S" + {{ + uniform token info:id = "UsdPreviewSurface" + color3f inputs:diffuseColor = ({}, {}, {}) + float inputs:roughness = 1 + token outputs:surface + }} + }}"#, + rgb.0, rgb.1, rgb.2 + ) +} + +/// The reflectance of the quad under `x`. +fn reflectance(scene: &Scene, x: f32) -> Vec3A { + let r = Ray::new(Vec3A::new(x, 0.5, 5.0), Vec3A::new(0.0, 0.0, -1.0)).with_mask(MASK_CAMERA); + let hit = scene + .world + .intersect(&r, 0.001, f32::INFINITY) + .expect("hits the quad"); + hit.mat.eval(&r, &hit.rec, Vec3A::Z).expect("a lobe").0 +} + +fn no_fallback(scene: &Scene) { + let fallbacks: Vec<_> = scene + .warnings + .iter() + .filter(|w| w.code == WarningCode::MaterialFallbackDefault) + .collect(); + assert!(fallbacks.is_empty(), "{fallbacks:#?}"); +} + +/// `/World/Looks` beside four geometry chunks: five children of one root, +/// so each is a masked chunk, and the quads' material is on none of their +/// stages. No payload hides it, so the payload-free scene input holds it. +#[test] +fn materials_beside_four_geometry_chunks_resolve_from_the_scene_input() { + let dir = std::env::temp_dir().join("crust_streamed_materials_beside"); + std::fs::create_dir_all(&dir).unwrap(); + let stage = format!( + "#usda 1.0\ndef Xform \"World\"\n{{\n def Scope \"Looks\"\n {{{}\n }}{}{}{}{}\n}}\n", + material("Red", (0.8, 0.1, 0.1)), + quad("A", -3.0, "/World/Looks/Red"), + quad("B", -1.0, "/World/Looks/Red"), + quad("C", 1.0, "/World/Looks/Red"), + quad("D", 3.0, "/World/Looks/Red"), + ); + let path = dir.join("beside.usda"); + std::fs::write(&path, stage).unwrap(); + let scene = Scene::from_usd(&path).unwrap(); + for x in [-2.5, -0.5, 1.5, 3.5] { + let f = reflectance(&scene, x); + assert!(f.x > 4.0 * f.y && f.x > 4.0 * f.z, "red at x = {x}: {f}"); + } + no_fallback(&scene); +} + +/// A material that lives only inside another chunk's payload: `/World/B` +/// loads `b.usda`, which holds `Looks/Blue` and B's own quad, and A binds +/// that material. The scene input does not load B's payload, so A's chunk +/// reads the material from the side input, over a stage masked to it. +#[test] +fn a_material_inside_another_chunks_payload_resolves_from_the_side_input() { + let dir = std::env::temp_dir().join("crust_streamed_materials_payload"); + std::fs::create_dir_all(&dir).unwrap(); + let b = format!( + "#usda 1.0\n(\n defaultPrim = \"B\"\n)\ndef Xform \"B\"\n{{\n def Scope \"Looks\"\n {{{}\n }}{}\n}}\n", + material("Blue", (0.1, 0.1, 0.8)), + quad("Geo", -1.0, "/B/Looks/Blue"), + ); + std::fs::write(dir.join("b.usda"), b).unwrap(); + let stage = format!( + "#usda 1.0\ndef Xform \"World\"\n{{{}\n def Xform \"B\" (prepend payload = @./b.usda@)\n {{\n }}{}{}\n}}\n", + quad("A", -3.0, "/World/B/Looks/Blue"), + quad("C", 1.0, "/World/B/Looks/Blue"), + quad("D", 3.0, "/World/B/Looks/Blue"), + ); + let path = dir.join("payload.usda"); + std::fs::write(&path, stage).unwrap(); + let scene = Scene::from_usd(&path).unwrap(); + for x in [-2.5, -0.5, 1.5, 3.5] { + let f = reflectance(&scene, x); + assert!(f.z > 4.0 * f.x && f.z > 4.0 * f.y, "blue at x = {x}: {f}"); + } + no_fallback(&scene); +} diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index 1b11ff7cd..d227d1bb0 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -211,9 +211,17 @@ each such change is checked to be explained by it. side input is a `chain::input` over a stage masked to them, payloads loaded, inserted weaker than the chunks and stronger than the scene input, as Moho's streaming pattern specifies. It is grown and reopened under the same rules as - today's `OutsideMaterials` (at most `MAX_SIDE_STAGE_OPENS` per material) until - nothing is unresolved, and removed after the last chunk. Moho lists what is missing; - Crust decides what is loaded. + today's `OutsideMaterials`, until a round resolves nothing new (a path no stage + holds, a dangling binding, stays listed and, once masked in, opens nothing more), + and removed after the last chunk. Because `unresolved` answers for the whole merged + index, the rounds run per chunk, right after it is added and before it is walked, + with at most `MAX_SIDE_STAGE_OPENS` per chunk rather than per material; the stage + is kept across chunks, so a chunk binding nothing new opens none. Moho lists what is + missing; Crust decides what is loaded. The material readers read at the top of the + chain, where `MaterialNodeResolvingSceneIndex` (M10) fills a network's node outside + the chunk from whichever input holds it. What is read off a material's stage + rather than the index (D7) is read off the stage of the input that holds it: the + chunk's, the side stage, or the scene input's. - Crust keeps opening every stage itself and hands it to `set_stage`. Moho never loads or unloads. diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 3d81e1b1c..ea34e5c06 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -246,11 +246,11 @@ this group, and kept for the whole change. `mtlx_reference` does, unless `mtlx-format-plugin` has landed, in which case the composed shader prims are read like any network. Verify parity green on `materialx_teapot.usda` and `materialx_lion.usda`. -- [ ] 9.4 Materials outside a chunk: add the side input (D4), a `chain::input` over a +- [x] 9.4 Materials outside a chunk: add the side input (D4), a `chain::input` over a stage masked to the paths `moho::streaming::unresolved` lists (M2), inserted weaker than the chunk and stronger than the scene input, grown and reopened under - `OutsideMaterials`' rules (at most `MAX_SIDE_STAGE_OPENS` per material) until nothing - is unresolved, and removed after the last chunk. Verify: + `OutsideMaterials`' rules (at most `MAX_SIDE_STAGE_OPENS` per chunk, design D4) until a + round resolves nothing new, and removed after the last chunk. Verify: - parity on a fixture with `/World/Looks` beside four geometry chunks; - parity on a fixture whose material lives only in another chunk's payload; - parity on the Cornell box streamed. From b122b8eb9937ad522d8e3131c3f7e0e06dd898e6 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 10:08:17 +0100 Subject: [PATCH 47/95] crust: material provenance and the live material rebuild read the index (9.5) material_reads takes the prims a material's connections reach from the generic connections of its prims, read where the material is read (MatSource, an instance proxy's targets moved under the instance), and the specs it composes from elsewhere from prim_stack in stage_facts (foreign_spec_paths): composition arcs are not imaging data (design D7). The live material rebuild's checks -- a network closed under the material, each named shader a Shader -- read the generic connections and __usdPrimInfo/typeName of an index over the masked stage; the material itself was already resolved by the index readers. The debug suite (with external samples) and the image run equal their baselines (provenance is in the digest); live.rs passes. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/index/stage_facts.rs | 27 +++++++++++- .../crust-core/src/scene/usd_import/live.rs | 34 +++++++-------- .../src/scene/usd_import/materials.rs | 41 +++++++++++-------- openspec/changes/moho-import/tasks.md | 2 +- 4 files changed, 68 insertions(+), 36 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs index 9c5e7214d..89990492a 100644 --- a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs +++ b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs @@ -1,8 +1,9 @@ //! What the import reads from a stage that is not scene description (design //! D7), kept in one place so every such read is visible: the layers a scene //! composed, the files of its root layer stack, the `invisible` overrides -//! its strongest layer authors, and a material's `.mtlx` reference, an arc -//! that composes nothing ([`mtlx_reference`]). They describe the stage's files and layer +//! its strongest layer authors, a material's `.mtlx` reference, an arc +//! that composes nothing ([`mtlx_reference`]), and the specs a material +//! composes from elsewhere ([`foreign_spec_paths`]). They describe the stage's files and layer //! specs — a host's business, not a scene index's — so they are read from the //! stage, never from Moho. A stage-wide fact Moho does carry is read there: //! the time range's authored-ness, from the absolute root's @@ -223,3 +224,25 @@ pub(in crate::scene::usd_import) fn mtlx_reference( } None } + +/// The paths of the specs the prims at `paths` compose from outside `root`: +/// an `inherits`, `specializes` or `references` arc's target, a referenced +/// layer's prim. Composition arcs are not scene description the index gives +/// (design D7): they say which layer specs an in-place edit of a material +/// would reach (`material_reads`, [`crate::live`]). +pub(in crate::scene::usd_import) fn foreign_spec_paths( + stage: &Stage, + paths: &[sdf::Path], + root: &sdf::Path, +) -> Vec { + let mut out = Vec::new(); + for path in paths { + let prim = super::super::prim_at(stage, path.clone()); + for site in prim.prim_stack().unwrap_or_default() { + if !site.path.has_prefix(root) { + out.push(site.path.to_string()); + } + } + } + out +} diff --git a/crates/crust-core/src/scene/usd_import/live.rs b/crates/crust-core/src/scene/usd_import/live.rs index 6cf99ca8f..9fb736684 100644 --- a/crates/crust-core/src/scene/usd_import/live.rs +++ b/crates/crust-core/src/scene/usd_import/live.rs @@ -29,7 +29,10 @@ use crate::material::Material; use crate::rt_world::{GeometryEdit, World, WorldBuilder}; use crate::{AssetLoader, Warning}; +use moho::scene_index::SceneIndexHandle; + use super::camera::{build_camera, local_to_world}; +use super::index::data::PrimData; use super::light_links::LightLinks; use super::materials::{resolve_displacement, resolve_fresh}; use super::mesh::{ @@ -156,32 +159,30 @@ fn prim_path(path: &str) -> Result { } /// Refuses a material whose network reads a prim outside it: a stage masked -/// to the material does not compose it, where the import's stage did. -fn closed_network(stage: &Stage, root: &sdf::Path) -> Result<(), Structural> { - let mut stack = vec![prim_at(stage, root.clone())]; +/// to the material does not compose it, where the import's stage did. Read +/// from the generic connections of the material's prims in `index`. +fn closed_network(index: &SceneIndexHandle, root: &sdf::Path) -> Result<(), Structural> { + let mut stack = vec![PrimData::in_index(index, root)]; while let Some(prim) = stack.pop() { - for attr in prim.authored_attributes().unwrap_or_default() { - for target in attr.connections().unwrap_or_default() { + for name in prim.attribute_names() { + for target in prim.connections(&name) { if !target.prim_path().has_prefix(root) { return Err(Structural(format!( "{} connects to {target}, outside {root}", - attr.path() + prim.attribute_path(&name) ))); } } } - stack.extend(prim.children().unwrap_or_default()); + stack.extend(prim.children()); } Ok(()) } -/// Whether `path` is a `Shader` prim on `stage`. -fn is_shader(stage: &Stage, path: &sdf::Path) -> bool { - stage - .prim(path.clone()) - .ok() - .and_then(|p| p.type_name().ok().flatten()) - .is_some_and(|t| t.as_str() == "Shader") +/// Whether `path` is a `Shader` prim in `index`: its USD type, +/// `__usdPrimInfo/typeName`. +fn is_shader(index: &SceneIndexHandle, path: &sdf::Path) -> bool { + PrimData::at(index.as_ref(), path).usd_type() == "Shader" } /// A distinct mesh's slot and the content key it has now. @@ -242,10 +243,11 @@ impl Rebuilding<'_> { let scope = crate::WarningScope::enter(); let built = (|| { let stage = self.masked(&mat_path)?; - closed_network(&stage, &mat_path)?; + let scene = self.scene(&stage); + closed_network(&scene.chain, &mat_path)?; for shader in shaders { let shader = prim_path(shader)?; - if shader.has_prefix(&mat_path) && !is_shader(&stage, &shader) { + if shader.has_prefix(&mat_path) && !is_shader(&scene.chain, &shader) { return Err(Structural(format!("{shader} is not a shader of {path}"))); } } diff --git a/crates/crust-core/src/scene/usd_import/materials.rs b/crates/crust-core/src/scene/usd_import/materials.rs index 0e42b0398..fba04648b 100644 --- a/crates/crust-core/src/scene/usd_import/materials.rs +++ b/crates/crust-core/src/scene/usd_import/materials.rs @@ -486,7 +486,7 @@ fn cached_material( debug!("Resolving material {mat_path} (epoch {})", key.0); let home = material_stage(stage, &mat_path, caches); let (material, mtlx) = resolve_fresh(&home, &mat_path, caches); - let reads = material_reads(&home, &mat_path); + let reads = material_reads(&home, &mat_path, caches); caches.materials.by_path.insert( key.clone(), CachedMaterial { @@ -533,30 +533,37 @@ fn material_stage(stage: &Stage, mat_path: &sdf::Path, caches: &ImportCaches<'_> /// The prims outside the material at `mat_path` that its network reads: the /// paths of the specs its prims compose from elsewhere (an `inherits`, -/// `specializes` or `references` arc's target, a referenced layer's prim) and -/// the prims its connections reach. An in-place edit of a prim one of these -/// names would change this material too ([`crate::live`]). A path in another -/// layer's namespace may coincide with an edited one; that costs a full -/// import, never a stale material. -fn material_reads(stage: &Stage, mat_path: &sdf::Path) -> Vec { +/// `specializes` or `references` arc's target, a referenced layer's prim), +/// read off `home`, the stage that composes it ([`stage_facts`]), and the +/// prims its connections reach, from the prims' generic data in the index +/// the material is read from ([`MatSource`]). An in-place edit of a prim one +/// of these names would change this material too ([`crate::live`]). A path +/// in another layer's namespace may coincide with an edited one; that costs a +/// full import, never a stale material. +/// +/// [`stage_facts`]: super::index::stage_facts::foreign_spec_paths +fn material_reads(home: &Stage, mat_path: &sdf::Path, caches: &ImportCaches<'_>) -> Vec { + let src = MatSource::new(home, mat_path, caches); let mut reads = Vec::new(); - let mut stack = vec![prim_at(stage, mat_path.clone())]; + let mut paths = Vec::new(); + let mut stack = vec![src.prim.clone()]; while let Some(prim) = stack.pop() { - for site in prim.prim_stack().unwrap_or_default() { - if !site.path.has_prefix(mat_path) { - reads.push(site.path.to_string()); - } - } - for attr in prim.authored_attributes().unwrap_or_default() { - for target in attr.connections().unwrap_or_default() { - let target = target.prim_path(); + for name in prim.attribute_names() { + for target in prim.connections(&name) { + // Named where the material is: an instance proxy's + // connections are its prototype's, moved under the instance. + let target = prim.in_own_namespace(target.prim_path()); if !target.has_prefix(mat_path) { reads.push(target.to_string()); } } } - stack.extend(prim.children().unwrap_or_default()); + paths.push(prim.path().clone()); + stack.extend(prim.children()); } + reads.extend(super::index::stage_facts::foreign_spec_paths( + home, &paths, mat_path, + )); reads.sort(); reads.dedup(); reads diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index ea34e5c06..bbfdab89b 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -254,7 +254,7 @@ this group, and kept for the whole change. - parity on a fixture with `/World/Looks` beside four geometry chunks; - parity on a fixture whose material lives only in another chunk's payload; - parity on the Cornell box streamed. -- [ ] 9.5 Provenance for materials (`material_reads`: arcs from `prim_stack`, targets +- [x] 9.5 Provenance for materials (`material_reads`: arcs from `prim_stack`, targets from the generic `connections`), through `stage_facts` for the arcs. Move the material rebuild in `live.rs` to the index readers. Verify that `live.rs` passes, and parity green (provenance is in the digest). From cd6b753b1d3a1e1770971201b516da91d99a30be Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 10:18:20 +0100 Subject: [PATCH 48/95] usd-scene-import design: ALab with materials on the index (9.6) Report and 16 spp image equal the baseline; peak 21.10 GiB (1.93x), parse 47.75 s (1.53x), reported only. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/tasks.md | 2 +- openspec/specs/usd-scene-import/design.md | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index bbfdab89b..4fee7cd8f 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -258,7 +258,7 @@ this group, and kept for the whole change. from the generic `connections`), through `stage_facts` for the arcs. Move the material rebuild in `live.rs` to the index readers. Verify that `live.rs` passes, and parity green (provenance is in the digest). -- [ ] 9.6 Run `scripts/import_parity.sh check` on ALab against its baseline. Verify that +- [x] 9.6 Run `scripts/import_parity.sh check` on ALab against its baseline. Verify that it exits 0, and record the run in the design record. ## 10. Lights and light links (design D9) diff --git a/openspec/specs/usd-scene-import/design.md b/openspec/specs/usd-scene-import/design.md index aac4f477b..9c0277418 100644 --- a/openspec/specs/usd-scene-import/design.md +++ b/openspec/specs/usd-scene-import/design.md @@ -1665,6 +1665,18 @@ an upper bound. The clip fixes take openusd's own read of ALab from 26.0 to 11.1 but the import's peak is the stage scene index's cache of every populated prim (the progress run's note), so it does not move. Reported, not gated. +### Materials on the index (task 9.6) + +`scripts/import_parity.sh check` on ALab at `b122b8eb`, where material bindings, +networks (preview, MaterialX, Pxr, displacement), materials outside a streamed chunk +(the side input) and material provenance read the scene index: + +| scene | report and 16 spp image | peak memory (ratio) | `Parse USD stage` (ratio) | +|---|---|---|---| +| ALab | equal | 21.10 GiB (1.93) | 47.75 s (1.53) | + +One run, alone on the machine. + ## Provenance and in-place rebuilds An imported `Scene` carries `provenance` (`crust_core::live::Provenance`): which `World` From e637edd47be6a9156490762be564fe0774240107 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 10:24:41 +0100 Subject: [PATCH 49/95] usd-scene-import design: ALab's doubled memory is a cause to find in Moho, not the prim cache An earlier measurement put Moho's prim cache at about 6% over a raw read. The likelier, unverified cause is Moho's read path (listing every time sample opens every clip); recorded as a follow-up after S2. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/specs/usd-scene-import/design.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/openspec/specs/usd-scene-import/design.md b/openspec/specs/usd-scene-import/design.md index 9c0277418..b92bc8ca5 100644 --- a/openspec/specs/usd-scene-import/design.md +++ b/openspec/specs/usd-scene-import/design.md @@ -1645,9 +1645,11 @@ still read through the bridge: ALab's digest matches the direct importer's but for the cameras the provenance lists: an `over Camera` the direct importer counted is not a defined prim, so the index does -not hold it (the change's open question "Undefined prims"). ALab's memory doubles: every -stage scene index caches every prim it populates, and the single-stage import keeps its -index for the whole walk. Reported, not gated. +not hold it (the change's open question "Undefined prims"). ALab's memory doubles, for a +cause not yet found: an earlier measurement put Moho's prim cache at about 6% over a raw +read, so it is not the cache. The likelier, unverified cause is Moho's read path (for +example listing every time sample, which opens every value clip). It is a follow-up, to +investigate in Moho after S2. Reported, not gated. ### Run after the repin (Moho `788b1ac`, openusd `doubleailes/openusd` `d7d2a29`) @@ -1662,8 +1664,8 @@ fixes, with the families as in the progress run above: One run each; a debug build and test run shared the machine with Moana, so its time is an upper bound. The clip fixes take openusd's own read of ALab from 26.0 to 11.1 GiB, -but the import's peak is the stage scene index's cache of every populated prim (the -progress run's note), so it does not move. Reported, not gated. +but the import's peak does not move; its cause is the follow-up the progress run names +(Moho's read path, to investigate after S2). Reported, not gated. ### Materials on the index (task 9.6) From 40980d2fe9d67eef6ade161d268ca59bf3cf45ac Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 10:52:59 +0100 Subject: [PATCH 50/95] crust: lights read the scene index (10.1) Every UsdLux light is dispatched by its USD type (__usdPrimInfo/typeName, M8; DomeLight and DomeLight_1 share the Hydra type) and read from its prim's generic data: intensity, exposure, colour (its colour space as attrs resolved it), temperature, normalize, the lobe gains, each type's own inputs, the dome's texture, format and pole axis (the stage's upAxis from __usdStageMetadata), the rect light's texture, shaping and IES (the cone fallback by ShapingAPI in __usdPrimInfo/apiSchemas), and crust:light:*. The existing emit_* builders are unchanged. The live light rebuild and `crust ls light` read through the same readers, over an index of their stage; the light's transform stays the walk's until 5.x. The Prim-based attribute helpers nothing reads any more are removed. Parity: the debug suite with external samples (2656) and the image run equal their baselines. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../crust-core/src/scene/usd_import/assets.rs | 43 --- .../crust-core/src/scene/usd_import/attrs.rs | 151 +-------- .../src/scene/usd_import/index/data.rs | 19 ++ .../crust-core/src/scene/usd_import/lights.rs | 315 +++++++++--------- .../src/scene/usd_import/listing.rs | 44 +-- .../crust-core/src/scene/usd_import/live.rs | 6 +- crates/crust-core/src/scene/usd_import/mod.rs | 46 ++- openspec/changes/moho-import/tasks.md | 2 +- 8 files changed, 229 insertions(+), 397 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/assets.rs b/crates/crust-core/src/scene/usd_import/assets.rs index 5802b4f48..bd71e963c 100644 --- a/crates/crust-core/src/scene/usd_import/assets.rs +++ b/crates/crust-core/src/scene/usd_import/assets.rs @@ -13,11 +13,9 @@ use std::sync::Arc; use std::time::{Duration, Instant}; use openusd::sdf; -use openusd::usd::Attribute; use tracing::debug; use super::ImportCaches; -use super::attrs::value_at; /// Runs one host decode, adding its wall time to `asset_time` — the "Load /// assets" phase, which the traversal figure has subtracted out (see @@ -151,47 +149,6 @@ pub(super) fn load_ptex( loaded } -/// An `asset`-valued attribute as a filesystem path — the one rule every -/// asset reference (textures, Ptex, IES profiles, light and dome maps) is -/// resolved by. -/// -/// openusd anchors default-sourced asset paths against the layer that -/// authored them and reports the result in `resolved_path` — which is what -/// makes a production stage's `../../../textures/foo.ptx` work at all, since -/// the layer authoring it is nested several directories below the root (the -/// Moana island's lights author `../textures/islandsun.exr` relative to -/// `usd/island.usda`). -/// -/// But openusd reports the anchored path only when it names a file that -/// exists — and a ``-tokened texture path never does, since it names a -/// set. So such a value arrives with no `resolved_path` at all, and an -/// **unresolved** relative path is anchored here against the layer that -/// authored it: the strongest spec in the attribute's property stack, the -/// layer whose opinion supplies the value, which is exactly what USD anchors -/// against. Anchoring it against the root layer was wrong for any texture -/// authored in a sublayer or reference: ALab's look layers sit five -/// directories below `entry.usda` and author `@../../texture/….exr@`, -/// and 1 718 texture sets failed to load. The root layer (`stage_path`) is -/// only the last resort, when the authoring layer is unknown. -pub(super) fn asset_path(attr: &Attribute, stage_path: &Path) -> Option { - let value = value_at(attr)?; - let resolved = matches!(&value, sdf::Value::AssetPath(p) - if p.resolved_path().is_some_and(|r| !r.is_empty())); - let authored = value.as_str().map(str::to_owned); - if !resolved - && let Some(authored) = authored.filter(|a| !a.is_empty() && Path::new(a).is_relative()) - && let Some(layer_dir) = attr - .property_stack() - .ok() - .and_then(|stack| stack.into_iter().next()) - .and_then(|site| Path::new(&site.layer).parent().map(Path::to_path_buf)) - .filter(|d| !d.as_os_str().is_empty()) - { - return Some(layer_dir.join(authored)); - } - asset_value_path(&value, stage_path) -} - /// An asset value as a path: openusd's `resolved_path` when it has one, else /// the authored string, a relative one anchored against the root layer. pub(super) fn asset_value_path(value: &sdf::Value, stage_path: &Path) -> Option { diff --git a/crates/crust-core/src/scene/usd_import/attrs.rs b/crates/crust-core/src/scene/usd_import/attrs.rs index 2b2c16fa3..ad74067be 100644 --- a/crates/crust-core/src/scene/usd_import/attrs.rs +++ b/crates/crust-core/src/scene/usd_import/attrs.rs @@ -8,8 +8,7 @@ use openusd::gf::Vec3f; use openusd::sdf; use openusd::usd::{Attribute, Prim}; -use crate::color::Space; -use crate::ray::{MASK_ALL, MASK_CAMERA, MASK_INDIRECT, MASK_SHADOW, RayMask}; +use crate::ray::{MASK_ALL, RayMask}; use super::time::eval_time; @@ -28,57 +27,7 @@ pub(super) fn prim_ray_mask(prim: &Prim) -> RayMask { /// RenderMan's per-light camera visibility, which published assets carry /// (the Moana island's `islandPrman.usda` authors it on every light). -const RI_CAMERA_VISIBILITY: &str = "primvars:ri:attributes:visibility:camera"; - -/// Whether the camera sees a light, when anything says: crust's own -/// `crust:light:cameraVisible` first, RenderMan's primvar (an int, non-zero -/// meaning visible) as the portable fallback. -fn authored_camera_visibility(prim: &Prim) -> Option { - custom_bool(prim, "crust:light:cameraVisible") - .or_else(|| custom_bool(prim, RI_CAMERA_VISIBILITY)) -} - -/// Ray mask for a light's *source geometry*, and whether that source is a -/// transparent emitter. -/// -/// By default the surface is invisible to camera rays — lights sit in frame -/// without showing up — and is then an emitter and nothing else: shadow rays -/// do not see it, so it never occludes another light, and a bounce ray that -/// crosses it collects its emission and goes on past it (the integrator's -/// pass-through walk; `World::is_transparent_emitter`). That is the OpenUSD -/// reference delegate's rule: Typhoon (hdEmbree) builds geometry for a light -/// only when it is `visibleInPrimaryRay`. -/// -/// `crust:light:cameraVisible = true` (or RenderMan's -/// `primvars:ri:attributes:visibility:camera = 1`) opts the surface back in -/// as a solid emitter that every ray category sees and that occludes, like a -/// lamp bulb (classic Cornell-box look). An authored `crust:rayMask` wins -/// outright and keeps the source solid on the bounce side, whatever bits it -/// clears: it is the escape hatch for a scene that wants a hidden light to -/// occlude. -pub(super) fn light_ray_mask(prim: &Prim) -> (RayMask, bool) { - if let Some(m) = custom_i32(prim, "crust:rayMask") { - return (RayMask(m as u32), false); - } - if authored_camera_visibility(prim).unwrap_or(false) { - (MASK_CAMERA | MASK_SHADOW | MASK_INDIRECT, false) - } else { - (MASK_INDIRECT, true) - } -} - -/// Which escaping rays see a light at infinity: every category, unless the -/// camera is told not to (same attributes and precedence as -/// [`light_ray_mask`], but visible by default — a dome is the sky behind -/// the scene unless something hides it). `crust:rayMask` does not apply: a -/// light at infinity has no geometry to mask. -pub(super) fn infinite_light_escape_mask(prim: &Prim) -> RayMask { - if authored_camera_visibility(prim).unwrap_or(true) { - MASK_ALL - } else { - RayMask(MASK_ALL.0 & !MASK_CAMERA.0) - } -} +pub(super) const RI_CAMERA_VISIBILITY: &str = "primvars:ri:attributes:visibility:camera"; /// `crust:motion:translate` — a world-space translation the prim moves /// through over the shutter interval (transform motion blur). @@ -331,10 +280,6 @@ pub(super) fn custom_i32(prim: &Prim, name: &str) -> Option { prim_value(prim, name).and_then(decode_i32) } -pub(super) fn custom_f32(prim: &Prim, name: &str) -> Option { - prim_value(prim, name).and_then(decode_f32) -} - pub(super) fn custom_bool(prim: &Prim, name: &str) -> Option { prim_value(prim, name).and_then(decode_bool) } @@ -347,98 +292,6 @@ pub(super) fn custom_color3(prim: &Prim, name: &str) -> Option { prim_value(prim, name).and_then(decode_vec3) } -/// A colour attribute in the working space: [`custom_color3`], converted -/// from the space its `colorSpace` metadatum names (see [`in_working`]). -pub(super) fn custom_color(prim: &Prim, name: &str, working: Space) -> Option { - custom_color3(prim, name).map(|c| in_working(&prim.attribute(name), c, working)) -} - -/// The colour space an attribute's value is authored in, as -/// `UsdColorSpaceAPI::ComputeColorSpaceName` resolves it: the attribute's own -/// `colorSpace` metadatum, else the `colorSpace:name` of its prim, else of the -/// nearest ancestor that authors one — through the OCIO config. `None` when -/// nothing names one (the value is then already in the working space; USD's -/// own fallback, `lin_rec709_scene`, is deliberately not applied — see -/// `docs/color_management.md`). A name the config does not know is refused -/// with a warning, and is `None` too. -pub(super) fn attr_color_space(attr: &Attribute) -> Option { - let name = own_color_space_name(attr).or_else(|| { - let stage = attr.stage(); - let mut path = Some(attr.path().prim_path()); - while let Some(p) = path.filter(|p| !p.is_abs_root()) { - let named = prim_value(&super::prim_at(stage, p.clone()), "colorSpace:name") - .and_then(decode_text) - .filter(|n| !n.is_empty()); - if named.is_some() { - return named; - } - path = p.parent(); - } - None - })?; - named_space(attr, &name) -} - -/// The colour space an attribute's *own* `colorSpace` metadatum names, -/// ignoring any `colorSpace:name` on its prim or ancestors — for a value -/// whose encoding is a convention of the attribute rather than of the scene: -/// a texture file (whose decode `sourceColorSpace` or the file itself -/// decides) or a display-encoded colour such as PxrDisneyBsdf's `baseColor`. -/// A scope's `colorSpace:name = "acescg"` says its *linear colour values* are -/// ACEScg; applied to an sRGB albedo file it would read it as linear, and to -/// a displacement map it would mix its channels. -pub(super) fn attr_own_color_space(attr: &Attribute) -> Option { - let name = own_color_space_name(attr)?; - named_space(attr, &name) -} - -fn own_color_space_name(attr: &Attribute) -> Option { - attr.metadata::("colorSpace") - .ok() - .flatten() - .and_then(decode_text) - .filter(|n| !n.is_empty()) -} - -/// `name` through the OCIO config, warning when it does not know it. -fn named_space(attr: &Attribute, name: &str) -> Option { - let space = Space::named(name); - if space.is_none() { - warning!( - ColorUnknownSpace, - at = attr.path(), - "{}: colorSpace `{name}` is not defined by the OCIO config — the value is used as \ - authored", - attr.path() - ); - } - space -} - -/// An authored colour in the working space. A value whose attribute names -/// its space with `colorSpace` metadata is converted from it; one that names -/// none is taken as already in the working space — UsdLux's "in the rendering -/// color space", and the rule every unmanaged input follows -/// ([`crate::color`]). -pub(super) fn in_working(attr: &Attribute, rgb: Vec3A, working: Space) -> Vec3A { - match attr_color_space(attr) { - Some(space) => crate::color::convert(rgb, space, working), - None => rgb, - } -} - -pub(super) fn attr_f32(attr: &Attribute) -> Option { - value_at(attr).and_then(decode_f32) -} - -pub(super) fn attr_bool(attr: &Attribute) -> Option { - value_at(attr).and_then(decode_bool) -} - -pub(super) fn attr_vec3(attr: &Attribute) -> Option { - value_at(attr).and_then(decode_vec3) -} - #[cfg(test)] mod tests { use super::*; diff --git a/crates/crust-core/src/scene/usd_import/index/data.rs b/crates/crust-core/src/scene/usd_import/index/data.rs index 8260e9ee2..0469399a1 100644 --- a/crates/crust-core/src/scene/usd_import/index/data.rs +++ b/crates/crust-core/src/scene/usd_import/index/data.rs @@ -202,6 +202,25 @@ impl PrimData { } } + /// The API schemas applied to the prim (`ShapingAPI`, `CollectionAPI:x`): + /// `__usdPrimInfo/apiSchemas` (Moho's M8). + pub(in crate::scene::usd_import) fn api_schemas(&self) -> Vec { + use moho::tokens::usd_prim_info as info; + match self + .locate([info::USD_PRIM_INFO, info::API_SCHEMAS]) + .and_then(|d| d.value()) + { + Some(sdf::Value::TokenVec(v)) => v.iter().map(|t| t.as_str().to_owned()).collect(), + Some(sdf::Value::StringVec(v)) => v, + _ => Vec::new(), + } + } + + /// The index the prim was read from with [`PrimData::in_index`], if any. + pub(in crate::scene::usd_import) fn index(&self) -> Option<&SceneIndexHandle> { + self.index.as_ref() + } + /// The data source at `locator` under the prim. pub(in crate::scene::usd_import) fn locate( &self, diff --git a/crates/crust-core/src/scene/usd_import/lights.rs b/crates/crust-core/src/scene/usd_import/lights.rs index 754aad6aa..f0130e28a 100644 --- a/crates/crust-core/src/scene/usd_import/lights.rs +++ b/crates/crust-core/src/scene/usd_import/lights.rs @@ -1,18 +1,14 @@ -//! UsdLux lights → [`LightList`] entries (and their emissive scene geometry). +//! UsdLux lights → [`LightList`] entries (and their emissive scene geometry), +//! read from the scene index: each light's inputs from its prim's generic +//! data (`__usdAttributes`, the `light` container's source), its USD type and +//! applied API schemas from `__usdPrimInfo` (Moho's M8). The light's +//! transform is the walk's. use crate::{record_warning, warning}; use std::sync::Arc; use crust_rt::Geometry; use glam::{Affine3A, Mat3A, Mat4 as GMat4, Vec3, Vec3A}; -use openusd::usd::{Attribute, Prim, Stage}; -use openusd_schemas::geom::StageMetadata; -use openusd_schemas::lux::{ - BoundableLightBaseSchema, CylinderLight, CylinderLightSchema, DiskLight, DiskLightSchema, - DistantLight as UsdDistantLight, DistantLightSchema, DomeLight, DomeLight_1, DomeLight_1Schema, - DomeLightSchema, LightAPI, NonboundableLightBaseSchema, PoleAxis, RectLight, RectLightSchema, - ShapingAPI, SphereLight, SphereLightSchema, -}; use tracing::debug; use crate::color::Space; @@ -25,11 +21,10 @@ use crate::lux::{IesShaping, Shaping, distant_illuminance, distant_size_factor}; use crate::material::Emissive; use crate::rt_world::WorldBuilder; -use super::assets::{asset_path, cached_asset, explained, timed_asset}; -use super::attrs::{ - attr_bool, attr_f32, attr_own_color_space, attr_vec3, custom_bool, custom_color, custom_f32, - custom_token, decode_text, in_working, infinite_light_escape_mask, light_ray_mask, value_at, -}; +use super::assets::{asset_value_path, cached_asset, explained, timed_asset}; +use super::attrs::{RI_CAMERA_VISIBILITY, decode_text, decode_vec3}; +use super::index::data::{PrimData, color_space, stage_metadata}; +use super::materials::named_space; use super::{ImportCaches, ImportCtx}; /// The `LightAPI` quantities every UsdLux light shares. @@ -59,7 +54,7 @@ pub(super) struct LightInputs { } /// Reads [`LightInputs`], warning about a non-finite value. -pub(super) fn light_inputs(prim: &Prim, light: &LightAPI) -> LightInputs { +pub(super) fn light_inputs(prim: &PrimData) -> LightInputs { // A non-finite value would reach both MIS halves as NaN radiance, so it // falls back to the schema default like the shaping inputs do. let finite = |name: &str, v: Option, fallback: f32| match v { @@ -74,9 +69,9 @@ pub(super) fn light_inputs(prim: &Prim, light: &LightAPI) -> LightInputs { } v => v.unwrap_or(fallback), }; - let intensity = finite("intensity", attr_f32(&light.intensity_attr()), 1.0); - let exposure = finite("exposure", attr_f32(&light.exposure_attr()), 0.0); - let color = match attr_vec3(&light.color_attr()) { + let intensity = finite("intensity", prim.custom_f32("inputs:intensity"), 1.0); + let exposure = finite("exposure", prim.custom_f32("inputs:exposure"), 0.0); + let color = match prim.value("inputs:color").and_then(decode_vec3) { Some(c) if !c.is_finite() => { warning!( LightNonFiniteInput, @@ -93,29 +88,35 @@ pub(super) fn light_inputs(prim: &Prim, light: &LightAPI) -> LightInputs { intensity, exposure, color, - normalize: attr_bool(&light.normalize_attr()).unwrap_or(false), + normalize: prim.custom_bool("inputs:normalize").unwrap_or(false), gains: LobeGains { - diffuse: finite("diffuse", attr_f32(&light.diffuse_attr()), 1.0), - specular: finite("specular", attr_f32(&light.specular_attr()), 1.0), + diffuse: finite("diffuse", prim.custom_f32("inputs:diffuse"), 1.0), + specular: finite("specular", prim.custom_f32("inputs:specular"), 1.0), }, } } /// Reads the shared `LightAPI` inputs. -fn lux_params(prim: &Prim, light: &LightAPI, working: Space) -> LuxParams { +fn lux_params(prim: &PrimData, working: Space) -> LuxParams { let LightInputs { intensity, exposure, color, normalize, gains, - } = light_inputs(prim, light); - let color = in_working(&light.color_attr(), color, working); + } = light_inputs(prim); + let color = match color_space(prim, "inputs:color") { + Some(space) => crate::color::convert(color, space, working), + None => color, + }; let gain = intensity * 2f32.powf(exposure); let mut emission = color * gain; - if attr_bool(&light.enable_color_temperature_attr()).unwrap_or(false) { - let kelvin = attr_f32(&light.color_temperature_attr()).unwrap_or(6500.0); + if prim + .custom_bool("inputs:enableColorTemperature") + .unwrap_or(false) + { + let kelvin = prim.custom_f32("inputs:colorTemperature").unwrap_or(6500.0); // The blackbody leaves the Rec.709 gamut below ~1900 K; clamp the // product, not the factor, so a negative channel cannot flip sign // against a negative `color`. @@ -141,17 +142,14 @@ fn lux_params(prim: &Prim, light: &LightAPI, working: Space) -> LuxParams { /// applied the schema's `cone:angle = 90` is in force (Hydra hands the /// delegate the schema fallback), without it there is no such attribute and /// the cone is open (hdEmbree's own default, 180°). openusd does not report -/// schema fallbacks for applied API schemas, so that rule is applied here. +/// schema fallbacks for applied API schemas, so that rule is applied here; +/// whether the API is applied is `__usdPrimInfo/apiSchemas`. fn lux_shaping( - stage: &Stage, - prim: &Prim, + prim: &PrimData, light_to_world: Mat3A, caches: &mut ImportCaches, ) -> Option { - let applied = ShapingAPI::get(stage, prim.path().clone()) - .ok() - .flatten() - .is_some(); + let applied = prim.api_schemas().iter().any(|a| a == "ShapingAPI"); // A non-finite authored value survives every formula below and turns the // light's radiance — both MIS halves of it — into NaN. Such a value is // refused and replaced by the input's fallback, with a warning. @@ -170,13 +168,13 @@ fn lux_shaping( let mut shaping = Shaping::new(light_to_world); shaping.focus = finite( "inputs:shaping:focus", - custom_f32(prim, "inputs:shaping:focus"), + prim.custom_f32("inputs:shaping:focus"), ) .unwrap_or(0.0); // The schema's fallback is black, not white ("The default tint is // black", usdLux/schema.usda): unauthored, focus darkens off-axis // emission rather than leaving it neutral, exactly as in hdEmbree. - shaping.focus_tint = match custom_color(prim, "inputs:shaping:focusTint", caches.working) { + shaping.focus_tint = match prim.custom_color("inputs:shaping:focusTint", caches.working) { Some(c) if !c.is_finite() => { warning!( LightNonFiniteInput, @@ -190,7 +188,7 @@ fn lux_shaping( }; shaping.cone_angle_deg = finite( "inputs:shaping:cone:angle", - custom_f32(prim, "inputs:shaping:cone:angle"), + prim.custom_f32("inputs:shaping:cone:angle"), ) .unwrap_or(if applied { Shaping::SCHEMA_CONE_ANGLE_DEG @@ -199,14 +197,13 @@ fn lux_shaping( }); shaping.cone_softness = finite( "inputs:shaping:cone:softness", - custom_f32(prim, "inputs:shaping:cone:softness"), + prim.custom_f32("inputs:shaping:cone:softness"), ) .unwrap_or(0.0); - let ies_file = asset_path( - &prim.attribute("inputs:shaping:ies:file"), - caches.stage_path, - ); + let ies_file = prim + .value("inputs:shaping:ies:file") + .and_then(|v| asset_value_path(&v, caches.stage_path)); if let Some(path) = ies_file { let assets = caches.assets; let profile = cached_asset( @@ -230,10 +227,12 @@ fn lux_shaping( profile, angle_scale: finite( "inputs:shaping:ies:angleScale", - custom_f32(prim, "inputs:shaping:ies:angleScale"), + prim.custom_f32("inputs:shaping:ies:angleScale"), ) .unwrap_or(0.0), - normalize: custom_bool(prim, "inputs:shaping:ies:normalize").unwrap_or(false), + normalize: prim + .custom_bool("inputs:shaping:ies:normalize") + .unwrap_or(false), }); } @@ -293,7 +292,7 @@ fn perpendicular(a: Vec3A, b: Vec3A) -> bool { fn emit_round_light( world: &mut WorldBuilder, lights: &mut LightList, - prim: &Prim, + prim: &PrimData, unit: UnitShape, world_xf: GMat4, radius: f32, @@ -423,16 +422,10 @@ fn emit_round_light( /// transform — a non-uniform scale makes an ellipsoid. `treatAsPoint` is a /// hint for renderers without area lights and is ignored, as the schema /// permits. -pub(super) fn emit_sphere_light( - stage: &Stage, - ctx: &mut ImportCtx, - prim: &Prim, - light: &SphereLight, - world_xf: GMat4, -) { - let radius = attr_f32(&light.radius_attr()).unwrap_or(0.5); - let params = lux_params(prim, &light.light_api(), ctx.caches.working); - let shaping = lux_shaping(stage, prim, linear_part(world_xf), &mut ctx.caches); +pub(super) fn emit_sphere_light(ctx: &mut ImportCtx, prim: &PrimData, world_xf: GMat4) { + let radius = prim.custom_f32("inputs:radius").unwrap_or(0.5); + let params = lux_params(prim, ctx.caches.working); + let shaping = lux_shaping(prim, linear_part(world_xf), &mut ctx.caches); emit_round_light( &mut ctx.world, &mut ctx.lights, @@ -448,16 +441,10 @@ pub(super) fn emit_sphere_light( /// `UsdLuxDiskLight`: a disk of `inputs:radius` (0.5) in the local XY /// plane, emitting from one side, along local −Z. -pub(super) fn emit_disk_light( - stage: &Stage, - ctx: &mut ImportCtx, - prim: &Prim, - light: &DiskLight, - world_xf: GMat4, -) { - let radius = attr_f32(&light.radius_attr()).unwrap_or(0.5); - let params = lux_params(prim, &light.light_api(), ctx.caches.working); - let shaping = lux_shaping(stage, prim, linear_part(world_xf), &mut ctx.caches); +pub(super) fn emit_disk_light(ctx: &mut ImportCtx, prim: &PrimData, world_xf: GMat4) { + let radius = prim.custom_f32("inputs:radius").unwrap_or(0.5); + let params = lux_params(prim, ctx.caches.working); + let shaping = lux_shaping(prim, linear_part(world_xf), &mut ctx.caches); emit_round_light( &mut ctx.world, &mut ctx.lights, @@ -475,17 +462,11 @@ pub(super) fn emit_disk_light( /// `inputs:length` (1) along local X, centred on the origin, emitting /// outward from its side and not from its end caps. `treatAsLine` is /// ignored, as `treatAsPoint` is. -pub(super) fn emit_cylinder_light( - stage: &Stage, - ctx: &mut ImportCtx, - prim: &Prim, - light: &CylinderLight, - world_xf: GMat4, -) { - let radius = attr_f32(&light.radius_attr()).unwrap_or(0.5); - let length = attr_f32(&light.length_attr()).unwrap_or(1.0); - let params = lux_params(prim, &light.light_api(), ctx.caches.working); - let shaping = lux_shaping(stage, prim, linear_part(world_xf), &mut ctx.caches); +pub(super) fn emit_cylinder_light(ctx: &mut ImportCtx, prim: &PrimData, world_xf: GMat4) { + let radius = prim.custom_f32("inputs:radius").unwrap_or(0.5); + let length = prim.custom_f32("inputs:length").unwrap_or(1.0); + let params = lux_params(prim, ctx.caches.working); + let shaping = lux_shaping(prim, linear_part(world_xf), &mut ctx.caches); emit_round_light( &mut ctx.world, &mut ctx.lights, @@ -508,8 +489,13 @@ pub(super) fn emit_cylinder_light( /// stored" — already in the working space — and keeps that space: the /// environment's importance sampling weighs its texels by the working /// space's luminance, which `ColorSpace::RAW` would lose. -fn texture_color_space(file: &openusd::usd::Attribute, working: Space) -> crate::ColorSpace { - match attr_own_color_space(file) { +fn texture_color_space(prim: &PrimData, file: &str, working: Space) -> crate::ColorSpace { + let own = prim + .metadata(file, moho::tokens::usd::COLOR_SPACE) + .and_then(decode_text) + .filter(|n| !n.is_empty()) + .and_then(|name| named_space(&prim.attribute_path(file), &name)); + match own { Some(space) if space.is_data() => crate::ColorSpace::new(working, working), Some(space) => crate::ColorSpace::new(space, working), None => crate::ColorSpace::AUTO.into_working(working), @@ -518,10 +504,15 @@ fn texture_color_space(file: &openusd::usd::Attribute, working: Space) -> crate: /// `RectLight`'s `inputs:texture:file`, decoded by the host. Cached by /// resolved path: a rig commonly reuses one card texture on many lights. -fn rect_light_texture(prim: &Prim, caches: &mut ImportCaches) -> Option> { - let file = prim.attribute("inputs:texture:file"); - let path = asset_path(&file, caches.stage_path)?; - let space = texture_color_space(&file, caches.working); +fn rect_light_texture( + prim: &PrimData, + caches: &mut ImportCaches, +) -> Option> { + let file = "inputs:texture:file"; + let path = prim + .value(file) + .and_then(|v| asset_value_path(&v, caches.stage_path))?; + let space = texture_color_space(prim, file, caches.working); let assets = caches.assets; let loaded = cached_asset( &mut caches.light_textures, @@ -561,15 +552,9 @@ fn rect_light_texture(prim: &Prim, caches: &mut ImportCaches) -> Option 0.0 && height > 0.0) { warning!( LightDegenerateShape, @@ -580,8 +565,8 @@ pub(super) fn emit_rect_light( ); return; } - let params = lux_params(prim, &light.light_api(), ctx.caches.working); - let shaping = lux_shaping(stage, prim, linear_part(world_xf), &mut ctx.caches); + let params = lux_params(prim, ctx.caches.working); + let shaping = lux_shaping(prim, linear_part(world_xf), &mut ctx.caches); let texture = rect_light_texture(prim, &mut ctx.caches); let corner = world_xf.transform_point3(Vec3::new(-0.5 * width, -0.5 * height, 0.0)); @@ -688,8 +673,7 @@ pub(super) fn emit_rect_light( /// rays find it by escaping along a direction inside its cone. pub(super) fn emit_distant_light( lights: &mut LightList, - prim: &Prim, - light: &UsdDistantLight, + prim: &PrimData, world_xf: GMat4, working: Space, ) { @@ -702,8 +686,8 @@ pub(super) fn emit_distant_light( ); return; } - let angle = attr_f32(&light.angle_attr()).unwrap_or(0.53).max(0.0); - let params = lux_params(prim, &light.light_api(), working); + let angle = prim.custom_f32("inputs:angle").unwrap_or(0.53).max(0.0); + let params = lux_params(prim, working); let direction = Vec3A::new(direction.x, direction.y, direction.z); // Everything becomes the illuminance the *authored* cone delivers to a @@ -739,60 +723,57 @@ pub(super) fn emit_distant_light( } /// What [`emit_dome_light`] reads from either dome schema. `DomeLight_1` -/// does not derive from `DomeLight`, so each view answers for its own -/// declarations. +/// does not derive from `DomeLight`, so each answers for its own +/// declarations; both name the same inputs. pub(super) struct DomeInputs { schema: &'static str, - light_api: LightAPI, - texture_file: Attribute, - texture_format: Attribute, /// Turns the dome's own frame onto its pole axis, before the prim's /// transform: the identity, or +90° about X for a +Z pole. pole: Mat3A, } impl DomeInputs { - /// A `UsdLuxDomeLight`, whose pole is +Y whatever the stage's up axis. - /// Its schema declares no `poleAxis`, and an authored one is ignored, - /// as OpenUSD's imaging reads it only through `UsdLuxDomeLight_1`. - pub(super) fn dome_light(light: &DomeLight) -> Self { - Self { - schema: "DomeLight", - light_api: light.light_api(), - texture_file: light.texture_file_attr(), - texture_format: light.texture_format_attr(), - pole: Mat3A::IDENTITY, - } - } - - /// A `UsdLuxDomeLight_1`, whose `poleAxis` puts its top pole on +Z when - /// it is `Z`, or `scene` (the fallback) on a stage whose `upAxis` is - /// `Z`. That is OpenUSD's `_GetDomeOffset` (`usdImaging/ - /// domeLight_1Adapter.cpp`): a +90° rotation about X, for the dome - /// alone. Typhoon (hdEmbree) never applies it; crust follows the schema. - pub(super) fn dome_light_1(stage: &Stage, light: &DomeLight_1) -> Self { - let z_pole = match light.pole_axis().ok().flatten().unwrap_or_default() { - PoleAxis::Z => true, - PoleAxis::Y => false, - // A stage takes its metadata from its root layer; unauthored - // reads as UsdGeom's fallback, Y. - PoleAxis::SceneUp => stage - .up_axis() - .ok() - .flatten() - .is_some_and(|axis| axis.as_str() == "Z"), - }; - Self { - schema: "DomeLight_1", - light_api: light.light_api(), - texture_file: light.texture_file_attr(), - texture_format: light.texture_format_attr(), - // Columns are the images of local X, Y, Z: +Y → +Z, +Z → −Y. - pole: if z_pole { - Mat3A::from_cols(Vec3A::X, Vec3A::Z, -Vec3A::Y) - } else { - Mat3A::IDENTITY - }, + /// The dome `prim` is, by its USD type: `None` for a prim that is no dome. + /// + /// A `UsdLuxDomeLight`'s pole is +Y whatever the stage's up axis. Its + /// schema declares no `poleAxis`, and an authored one is ignored, as + /// OpenUSD's imaging reads it only through `UsdLuxDomeLight_1`. + /// + /// A `UsdLuxDomeLight_1`'s `poleAxis` puts its top pole on +Z when it is + /// `Z`, or `scene` (the fallback) on a stage whose `upAxis` is `Z`. That + /// is OpenUSD's `_GetDomeOffset` (`usdImaging/domeLight_1Adapter.cpp`): a + /// +90° rotation about X, for the dome alone. Typhoon (hdEmbree) never + /// applies it; crust follows the schema. + pub(super) fn of(prim: &PrimData) -> Option { + match prim.usd_type().as_str() { + "DomeLight" => Some(Self { + schema: "DomeLight", + pole: Mat3A::IDENTITY, + }), + "DomeLight_1" => { + let z_pole = match prim.resolved("poleAxis").and_then(decode_text).as_deref() { + Some("Z") => true, + Some("Y") => false, + // `scene`, the fallback: the stage's `upAxis`, whose + // own fallback is Y. + _ => prim.index().is_some_and(|index| { + stage_metadata(index.as_ref(), "upAxis") + .and_then(|(v, _)| decode_text(v)) + .is_some_and(|axis| axis == "Z") + }), + }; + Some(Self { + schema: "DomeLight_1", + // Columns are the images of local X, Y, Z: +Y → +Z, + // +Z → −Y. + pole: if z_pole { + Mat3A::from_cols(Vec3A::X, Vec3A::Z, -Vec3A::Y) + } else { + Mat3A::IDENTITY + }, + }) + } + _ => None, } } } @@ -812,7 +793,7 @@ impl DomeInputs { /// rotation, orient the sky. pub(super) fn emit_dome_light( ctx: &mut ImportCtx, - prim: &Prim, + prim: &PrimData, dome: &DomeInputs, world_xf: GMat4, ) { @@ -826,18 +807,22 @@ pub(super) fn emit_dome_light( emission: tint, gains, .. - } = lux_params(prim, &dome.light_api, working); + } = lux_params(prim, working); - let format = value_at(&dome.texture_format).and_then(decode_text); + let format = prim.value("inputs:texture:format").and_then(decode_text); // The authoring layer anchors the path, not the root layer: the Moana // island's lights author `../textures/islandsun.exr` relative to // `usd/island.usda` (see `asset_path`). - let map = match asset_path(&dome.texture_file, stage_path) { + let file = "inputs:texture:file"; + let map = match prim + .value(file) + .and_then(|v| asset_value_path(&v, stage_path)) + { Some(texture) => match format.as_deref() { // `automatic` infers from the image; for the equirectangular // images a dome light normally carries that means latlong. None | Some("latlong") | Some("automatic") => { - let space = texture_color_space(&dome.texture_file, working); + let space = texture_color_space(prim, file, working); let failed = &mut ctx.caches.failed_assets; let loaded = timed_asset(asset_time, || { explained(failed, &texture, || { @@ -903,7 +888,7 @@ pub(super) fn emit_dome_light( /// — the label a light group `` selects. Other renderers' tag /// attributes are not read yet: their exact names are still to be checked /// against real exports. -fn tag_last(lights: &mut LightList, prim: &Prim, gains: LobeGains) { +fn tag_last(lights: &mut LightList, prim: &PrimData, gains: LobeGains) { let index = lights.count() - 1; lights.set_name(index, &prim.path().to_string()); if gains != LobeGains::ONE { @@ -915,8 +900,40 @@ fn tag_last(lights: &mut LightList, prim: &Prim, gains: LobeGains) { ); lights.set_lobe_gains(index, gains); } - if let Some(tag) = custom_token(prim, "crust:light:lpeTag") { + if let Some(tag) = prim.custom_token("crust:light:lpeTag") { debug!("{}: LPE tag {tag:?}", prim.path()); lights.set_lpe_tag(index, Some(&tag)); } } + +/// `crust:light:cameraVisible` first, RenderMan's primvar (an int, non-zero +/// meaning visible) as the portable fallback (`attrs::light_ray_mask`). +fn authored_camera_visibility(prim: &PrimData) -> Option { + prim.custom_bool("crust:light:cameraVisible") + .or_else(|| prim.custom_bool(RI_CAMERA_VISIBILITY)) +} + +/// Ray mask for a light's source geometry, and whether that source is a +/// transparent emitter: `attrs::light_ray_mask`, from generic data. +fn light_ray_mask(prim: &PrimData) -> (crate::ray::RayMask, bool) { + use crate::ray::{MASK_CAMERA, MASK_INDIRECT, MASK_SHADOW, RayMask}; + if let Some(m) = prim.custom_i32("crust:rayMask") { + return (RayMask(m as u32), false); + } + if authored_camera_visibility(prim).unwrap_or(false) { + (MASK_CAMERA | MASK_SHADOW | MASK_INDIRECT, false) + } else { + (MASK_INDIRECT, true) + } +} + +/// Which escaping rays see a light at infinity: +/// `attrs::infinite_light_escape_mask`, from generic data. +fn infinite_light_escape_mask(prim: &PrimData) -> crate::ray::RayMask { + use crate::ray::{MASK_ALL, MASK_CAMERA, RayMask}; + if authored_camera_visibility(prim).unwrap_or(true) { + MASK_ALL + } else { + RayMask(MASK_ALL.0 & !MASK_CAMERA.0) + } +} diff --git a/crates/crust-core/src/scene/usd_import/listing.rs b/crates/crust-core/src/scene/usd_import/listing.rs index d55f2b047..e91302dff 100644 --- a/crates/crust-core/src/scene/usd_import/listing.rs +++ b/crates/crust-core/src/scene/usd_import/listing.rs @@ -20,8 +20,7 @@ use openusd_schemas::geom::{ NurbsCurves as UsdNurbsCurves, PointInstancer, PointInstancerSchema, Sphere as UsdSphere, }; use openusd_schemas::lux::{ - CylinderLight, DiskLight, DistantLight, DomeLight, DomeLight_1, LightAPI, RectLight, - SphereLight, + CylinderLight, DiskLight, DistantLight, DomeLight, DomeLight_1, RectLight, SphereLight, }; use openusd_schemas::render::Pass as UsdRenderPass; use openusd_schemas::shade::Material as UsdMaterial; @@ -30,7 +29,8 @@ use tracing::debug; use super::attrs::custom_token; use super::camera::camera_lens; use super::implicit::Shape; -use super::lights::{LightInputs, light_inputs}; +use super::index::data::PrimData; +use super::lights::light_inputs; use super::materials::{bound_material, surface_shader_id}; use super::products::{Framing, import_render_products}; use super::settings::{CameraPick, import_render_settings, pick_camera, wanted_camera}; @@ -104,7 +104,7 @@ pub(crate) fn list_records( for_each_chunk(path, path_str, &chunks, |stage| { // A camera's lens is read as the import reads it, through the scene // index of the stage it is on. - let scene = (kind == ListKind::Camera) + let scene = matches!(kind, ListKind::Camera | ListKind::Light) .then(|| super::index::input_chain(stage.clone(), frame, false)); collect(stage, kind, Order::Authored, |prim, hidden| { let scene = scene.as_ref().map(|s| s.chain.as_ref()); @@ -228,24 +228,18 @@ fn record( }) } ListKind::Light => { - let p = || prim.path().clone(); - let (kind, inputs) = if let Ok(Some(_)) = SphereLight::get(stage, p()) { - read("sphere", prim) - } else if let Ok(Some(_)) = RectLight::get(stage, p()) { - read("rect", prim) - } else if let Ok(Some(_)) = DiskLight::get(stage, p()) { - read("disk", prim) - } else if let Ok(Some(_)) = CylinderLight::get(stage, p()) { - read("cylinder", prim) - } else if let Ok(Some(_)) = DistantLight::get(stage, p()) { - read("distant", prim) - } else if let Ok(Some(_)) = DomeLight::get(stage, p()) { - read("dome", prim) - } else if let Ok(Some(_)) = DomeLight_1::get(stage, p()) { - read("dome", prim) - } else { - return None; + // Read as the import reads it, through the scene index. + let data = PrimData::at(scene?, prim.path()); + let kind = match data.usd_type().as_str() { + "SphereLight" => "sphere", + "RectLight" => "rect", + "DiskLight" => "disk", + "CylinderLight" => "cylinder", + "DistantLight" => "distant", + "DomeLight" | "DomeLight_1" => "dome", + _ => return None, }; + let inputs = light_inputs(&data); ListRecord::Light(LightRecord { path, kind, @@ -267,14 +261,6 @@ fn record( }) } -/// A light's type name and its `LightAPI` inputs. -fn read(kind: &'static str, prim: &Prim) -> (&'static str, LightInputs) { - ( - kind, - light_inputs(prim, &LightAPI::from_prim_unchecked(prim.clone())), - ) -} - /// The materials the import's binding resolution ([`bound_material`]) /// resolves the geometry prims it renders to — meshes, spheres, curves and /// implicit shapes, diff --git a/crates/crust-core/src/scene/usd_import/live.rs b/crates/crust-core/src/scene/usd_import/live.rs index 9fb736684..f6cda1062 100644 --- a/crates/crust-core/src/scene/usd_import/live.rs +++ b/crates/crust-core/src/scene/usd_import/live.rs @@ -293,7 +293,11 @@ impl Rebuilding<'_> { world.reserve_slot(filler.clone(), crate::ray::RayMask(0)); } let mut ctx = scratch_ctx(self, world); - if !emit_light(&stage, &mut ctx, &prim, world_xf) { + // The light's inputs from an index over the masked stage, as + // the import reads them. + let scene = self.scene(&stage); + let light = PrimData::in_index(&scene.chain, &light_path); + if !emit_light(&mut ctx, &light, world_xf) { return Err(Structural(format!("{path} is no longer a light"))); } let geoms = origin.geoms.start..ctx.world.count() as u32; diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index 384d9fe10..bba69fa3e 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -64,10 +64,6 @@ use openusd_schemas::geom::{ BasisCurves as UsdBasisCurves, Mesh as UsdMesh, NurbsCurves as UsdNurbsCurves, PointInstancer, Sphere as UsdSphere, }; -use openusd_schemas::lux::{ - CylinderLight, DiskLight, DistantLight as UsdDistantLight, DomeLight, DomeLight_1, RectLight, - SphereLight, -}; mod adaptive; mod assets; @@ -483,7 +479,7 @@ fn visit_prim( } else if visit_camera(index, stage, prim, ctx) { // Recorded (and built, if it is the one) inside the call. A // moving camera is out of scope: it renders from the frame. - } else if emit_light(stage, ctx, prim, this_world) { + } else if emit_walked_light(ctx, prim.path(), this_world) { ctx.caches.motion.unmoved(prim, &timing); } else { ctx.caches.unread.saw(prim); @@ -575,30 +571,30 @@ fn without_variants(path: &str) -> String { out.trim_end_matches('/').to_owned() } -/// Emits `prim` if it is a UsdLux light — the one dispatch the traversal -/// and an in-place light rebuild ([`live`]) share. `false` when it is not one. -fn emit_light(stage: &Stage, ctx: &mut ImportCtx, prim: &Prim, world_xf: GMat4) -> bool { - if let Ok(Some(light)) = SphereLight::get(stage, prim.path().clone()) { - emit_sphere_light(stage, ctx, prim, &light, world_xf); - } else if let Ok(Some(light)) = RectLight::get(stage, prim.path().clone()) { - emit_rect_light(stage, ctx, prim, &light, world_xf); - } else if let Ok(Some(light)) = DiskLight::get(stage, prim.path().clone()) { - emit_disk_light(stage, ctx, prim, &light, world_xf); - } else if let Ok(Some(light)) = CylinderLight::get(stage, prim.path().clone()) { - emit_cylinder_light(stage, ctx, prim, &light, world_xf); - } else if let Ok(Some(light)) = UsdDistantLight::get(stage, prim.path().clone()) { - emit_distant_light(&mut ctx.lights, prim, &light, world_xf, ctx.caches.working); - } else if let Ok(Some(light)) = DomeLight::get(stage, prim.path().clone()) { - emit_dome_light(ctx, prim, &DomeInputs::dome_light(&light), world_xf); - } else if let Ok(Some(light)) = DomeLight_1::get(stage, prim.path().clone()) { - let dome = DomeInputs::dome_light_1(stage, &light); - emit_dome_light(ctx, prim, &dome, world_xf); - } else { - return false; +/// Emits the light `prim` (its data in the scene index) if it is a UsdLux +/// light, by its USD type — the one dispatch the traversal and an in-place +/// light rebuild ([`live`]) share. `false` when it is not one. +fn emit_light(ctx: &mut ImportCtx, prim: &index::data::PrimData, world_xf: GMat4) -> bool { + match prim.usd_type().as_str() { + "SphereLight" => emit_sphere_light(ctx, prim, world_xf), + "RectLight" => emit_rect_light(ctx, prim, world_xf), + "DiskLight" => emit_disk_light(ctx, prim, world_xf), + "CylinderLight" => emit_cylinder_light(ctx, prim, world_xf), + "DistantLight" => emit_distant_light(&mut ctx.lights, prim, world_xf, ctx.caches.working), + _ => match DomeInputs::of(prim) { + Some(dome) => emit_dome_light(ctx, prim, &dome, world_xf), + None => return false, + }, } true } +/// [`emit_light`] for the prim at `path` of the walk. +fn emit_walked_light(ctx: &mut ImportCtx, path: &sdf::Path, world_xf: GMat4) -> bool { + let light = ctx.caches.prim_data(path); + emit_light(ctx, &light, world_xf) +} + /// Records `prim` if it is a camera — as a candidate for the error listing /// alternatives, and built when it is the one to render through. `false` when /// it is not a camera. diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 4fee7cd8f..416df617b 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -263,7 +263,7 @@ this group, and kept for the whole change. ## 10. Lights and light links (design D9) -- [ ] 10.1 Index readers for every light type through the `light` container +- [x] 10.1 Index readers for every light type through the `light` container (intensity, exposure, colour and temperature, normalize, the type's own inputs, dome texture and pole axis, shaping and IES), plus `crust:light:*` from generic data. They feed the existing `emit_*_light` builders. Verify parity green on `lights.rs`, From ac5cdc6ae08c14d186fc82ce640835446285e7e1 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 11:31:43 +0100 Subject: [PATCH 51/95] crust: light links judge the scene index's membership expressions (10.2) Each linked light's lightLink and shadowLink are read as Moho's complete membership expressions (collections//membershipExpression, from openusd's membership query as UsdImaging's collection adapter computes them) and evaluated against every recorded receiver after the last chunk, without reading categories (design D9). The opinions that decide whether a link restricts, and whether the scene input or the chunk answers for it, come from each input's generic data, as the two stages answered before; an instance ancestor is told by __usdPrimInfo. Why a collection has no membership is openusd's error, read in stage_facts for that warning only. Agreement tests assert that Moho's categories match crust's answers on one stage and streamed with every input present. A streamed fixture links a light to receivers in other chunks (baselines from the direct importer). The debug suite and the image run equal their baselines. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../crust-core/src/scene/usd_import/attrs.rs | 4 - .../src/scene/usd_import/index/stage_facts.rs | 16 + .../src/scene/usd_import/light_links.rs | 298 +++++++++++++----- .../crust-core/src/scene/usd_import/live.rs | 1 + crates/crust-core/src/scene/usd_import/mod.rs | 15 +- .../links_usda-a0d7e6d1bd9f74ab-1.digest | 39 +++ .../links_usda-a0d7e6d1bd9f74ab-1.image | 1 + .../crust-core/tests/streamed_light_links.rs | 72 +++++ openspec/changes/moho-import/design.md | 9 +- openspec/changes/moho-import/tasks.md | 2 +- 10 files changed, 377 insertions(+), 80 deletions(-) create mode 100644 crates/crust-core/tests/data/import_baselines/links_usda-a0d7e6d1bd9f74ab-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/links_usda-a0d7e6d1bd9f74ab-1.image create mode 100644 crates/crust-core/tests/streamed_light_links.rs diff --git a/crates/crust-core/src/scene/usd_import/attrs.rs b/crates/crust-core/src/scene/usd_import/attrs.rs index ad74067be..9f0f9b3bb 100644 --- a/crates/crust-core/src/scene/usd_import/attrs.rs +++ b/crates/crust-core/src/scene/usd_import/attrs.rs @@ -280,10 +280,6 @@ pub(super) fn custom_i32(prim: &Prim, name: &str) -> Option { prim_value(prim, name).and_then(decode_i32) } -pub(super) fn custom_bool(prim: &Prim, name: &str) -> Option { - prim_value(prim, name).and_then(decode_bool) -} - pub(super) fn custom_token(prim: &Prim, name: &str) -> Option { prim_value(prim, name).and_then(decode_text) } diff --git a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs index 89990492a..0ccc70307 100644 --- a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs +++ b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs @@ -246,3 +246,19 @@ pub(in crate::scene::usd_import) fn foreign_spec_paths( } out } + +/// Why the collection `name` of the prim at `path` has no membership: the +/// error openusd's membership query gives, which the scene index (Hydra's +/// collections schema) does not carry. For the `light_link.unreadable_collection` +/// diagnostic only (design D7). +pub(in crate::scene::usd_import) fn collection_error( + stage: &Stage, + path: &sdf::Path, + name: &str, +) -> Option { + let prim = super::super::prim_at(stage, path.clone()); + moho::openusd::usd::CollectionAPI::from_prim_unchecked(prim, name) + .membership_query() + .err() + .map(|e| e.to_string()) +} diff --git a/crates/crust-core/src/scene/usd_import/light_links.rs b/crates/crust-core/src/scene/usd_import/light_links.rs index 62e240f74..1736459bc 100644 --- a/crates/crust-core/src/scene/usd_import/light_links.rs +++ b/crates/crust-core/src/scene/usd_import/light_links.rs @@ -1,10 +1,14 @@ //! `collection:lightLink` and `collection:shadowLink`: which receivers a //! light illuminates, and which occluders shadow it. //! -//! Membership is openusd's own (`CollectionAPI::membership_query`), so -//! every `UsdCollectionAPI` rule — nearest opinion wins, `includeRoot`, -//! expansion rules, nested collections with cycles broken — is the -//! reference's. What crust adds is *when* it is asked. A light can be +//! Membership is each collection's complete membership expression, as the +//! scene index gives it (`collections//membershipExpression`, which +//! Moho computes from openusd's own membership query as UsdImaging's +//! collection adapter does), so every `UsdCollectionAPI` rule — nearest +//! opinion wins, `includeRoot`, expansion rules, nested collections with +//! cycles broken — is the reference's. Crust judges it itself rather than +//! reading Moho's `categories` (design D9). What crust adds is *when* it is +//! asked. A light can be //! traversed after the geometry it links, and when streaming in a different //! chunk whose stage is gone by the end, so nothing is decided at emission: //! @@ -33,8 +37,10 @@ use crate::warning; use std::collections::HashMap; +use moho::scene_index::SceneIndexHandle; use openusd::sdf; -use openusd::usd::{CollectionAPI, MembershipQuery, Prim, Stage}; +use openusd::sdf::path_expr::{PathExpressionEval, PredicateLibrary}; +use openusd::usd::{CollectionAPI, Stage}; use tracing::debug; use crate::light::{EVERY_CLASS, Light, LightLinks as RuntimeLinks, LightList}; @@ -42,8 +48,7 @@ use crate::ray::{MASK_CAMERA, MASK_SHADOW, RayMask}; use crate::rt_world::WorldBuilder; use crate::volume::VolumeRegion; -use super::attrs::{custom_bool, custom_token, prim_value}; -use super::prim_at; +use super::index::data::PrimData; /// The mask bits that carry shadow classes (design D3): 3–30 for the most /// populated classes, 31 shared by the rest. @@ -53,14 +58,26 @@ const OVERFLOW_BIT: u32 = 1 << 31; /// How many shadow classes get a bit of their own (3–30). const ALLOCATED: usize = 28; +/// A link collection's membership: its complete membership expression, +/// evaluated. +pub(super) struct Membership(PathExpressionEval<()>); + +impl Membership { + fn is_included(&self, path: &sdf::Path) -> bool { + self.0.match_path(path, &|_| ()).value + } +} + /// Reads one of a light's link collections (`lightLink` / `shadowLink`) as a -/// membership query, or `None` when it restricts nothing (UsdLux's fallback: -/// `includeRoot = 1` and no `includes` / `excludes`). +/// membership, or `None` when it restricts nothing (UsdLux's fallback: +/// `includeRoot = 1` and no `includes` / `excludes`). `prim` is the light as +/// one input of the index holds it, and `stage` that input's stage, for +/// the one diagnostic the index does not carry. /// /// UsdLux gives these two collections an `includeRoot` fallback of **true**, /// where `UsdCollectionAPI`'s is false. openusd resolves it from `LightAPI`'s -/// schema, so an unauthored `includeRoot` already reaches the query. -pub(super) fn link_query(stage: &Stage, prim: &Prim, name: &str) -> Option { +/// schema, so an unauthored `includeRoot` already reaches the expression. +pub(super) fn link_query(stage: &Stage, prim: &PrimData, name: &str) -> Option { let Opinions { includes, excludes, @@ -81,37 +98,48 @@ pub(super) fn link_query(stage: &Stage, prim: &Prim, name: &str) -> Option q, - Err(e) => { - warning!( - LightLinkUnreadableCollection, - at = prim.path(), - "{}: collection:{name} unreadable ({e}) — read as the default", - prim.path() - ); - return None; - } + use moho::tokens::collections as c; + let expr = match prim + .locate([c::COLLECTIONS, name, c::MEMBERSHIP_EXPRESSION]) + .and_then(|d| d.value()) + { + Some(sdf::Value::PathExpression(e)) => Some(e), + _ => None, }; - for t in includes.iter().chain(&excludes) { - if inside_instance(stage, t) { - warning!( - LightLinkTargetInInstance, - at = prim.path(), - "{}: collection:{name} targets {t}, inside an instance — membership is \ - judged on the instance, so the target cannot be told apart from its \ - siblings", - prim.path() - ); - break; + let eval = expr.and_then(|e| PathExpressionEval::build(&e, &PredicateLibrary::new()).ok()); + let Some(eval) = eval else { + // The index carries no expression for a collection whose membership + // query fails; why it fails is read off the stage (design D7). + let e = super::index::stage_facts::collection_error(stage, prim.path(), name) + .unwrap_or_else(|| "no membership expression".to_owned()); + warning!( + LightLinkUnreadableCollection, + at = prim.path(), + "{}: collection:{name} unreadable ({e}) — read as the default", + prim.path() + ); + return None; + }; + if let Some(index) = prim.index() { + for t in includes.iter().chain(&excludes) { + if inside_instance(index, t) { + warning!( + LightLinkTargetInInstance, + at = prim.path(), + "{}: collection:{name} targets {t}, inside an instance — membership is \ + judged on the instance, so the target cannot be told apart from its \ + siblings", + prim.path() + ); + break; + } } } - Some(query) + Some(Membership(eval)) } /// A link collection's authored opinions, as far as membership depends on -/// them — what two stages must agree on to be interchangeable for it. +/// them — what two inputs must agree on to be interchangeable for it. #[derive(PartialEq)] pub(super) struct Opinions { pub(super) includes: Vec, @@ -121,31 +149,32 @@ pub(super) struct Opinions { pub(super) expression: bool, } -pub(super) fn opinions(prim: &Prim, name: &str) -> Opinions { +/// A link collection's opinions, from the light's generic data. +pub(super) fn opinions(prim: &PrimData, name: &str) -> Opinions { let prop = |suffix: &str| format!("collection:{name}:{suffix}"); - let targets = |suffix: &str| { - prim.relationship(prop(suffix)) - .targets() - .unwrap_or_default() - }; Opinions { - includes: targets("includes"), - excludes: targets("excludes"), - include_root: custom_bool(prim, &prop("includeRoot")), - expansion_rule: custom_token(prim, &prop("expansionRule")), - expression: prim_value(prim, &prop("membershipExpression")).is_some(), + includes: prim.targets(&prop("includes")), + excludes: prim.targets(&prop("excludes")), + include_root: prim.custom_bool(&prop("includeRoot")), + expansion_rule: prim.custom_token(&prop("expansionRule")), + expression: prim.value(&prop("membershipExpression")).is_some(), } } -/// Whether some strict ancestor of `path` is a native instance, i.e. `path` -/// names geometry inside a prototype. -pub(super) fn inside_instance(stage: &Stage, path: &sdf::Path) -> bool { +/// Whether some strict ancestor of `path` is a native instance in `index` +/// (its `__usdPrimInfo` names a prototype), i.e. `path` names geometry +/// inside a prototype. +pub(super) fn inside_instance(index: &SceneIndexHandle, path: &sdf::Path) -> bool { + use moho::tokens::usd_prim_info as info; let mut p = path.parent(); while let Some(a) = p { if a.is_abs_root() { return false; } - if prim_at(stage, a.clone()).is_instance().unwrap_or(false) { + if PrimData::at(index.as_ref(), &a) + .locate([info::USD_PRIM_INFO, info::NI_PROTOTYPE_PATH]) + .is_some() + { return true; } p = a.parent(); @@ -158,8 +187,8 @@ struct Pending { path: sdf::Path, /// Its place in the import's [`LightList`] when it was added. index: usize, - light: Option, - shadow: Option, + light: Option, + shadow: Option, } /// The traversal's record of receivers and linked lights. @@ -244,38 +273,39 @@ impl LightLinks { /// Records a light just added at `index` of the import's light list, if /// either of its links restricts it. /// - /// Two stages can answer, and each can be wrong. The traversed `chunk` + /// Two inputs can answer, and each can be wrong. The traversed `chunk` /// has every opinion, payloads included, but a streamed chunk is /// composed under a population mask that keeps only its own subtree, so /// a collection nested in another subtree (a rig's `Scope` of light - /// groups, say) resolves to nothing there. `whole`, the index stage, has - /// every subtree but no payload, so a link a payload authors is missing - /// there. So `whole` is used only when it holds the light's link - /// opinions exactly as the chunk does; otherwise the chunk is, and a - /// nested collection it cannot see is warned about. + /// groups, say) resolves to nothing there. `whole`, the payload-free + /// scene input, has every subtree but no payload, so a link a payload + /// authors is missing there. So `whole` is used only when it holds the + /// light's link opinions exactly as the chunk does; otherwise the chunk + /// is, and a nested collection it cannot see is warned about. Each is + /// an input's chain with its stage. pub(super) fn light_added( &mut self, - whole: Option<&Stage>, - chunk: &Stage, + whole: Option<(&SceneIndexHandle, &Stage)>, + chunk: (&SceneIndexHandle, &Stage), path: &sdf::Path, index: usize, ) { - let on_chunk = prim_at(chunk, path.clone()); - let same = |w: &Stage| { - let on_whole = prim_at(w, path.clone()); - let agrees = on_whole.is_valid().unwrap_or(false) + let on_chunk = PrimData::in_index(chunk.0, path); + let from_whole = whole.and_then(|(w, stage)| { + let on_whole = PrimData::in_index(w, path); + let agrees = on_whole.is_defined() && ["lightLink", "shadowLink"] .iter() .all(|n| opinions(&on_whole, n) == opinions(&on_chunk, n)); - agrees.then_some(on_whole) - }; - let (stage, prim) = match whole.and_then(|w| same(w).map(|p| (w, p))) { + agrees.then_some((stage, on_whole)) + }); + let (stage, prim) = match from_whole { Some(found) => found, None => { for name in ["lightLink", "shadowLink"] { let missing = opinions(&on_chunk, name).includes.into_iter().find(|t| { CollectionAPI::instance_at_path(t).is_some_and(|(owner, _)| { - !prim_at(chunk, owner).is_valid().unwrap_or(false) + !PrimData::at(chunk.0.as_ref(), &owner).is_defined() }) }); if let Some(t) = missing { @@ -288,7 +318,7 @@ impl LightLinks { ); } } - (chunk, on_chunk) + (chunk.1, on_chunk) } }; let light = link_query(stage, &prim, "lightLink"); @@ -504,9 +534,9 @@ impl Key { /// Each path's class and the classes' keys, over the given queries. fn classify<'q>( paths: &[&sdf::Path], - queries: impl Iterator, + queries: impl Iterator, ) -> (Vec, Vec) { - let queries: Vec<&MembershipQuery> = queries.collect(); + let queries: Vec<&Membership> = queries.collect(); let words = queries.len().div_ceil(64); let mut ids: HashMap = HashMap::new(); let mut classes: Vec = Vec::new(); @@ -694,4 +724,128 @@ mod tests { } assert_eq!(index_remap(3, &[]), [Some(0), Some(1), Some(2)]); } + + /// Agreement with Moho's light linking (design D9): Moho's `categories` + /// (its `LightLinkingSceneIndex`) include a receiver in a light's + /// `lightLink` category exactly when crust's judgement of the same + /// membership expression does — on one stage (`chain::standard`'s + /// shape) and streamed, the light and its receivers in different + /// chunks, every input present (`chain::merged`'s shape). What would let + /// crust read `categories` instead (the open question). + mod agreement { + use moho::scene_index::SceneIndex; + use openusd::sdf; + + use super::super::{Membership, link_query}; + use crate::scene::usd_import::index::data::PrimData; + use crate::scene::usd_import::index::{Single, Streamed, input_chain}; + use crate::scene::usd_import::{open_stage_masked, stage_builder}; + + const STAGE: &str = r#"#usda 1.0 +def Xform "World" +{ + def Scope "Lights" + { + def SphereLight "key" (prepend apiSchemas = ["CollectionAPI:lightLink"]) + { + rel collection:lightLink:includes = [, ] + uniform bool collection:lightLink:includeRoot = 0 + } + } + def Xform "A" { def Mesh "M" { int[] faceVertexCounts = [3] int[] faceVertexIndices = [0, 1, 2] point3f[] points = [(0,0,0), (1,0,0), (0,1,0)] } } + def Xform "B" { def Mesh "M" { int[] faceVertexCounts = [3] int[] faceVertexIndices = [0, 1, 2] point3f[] points = [(0,0,0), (1,0,0), (0,1,0)] } } + def Xform "C" + { + def Mesh "M" { int[] faceVertexCounts = [3] int[] faceVertexIndices = [0, 1, 2] point3f[] points = [(0,0,0), (1,0,0), (0,1,0)] } + def Xform "Inner" { def Mesh "M" { int[] faceVertexCounts = [3] int[] faceVertexIndices = [0, 1, 2] point3f[] points = [(0,0,0), (1,0,0), (0,1,0)] } } + } +} +"#; + const LIGHT: &str = "/World/Lights/key"; + const RECEIVERS: [(&str, bool); 4] = [ + ("/World/A/M", true), + ("/World/B/M", false), + ("/World/C/M", false), + ("/World/C/Inner/M", true), + ]; + + fn path(p: &str) -> sdf::Path { + sdf::Path::new(p).unwrap() + } + + /// The stage, in a file of its own per test: tests run at once. + fn write(name: &str) -> std::path::PathBuf { + let dir = std::env::temp_dir().join("crust_light_link_agreement"); + std::fs::create_dir_all(&dir).unwrap(); + let file = dir.join(format!("{name}.usda")); + std::fs::write(&file, STAGE).unwrap(); + file + } + + /// Whether Moho's `categories` of `receiver` in `top` hold the + /// light's `lightLink` category. + fn moho_says(top: &dyn SceneIndex, receiver: &str) -> bool { + use moho::tokens::{collections, light}; + let category = PrimData::at(top, &path(LIGHT)) + .locate([light::LIGHT, light::LIGHT_LINK]) + .and_then(|d| d.value()); + let Some(sdf::Value::Token(category)) = category else { + panic!("the light has a lightLink category"); + }; + PrimData::at(top, &path(receiver)) + .locate([collections::CATEGORIES]) + .and_then(|d| d.as_container().map(|c| c.names())) + .unwrap_or_default() + .contains(&category) + } + + fn crust_says(membership: &Membership, receiver: &str) -> bool { + membership.is_included(&path(receiver)) + } + + #[test] + fn on_one_stage() { + let file = write("one_stage"); + let stage = stage_builder().open(file.to_str().unwrap()).unwrap(); + let single = Single::new(stage.clone(), None); + let light = PrimData::in_index(&single.input.chain, &path(LIGHT)); + let membership = link_query(&stage, &light, "lightLink").expect("restricts"); + for (receiver, expected) in RECEIVERS { + assert_eq!(crust_says(&membership, receiver), expected, "{receiver}"); + assert_eq!( + moho_says(single.top.as_ref(), receiver), + expected, + "{receiver}" + ); + } + } + + #[test] + fn streamed_with_every_input_present() { + let file = write("streamed"); + let name = file.to_str().unwrap(); + let index = stage_builder() + .load(openusd::usd::InitialLoadSet::LoadNone) + .open(name) + .unwrap(); + let streamed = Streamed::new(input_chain(index, None, true), None); + let mut chunks = Vec::new(); + for root in ["/World/Lights", "/World/A", "/World/B", "/World/C"] { + let stage = open_stage_masked(&file, name, Some(vec![path(root)])).unwrap(); + chunks.push((streamed.add_chunk(stage.clone(), &path(root)), stage)); + } + // The light as its own chunk holds it. + let (lights, lights_stage) = &chunks[0]; + let light = PrimData::in_index(&lights.chain, &path(LIGHT)); + let membership = link_query(lights_stage, &light, "lightLink").expect("restricts"); + for (receiver, expected) in RECEIVERS { + assert_eq!(crust_says(&membership, receiver), expected, "{receiver}"); + assert_eq!( + moho_says(streamed.top.as_ref(), receiver), + expected, + "{receiver}" + ); + } + } + } } diff --git a/crates/crust-core/src/scene/usd_import/live.rs b/crates/crust-core/src/scene/usd_import/live.rs index f6cda1062..b4216ef9f 100644 --- a/crates/crust-core/src/scene/usd_import/live.rs +++ b/crates/crust-core/src/scene/usd_import/live.rs @@ -605,6 +605,7 @@ fn scratch_ctx<'a>(r: &'a Rebuilding<'a>, world: WorldBuilder) -> ImportCtx<'a> stage_path: r.layer, index: None, scene_input: None, + whole: None, assets: r.assets, layers: Default::default(), } diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index bba69fa3e..f6348ff41 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -296,6 +296,10 @@ struct ImportCtx<'a> { /// import's merging index holds it while the chunks are walked. Dropped /// with `index`. scene_input: Option, + /// The scene input's chain, kept while the scene input itself is lent to + /// the streamed import's merging index: where light collections are + /// resolved ([`LightLinks::light_added`]). Dropped with `index`. + whole: Option, assets: &'a dyn AssetLoader, /// The identifiers of the layers the import's stages composed, each /// stage's added before it is released ([`Scene::layers`]). @@ -493,8 +497,15 @@ fn visit_prim( // Every light adds at most one entry, so a grown list means `prim` // is the light that grew it. if ctx.lights.count() > lights_before { + let whole = ctx.whole.as_ref().zip(ctx.index.as_ref()); + let chunk = ctx + .caches + .scene + .as_ref() + .map(|(chain, stage)| (chain, stage)) + .unwrap_or_else(|| unreachable!("a light met outside a walk of the scene index")); ctx.links - .light_added(ctx.index.as_ref(), stage, prim.path(), lights_before); + .light_added(whole, chunk, prim.path(), lights_before); if let Some(pass) = &ctx.pass { pass.light_added(prim.path(), lights_before, &mut ctx.lights); } @@ -1265,6 +1276,7 @@ pub(crate) fn load_scene( framing: products.framing, stage_path: path, index: Some(index), + whole: Some(scene_input.chain.clone()), scene_input: Some(scene_input), assets, layers: Default::default(), @@ -1345,6 +1357,7 @@ pub(crate) fn load_scene( }); let mut root_stack = (Vec::new(), None); ctx.scene_input = None; + ctx.whole = None; if let Some(index) = ctx.index.take() { ctx.layers .extend(index::stage_facts::layer_identifiers(&index)); diff --git a/crates/crust-core/tests/data/import_baselines/links_usda-a0d7e6d1bd9f74ab-1.digest b/crates/crust-core/tests/data/import_baselines/links_usda-a0d7e6d1bd9f74ab-1.digest new file mode 100644 index 000000000..e8175c4b6 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/links_usda-a0d7e6d1bd9f74ab-1.digest @@ -0,0 +1,39 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/links.usda"], invisible_overrides: Some(0) } +layer: $DIR/links.usda +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 2 +light 0: distant name Some("/World/Lights/fill") lpe None pmf 0.5 shadow RayMask(4294967290) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: area name Some("/World/Lights/key") lpe None pmf 0.5 shadow RayMask(2) restricted true nee-only false twinned true gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 10, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:849b8165921146b8 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:849b8165921146b8 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:658935472ec9d838 camera=2:658935472ec9d838 shadow=2:658935472ec9d838 indirect=2:658935472ec9d838 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:71682785a2d90a85 camera=2:71682785a2d90a85 shadow=0:cbf29ce484222325 indirect=2:71682785a2d90a85 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 1 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:7f0030950a4845b8 camera=2:7f0030950a4845b8 shadow=2:7f0030950a4845b8 indirect=2:7f0030950a4845b8 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 0 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e52d9a39978026c5 camera=2:e52d9a39978026c5 shadow=2:e52d9a39978026c5 indirect=2:e52d9a39978026c5 +provenance light /World/Lights/fill: LightOrigin { index: 0, geoms: 0..0 } +provenance light /World/Lights/key: LightOrigin { index: 1, geoms: 0..1 } +provenance geometry 0..1: /World/Lights/key +provenance geometry 1..2: /World/A/M +provenance geometry 2..3: /World/B/M +provenance geometry 3..4: /World/C/Inner/M +provenance geometry 4..5: /World/C/M +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 5062424276489054560, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9056688765093257811, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10907505002769619754, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 204846636954257726, n_points: 4, n_indices: 4, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/links_usda-a0d7e6d1bd9f74ab-1.image b/crates/crust-core/tests/data/import_baselines/links_usda-a0d7e6d1bd9f74ab-1.image new file mode 100644 index 000000000..f5df3ca85 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/links_usda-a0d7e6d1bd9f74ab-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 80a07529e19ced64 diff --git a/crates/crust-core/tests/streamed_light_links.rs b/crates/crust-core/tests/streamed_light_links.rs new file mode 100644 index 000000000..a700c2da3 --- /dev/null +++ b/crates/crust-core/tests/streamed_light_links.rs @@ -0,0 +1,72 @@ +//! A light linked to receivers in other chunks of a streamed import (the +//! `moho-import` change, task 10.2): the light's `lightLink` is judged after +//! the last chunk against every receiver walked, whichever chunk held it. +//! Checked against the direct importer's baseline (`crust_core::parity`). + +#![allow(clippy::unwrap_used)] + +use crust_core::Scene; + +fn mesh(name: &str, x: f32) -> String { + format!( + r#" + def Mesh "{name}" + {{ + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 2, 3] + point3f[] points = [({x0}, 0, 0), ({x1}, 0, 0), ({x1}, 1, 0), ({x0}, 1, 0)] + }}"#, + x0 = x, + x1 = x + 1.0 + ) +} + +#[test] +fn a_light_links_receivers_in_other_chunks() { + let dir = std::env::temp_dir().join("crust_streamed_light_links"); + std::fs::create_dir_all(&dir).unwrap(); + let stage = format!( + r#"#usda 1.0 +def Xform "World" +{{ + def Scope "Lights" + {{ + def RectLight "key" (prepend apiSchemas = ["CollectionAPI:lightLink", "CollectionAPI:shadowLink"]) + {{ + float inputs:intensity = 10 + rel collection:lightLink:includes = [, ] + uniform bool collection:lightLink:includeRoot = 0 + rel collection:shadowLink:excludes = + double3 xformOp:translate = (0, 0.5, 3) + uniform token[] xformOpOrder = ["xformOp:translate"] + }} + def DistantLight "fill" {{ float inputs:intensity = 0.5 }} + }} + def Xform "A" + {{{} + }} + def Xform "B" + {{{} + }} + def Xform "C" + {{{} + def Xform "Inner" + {{{} + }} + }} +}} +"#, + mesh("M", -3.0), + mesh("M", -1.0), + mesh("M", 1.0), + mesh("M", 3.0), + ); + let path = dir.join("links.usda"); + std::fs::write(&path, stage).unwrap(); + let scene = Scene::from_usd(&path).unwrap(); + assert_eq!(scene.lights.count(), 2); + assert!( + (0..scene.lights.count()).any(|i| scene.lights.restricted(i)), + "the key light is linked" + ); +} diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index d227d1bb0..ba1b3771b 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -348,8 +348,13 @@ last chunk, and does not read `categories`. An agreement test asserts that Moho' streamed fixture (`chain::merged` with every input present), so switching Crust to `categories` is a tested option. Whether to switch is an open question (below). Today's choice between the index stage and the chunk for a light's link opinions -becomes: the merged data of the light (chunk opinions over scene input), with the same -warning when a nested collection is not composed. +stays, read per input rather than from the merged data: the scene input's expression +when the scene input holds the light's link opinions exactly as the chunk does (it +composes every subtree, so a nested collection elsewhere resolves), else the chunk's, +with the same warning when a nested collection is not composed. The merged data would +always prefer the chunk's, which a nested collection outside it changes. The reason a +collection has no membership (`light_link.unreadable_collection`) is openusd's error, +read in `stage_facts` for that diagnostic only (D7), as `xform.uncomposable` is. ### D10. Time: the index owns it diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 416df617b..00d0f1066 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -269,7 +269,7 @@ this group, and kept for the whole change. feed the existing `emit_*_light` builders. Verify parity green on `lights.rs`, `domelight.usda`, `dome_backdrop.usda`, `rectlight.usda`, `many_lights.usda`, `light_visibility.usda`, `hidden_lights.rs` and the IES samples. -- [ ] 10.2 Light links: record receivers as today. Read each light's +- [x] 10.2 Light links: record receivers as today. Read each light's `collections/lightLink` and `collections/shadowLink` expressions from the merged data, and judge them after the last chunk without reading `categories` (D9; whether to read `categories` now that M1 has landed is the open question). Add agreement tests From 5668963d545db2974abc387935e5a5f2038835a1 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 11:36:15 +0100 Subject: [PATCH 52/95] crust: lights and display filters are typed by IsA, as the typed gets were The index readers took the light type and a display filter's Shader by exact USD type name; SphereLight::get and its kin, and Shader::get, answer IsA through the schema registry, so a type deriving from one was that light. PrimData::is_a asks the registry the same question. The graph walk and the live rebuild keep their exact-name checks, as before. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/index/data.rs | 11 ++++++++ .../crust-core/src/scene/usd_import/lights.rs | 12 +++++---- .../src/scene/usd_import/listing.rs | 21 ++++++++------- crates/crust-core/src/scene/usd_import/mod.rs | 26 +++++++++++-------- .../src/scene/usd_import/precomp.rs | 2 +- 5 files changed, 46 insertions(+), 26 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/index/data.rs b/crates/crust-core/src/scene/usd_import/index/data.rs index 0469399a1..85330e1db 100644 --- a/crates/crust-core/src/scene/usd_import/index/data.rs +++ b/crates/crust-core/src/scene/usd_import/index/data.rs @@ -202,6 +202,17 @@ impl PrimData { } } + /// Whether the prim's USD type is `schema` or derives from it, as the + /// schema registry says (`UsdPrim::IsA`): the typed views' `get`. + pub(in crate::scene::usd_import) fn is_a(&self, schema: &str) -> bool { + let ty = self.usd_type(); + !ty.is_empty() + && moho::openusd_schemas::schema_registry().is_a( + &moho::openusd::tf::Token::from(ty.as_str()), + &moho::openusd::tf::Token::from(schema), + ) + } + /// The API schemas applied to the prim (`ShapingAPI`, `CollectionAPI:x`): /// `__usdPrimInfo/apiSchemas` (Moho's M8). pub(in crate::scene::usd_import) fn api_schemas(&self) -> Vec { diff --git a/crates/crust-core/src/scene/usd_import/lights.rs b/crates/crust-core/src/scene/usd_import/lights.rs index f0130e28a..ac2d3daf0 100644 --- a/crates/crust-core/src/scene/usd_import/lights.rs +++ b/crates/crust-core/src/scene/usd_import/lights.rs @@ -745,12 +745,14 @@ impl DomeInputs { /// +90° rotation about X, for the dome alone. Typhoon (hdEmbree) never /// applies it; crust follows the schema. pub(super) fn of(prim: &PrimData) -> Option { - match prim.usd_type().as_str() { - "DomeLight" => Some(Self { + if prim.is_a("DomeLight") { + return Some(Self { schema: "DomeLight", pole: Mat3A::IDENTITY, - }), - "DomeLight_1" => { + }); + } + match prim.is_a("DomeLight_1") { + true => { let z_pole = match prim.resolved("poleAxis").and_then(decode_text).as_deref() { Some("Z") => true, Some("Y") => false, @@ -773,7 +775,7 @@ impl DomeInputs { }, }) } - _ => None, + false => None, } } } diff --git a/crates/crust-core/src/scene/usd_import/listing.rs b/crates/crust-core/src/scene/usd_import/listing.rs index e91302dff..73fd3b5ca 100644 --- a/crates/crust-core/src/scene/usd_import/listing.rs +++ b/crates/crust-core/src/scene/usd_import/listing.rs @@ -230,15 +230,18 @@ fn record( ListKind::Light => { // Read as the import reads it, through the scene index. let data = PrimData::at(scene?, prim.path()); - let kind = match data.usd_type().as_str() { - "SphereLight" => "sphere", - "RectLight" => "rect", - "DiskLight" => "disk", - "CylinderLight" => "cylinder", - "DistantLight" => "distant", - "DomeLight" | "DomeLight_1" => "dome", - _ => return None, - }; + let kind = [ + ("SphereLight", "sphere"), + ("RectLight", "rect"), + ("DiskLight", "disk"), + ("CylinderLight", "cylinder"), + ("DistantLight", "distant"), + ("DomeLight", "dome"), + ("DomeLight_1", "dome"), + ] + .into_iter() + .find(|(schema, _)| data.is_a(schema)) + .map(|(_, kind)| kind)?; let inputs = light_inputs(&data); ListRecord::Light(LightRecord { path, diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index f6348ff41..e55a7ac5a 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -583,19 +583,23 @@ fn without_variants(path: &str) -> String { } /// Emits the light `prim` (its data in the scene index) if it is a UsdLux -/// light, by its USD type — the one dispatch the traversal and an in-place +/// light, by its USD type as the schema registry types it (`IsA`) — the one dispatch the traversal and an in-place /// light rebuild ([`live`]) share. `false` when it is not one. fn emit_light(ctx: &mut ImportCtx, prim: &index::data::PrimData, world_xf: GMat4) -> bool { - match prim.usd_type().as_str() { - "SphereLight" => emit_sphere_light(ctx, prim, world_xf), - "RectLight" => emit_rect_light(ctx, prim, world_xf), - "DiskLight" => emit_disk_light(ctx, prim, world_xf), - "CylinderLight" => emit_cylinder_light(ctx, prim, world_xf), - "DistantLight" => emit_distant_light(&mut ctx.lights, prim, world_xf, ctx.caches.working), - _ => match DomeInputs::of(prim) { - Some(dome) => emit_dome_light(ctx, prim, &dome, world_xf), - None => return false, - }, + if prim.is_a("SphereLight") { + emit_sphere_light(ctx, prim, world_xf); + } else if prim.is_a("RectLight") { + emit_rect_light(ctx, prim, world_xf); + } else if prim.is_a("DiskLight") { + emit_disk_light(ctx, prim, world_xf); + } else if prim.is_a("CylinderLight") { + emit_cylinder_light(ctx, prim, world_xf); + } else if prim.is_a("DistantLight") { + emit_distant_light(&mut ctx.lights, prim, world_xf, ctx.caches.working); + } else if let Some(dome) = DomeInputs::of(prim) { + emit_dome_light(ctx, prim, &dome, world_xf); + } else { + return false; } true } diff --git a/crates/crust-core/src/scene/usd_import/precomp.rs b/crates/crust-core/src/scene/usd_import/precomp.rs index cc91a93f3..b69281ec8 100644 --- a/crates/crust-core/src/scene/usd_import/precomp.rs +++ b/crates/crust-core/src/scene/usd_import/precomp.rs @@ -121,7 +121,7 @@ pub(super) fn import_precomp( /// Whether `prim` is a `Shader` (`UsdShadeShader`): its USD type. fn is_shader(prim: &PrimData) -> bool { - prim.usd_type() == "Shader" + prim.is_a("Shader") } /// Every var of the render, by layer name: the first var of that name wins, From abf290f6141d8676c4e077ab13eba56f52782ad0 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 15:00:10 +0100 Subject: [PATCH 53/95] crust: transforms and their motion read the scene index (5.1, 5.2) The walk composes each prim's transform from Moho's local xform/matrix in the input's stage scene index (before the flattening, so the f64 matrix is cast to f32 and composed exactly as before), resetXformStack honoured. A prim is Xformable by the schema registry's IsA on its USD type; unknown-op and unknown-type warnings read xformOpOrder from generic data; xform.uncomposable quotes openusd's error, read in stage_facts for that diagnostic only (design D7). Timing reads whether the ops might vary from their mightBeTimeVarying (M9, also at the default time) and the shutter's ends from xform/matrix at f32 offsets from the frame, as Hydra's sampled data sources do (the user's decision; the listed exception follows in its own commit). Prototype walks, a camera's ancestors and the live rebuilds keep compose_with_parent until their families move. The debug suite (2660) and the image run equal their baselines. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/index/data.rs | 10 + .../src/scene/usd_import/index/stage_facts.rs | 18 + .../src/scene/usd_import/index/walk.rs | 2 + crates/crust-core/src/scene/usd_import/mod.rs | 29 +- .../crust-core/src/scene/usd_import/xform.rs | 308 ++++++++++++++---- openspec/changes/moho-import/design.md | 8 + openspec/changes/moho-import/tasks.md | 14 +- 7 files changed, 322 insertions(+), 67 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/index/data.rs b/crates/crust-core/src/scene/usd_import/index/data.rs index 85330e1db..0a74e8157 100644 --- a/crates/crust-core/src/scene/usd_import/index/data.rs +++ b/crates/crust-core/src/scene/usd_import/index/data.rs @@ -272,6 +272,16 @@ impl PrimData { self.attribute(name)?.get(&generic::VALUE.into())?.value() } + /// Whether attribute `name`'s value might differ at another time + /// (`UsdAttribute::ValueMightBeTimeVarying`): its generic + /// `mightBeTimeVarying` (Moho's M9), which needs no index time. + pub(in crate::scene::usd_import) fn might_vary(&self, name: &str) -> bool { + self.attribute(name) + .and_then(|a| a.get(&generic::MIGHT_BE_TIME_VARYING.into())) + .and_then(|d| d.value()) + .is_some_and(|v| matches!(v, sdf::Value::Bool(true))) + } + /// Attribute `name`'s value at the index's time, authored or its schema /// fallback — a typed read (`Attribute::get_at`), not `value_at`. pub(in crate::scene::usd_import) fn resolved(&self, name: &str) -> Option { diff --git a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs index 0ccc70307..73cfbb503 100644 --- a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs +++ b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs @@ -262,3 +262,21 @@ pub(in crate::scene::usd_import) fn collection_error( .err() .map(|e| e.to_string()) } + +/// Why the prim at `path` has no local transform at `time`: the error +/// openusd's `XformQuery` gives for its op stack, which the scene index +/// (Hydra's xform schema) does not carry. For the `xform.uncomposable` +/// diagnostic only (design D7). +pub(in crate::scene::usd_import) fn xform_error( + stage: &Stage, + path: &sdf::Path, + time: Option, +) -> Option { + use moho::openusd_schemas::geom::XformQuery; + let prim = super::super::prim_at(stage, path.clone()); + let time = time.map(moho::openusd::usd::TimeCode::new); + match XformQuery::for_prim(&prim) { + Err(e) => Some(e.to_string()), + Ok(query) => query.local_transform(time).err().map(|e| e.to_string()), + } +} diff --git a/crates/crust-core/src/scene/usd_import/index/walk.rs b/crates/crust-core/src/scene/usd_import/index/walk.rs index 31c450f31..c642db653 100644 --- a/crates/crust-core/src/scene/usd_import/index/walk.rs +++ b/crates/crust-core/src/scene/usd_import/index/walk.rs @@ -43,6 +43,7 @@ pub(in crate::scene::usd_import) fn walk( } ctx.caches.scene = Some((input.chain.clone(), stage.clone())); ctx.caches.top = Some(top.clone()); + ctx.caches.stage_index = Some(input.stage.clone()); let mut stack: Vec<(sdf::Path, GMat4, bool, Timing)> = vec![( sdf::Path::abs_root(), GMat4::IDENTITY, @@ -70,6 +71,7 @@ pub(in crate::scene::usd_import) fn walk( } ctx.caches.scene = None; ctx.caches.top = None; + ctx.caches.stage_index = None; } /// The children the walk descends into: the index's, less the prototypes diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index e55a7ac5a..24f91aee7 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -124,7 +124,7 @@ use shapes::{curve_segments, emit_curves, emit_sphere, nurbs_curve_segments}; use strands::StrandRequest; use time::EvalTimeScope; use volume::emit_volume; -use xform::{Timing, TransformMotion, compose_with_parent}; +use xform::{Timing, TransformMotion, compose_index, compose_with_parent}; /// `Stage::prim` for a path that is already an `sdf::Path`. /// @@ -326,7 +326,8 @@ fn visit_prim( return None; } - let this_world = compose_with_parent(prim, parent_world); + let xform = ctx.caches.stage_prim(prim.path()); + let this_world = compose_index(stage, &xform, parent_world, ctx.caches.time); if let Some(sources) = &mut ctx.arc_sources { record_arc_sources(stage, prim, sources); } @@ -349,10 +350,10 @@ fn visit_prim( return Some((this_world, true, Timing::Static)); } - let timing = ctx - .caches - .motion - .timing(prim, parent_timing, parent_world, this_world); + let timing = + ctx.caches + .motion + .timing_index(stage, &xform, parent_timing, parent_world, this_world); let span = ctx.caches.motion.span(this_world, &timing); // What this prim emits, for the light links: ids are handed out in @@ -1266,7 +1267,8 @@ pub(crate) fn load_scene( shutter.offsets.open == 0.0, frame_posed, asks_time, - ), + ) + .with_frame(time), time, ..ImportCaches::new(assets, path, subdiv, working, mtlx_library()) }, @@ -2054,6 +2056,9 @@ struct ImportCaches<'a> { /// the material readers read networks there, after the material-node /// resolution (Moho's M10). top: Option, + /// The walked input's stage scene index, unfiltered, while a walk runs: + /// the local `xform` before the flattening ([`xform::compose_index`]). + stage_index: Option, /// Root layer, the fallback anchor for an asset path openusd handed back /// unresolved. stage_path: &'a Path, @@ -2187,6 +2192,16 @@ impl<'a> ImportCaches<'a> { time: None, scene: None, top: None, + stage_index: None, + } + } + + /// The prim at `path` of the walked input's stage scene index, before + /// any filter: what the transform reader reads. + fn stage_prim(&self, path: &sdf::Path) -> index::data::PrimData { + match (&self.stage_index, &self.scene) { + (Some(index), Some((_, stage))) => index::data::PrimData::bridged(index, stage, path), + _ => unreachable!("a reader reached outside a walk of the scene index"), } } diff --git a/crates/crust-core/src/scene/usd_import/xform.rs b/crates/crust-core/src/scene/usd_import/xform.rs index ea2878cd8..a782d7561 100644 --- a/crates/crust-core/src/scene/usd_import/xform.rs +++ b/crates/crust-core/src/scene/usd_import/xform.rs @@ -8,7 +8,8 @@ use openusd::tf::Token; use openusd::usd::Prim; use openusd_schemas::geom::{XformQuery, Xformable, XformableSchema}; -use super::time::{EvalTimeScope, eval_time}; +use super::index::data::PrimData; +use super::time::eval_time; /// USD authors 4x4 matrices as row-vector row-major (translation in the /// last row, indices 12..15). glam::Mat4 is column-major with the @@ -119,14 +120,6 @@ pub(super) fn compose_with_parent(prim: &Prim, parent: GMat4) -> GMat4 { compose(prim, parent, true) } -/// [`compose_with_parent`] at time code `time` rather than the import's, for -/// the shutter's ends ([`TransformMotion`]). Quiet: the read at the frame -/// already warned about anything in the stack, once. -pub(super) fn compose_at(prim: &Prim, parent: GMat4, time: f64) -> GMat4 { - let _at = EvalTimeScope::enter(Some(time)); - compose(prim, parent, false) -} - fn compose(prim: &Prim, parent: GMat4, report: bool) -> GMat4 { let Some(xf) = Xformable::from_prim(prim.clone()).ok().flatten() else { if report { @@ -164,6 +157,158 @@ fn compose(prim: &Prim, parent: GMat4, report: bool) -> GMat4 { } } +/// `xformOpOrder`'s entries, as the prim composes it (its fallback, empty, +/// when unauthored). +fn op_order(prim: &PrimData) -> Vec { + match prim.resolved("xformOpOrder") { + Some(openusd::sdf::Value::TokenVec(v)) => v.iter().map(|t| t.as_str().to_owned()).collect(), + _ => Vec::new(), + } +} + +/// [`warn_unknown_ops`], from the prim's generic data. +fn warn_unknown_ops_data(prim: &PrimData) { + let order = op_order(prim); + let unknown: Vec<&str> = order + .iter() + .map(String::as_str) + .filter(|e| *e != "!resetXformStack!") + .filter(|e| !op_kind(e).is_some_and(|k| XFORM_OP_KINDS.contains(&k))) + .collect(); + if !unknown.is_empty() { + warning!( + XformUnknownOp, + at = prim.path(), + "{}: xformOpOrder lists {} — not a UsdGeomXformOp kind, read as identity", + prim.path(), + unknown.join(", ") + ); + } +} + +/// [`warn_unknown_type`], from the prim's USD type (`__usdPrimInfo`) and +/// generic data. +fn warn_unknown_type_data(prim: &PrimData) { + let ty = prim.usd_type(); + if ty.is_empty() + || openusd_schemas::schema_registry().is_concrete_type(&Token::from(ty.as_str())) + { + return; + } + let authors_ops = match prim.resolved("xformOpOrder") { + Some(openusd::sdf::Value::TokenVec(v)) => !v.is_empty(), + _ => false, + }; + if authors_ops { + warning!( + XformUnknownType, + at = prim.path(), + "{}: its type {ty} is not one the schema registry knows, so it is not Xformable and \ + its xformOps are ignored (further occurrences are counted in the import's \ + warnings)", + prim.path() + ); + } +} + +/// The prim's local `xform` in the scene index — Moho's `xform` data, read +/// from the input's stage scene index, not the flattened chain, so the local +/// matrix stays `f64` until crust composes it as before — at `offset` from +/// the index's time, and whether it resets the stack. `None` when the +/// prim's ops have no effect (or its stack cannot be read): no `xform`. +/// `Some((None, resets))` when the local transform cannot be composed. +fn local_xform(prim: &PrimData, offset: f32) -> Option<(Option, bool)> { + use moho::tokens::xform as t; + let resets = matches!( + prim.locate([t::XFORM, t::RESET_XFORM_STACK]) + .and_then(|d| d.value()), + Some(openusd::sdf::Value::Bool(true)) + ); + let matrix = prim.locate([t::XFORM, t::MATRIX])?; + let local = match matrix.as_sampled().and_then(|s| s.value(offset)) { + Some(openusd::sdf::Value::Matrix4d(m)) => Some(m), + _ => None, + }; + Some((local, resets)) +} + +/// [`compose_with_parent`] over the scene index: `prim` is the prim in the +/// input's stage scene index, `stage` its stage (for the one diagnostic the +/// index does not carry, `xform.uncomposable`, design D7) and `time` the +/// index's time. +pub(super) fn compose_index( + stage: &openusd::usd::Stage, + prim: &PrimData, + parent: GMat4, + time: Option, +) -> GMat4 { + compose_data(stage, prim, parent, time, 0.0, true) +} + +fn compose_data( + stage: &openusd::usd::Stage, + prim: &PrimData, + parent: GMat4, + time: Option, + offset: f32, + report: bool, +) -> GMat4 { + if !prim.is_a("Xformable") { + if report { + warn_unknown_type_data(prim); + } + return parent; + } + if report { + warn_unknown_ops_data(prim); + } + let (local, resets) = match local_xform(prim, offset) { + Some((Some(m), resets)) => (usd_mat_to_glam(m), resets), + found => { + // No `xform`: the ops have no effect, or the stack cannot be read + // — which openusd says, when it is so. + let resets = found.is_some_and(|(_, r)| r); + if report { + let at = time.map(|t| t + f64::from(offset)); + if let Some(e) = super::index::stage_facts::xform_error(stage, prim.path(), at) { + warning!( + XformUncomposable, + at = prim.path(), + "{}: could not compose its xformOp stack ({e}) — its local transform is \ + identity", + prim.path() + ); + } + } + (GMat4::IDENTITY, resets) + } + }; + if resets { local } else { parent * local } +} + +/// [`own_timing`] from the scene index: whether the prim's local transform +/// might vary (`TransformMightBeTimeVarying`: its ops have an effect, Moho's +/// `xform` is there, and an op attribute might vary, its generic +/// `mightBeTimeVarying`, M9), and whether it resets its parent's. +fn own_timing_data(prim: &PrimData) -> (bool, bool) { + if !prim.is_a("Xformable") { + return (false, false); + } + let Some((_, resets)) = local_xform(prim, 0.0) else { + return (false, false); + }; + // The ops after the last reset, as `GetOrderedXformOps` lists them. + let order = op_order(prim); + let start = order + .iter() + .rposition(|e| e == "!resetXformStack!") + .map_or(0, |i| i + 1); + let varies = order[start..] + .iter() + .any(|e| prim.might_vary(e.strip_prefix("!invert!").unwrap_or(e))); + (varies, resets) +} + /// What `prim`'s own op stack says about time: whether the transform it /// composes might differ at another time (C++ /// `UsdGeomXformable::TransformMightBeTimeVarying`), and whether it resets @@ -291,6 +436,9 @@ pub(super) struct TransformMotion { frame_pose: bool, /// Whether prims are asked about time at all. query: bool, + /// The frame, the scene index's time, from which the shutter's ends are + /// read as offsets ([`TransformMotion::timing_index`]). + frame: Option, /// Drawn prims whose transform varies over time, while the shutter /// moves nothing. pub(super) varying: Tally, @@ -345,15 +493,22 @@ impl TransformMotion { } } - /// `prim`'s timing, given its parent's (`parent`, at the frame - /// `parent_world`) and its own transform at the frame, `world`. A prim - /// moves when its own ops vary or its parent moves and it does not reset - /// the stack; it is then composed at both ends of the shutter, through - /// [`compose_at`] — so a static prim pays nothing, and a static child of a - /// moving parent two compositions. - pub(super) fn timing( + /// The frame the shutter's ends are offsets from (the index's time). + pub(super) fn with_frame(mut self, frame: Option) -> Self { + self.frame = frame; + self + } + + /// [`TransformMotion::timing`] over the scene index: `prim` in the + /// input's stage scene index. Its transform at the shutter's ends is + /// Moho's `xform/matrix` at those ends' offsets from the frame, `f32` + /// as Hydra's sampled data sources take them: an offset `f32` cannot hold + /// exactly reads another time than the direct importer's `f64` one, the + /// change's listed parity exception (`import-parity`). + pub(super) fn timing_index( &self, - prim: &Prim, + stage: &openusd::usd::Stage, + prim: &PrimData, parent: &Timing, parent_world: GMat4, world: GMat4, @@ -361,7 +516,7 @@ impl TransformMotion { if !self.query { return Timing::Static; } - let (varies, resets) = own_timing(prim); + let (varies, resets) = own_timing_data(prim); if !varies && (resets || *parent == Timing::Static) { return Timing::Static; } @@ -375,13 +530,18 @@ impl TransformMotion { close: parent_world, }, }; + let frame = self.frame.unwrap_or(0.0); + #[allow(clippy::cast_possible_truncation)] + let at = |end: f64, parent: GMat4| { + compose_data(stage, prim, parent, self.frame, (end - frame) as f32, false) + }; Timing::Moves(Box::new(Pair { open: if self.open_at_frame { world } else { - compose_at(prim, parent.open, open) + at(open, parent.open) }, - close: compose_at(prim, parent.close, close), + close: at(close, parent.close), })) } @@ -558,10 +718,6 @@ mod tests { .expect("stage opens") } - fn prim(stage: &openusd::usd::Stage, path: &str) -> Prim { - super::super::prim_at(stage, sdf::path(path).unwrap()) - } - const ANIMATED: &str = r#"#usda 1.0 def Xform "A" { @@ -588,20 +744,49 @@ def Xform "Still" } "#; - /// At another time, then back: the read after it resolves at the outer - /// time again. + /// The input's stage scene index over `stage` at `time`, as the walk + /// reads transforms (before the flattening). + fn stage_index( + stage: &openusd::usd::Stage, + time: Option, + ) -> moho::scene_index::SceneIndexHandle { + let index = moho::stage::StageSceneIndex::new(); + if let Some(t) = time { + index.set_time(openusd::usd::TimeCode::new(t)); + } + index.set_stage(stage.clone()); + index + } + + /// `path` in `index`, as the walk reads it. + fn at_path( + index: &moho::scene_index::SceneIndexHandle, + stage: &openusd::usd::Stage, + path: &str, + ) -> PrimData { + PrimData::bridged(index, stage, &sdf::path(path).unwrap()) + } + + /// At an offset from the index's time: Moho's sampled `xform/matrix`. #[test] - fn compose_at_reads_another_time_and_restores_the_outer_one() { + fn an_offset_reads_another_time() { let stage = open("compose_at", ANIMATED); - let a = prim(&stage, "/A"); - let _frame = EvalTimeScope::enter(Some(2.0)); + let index = stage_index(&stage, Some(2.0)); + let a = at_path(&index, &stage, "/A"); let at = |m: GMat4| m.transform_point3(Vec3::ZERO); assert_eq!( - at(compose_at(&a, GMat4::IDENTITY, 7.0)), + at(compose_data( + &stage, + &a, + GMat4::IDENTITY, + Some(2.0), + 5.0, + false + )), Vec3::new(7.0, 0.0, 0.0) ); assert_eq!( - at(compose_with_parent(&a, GMat4::IDENTITY)), + at(compose_index(&stage, &a, GMat4::IDENTITY, Some(2.0))), Vec3::new(2.0, 0.0, 0.0) ); } @@ -612,12 +797,16 @@ def Xform "Still" #[test] fn the_shutter_pair_follows_moving_ancestors_but_not_a_reset() { let stage = open("pair", ANIMATED); - let _frame = EvalTimeScope::enter(Some(2.0)); - let motion = TransformMotion::new(Some((2.0, 3.0)), true, false, false); + let index = stage_index(&stage, Some(2.0)); + let motion = + TransformMotion::new(Some((2.0, 3.0)), true, false, false).with_frame(Some(2.0)); let timing = |path: &str, parent: Timing, parent_world: GMat4| { - let p = prim(&stage, path); - let world = compose_with_parent(&p, parent_world); - (motion.timing(&p, &parent, parent_world, world), world) + let p = at_path(&index, &stage, path); + let world = compose_index(&stage, &p, parent_world, Some(2.0)); + ( + motion.timing_index(&stage, &p, &parent, parent_world, world), + world, + ) }; let (still, _) = timing("/Still", Timing::Static, GMat4::IDENTITY); assert_eq!(still, Timing::Static); @@ -656,55 +845,64 @@ def Xform "Still" #[test] fn a_frame_pose_starts_at_the_frame_and_moves_by_the_shutter() { let stage = open("frame_pose", ANIMATED); - let _frame = EvalTimeScope::enter(Some(2.0)); - let a = prim(&stage, "/A"); - let world = compose_with_parent(&a, GMat4::IDENTITY); + let index = stage_index(&stage, Some(2.0)); + let a = at_path(&index, &stage, "/A"); + let world = compose_index(&stage, &a, GMat4::IDENTITY, Some(2.0)); let at = |m: GMat4| m.transform_point3(Vec3::ZERO); - let ends = |motion: &TransformMotion| { - let timing = motion.timing(&a, &Timing::Static, GMat4::IDENTITY, world); + let ends = |motion: TransformMotion| { + let motion = motion.with_frame(Some(2.0)); + let timing = motion.timing_index(&stage, &a, &Timing::Static, GMat4::IDENTITY, world); let span = motion.span(world, &timing); (at(span.open), at(span.close.expect("it moves"))) }; let centred = TransformMotion::new(Some((1.75, 2.25)), false, false, false); assert_eq!( - ends(¢red), + ends(centred), (Vec3::new(1.75, 0.0, 0.0), Vec3::new(2.25, 0.0, 0.0)) ); let posed = TransformMotion::new(Some((1.75, 2.25)), false, true, false); assert_eq!( - ends(&posed), + ends(posed), (Vec3::new(2.0, 0.0, 0.0), Vec3::new(2.5, 0.0, 0.0)) ); let at_frame = TransformMotion::new(Some((2.0, 2.5)), true, true, false); let unposed = TransformMotion::new(Some((2.0, 2.5)), true, false, false); - assert_eq!(ends(&at_frame), ends(&unposed)); + assert_eq!(ends(at_frame), ends(unposed)); } /// With an instantaneous shutter the question is still answered when - /// asked (for the warnings), but nothing is composed twice; unasked, a - /// moving prim reads static. A static stage with a shutter creates no - /// pair at all. + /// asked (for the warnings), at the default time too (M9), but nothing is + /// composed twice; unasked, a moving prim reads static. A static stage + /// with a shutter creates no pair at all. #[test] fn without_an_interval_a_varying_prim_varies_and_moves_nothing() { let stage = open("varies", ANIMATED); - let a = prim(&stage, "/A"); - let world = compose_with_parent(&a, GMat4::IDENTITY); + let index = stage_index(&stage, None); + let a = at_path(&index, &stage, "/A"); + let world = compose_index(&stage, &a, GMat4::IDENTITY, None); let asked = TransformMotion::new(None, true, false, true); assert_eq!( - asked.timing(&a, &Timing::Static, GMat4::IDENTITY, world), + asked.timing_index(&stage, &a, &Timing::Static, GMat4::IDENTITY, world), Timing::Varies ); let unasked = TransformMotion::new(None, true, false, false); assert_eq!( - unasked.timing(&a, &Timing::Static, GMat4::IDENTITY, world), + unasked.timing_index(&stage, &a, &Timing::Static, GMat4::IDENTITY, world), Timing::Static ); - let moving = TransformMotion::new(Some((0.0, 1.0)), true, false, false); - let still = prim(&stage, "/Still"); - let still_world = compose_with_parent(&still, GMat4::IDENTITY); + let moving = + TransformMotion::new(Some((0.0, 1.0)), true, false, false).with_frame(Some(0.0)); + let still = at_path(&index, &stage, "/Still"); + let still_world = compose_index(&stage, &still, GMat4::IDENTITY, None); assert_eq!( - moving.timing(&still, &Timing::Static, GMat4::IDENTITY, still_world), + moving.timing_index( + &stage, + &still, + &Timing::Static, + GMat4::IDENTITY, + still_world + ), Timing::Static ); } diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index ba1b3771b..e41ecfb18 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -443,6 +443,14 @@ need it; none is worked around in Crust. USD type. A light's `ShapingAPI` changes its cone fallback, which needs the applied API schemas. Until then those readers stay on the bridge (the `--pass` error reads the stage in `stage_facts`). +- **Shutter offsets are `f32` (decided, a listed parity exception).** Moho's + `xform/matrix` is a sampled data source read at an `f32` offset from the index's time, + as Hydra's `HdSampledDataSource` is. Crust reads a transform at the shutter's ends that + way, so an offset `f32` cannot hold reads a time up to about 1e-9 frames off the + direct importer's `f64` one, and the matrix may differ in its last bits. The user kept + Hydra's model; `import-parity` lists the difference beside the prototype numbers, with + a fixture. `xform.uncomposable` quotes openusd's error, read in `stage_facts` for that + diagnostic only (D7): the index's xform schema carries no error. - **M9. Time variance at the default time.** A sampled data source answers `sample_times` only when the index has a time, so at the default time (a render without `-f`) a consumer cannot ask whether a transform might vary. Crust warns about diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 00d0f1066..48aa0aa9a 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -184,12 +184,16 @@ this group, and kept for the whole change. ## 5. Transforms and motion -- [ ] 5.1 Take world matrices from the flattened `xform` (`resetXformStack` honoured), - in place of `compose_with_parent`. Take `Timing` and spans from `sample_times` over - the shutter offsets and values at each offset, plus `crust:motion:translate` from - generic data. Verify parity green on `motionblur.usda`, `motionvector.usda`, +- [x] 5.1 Take world matrices from the `xform` (`resetXformStack` honoured), in place of + `compose_with_parent`: the local `xform/matrix` of the input's stage scene index, + composed by Crust as before, so the `f32`-from-`f64` bits stay (design, M9 note; the + flattened matrix would round differently). Take `Timing` and spans from the + `xform/matrix` values at the shutter offsets (`f32`, the listed exception) and the op + attributes' `mightBeTimeVarying` (M9), plus `crust:motion:translate` from generic + data. The walks still on the bridge (placement count, prototypes, a camera's + ancestors, the live rebuilds) keep `compose_with_parent` until their families move. Verify parity green on `motionblur.usda`, `motionvector.usda`, `animation.usda` at `-f`, and the transform stack fixtures in `usd_scene.rs`. -- [ ] 5.2 Move the "time-sampled motion not produced" reporting to the index's sample +- [x] 5.2 Move the "time-sampled motion not produced" reporting to the index's sample times. Verify that the warnings match the baselines in the motion fixtures. ## 6. Meshes From 7c9a90752187f42410c9752cef3fdb800634caf7 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 15:00:11 +0100 Subject: [PATCH 54/95] parity: an inexact shutter is the second listed exception, with a fixture A shutter whose offsets f32 cannot hold reads a transform's ends at Hydra's f32 offsets, up to ~1e-9 frames off the direct importer's f64 times. For such a scene the check accepts an import that equals a .f32-shutter baseline recorded from the index (CRUST_RECORD_F32_SHUTTER=1) which differs from the direct one in geometry lines only; exact offsets stay bit-identical. import-parity lists it beside the prototype numbers. time_motion.rs exercises it: a card whose edge crosses x = 0 at shutter open (-0.1, 0.3 around frame 5), where f32 resolves the offset's error. Its digest differs from the direct baseline in one geometry line; its 16 spp image does not differ. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- crates/crust-core/src/parity.rs | 64 +++++++++++++++++++ ...act_shutter_usda-eaa1e924cd3a23ce-1.digest | 21 ++++++ ...usda-eaa1e924cd3a23ce-1.f32-shutter.digest | 21 ++++++ ..._usda-eaa1e924cd3a23ce-1.f32-shutter.image | 1 + ...xact_shutter_usda-eaa1e924cd3a23ce-1.image | 1 + crates/crust-core/tests/time_motion.rs | 28 ++++++++ .../moho-import/specs/import-parity/spec.md | 10 ++- 7 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 crates/crust-core/tests/data/import_baselines/inexact_shutter_usda-eaa1e924cd3a23ce-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/inexact_shutter_usda-eaa1e924cd3a23ce-1.f32-shutter.digest create mode 100644 crates/crust-core/tests/data/import_baselines/inexact_shutter_usda-eaa1e924cd3a23ce-1.f32-shutter.image create mode 100644 crates/crust-core/tests/data/import_baselines/inexact_shutter_usda-eaa1e924cd3a23ce-1.image diff --git a/crates/crust-core/src/parity.rs b/crates/crust-core/src/parity.rs index d02272d61..71fa2378d 100644 --- a/crates/crust-core/src/parity.rs +++ b/crates/crust-core/src/parity.rs @@ -21,6 +21,15 @@ //! the images; the digests are still compared. Meant for `cargo test --release`: an unoptimised //! build renders too slowly for every import of the suite. //! +//! One difference is a listed exception (`import-parity`): a shutter whose +//! offsets `f32` cannot hold exactly. The index reads a transform at the +//! shutter's ends as Hydra does, at `f32` offsets from the frame, so the +//! ends' matrices may not be the direct importer's `f64` ones bit for bit. +//! For such a scene an import that differs from the direct baseline is +//! accepted when it equals the `.f32-shutter` baseline beside it, recorded +//! from the index with `CRUST_RECORD_F32_SHUTTER=1`, and that baseline differs +//! from the direct one in geometry lines only. +//! //! A baseline is keyed by a hash of every layer the import composed (paths and //! text, with the stage's directory written as `$DIR`), the import options, the //! environment switches and the importing test (its thread's name), so a @@ -301,6 +310,8 @@ pub fn check_import( } let dir = baseline_dir(); let key = key(stage, options, scene); + let inexact = inexact_shutter(scene); + let record_f32 = std::env::var("CRUST_RECORD_F32_SHUTTER").is_ok_and(|v| v == "1"); let mut files = vec![(dir.join(format!("{key}.digest")), digest(scene, stage))]; if with_images() { NESTED.with(|n| n.set(true)); @@ -319,6 +330,13 @@ pub fn check_import( // run (an optimised build) records only the images, and checks that it // imports exactly what the unoptimised run recorded. let is_image = file.extension().is_some_and(|e| e == "image"); + if record_f32 && inexact && (is_image || !with_images()) { + let alt = f32_shutter(&file); + if let Err(e) = std::fs::write(&alt, actual) { + panic!("parity: cannot record {}: {e}", alt.display()); + } + continue; + } if recording() && (is_image || !with_images()) { if let Err(e) = std::fs::create_dir_all(&dir).and_then(|()| std::fs::write(&file, actual)) @@ -336,6 +354,9 @@ pub fn check_import( ); }; if let Some(diff) = first_difference(&expected, &actual) { + if inexact && accepted_f32_shutter(&file, &expected, &actual, is_image) { + continue; + } panic!( "parity: importing {} differs from its baseline {}, {diff}", stage.display(), @@ -345,6 +366,49 @@ pub fn check_import( } } +/// Whether the scene's shutter opens an interval at offsets `f32` cannot +/// hold exactly: the listed exception (module docs). +fn inexact_shutter(scene: &Scene) -> bool { + let Some(prov) = &scene.provenance else { + return false; + }; + let shutter = &prov.stage.shutter; + shutter.interval.is_some() + && shutter + .offsets + .iter() + .map(|bits| f64::from_bits(*bits)) + .any(|x| f64::from(x as f32) != x) +} + +/// The `.f32-shutter` baseline beside `file`. +fn f32_shutter(file: &Path) -> PathBuf { + let ext = file + .extension() + .map(|e| e.to_string_lossy().into_owned()) + .unwrap_or_default(); + file.with_extension(format!("f32-shutter.{ext}")) +} + +/// Whether `actual`, differing from the direct baseline `expected`, is the +/// listed exception: equal to the `.f32-shutter` baseline, which differs +/// from the direct one in geometry lines only (a digest) or is the image of +/// that import. +fn accepted_f32_shutter(file: &Path, expected: &str, actual: &str, is_image: bool) -> bool { + let Ok(alt) = std::fs::read_to_string(f32_shutter(file)) else { + return false; + }; + if first_difference(&alt, actual).is_some() { + return false; + } + is_image + || (expected.lines().count() == alt.lines().count() + && expected + .lines() + .zip(alt.lines()) + .all(|(a, b)| a == b || (a.starts_with("geom ") && b.starts_with("geom ")))) +} + #[cfg(test)] mod tests { use super::*; diff --git a/crates/crust-core/tests/data/import_baselines/inexact_shutter_usda-eaa1e924cd3a23ce-1.digest b/crates/crust-core/tests/data/import_baselines/inexact_shutter_usda-eaa1e924cd3a23ce-1.digest new file mode 100644 index 000000000..fd701b52a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/inexact_shutter_usda-eaa1e924cd3a23ce-1.digest @@ -0,0 +1,21 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: true, layer_stack: ["$DIR/inexact_shutter.usda"], invisible_overrides: Some(0) } +layer: $DIR/inexact_shutter.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.4, 0.0, 0.0))] pieces all=2:148e5bbd2dcaa342 camera=2:148e5bbd2dcaa342 shadow=2:148e5bbd2dcaa342 indirect=2:148e5bbd2dcaa342 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Card +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7296987149454137707, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [13815242216921733530, 4599075939470750515], interval: Some([4617202927970916762, 4617653287933653811]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/inexact_shutter_usda-eaa1e924cd3a23ce-1.f32-shutter.digest b/crates/crust-core/tests/data/import_baselines/inexact_shutter_usda-eaa1e924cd3a23ce-1.f32-shutter.digest new file mode 100644 index 000000000..cdae5d9fe --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/inexact_shutter_usda-eaa1e924cd3a23ce-1.f32-shutter.digest @@ -0,0 +1,21 @@ +time: Some(5.0) +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/cam") +camera: Camera { origin: Vec3A(0.0, 0.0, 8.0), lower_left_corner: Vec3A(-2.7183647, -1.5290802, -2.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 16, max_depth: 2, width: 64, height: 36, region: PixelRect { x0: 0, y0: 0, x1: 64, y1: 36 }, min_samples_per_pixel: 16, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 5, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: true, layer_stack: ["$DIR/inexact_shutter.usda"], invisible_overrides: Some(0) } +layer: $DIR/inexact_shutter.usda +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } top level, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 1 } unique, motion true +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [Translation(Vec3A(0.4, 0.0, 0.0))] pieces all=2:c4164dc6690b8664 camera=2:c4164dc6690b8664 shadow=2:c4164dc6690b8664 indirect=2:c4164dc6690b8664 +provenance material /World/Glow: MaterialOrigin { slots: [0], displaced: false } +provenance geometry 0..1: /World/Card +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: false, moving: true } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 7296987149454137707, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: Some(5.0), camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/cam"), cameras: ["/World/cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/cam"), offsets: [13815242216921733530, 4599075939470750515], interval: Some([4617202927970916762, 4617653287933653811]), query: true, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/inexact_shutter_usda-eaa1e924cd3a23ce-1.f32-shutter.image b/crates/crust-core/tests/data/import_baselines/inexact_shutter_usda-eaa1e924cd3a23ce-1.f32-shutter.image new file mode 100644 index 000000000..14acb739a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/inexact_shutter_usda-eaa1e924cd3a23ce-1.f32-shutter.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 8575cdc6c3771589 diff --git a/crates/crust-core/tests/data/import_baselines/inexact_shutter_usda-eaa1e924cd3a23ce-1.image b/crates/crust-core/tests/data/import_baselines/inexact_shutter_usda-eaa1e924cd3a23ce-1.image new file mode 100644 index 000000000..14acb739a --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/inexact_shutter_usda-eaa1e924cd3a23ce-1.image @@ -0,0 +1 @@ +64x36 16spp clamp-off 8575cdc6c3771589 diff --git a/crates/crust-core/tests/time_motion.rs b/crates/crust-core/tests/time_motion.rs index b160f48b2..891f1d731 100644 --- a/crates/crust-core/tests/time_motion.rs +++ b/crates/crust-core/tests/time_motion.rs @@ -660,3 +660,31 @@ fn a_static_stage_asking_for_motion_vectors_is_not_warned_about() { assert_eq!(warned(&scene, WarningCode::CameraShutterInstantaneous), 0); assert_eq!(motion(&scene, -0.5, 0.0, 0.0), Vec3A::X); } + +/// A shutter `f32` cannot hold, `[-0.1, 0.3]` around frame 5: the card's +/// transform at the shutter's ends is read at Hydra's `f32` offsets from the +/// frame, so the ends' bits may differ from the direct importer's — the +/// import-parity exception this fixture exercises (its `.f32-shutter` +/// baselines) — while the motion is the same to far below a pixel. The track +/// crosses x = 0 at shutter open, where `f32` resolves the offset's error +/// (1.5e-9 frames) instead of rounding it away. +#[test] +fn an_inexact_shutter_moves_the_card_over_its_offsets() { + let shutter = "double shutter:open = -0.1\n double shutter:close = 0.3"; + let track = r#"double3 xformOp:translate.timeSamples = { + 1: (-3.9, 0, 0), + 10: (5.1, 0, 0), + } + uniform token[] xformOpOrder = ["xformOp:translate"]"#; + // A card whose left edge is its origin, so that edge's x is the + // translation itself. + let card = card("Card", track).replace( + "[(-0.3, -0.3, 0), (0.3, -0.3, 0), (0.3, 0.3, 0), (-0.3, 0.3, 0)]", + "[(0, -0.3, 0), (0.6, -0.3, 0), (0.6, 0.3, 0), (0, 0.3, 0)]", + ); + let scene = load("inexact_shutter", &stage(shutter, &card, "")); + // One unit per frame: the left edge at x = 0 at shutter open (4.9), 0.4 + // units further at shutter close (5.3). + let v = motion(&scene, 0.3, 0.0, 0.0); + assert!(near(v, Vec3A::new(0.4, 0.0, 0.0)), "{v}"); +} diff --git a/openspec/changes/moho-import/specs/import-parity/spec.md b/openspec/changes/moho-import/specs/import-parity/spec.md index b25020aa6..9bcc3bd5f 100644 --- a/openspec/changes/moho-import/specs/import-parity/spec.md +++ b/openspec/changes/moho-import/specs/import-parity/spec.md @@ -52,7 +52,15 @@ importer's walk did, and a streamed import numbers each chunk's stage from 0, so number is a composition artifact that cannot be mapped between imports. The check SHALL write it as `#` and compare the rest of every path, never ignore the path wholesale. Prim paths inside a prototype SHALL otherwise be equal, named from the -scene index's `primOrigin/scenePath`. A difference that cannot be fixed in Crust SHALL +scene index's `primOrigin/scenePath`. +The second listed exception SHALL be a shutter whose offsets `f32` cannot hold exactly +(`-0.1`, `0.3`): the index reads a transform at the shutter's ends as Hydra's sampled +data sources do, at `f32` offsets from the frame, so the ends' matrices may differ from +the direct importer's `f64` reads in their last bits. Such an import SHALL equal a +`.f32-shutter` baseline recorded from the index beside the direct one, and that baseline +SHALL differ from the direct one in geometry lines only; exact offsets SHALL stay +bit-identical. A fixture (`time_motion.rs`, +`an_inexact_shutter_moves_the_card_over_its_offsets`) exercises it. A difference that cannot be fixed in Crust SHALL be reported (a Moho gap goes to Moho), never accepted silently. #### Scenario: An equal scene From 7e1c5136d079d4aced048fb848c6da4900536965 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 15:04:42 +0100 Subject: [PATCH 55/95] test: an uncomposable transform stack's warning text, against the direct baseline A singular transform inverted in xformOpOrder: the index import warns xform.uncomposable once with openusd's reason, read in stage_facts, and its digest (warning text included) and image equal the direct importer's. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../singular_usda-fb82aadc0c0d65da-1.digest | 22 ++++++++ .../singular_usda-fb82aadc0c0d65da-1.image | 1 + crates/crust-core/tests/xform_uncomposable.rs | 50 +++++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 crates/crust-core/tests/data/import_baselines/singular_usda-fb82aadc0c0d65da-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/singular_usda-fb82aadc0c0d65da-1.image create mode 100644 crates/crust-core/tests/xform_uncomposable.rs diff --git a/crates/crust-core/tests/data/import_baselines/singular_usda-fb82aadc0c0d65da-1.digest b/crates/crust-core/tests/data/import_baselines/singular_usda-fb82aadc0c0d65da-1.digest new file mode 100644 index 000000000..5569b031e --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/singular_usda-fb82aadc0c0d65da-1.digest @@ -0,0 +1,22 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: None +camera: Camera { origin: Vec3A(15.0, 3.0, 3.0), lower_left_corner: Vec3A(4.8863316, -0.044797063, 4.174048), horizontal: Vec3A(1.2295314, 0.0, -6.147657), vertical: Vec3A(-0.44830504, 3.4967792, -0.08966101), u: Vec3A(0.19611613, 0.0, -0.9805807), v: Vec3A(-0.1271232, 0.991561, -0.02542464), lens_radius: 0.05, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/singular.usda"], invisible_overrides: Some(0) } +layer: $DIR/singular.usda +warning: Warning { code: XformUncomposable, kind: Refused, count: 1, prims: ["/World/Bad"], message: "/World/Bad: could not compose its xformOp stack (xformOp `!invert!xformOp:transform` matrix is singular and cannot be inverted) — its local transform is identity" } +warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } +lights: 0 +volumes: 0 +world: 1 geometries, PrimitiveBreakdown { triangles: 1, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 1, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:1d3535e07c06fa35 camera=1:1d3535e07c06fa35 shadow=1:1d3535e07c06fa35 indirect=1:1d3535e07c06fa35 +provenance geometry 0..1: /World/Bad/M +provenance mesh: MeshOrigin { geom_id: 0, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 819217792897349932, n_points: 3, n_indices: 3, n_uvs: None, smooth: true, material: 0 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: None, cameras: [], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: None, offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/singular_usda-fb82aadc0c0d65da-1.image b/crates/crust-core/tests/data/import_baselines/singular_usda-fb82aadc0c0d65da-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/singular_usda-fb82aadc0c0d65da-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/xform_uncomposable.rs b/crates/crust-core/tests/xform_uncomposable.rs new file mode 100644 index 000000000..9778a2326 --- /dev/null +++ b/crates/crust-core/tests/xform_uncomposable.rs @@ -0,0 +1,50 @@ +//! A transform stack openusd cannot compose — the inverse of a singular +//! `transform` — keeps its parent's transform with an `xform.uncomposable` +//! warning quoting openusd's reason (the `moho-import` change reads that +//! reason off the stage, design D7). Checked against the direct importer's +//! baseline (`crust_core::parity`), warning text included. + +#![allow(clippy::unwrap_used)] + +use crust_core::{Scene, WarningCode}; + +#[test] +fn an_uncomposable_stack_warns_with_openusds_reason() { + let dir = std::env::temp_dir().join("crust_xform_uncomposable"); + std::fs::create_dir_all(&dir).unwrap(); + let path = dir.join("singular.usda"); + std::fs::write( + &path, + r#"#usda 1.0 +def Xform "World" +{ + def Xform "Bad" + { + matrix4d xformOp:transform = ((0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 1)) + uniform token[] xformOpOrder = ["!invert!xformOp:transform"] + def Mesh "M" + { + int[] faceVertexCounts = [3] + int[] faceVertexIndices = [0, 1, 2] + point3f[] points = [(0, 0, 0), (1, 0, 0), (0, 1, 0)] + } + } +} +"#, + ) + .unwrap(); + let scene = Scene::from_usd(&path).unwrap(); + let warned: Vec<_> = scene + .warnings + .iter() + .filter(|w| w.code == WarningCode::XformUncomposable) + .collect(); + assert_eq!(warned.len(), 1, "{:#?}", scene.warnings); + assert!( + warned[0] + .message + .contains("could not compose its xformOp stack"), + "{}", + warned[0].message + ); +} From 86b4abd99c56fd3d8224f77ac834b1c55e0f2053 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 15:24:42 +0100 Subject: [PATCH 56/95] crust: the live light rebuild reads its transform from the index too (10.3) The light's local-to-world in an in-place rebuild is composed over an index of the masked stage (xform::index_local_to_world: compose_index from the root down), as the import's walk composes it; its inputs already came from the index readers. live.rs and the MCP session tests pass, and the debug suite (2661) equals its baselines. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../crust-core/src/scene/usd_import/live.rs | 15 ++++++++---- .../crust-core/src/scene/usd_import/xform.rs | 24 +++++++++++++++++++ openspec/changes/moho-import/tasks.md | 2 +- 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/live.rs b/crates/crust-core/src/scene/usd_import/live.rs index b4216ef9f..8eb8fde11 100644 --- a/crates/crust-core/src/scene/usd_import/live.rs +++ b/crates/crust-core/src/scene/usd_import/live.rs @@ -283,8 +283,16 @@ impl Rebuilding<'_> { let scope = crate::WarningScope::enter(); let built = (|| { let stage = self.masked(&light_path)?; - let prim = prim_at(&stage, light_path.clone()); - let world_xf = local_to_world(&stage, &prim); + // The light's transform and inputs from an index over the masked + // stage, as the import reads them. + let scene = self.scene(&stage); + let stage_index: SceneIndexHandle = scene.stage.clone(); + let world_xf = super::xform::index_local_to_world( + &stage, + &stage_index, + &light_path, + self.prov.stage.options.frame, + ); let mut world = WorldBuilder::new(); // Ids are handed out in attach order: claiming the ones before // the light's gives its geometry the ids it had. @@ -293,9 +301,6 @@ impl Rebuilding<'_> { world.reserve_slot(filler.clone(), crate::ray::RayMask(0)); } let mut ctx = scratch_ctx(self, world); - // The light's inputs from an index over the masked stage, as - // the import reads them. - let scene = self.scene(&stage); let light = PrimData::in_index(&scene.chain, &light_path); if !emit_light(&mut ctx, &light, world_xf) { return Err(Structural(format!("{path} is no longer a light"))); diff --git a/crates/crust-core/src/scene/usd_import/xform.rs b/crates/crust-core/src/scene/usd_import/xform.rs index a782d7561..1853e1aaf 100644 --- a/crates/crust-core/src/scene/usd_import/xform.rs +++ b/crates/crust-core/src/scene/usd_import/xform.rs @@ -245,6 +245,30 @@ pub(super) fn compose_index( compose_data(stage, prim, parent, time, 0.0, true) } +/// A prim's local-to-world over the scene index: [`compose_index`] folded +/// from the root down `path`'s ancestors in the stage scene index `index` +/// over `stage`, at the index's `time` — `camera::local_to_world` (the +/// stage walk) on the index, for a reader outside the walk. +pub(super) fn index_local_to_world( + stage: &openusd::usd::Stage, + index: &moho::scene_index::SceneIndexHandle, + path: &openusd::sdf::Path, + time: Option, +) -> GMat4 { + let mut chain = vec![path.clone()]; + let mut cur = path.clone(); + while let Some(parent) = cur.parent() { + chain.push(parent.clone()); + if parent.is_abs_root() { + break; + } + cur = parent; + } + chain.iter().rev().fold(GMat4::IDENTITY, |acc, p| { + compose_index(stage, &PrimData::bridged(index, stage, p), acc, time) + }) +} + fn compose_data( stage: &openusd::usd::Stage, prim: &PrimData, diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 48aa0aa9a..9c88aa465 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -281,7 +281,7 @@ this group, and kept for the whole change. (`chain::standard`), and on a streamed fixture whose light and receivers sit in different chunks (`chain::merged` over every input). Verify parity green on `light_linking.usda` and `light_linking.rs`, and on that streamed fixture. -- [ ] 10.3 Move the light rebuild in `live.rs` to the index readers. Verify that +- [x] 10.3 Move the light rebuild in `live.rs` to the index readers. Verify that `live.rs` passes. ## 11. Volumes From a2484421a1bbb4331eefade7db5336797b55d796 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 15:24:53 +0100 Subject: [PATCH 57/95] openspec: moho-import 11.1 is done (regions on the index, the volume terminal with 9.2) Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/tasks.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 9c88aa465..a7128b11c 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -286,11 +286,12 @@ this group, and kept for the whole change. ## 11. Volumes -- [ ] 11.1 Index reader for `crust:volume:*` regions from generic data, dispatched +- [x] 11.1 Index reader for `crust:volume:*` regions from generic data, dispatched before geometry as today, and the material's volume terminal from the `material` network. Verify parity green on `fog.usda`, `materialx_volume.usda` and `medium.rs`. - (The regions and their dispatch read the index; the volume terminal moves with the - material networks, 9.2.) + (The regions and their dispatch read the index; the volume terminal moved with the + material networks, 9.2. `fog.usda`, `materialx_volume.usda` and `medium.rs` are green + in the suite and the image run.) ## 12. Instancing and the standard chain From 219bc95a5a9bd4ea9b76a142e404560773ca6f28 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 15:58:22 +0100 Subject: [PATCH 58/95] crust: point instancers and adaptive placement counts read the scene index (12.1, 12.2 in part) A PointInstancer's prototypes, protoIndices, positions, scales, orientations (orientationsf over orientations), ids and invisibleIds come from its generic data, with the warnings that depend on them unchanged. The adaptive-subdivision placement count walks the input's chain (the index's pruning and children, Moho's local xform composed as the walk does, an instance told by __usdPrimInfo/niPrototypePath, an instancer by IsA), after the input is built; streamed, per chunk once added. Prototypes are still walked on the stage until the standard chain lands. The debug suite (2661) and the image run equal their baselines. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/instancing.rs | 72 ++++++++----------- crates/crust-core/src/scene/usd_import/mod.rs | 65 +++++++++-------- 2 files changed, 65 insertions(+), 72 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/instancing.rs b/crates/crust-core/src/scene/usd_import/instancing.rs index f8ca78ba0..f54ef7dd4 100644 --- a/crates/crust-core/src/scene/usd_import/instancing.rs +++ b/crates/crust-core/src/scene/usd_import/instancing.rs @@ -30,7 +30,7 @@ use openusd::sdf; use openusd::usd::{Prim, Stage}; use openusd_schemas::geom::{ BasisCurves as UsdBasisCurves, Mesh as UsdMesh, NurbsCurves as UsdNurbsCurves, PointInstancer, - PointInstancerSchema, Sphere as UsdSphere, + Sphere as UsdSphere, }; use std::collections::{BTreeMap, BTreeSet}; use tracing::debug; @@ -41,9 +41,9 @@ use crate::rt_world::{FaceMap, UvMap, WorldBuilder}; use super::attrs::{ decode_i32_array, decode_i64_array, decode_vec3f_array, prim_motion_translate, prim_ray_mask, - value_at, }; use super::implicit::{Shape, undisplaced}; +use super::index::data::PrimData; use super::materials::{resolve_bound, resolve_material}; use super::mesh::{ MeshNeeds, MeshPlace, constant_table, mesh_source, placement_scale, with_constant_primvars, @@ -379,7 +379,7 @@ pub(super) fn collect_proto_parts( Arc::make_mut(&mut part.slots)[0].primvars = primvars; parts.push(part); } - } else if let Ok(Some(instancer)) = PointInstancer::get(stage, prim.path().clone()) { + } else if let Ok(Some(_)) = PointInstancer::get(stage, prim.path().clone()) { // A PointInstancer inside a prototype: expand it into nested // sub-scenes rather than flattening. Flattening would multiply // the *outer* instance count by this instancer's, which is @@ -389,7 +389,6 @@ pub(super) fn collect_proto_parts( parts.extend(nested_instancer_parts( stage, &prim, - &instancer, this_local, mask, caches, @@ -490,14 +489,13 @@ fn placeholder_scene() -> Arc { fn nested_instancer_parts( stage: &Stage, prim: &Prim, - instancer: &PointInstancer, local: GMat4, mask: RayMask, caches: &mut ImportCaches<'_>, depth: usize, place: ProtoPlace, ) -> Vec { - let Some(layout) = read_instancer(prim, instancer, true) else { + let Some(layout) = read_instancer(&caches.prim_data(prim.path()), true) else { return Vec::new(); }; // Which version of its prototype each placement draws: the shared one @@ -887,28 +885,21 @@ struct InstancerLayout { /// `orientations` (half) where both are authored, and `invisibleIds` /// prunes by `ids`, with the array index standing in as the id where `ids` /// is absent. -fn read_instancer( - prim: &Prim, - instancer: &PointInstancer, - report: bool, -) -> Option { - let targets = match instancer.prototypes_rel().targets() { - Ok(t) if !t.is_empty() => t, - _ => { - if report { - warning!( - InstancingNoPrototypes, - at = prim.path(), - "PointInstancer at {} has no `prototypes` targets — skipped", - prim.path() - ); - } - return None; +fn read_instancer(prim: &PrimData, report: bool) -> Option { + let targets = prim.targets("prototypes"); + if targets.is_empty() { + if report { + warning!( + InstancingNoPrototypes, + at = prim.path(), + "PointInstancer at {} has no `prototypes` targets — skipped", + prim.path() + ); } - }; + return None; + } - let Some(proto_indices) = value_at(&instancer.proto_indices_attr()).and_then(decode_i32_array) - else { + let Some(proto_indices) = prim.value("protoIndices").and_then(decode_i32_array) else { if report { warning!( InstancingNoProtoIndices, @@ -920,13 +911,15 @@ fn read_instancer( return None; }; - let positions = value_at(&instancer.positions_attr()) + let positions = prim + .value("positions") .and_then(decode_vec3f_array) .unwrap_or_default(); - let scales = value_at(&instancer.scales_attr()).and_then(decode_vec3f_array); - let orientations = instance_orientations(instancer); - let ids = value_at(&instancer.ids_attr()).and_then(decode_i64_array); - let invisible: std::collections::HashSet = value_at(&instancer.invisible_ids_attr()) + let scales = prim.value("scales").and_then(decode_vec3f_array); + let orientations = instance_orientations(prim); + let ids = prim.value("ids").and_then(decode_i64_array); + let invisible: std::collections::HashSet = prim + .value("invisibleIds") .and_then(decode_i64_array) .map(|v| v.into_iter().collect()) .unwrap_or_default(); @@ -1083,12 +1076,8 @@ fn target_counts(layout: &InstancerLayout, frame: &GMat4) -> Vec { /// The drawn placements of each target of `instancer` at world transform /// `world`, for [`count_placements`](super::count_placements): read quietly, /// since the traversal reads the same instancer again and reports it then. -pub(super) fn instancer_target_counts( - prim: &Prim, - instancer: &PointInstancer, - world: &GMat4, -) -> Vec<(String, usize)> { - let Some(layout) = read_instancer(prim, instancer, false) else { +pub(super) fn instancer_target_counts(prim: &PrimData, world: &GMat4) -> Vec<(String, usize)> { + let Some(layout) = read_instancer(prim, false) else { return Vec::new(); }; let counts = target_counts(&layout, world); @@ -1109,12 +1098,11 @@ pub(super) fn emit_point_instancer( stage: &Stage, world: &mut WorldBuilder, prim: &Prim, - instancer: &PointInstancer, span: Span, caches: &mut ImportCaches<'_>, ) { let world_xf = span.open; - let Some(layout) = read_instancer(prim, instancer, true) else { + let Some(layout) = read_instancer(&caches.prim_data(prim.path()), true) else { return; }; // Per-instance primvars, and any above the instancer, do not reach the @@ -1228,12 +1216,12 @@ pub(super) fn emit_point_instancer( /// Per-instance rotations, preferring single-precision `orientationsf` /// over half-precision `orientations` as USD specifies. -fn instance_orientations(instancer: &PointInstancer) -> Option> { +fn instance_orientations(prim: &PrimData) -> Option> { let quat = |w: f32, x: f32, y: f32, z: f32| glam::Quat::from_xyzw(x, y, z, w).normalize(); - if let Some(sdf::Value::QuatfVec(v)) = value_at(&instancer.orientationsf_attr()) { + if let Some(sdf::Value::QuatfVec(v)) = prim.value("orientationsf") { return Some(v.iter().map(|q| quat(q.w, q.x, q.y, q.z)).collect()); } - match value_at(&instancer.orientations_attr()) { + match prim.value("orientations") { Some(sdf::Value::QuathVec(v)) => Some( v.iter() .map(|q| quat(q.w.to_f32(), q.x.to_f32(), q.y.to_f32(), q.z.to_f32())) diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index 24f91aee7..bff0bfd6d 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -124,7 +124,7 @@ use shapes::{curve_segments, emit_curves, emit_sphere, nurbs_curve_segments}; use strands::StrandRequest; use time::EvalTimeScope; use volume::emit_volume; -use xform::{Timing, TransformMotion, compose_index, compose_with_parent}; +use xform::{Timing, TransformMotion, compose_index}; /// `Stage::prim` for a path that is already an `sdf::Path`. /// @@ -207,27 +207,37 @@ fn subtree_roots(stage: &Stage) -> Vec { /// ([`prune_reason`]) as the walk ([`index::walk`]), not /// descending into an instance or a `PointInstancer`, whose contents the /// traversal does not reach directly either. -fn count_placements(stage: &Stage, caches: &mut ImportCaches<'_>) { - let mut stack = vec![(prim_at(stage, sdf::Path::abs_root()), GMat4::IDENTITY)]; - while let Some((prim, parent_world)) = stack.pop() { - if prune_reason(&prim, WalkScope::Stage).is_some() { +fn count_placements(stage: &Stage, input: &index::Input, caches: &mut ImportCaches<'_>) { + use moho::tokens::usd_prim_info as info; + let chain: &dyn moho::scene_index::SceneIndex = input.chain.as_ref(); + let stage_index: moho::scene_index::SceneIndexHandle = input.stage.clone(); + let mut stack = vec![(sdf::Path::abs_root(), GMat4::IDENTITY)]; + while let Some((path, parent_world)) = stack.pop() { + if index::walk::prune(chain, &path).is_some() { continue; } - let world = compose_with_parent(&prim, parent_world); - if prim.is_instance().unwrap_or(false) - && let Ok(Some(proto)) = prim.prototype() + let xform = index::data::PrimData::at(stage_index.as_ref(), &path); + let world = compose_index(stage, &xform, parent_world, caches.time); + let prim = index::data::PrimData::at(chain, &path); + let proto = match prim + .locate([info::USD_PRIM_INFO, info::NI_PROTOTYPE_PATH]) + .and_then(|d| d.value()) { + Some(sdf::Value::PathVec(mut v)) => v.pop(), + _ => None, + }; + if let Some(proto) = proto { // A zero-scale placement draws nothing (`attach_proto_parts` // skips it), so it does not make its prototype shared. if world.determinant().abs() >= 1e-12 { - let key = (caches.subtree_of(prim.path()), proto.to_string()); + let key = (caches.subtree_of(&path), proto.to_string()); *caches.placements.entry(key).or_default() += 1; } continue; } - if let Ok(Some(instancer)) = PointInstancer::get(stage, prim.path().clone()) { - let subtree = caches.subtree_of(prim.path()); - for (target, n) in instancing::instancer_target_counts(&prim, &instancer, &world) { + if prim.is_a("PointInstancer") { + let subtree = caches.subtree_of(&path); + for (target, n) in instancing::instancer_target_counts(&prim, &world) { *caches .placements .entry((subtree.clone(), target)) @@ -235,9 +245,11 @@ fn count_placements(stage: &Stage, caches: &mut ImportCaches<'_>) { } continue; } - if let Ok(children) = prim.children() { - stack.extend(children.into_iter().map(|c| (c, world))); - } + stack.extend( + index::walk::children(stage, chain, &path) + .into_iter() + .map(|c| (c, world)), + ); } } @@ -399,16 +411,9 @@ fn visit_prim( // branches then go in the prototype walk's order // (`collect_proto_parts`), and a geometry prim no branch reads is // counted for `geom.unsupported_type`. - if let Ok(Some(instancer)) = PointInstancer::get(stage, prim.path().clone()) { + if let Ok(Some(_)) = PointInstancer::get(stage, prim.path().clone()) { ctx.caches.motion.drawn(prim, &timing); - emit_point_instancer( - stage, - &mut ctx.world, - prim, - &instancer, - span, - &mut ctx.caches, - ); + emit_point_instancer(stage, &mut ctx.world, prim, span, &mut ctx.caches); saw(ctx, prim.path(), geoms_before..ctx.world.count(), 0..0); // Prototypes are conventionally authored beneath the // instancer; they are drawn through it, never on their own. @@ -917,11 +922,11 @@ fn traverse_stage( CRUST_STREAM_IMPORT=0)" ); let stage = open_stage(path, path_str, None)?; - if ctx.caches.meshes.subdiv.adaptive.is_some() { - count_placements(&stage, &mut ctx.caches); - } // The stage read through Moho (design D4), walked from the root. let scene = index::Single::new(stage.clone(), time); + if ctx.caches.meshes.subdiv.adaptive.is_some() { + count_placements(&stage, &scene.input, &mut ctx.caches); + } index::walk::walk(&stage, &scene.input, &scene.top, ctx); ctx.layers .extend(index::stage_facts::layer_identifiers(&stage)); @@ -958,9 +963,6 @@ fn traverse_stage( None => vec![chunk.clone()], }; let stage = open_stage_masked(path, path_str, Some(mask))?; - if ctx.caches.meshes.subdiv.adaptive.is_some() { - count_placements(&stage, &mut ctx.caches); - } // Walk from the root, not from `chunk`: a mask keeps the masked // path's *ancestors* populated, so starting at the root picks up // their transforms exactly as a full traversal would, while @@ -968,6 +970,9 @@ fn traverse_stage( // children from the chunk's own input, in its stage's order // (design D5). let input = scene.add_chunk(stage.clone(), chunk); + if ctx.caches.meshes.subdiv.adaptive.is_some() { + count_placements(&stage, &input, &mut ctx.caches); + } // What the chunk depends on and no input holds — a material in // another chunk's payload, a node outside the chunk — comes from // the side input (design D4). From 9625b6b870420f8a13b35981cf865c712ec8371f Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 16:17:50 +0100 Subject: [PATCH 59/95] crust: the walk and the prototype walk dispatch geometry by IsA on the index Mesh, Sphere, BasisCurves, NurbsCurves and PointInstancer are told from the prim's USD type in __usdPrimInfo through the schema registry's IsA, as the typed gets did, instead of asking the stage. The debug suite equals its baselines. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/instancing.rs | 25 +++++++++---------- crates/crust-core/src/scene/usd_import/mod.rs | 15 +++++------ 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/instancing.rs b/crates/crust-core/src/scene/usd_import/instancing.rs index f54ef7dd4..7d50c9395 100644 --- a/crates/crust-core/src/scene/usd_import/instancing.rs +++ b/crates/crust-core/src/scene/usd_import/instancing.rs @@ -28,10 +28,6 @@ use crust_rt::{ use glam::{Affine3A, Mat4 as GMat4, Vec3, Vec3A}; use openusd::sdf; use openusd::usd::{Prim, Stage}; -use openusd_schemas::geom::{ - BasisCurves as UsdBasisCurves, Mesh as UsdMesh, NurbsCurves as UsdNurbsCurves, PointInstancer, - Sphere as UsdSphere, -}; use std::collections::{BTreeMap, BTreeSet}; use tracing::debug; @@ -260,7 +256,7 @@ pub(super) fn collect_proto_parts( "Volume at {} is inside a prototype — volumes cannot be instanced, skipped", prim.path() ); - } else if let Ok(Some(_)) = UsdMesh::get(stage, prim.path().clone()) { + } else if caches.prim_data(prim.path()).is_a("Mesh") { let bound = resolve_bound(stage, &prim, caches); let material = bound.material; let data = caches.prim_data(prim.path()); @@ -299,7 +295,7 @@ pub(super) fn collect_proto_parts( Arc::make_mut(&mut part.slots)[0].primvars = primvars; parts.push(part); } - } else if let Ok(Some(_)) = UsdSphere::get(stage, prim.path().clone()) { + } else if caches.prim_data(prim.path()).is_a("Sphere") { let material = resolve_material(stage, &prim, caches); let radius = sphere_radius(&caches.prim_data(prim.path())); let mut b = RtSceneBuilder::new(); @@ -323,12 +319,15 @@ pub(super) fn collect_proto_parts( ); Arc::make_mut(&mut part.slots)[0].primvars = primvars; parts.push(part); - } else if let Some(read) = match UsdBasisCurves::get(stage, prim.path().clone()) { - Ok(Some(_)) => Some(Curve::Basis), - _ => match UsdNurbsCurves::get(stage, prim.path().clone()) { - Ok(Some(_)) => Some(Curve::Nurbs), - _ => None, - }, + } else if let Some(read) = { + let data = caches.prim_data(prim.path()); + if data.is_a("BasisCurves") { + Some(Curve::Basis) + } else if data.is_a("NurbsCurves") { + Some(Curve::Nurbs) + } else { + None + } } { let material = resolve_material(stage, &prim, caches); let request = StrandRequest::of(&*material, caches.working, &caches.meshes.primvars); @@ -379,7 +378,7 @@ pub(super) fn collect_proto_parts( Arc::make_mut(&mut part.slots)[0].primvars = primvars; parts.push(part); } - } else if let Ok(Some(_)) = PointInstancer::get(stage, prim.path().clone()) { + } else if caches.prim_data(prim.path()).is_a("PointInstancer") { // A PointInstancer inside a prototype: expand it into nested // sub-scenes rather than flattening. Flattening would multiply // the *outer* instance count by this instancer's, which is diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index bff0bfd6d..1a1fb542c 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -60,10 +60,7 @@ use openusd::sdf; use openusd::usd::{ InitialLoadSet, Prim, SchemaRegistry, Stage, StageBuilder, StagePopulationMask, }; -use openusd_schemas::geom::{ - BasisCurves as UsdBasisCurves, Mesh as UsdMesh, NurbsCurves as UsdNurbsCurves, PointInstancer, - Sphere as UsdSphere, -}; +use openusd_schemas::geom::PointInstancer; mod adaptive; mod assets; @@ -411,7 +408,7 @@ fn visit_prim( // branches then go in the prototype walk's order // (`collect_proto_parts`), and a geometry prim no branch reads is // counted for `geom.unsupported_type`. - if let Ok(Some(_)) = PointInstancer::get(stage, prim.path().clone()) { + if ctx.caches.prim_data(prim.path()).is_a("PointInstancer") { ctx.caches.motion.drawn(prim, &timing); emit_point_instancer(stage, &mut ctx.world, prim, span, &mut ctx.caches); saw(ctx, prim.path(), geoms_before..ctx.world.count(), 0..0); @@ -427,7 +424,7 @@ fn visit_prim( ctx.caches.motion.unmoved(prim, &timing); let data = ctx.caches.prim_data(prim.path()); emit_volume(&data, this_world, &mut ctx.volumes, ctx.caches.working); - } else if let Ok(Some(_)) = UsdMesh::get(stage, prim.path().clone()) { + } else if ctx.caches.prim_data(prim.path()).is_a("Mesh") { ctx.caches.motion.drawn(prim, &timing); let mat = resolve_bound(stage, prim, &mut ctx.caches); let data = ctx.caches.prim_data(prim.path()); @@ -443,21 +440,21 @@ fn visit_prim( if baked_moving { ctx.caches.motion.ignored.saw(prim); } - } else if let Ok(Some(_)) = UsdSphere::get(stage, prim.path().clone()) { + } else if ctx.caches.prim_data(prim.path()).is_a("Sphere") { ctx.caches.motion.drawn(prim, &timing); let mat = resolve_material(stage, prim, &mut ctx.caches); let data = ctx.caches.prim_data(prim.path()); if let Some(id) = emit_sphere(&mut ctx.world, &data, span, mat, ctx.caches.working) { ctx.spheres.push(id); } - } else if let Ok(Some(_)) = UsdBasisCurves::get(stage, prim.path().clone()) { + } else if ctx.caches.prim_data(prim.path()).is_a("BasisCurves") { ctx.caches.motion.unmoved(prim, &timing); let mat = resolve_material(stage, prim, &mut ctx.caches); let request = StrandRequest::of(&*mat, ctx.caches.working, &ctx.caches.meshes.primvars); let data = ctx.caches.prim_data(prim.path()); let imported = curve_segments(&data, &data, request.as_ref()); emit_curves(&mut ctx.world, &data, imported, this_world, mat); - } else if let Ok(Some(_)) = UsdNurbsCurves::get(stage, prim.path().clone()) { + } else if ctx.caches.prim_data(prim.path()).is_a("NurbsCurves") { ctx.caches.motion.unmoved(prim, &timing); let mat = resolve_material(stage, prim, &mut ctx.caches); let request = StrandRequest::of(&*mat, ctx.caches.working, &ctx.caches.meshes.primvars); From cb7e57b92d14b9e28f4e44cc9995b2c9117bbffe Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 17:26:33 +0100 Subject: [PATCH 60/95] crust: prototypes are found through Moho's instancers (12.1 in part) Each input gets a second chain, moho::chain::input over the same stage scene index, with the native and point instancing filters. The instancing reader finds a native instance's propagated prototype through its instance and instancer's instancerTopology, and a point instancer's prototypes through its ForInstancer copies (in its targets' order, named by them); the prototype walk takes its children from that chain, skipping the MohoNiPropagatedPrototypes scopes, and each prim is still read at its USD path until the prototype materials move with Moho's M11. A prototype reached through an instance proxy, or one authored instanceable, is walked on the stage as before (the chain holds no proxies). Prototype caches key on the propagated path, with the epoch kept until M11. The debug suite (2661) and the image run equal their baselines. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/index/instancers.rs | 58 ++++++ .../src/scene/usd_import/index/mod.rs | 7 + .../src/scene/usd_import/index/walk.rs | 2 + .../src/scene/usd_import/instancing.rs | 177 +++++++++++++++--- crates/crust-core/src/scene/usd_import/mod.rs | 12 +- 5 files changed, 227 insertions(+), 29 deletions(-) create mode 100644 crates/crust-core/src/scene/usd_import/index/instancers.rs diff --git a/crates/crust-core/src/scene/usd_import/index/instancers.rs b/crates/crust-core/src/scene/usd_import/index/instancers.rs new file mode 100644 index 000000000..f17344955 --- /dev/null +++ b/crates/crust-core/src/scene/usd_import/index/instancers.rs @@ -0,0 +1,58 @@ +//! Moho's instancers, as the instancing reader finds them in an input's +//! instancing chain ([`super::Input::inst`]): a native instance's propagated +//! prototype (`instance` → its instancer's `instancerTopology`), and a +//! point instancer's prototype copies (`ForInstancer`, in the order of +//! its `prototypes` targets), as UsdImaging's prototype propagation names +//! them. + +use moho::openusd::sdf; +use moho::scene_index::SceneIndex; +use moho::tokens::instancing as t; + +use super::data::PrimData; + +fn paths(value: Option) -> Vec { + match value { + Some(sdf::Value::PathVec(v)) => v, + _ => Vec::new(), + } +} + +/// The prototype root the native instance at `path` places: its +/// instancer's `instancerTopology/prototypes` entry at its +/// `prototypeIndex` — Moho's `MohoNiPropagatedPrototypes///prototype`. +pub(in crate::scene::usd_import) fn native_prototype( + inst: &dyn SceneIndex, + path: &sdf::Path, +) -> Option { + let prim = PrimData::at(inst, path); + let instancer = paths( + prim.locate([t::INSTANCE, t::INSTANCER]) + .and_then(|d| d.value()), + ) + .pop()?; + let index = match prim + .locate([t::INSTANCE, t::PROTOTYPE_INDEX]) + .and_then(|d| d.value()) + { + Some(sdf::Value::Int(i)) => usize::try_from(i).ok()?, + _ => 0, + }; + instancer_prototypes(inst, &instancer) + .into_iter() + .nth(index) +} + +/// The prototypes the instancer at `path` places, as its +/// `instancerTopology/prototypes` names them: a point instancer's +/// `ForInstancer` copies, in its `prototypes` targets' order. +pub(in crate::scene::usd_import) fn instancer_prototypes( + inst: &dyn SceneIndex, + path: &sdf::Path, +) -> Vec { + paths( + PrimData::at(inst, path) + .locate([t::INSTANCER_TOPOLOGY, t::PROTOTYPES]) + .and_then(|d| d.value()), + ) +} diff --git a/crates/crust-core/src/scene/usd_import/index/mod.rs b/crates/crust-core/src/scene/usd_import/index/mod.rs index cca92b059..d4d59d9bd 100644 --- a/crates/crust-core/src/scene/usd_import/index/mod.rs +++ b/crates/crust-core/src/scene/usd_import/index/mod.rs @@ -41,6 +41,7 @@ use moho::stage::StageSceneIndex; pub(super) mod bridge; pub(super) mod data; +pub(super) mod instancers; pub(super) mod network; pub(super) mod stage_facts; pub(super) mod walk; @@ -52,6 +53,10 @@ pub(super) struct Input { /// `chain::input`'s filters over it, without the instancing filters while /// instancing reads through the bridge. pub(super) chain: SceneIndexHandle, + /// `chain::input` itself over the same stage index, instancing filters + /// included: where the instancing reader finds Moho's instancers and + /// propagated prototypes (task 12.1) while the walk moves to it. + pub(super) inst: SceneIndexHandle, } /// The input over `stage`, at the import's `time` (`None` reads default @@ -70,9 +75,11 @@ pub(super) fn input_chain(stage: Stage, time: Option, include_unloaded: boo let flat = FlatteningSceneIndex::new(input); let bindings = MaterialBindingResolvingSceneIndex::new(flat, Some(membership)); let chain = RenderSettingsFlatteningSceneIndex::new(bindings); + let inst = moho::chain::input(index.clone()); Input { stage: index, chain, + inst, } } diff --git a/crates/crust-core/src/scene/usd_import/index/walk.rs b/crates/crust-core/src/scene/usd_import/index/walk.rs index c642db653..c1e4dbb96 100644 --- a/crates/crust-core/src/scene/usd_import/index/walk.rs +++ b/crates/crust-core/src/scene/usd_import/index/walk.rs @@ -44,6 +44,7 @@ pub(in crate::scene::usd_import) fn walk( ctx.caches.scene = Some((input.chain.clone(), stage.clone())); ctx.caches.top = Some(top.clone()); ctx.caches.stage_index = Some(input.stage.clone()); + ctx.caches.inst = Some(input.inst.clone()); let mut stack: Vec<(sdf::Path, GMat4, bool, Timing)> = vec![( sdf::Path::abs_root(), GMat4::IDENTITY, @@ -72,6 +73,7 @@ pub(in crate::scene::usd_import) fn walk( ctx.caches.scene = None; ctx.caches.top = None; ctx.caches.stage_index = None; + ctx.caches.inst = None; } /// The children the walk descends into: the index's, less the prototypes diff --git a/crates/crust-core/src/scene/usd_import/instancing.rs b/crates/crust-core/src/scene/usd_import/instancing.rs index 7d50c9395..7c1e2df89 100644 --- a/crates/crust-core/src/scene/usd_import/instancing.rs +++ b/crates/crust-core/src/scene/usd_import/instancing.rs @@ -76,6 +76,60 @@ pub(super) enum ProtoPlace { Unshared(GMat4), } +/// A prototype as the instancing reader finds it: its root in the input's +/// instancing chain — Moho's propagated prototype +/// (`MohoNiPropagatedPrototypes///prototype`) or a point +/// instancer's `ForInstancer` copy — which keys its cached parts, and the USD +/// prim it comes from (`/__Prototype_N`, or the instancer's target), which +/// names it in warnings and at which its prims are read until Moho's M11 +/// re-roots the path values inside propagated prototypes. +#[derive(Clone, Debug)] +pub(super) struct ProtoRoot { + pub(super) index: sdf::Path, + pub(super) usd: sdf::Path, + /// Whether `index` is a prim of the instancing chain. Not for a + /// prototype reached through an instance proxy (a point instancer inside + /// an instance, walked by its proxy path): the chain holds no proxies, so + /// it is walked on the stage, as before. + pub(super) in_index: bool, +} + +impl ProtoRoot { + /// The USD path of the prim at `path` under the index root. + fn usd_of(&self, path: &sdf::Path) -> sdf::Path { + if path == &self.index { + return self.usd.clone(); + } + path.as_str() + .strip_prefix(self.index.as_str()) + .and_then(|rest| sdf::Path::new(format!("{}{rest}", self.usd).as_str()).ok()) + .unwrap_or_else(|| path.clone()) + } + + /// A root named by its USD path alone, where the instancing chain gives + /// no other (read as before). + fn usd(path: &sdf::Path) -> Self { + ProtoRoot { + index: path.clone(), + usd: path.clone(), + in_index: false, + } + } +} + +/// The children the prototype walk descends into, from the instancing +/// chain: the prim's own, less the scopes Moho propagates nested instances' +/// prototypes into (reached through their instances). +fn proto_children(caches: &ImportCaches<'_>, path: &sdf::Path) -> Vec { + let Some(inst) = &caches.inst else { + return Vec::new(); + }; + inst.children(path) + .into_iter() + .filter(|c| c.name() != Some(moho::tokens::instancing::PROPAGATED_ROOT)) + .collect() +} + /// What a hit on one geometry of a [`ProtoPart`] resolves to: the material /// and texture tables `World` keys by `geom_id`. #[derive(Clone)] @@ -181,11 +235,12 @@ impl ProtoPart { /// "geometry that exists only to be instanced". pub(super) fn collect_proto_parts( stage: &Stage, - root: &Prim, + proto: &ProtoRoot, caches: &mut ImportCaches<'_>, depth: usize, place: ProtoPlace, ) -> Vec { + let root = &prim_at(stage, proto.usd.clone()); let mut parts = Vec::new(); if depth > MAX_INSTANCE_NESTING { warning!( @@ -196,14 +251,30 @@ pub(super) fn collect_proto_parts( ); return parts; } - let mut stack: Vec<(Prim, GMat4)> = vec![(root.clone(), GMat4::IDENTITY)]; + // Walked in the instancing chain, each prim read at its USD path. + // A root that is itself an instance (a point instancer's prototype + // authored instanceable) holds no children in the chain, which does not + // populate instance proxies: its proxies are walked on the stage, as + // before. + let on_stage = !proto.in_index || root.is_instance().unwrap_or(false); + let start = if on_stage { + proto.usd.clone() + } else { + proto.index.clone() + }; + let mut stack: Vec<(sdf::Path, GMat4, bool)> = vec![(start, GMat4::IDENTITY, on_stage)]; // Mesh parts found by the walk, as (index into `parts`, mesh slot). Their // kernel scenes are built together once the walk is done — in parallel, // see `MeshArena::commit_slots` — and each part holds a placeholder until // then. let mut pending_meshes: Vec<(usize, u32)> = Vec::new(); - while let Some((prim, parent_local)) = stack.pop() { + while let Some((at, parent_local, on_stage)) = stack.pop() { + let prim = if on_stage { + prim_at(stage, at.clone()) + } else { + prim_at(stage, proto.usd_of(&at)) + }; if prototype_prunes(&prim, root, true) { continue; } @@ -222,6 +293,16 @@ pub(super) fn collect_proto_parts( if prim.path() != root.path() && prim.is_instance().unwrap_or(false) { match prim.prototype() { Ok(Some(inner)) => { + let inner = match caches.inst.as_ref().and_then(|inst| { + super::index::instancers::native_prototype(inst.as_ref(), &at) + }) { + Some(index) => ProtoRoot { + index, + usd: inner, + in_index: true, + }, + None => ProtoRoot::usd(&inner), + }; let inner_parts = prototype_parts(stage, &inner, caches, depth + 1); parts.extend(inner_parts.iter().map(|part| ProtoPart { local: this_local * part.local, @@ -388,6 +469,7 @@ pub(super) fn collect_proto_parts( parts.extend(nested_instancer_parts( stage, &prim, + &at, this_local, mask, caches, @@ -400,10 +482,17 @@ pub(super) fn collect_proto_parts( caches.unread.saw(&prim); } - if let Ok(children) = prim.children() { - for child in children { - stack.push((child, this_local)); - } + let children = if !on_stage { + proto_children(caches, &at) + } else { + prim.children() + .unwrap_or_default() + .iter() + .map(|c| c.path().clone()) + .collect() + }; + for child in children { + stack.push((child, this_local, on_stage)); } } // Committing is also what marks each slot as ineligible for baking, so a @@ -488,6 +577,7 @@ fn placeholder_scene() -> Arc { fn nested_instancer_parts( stage: &Stage, prim: &Prim, + at: &sdf::Path, local: GMat4, mask: RayMask, caches: &mut ImportCaches<'_>, @@ -523,10 +613,11 @@ fn nested_instancer_parts( } else { (0..layout.targets.len()).map(|k| (k, None)).collect() }; + let roots = proto_roots(caches, at, &layout.targets); let groups: BTreeMap<(usize, Option), Option> = versions .into_iter() .map(|(k, placed)| { - let target = &layout.targets[k]; + let target = &roots[k]; let group = match (placed, place) { (Some(i), ProtoPlace::Unshared(world)) => { let inner = world * local * layout.placements[i].1; @@ -654,11 +745,11 @@ fn group_parts(parts: &[ProtoPart]) -> Option { /// built. fn prototype_group( stage: &Stage, - proto_path: &sdf::Path, + proto_path: &ProtoRoot, caches: &mut ImportCaches<'_>, depth: usize, ) -> Option { - let key = (caches.epoch, proto_path.to_string()); + let key = (caches.epoch, proto_path.index.to_string()); if let Some(group) = caches.groups.get(&key) { return group.clone(); } @@ -672,7 +763,7 @@ fn prototype_group( /// root frame to world) and not cached: no other placement can use it. fn unshared_group( stage: &Stage, - proto_path: &sdf::Path, + proto_path: &ProtoRoot, caches: &mut ImportCaches<'_>, depth: usize, world: GMat4, @@ -685,7 +776,7 @@ fn unshared_group( /// [`TOP_LEVEL_GROUP_MIN_PARTS`] parts, else its parts one instance each. fn placed_parts( stage: &Stage, - proto_path: &sdf::Path, + proto_path: &ProtoRoot, caches: &mut ImportCaches<'_>, place: ProtoPlace, ) -> Arc> { @@ -744,7 +835,19 @@ pub(super) fn emit_native_instance( } else { ProtoPlace::Shared }; - let parts = placed_parts(stage, proto_path, caches, place); + let root = match caches + .inst + .as_ref() + .and_then(|inst| super::index::instancers::native_prototype(inst.as_ref(), prim.path())) + { + Some(index) => ProtoRoot { + index, + usd: proto_path.clone(), + in_index: true, + }, + None => ProtoRoot::usd(proto_path), + }; + let parts = placed_parts(stage, &root, caches, place); let first = world.count(); let motion = prim_motion_translate(prim); attach_proto_parts( @@ -983,17 +1086,41 @@ fn read_instancer(prim: &PrimData, report: bool) -> Option { }) } +/// The prototype roots a point instancer at `at` (in the instancing chain) +/// places, one per target: its `ForInstancer` copies, named by the targets +/// they copy (`primOrigin`'s USD source, in the targets' order). +fn proto_roots(caches: &ImportCaches<'_>, at: &sdf::Path, targets: &[sdf::Path]) -> Vec { + let copies = caches + .inst + .as_ref() + .map(|inst| super::index::instancers::instancer_prototypes(inst.as_ref(), at)) + .unwrap_or_default(); + targets + .iter() + .enumerate() + .map(|(k, target)| match copies.get(k) { + Some(index) => ProtoRoot { + index: index.clone(), + usd: target.clone(), + in_index: true, + }, + None => ProtoRoot::usd(target), + }) + .collect() +} + /// A prototype's parts, from the cache or freshly built. fn prototype_parts( stage: &Stage, - proto_path: &sdf::Path, + proto_path: &ProtoRoot, caches: &mut ImportCaches<'_>, depth: usize, ) -> Arc> { - let key = (caches.epoch, proto_path.to_string()); + let key = (caches.epoch, proto_path.index.to_string()); if let Some(parts) = caches.protos.get(&key) { debug!( - "Prototype {} (epoch {}): reusing {} cached part(s)", + "Prototype {} ({}, epoch {}): reusing {} cached part(s)", + proto_path.usd, key.1, key.0, parts.len() @@ -1014,7 +1141,7 @@ fn prototype_parts( /// A prototype's parts built for its one placement, uncached. fn unshared_parts( stage: &Stage, - proto_path: &sdf::Path, + proto_path: &ProtoRoot, caches: &mut ImportCaches<'_>, depth: usize, world: GMat4, @@ -1030,14 +1157,14 @@ fn unshared_parts( fn build_parts( stage: &Stage, - proto_path: &sdf::Path, + root: &ProtoRoot, caches: &mut ImportCaches<'_>, depth: usize, place: ProtoPlace, ) -> Vec { let started = Instant::now(); - let root = prim_at(stage, proto_path.clone()); - let parts = collect_proto_parts(stage, &root, caches, depth, place); + let proto_path = &root.usd; + let parts = collect_proto_parts(stage, root, caches, depth, place); if parts.is_empty() { warning!( InstancingEmptyPrototype, @@ -1046,8 +1173,8 @@ fn build_parts( ); } else { debug!( - "Prototype {proto_path} (epoch {}, nesting depth {depth}, {}): built {} part(s) in {:?}", - caches.epoch, + "Prototype {proto_path} ({}, nesting depth {depth}, {}): built {} part(s) in {:?}", + root.index, match place { ProtoPlace::Shared => "shared", ProtoPlace::Unshared(_) => "placed once", @@ -1110,6 +1237,7 @@ pub(super) fn emit_point_instancer( .meshes .primvars .report_placement(&caches.prim_data(prim.path()), "the PointInstancer"); + let roots = proto_roots(caches, prim.path(), &layout.targets); // The version of its prototype each placement draws: the shared one, or — // in adaptive mode, for a target this instancer places once — one built // for that placement. @@ -1159,10 +1287,7 @@ pub(super) fn emit_point_instancer( Some(i) => ProtoPlace::Unshared(world_xf * layout.placements[i].1), None => ProtoPlace::Shared, }; - ( - (k, placed), - placed_parts(stage, &layout.targets[k], caches, place), - ) + ((k, placed), placed_parts(stage, &roots[k], caches, place)) }) .collect(); diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index 1a1fb542c..f51e419e3 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -2016,9 +2016,11 @@ struct ImportCaches<'a> { /// until its representation is decided (see [`flush_meshes`]), then its /// committed kernel scene if it needed one. meshes: MeshArena, - /// `(epoch, prototype path)` → its shared parts, for both instancing - /// mechanisms. See [`ImportCaches::epoch`] for the epoch. A prototype placed - /// once in adaptive mode is built for its placement and not cached here. + /// `(epoch, prototype root in the instancing chain)` → its shared parts, + /// for both instancing mechanisms: Moho's propagated prototype path. The + /// epoch stays until dropping it (reusing parts across streamed chunks) + /// is agreed: it changes digests. A prototype placed once in adaptive + /// mode is built for its placement and not cached here. protos: HashMap<(u32, String), Arc>>, /// The same prototypes as one [`ProtoPart`] each (see /// `instancing::group_parts`), `None` for one with no geometry. Same keys @@ -2061,6 +2063,9 @@ struct ImportCaches<'a> { /// The walked input's stage scene index, unfiltered, while a walk runs: /// the local `xform` before the flattening ([`xform::compose_index`]). stage_index: Option, + /// The walked input's instancing chain while a walk runs + /// ([`index::Input::inst`]): Moho's instancers and their prototypes. + inst: Option, /// Root layer, the fallback anchor for an asset path openusd handed back /// unresolved. stage_path: &'a Path, @@ -2195,6 +2200,7 @@ impl<'a> ImportCaches<'a> { scene: None, top: None, stage_index: None, + inst: None, } } From ff152cf3836c0e8743f05aa075411970c2660d6b Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 18:00:34 +0100 Subject: [PATCH 61/95] deps: moho at e64f228 (M11 re-rooting, nested point instancers, openusd through moho) Same openusd (doubleailes/openusd d7d2a29); the debug suite (2661) equals its baselines, and the image run differs only by the guided Cornell box's known nondeterminism, met this time through warnings.rs (next commit). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e2e123084..0913ea5e8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1285,7 +1285,7 @@ dependencies = [ [[package]] name = "moho" version = "0.1.0" -source = "git+https://github.com/doubleailes/Moho?rev=788b1ac5354898277c3488532f58e0ca6d8ab9bb#788b1ac5354898277c3488532f58e0ca6d8ab9bb" +source = "git+https://github.com/doubleailes/Moho?rev=e64f228b032149641c8c9c099c259bd629a2828f#e64f228b032149641c8c9c099c259bd629a2828f" dependencies = [ "openusd", "openusd-schemas", diff --git a/Cargo.toml b/Cargo.toml index 9fd07989e..b04867741 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -94,7 +94,7 @@ openusd-schemas = { version = "0.8", default-features = false } # openusd in the build. Moho re-exports it (`moho::openusd`), and new index-route # code names openusd through that re-export. Bumped with the openusd rev, in the # order written there. -moho = { git = "https://github.com/doubleailes/Moho", rev = "788b1ac5354898277c3488532f58e0ca6d8ab9bb" } +moho = { git = "https://github.com/doubleailes/Moho", rev = "e64f228b032149641c8c9c099c259bd629a2828f" } # The hot loops are spread across crates: the integrator in `crust-core` # calls the kernel in `crust-rt`, which calls `glam`'s SIMD vector ops. From 9292efe81a281e596832480bef81e73b216cb95f Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 18:00:34 +0100 Subject: [PATCH 62/95] parity: the image run also lists warnings.rs's determinism test, for the guided Cornell box sample_imports_are_deterministic imports every sample, cornellbox_guided included, so in image mode it meets the guided render's nondeterminism (the same other hash, f6f5fd5abefe9f33, in about 1 run in 3 here; it passes when rerun). The cause is the follow-up already recorded. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- scripts/parity_images.expected | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/parity_images.expected b/scripts/parity_images.expected index fb11e3c92..0074bcccb 100644 --- a/scripts/parity_images.expected +++ b/scripts/parity_images.expected @@ -23,5 +23,6 @@ preview_textures_anchor_on_their_layer_and_read_the_named_primvar preview_textures_reach_the_host_with_their_source_color_space products_that_disagree_on_depth_of_field_render_with_the_first ptex_load_time_is_billed_to_the_asset_phase +sample_imports_are_deterministic # imports cornellbox_guided.usda, whose guided render is nondeterministic (see guided_tiles_and_rows_are_bit_identical) tests_ffi::a_panicking_material_during_a_render_is_an_error_and_the_next_apply_renders the_documented_look_dev_session_runs From b2ded843fc91c2d1068550b787c1836f8a2930b2 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 18:22:32 +0100 Subject: [PATCH 63/95] deps: crust reaches openusd only through moho Moho's re-exports (moho::openusd, moho::openusd_schemas) are now the one way in: the workspace drops its openusd and openusd-schemas entries and the [patch.crates-io], and each file that names them adds a use of the re-export. Features map to Moho's: crust-core's mmap is moho/mmap and its schema families moho's skel, proc and media; crust-render's session takes an optional moho, and mcp adds moho/serde. crust-hydra's unused openusd dependency goes. one_openusd.rs now fails if any manifest names openusd directly, and checks a stage built through the re-exports is the one the index takes. CLAUDE.md and the design record the rule. The debug suite (2661) passes. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- CLAUDE.md | 16 ++-- Cargo.lock | 6 +- Cargo.toml | 42 ++-------- crates/crust-core/Cargo.toml | 29 +++---- .../crust-core/src/scene/subdiv/adaptive.rs | 1 + crates/crust-core/src/scene/subdiv/mod.rs | 1 + crates/crust-core/src/scene/subdiv/normals.rs | 1 + crates/crust-core/src/scene/subdiv/uniform.rs | 1 + .../src/scene/usd_import/adaptive.rs | 1 + .../crust-core/src/scene/usd_import/assets.rs | 1 + .../crust-core/src/scene/usd_import/attrs.rs | 1 + .../crust-core/src/scene/usd_import/camera.rs | 3 +- .../src/scene/usd_import/implicit.rs | 1 + .../src/scene/usd_import/index/stage_facts.rs | 1 + .../src/scene/usd_import/instancing.rs | 1 + .../src/scene/usd_import/light_links.rs | 5 +- .../src/scene/usd_import/listing.rs | 1 + .../crust-core/src/scene/usd_import/live.rs | 1 + .../src/scene/usd_import/materials.rs | 1 + .../crust-core/src/scene/usd_import/mesh.rs | 5 +- crates/crust-core/src/scene/usd_import/mod.rs | 1 + .../src/scene/usd_import/mtlx_network.rs | 1 + .../src/scene/usd_import/precomp.rs | 1 + .../src/scene/usd_import/products.rs | 1 + .../crust-core/src/scene/usd_import/time.rs | 1 + .../crust-core/src/scene/usd_import/xform.rs | 1 + crates/crust-core/tests/one_openusd.rs | 82 ++++++++++--------- crates/crust-core/tests/usd_layers.rs | 1 + crates/crust-core/tests/usd_products.rs | 1 + crates/crust-core/tests/usd_scene.rs | 1 + crates/crust-hydra/Cargo.toml | 2 - crates/crust-render/Cargo.toml | 19 ++--- crates/crust-render/examples/mass_spike.rs | 1 + crates/crust-render/examples/proto_probe.rs | 1 + crates/crust-render/examples/ptex_verify.rs | 1 + crates/crust-render/examples/rel_probe.rs | 1 + crates/crust-render/examples/xform_probe.rs | 1 + crates/crust-render/src/mcp/edit.rs | 1 + crates/crust-render/src/mcp/place.rs | 1 + crates/crust-render/src/mcp/query.rs | 1 + crates/crust-render/src/mcp/session.rs | 1 + crates/crust-render/src/mcp/tests.rs | 1 + crates/crust-render/src/session/delta.rs | 1 + crates/crust-render/src/session/layer.rs | 1 + crates/crust-render/src/session/live.rs | 1 + crates/crust-render/src/session/mod.rs | 1 + crates/crust-render/tests/mcp.rs | 1 + openspec/changes/moho-import/design.md | 10 +++ 48 files changed, 137 insertions(+), 119 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index b90ac18dd..9c009070d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -19,14 +19,14 @@ which every stage must be opened with — `usd_import::stage_builder()`). The im moving onto [Moho](https://github.com/doubleailes/Moho), a Hydra-2.0-style scene index over openusd that Mantle's IPR and Obsidian also consume (`openspec/changes/moho-import`). Do not add loaders for any other scene or mesh format. -**One openusd across the stack, pinned by rev.** `[patch.crates-io]` in the workspace -`Cargo.toml` pins openusd and openusd-schemas by `rev` to the exact commit Moho pins, and -`moho` is pinned by `rev` in `[workspace.dependencies]`. A `branch` and a `rev` are two -Cargo sources even at one commit, so any mismatch puts two openusd copies in the build; -`crust-core/tests/one_openusd.rs` then stops compiling. Bump in order: **Moho, then -crust-render (both revs), then Mantle**; `cargo update -p openusd` does not move the pin. -New import code names openusd through Moho's re-exports (`moho::openusd`, -`moho::openusd_schemas`). To co-develop with a local Moho checkout, pass a Cargo config +**openusd only through Moho.** No crate depends on `openusd` or `openusd-schemas` +itself: every crate names them as `moho::openusd` and `moho::openusd_schemas` (a file +adds `use moho::openusd;`), so Moho's pin is the stack's and the build carries one +openusd by construction; `crust-core/tests/one_openusd.rs` fails if a manifest names +openusd directly. openusd's features are Moho's: `moho/mmap`, `moho/serde`, and the +schema families (`skel`, `proc`, `media`, …; `geom`, `lux`, `render`, `shade`, `vol` are +always on). `moho` is pinned by `rev` in `[workspace.dependencies]`; bump in order: +**Moho, then crust-render, then Mantle**. To co-develop with a local Moho checkout, pass a Cargo config file with a path patch rather than editing `.cargo/config.toml` (it is tracked): ```bash diff --git a/Cargo.lock b/Cargo.lock index 0913ea5e8..a5f38c0f9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -609,8 +609,6 @@ dependencies = [ "ocio", "openqmc-rs", "opensubdiv-rs", - "openusd", - "openusd-schemas", "rayon", "serde", "serde_json", @@ -625,7 +623,6 @@ dependencies = [ "crust-assets", "crust-core", "crust-render", - "openusd", "tracing", ] @@ -671,8 +668,7 @@ dependencies = [ "glam", "image", "indicatif", - "openusd", - "openusd-schemas", + "moho", "ptex-rust", "rmcp", "schemars", diff --git a/Cargo.toml b/Cargo.toml index b04867741..95e3e6cb0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -80,20 +80,15 @@ half = "2.7" # converts them into the working space (`crust_core::color`). From crates.io # (doubleailes/ocio-rs#2); the committed `Cargo.lock` pins the exact version. ocio = "0.2.0" -# The USD reader and its typed schema views, versioned in lockstep. Declared -# once so crust-core (the import) and crust-render (the MCP session's override -# layer, the probe examples) can never name different versions of the stage -# they share; `[patch.crates-io]` below swaps both for one GitHub rev. No -# default features (openusd has none since 0.8): each member adds the ones it -# needs — crust-core's `mmap` and schema families, crust-render's `serde`. -openusd = { version = "0.8", default-features = false } -openusd-schemas = { version = "0.8", default-features = false } -# Moho, the Hydra-2.0-style scene index over openusd that the index import route -# (`CRUST_USD_IMPORT=index`) reads the stage through. Pinned by rev; it pins -# openusd at the same rev as `[patch.crates-io]` below, which is what keeps one -# openusd in the build. Moho re-exports it (`moho::openusd`), and new index-route -# code names openusd through that re-export. Bumped with the openusd rev, in the -# order written there. +# Moho, the Hydra-2.0-style scene index over openusd that the import reads the +# stage through, pinned by rev. It is also the only way crust reaches openusd: +# every crate names `moho::openusd` and `moho::openusd_schemas`, so Moho's pin +# is the stack's and there is one openusd in the build by construction +# (`crust-core/tests/one_openusd.rs` fails if a crate depends on openusd +# directly). openusd's features are Moho's: `mmap`, `serde`, and the schema +# families `media`, `physics`, `proc`, `semantics`, `skel`, `ui` (`geom`, `lux`, +# `render`, `shade`, `vol` are always on). Bump order: Moho, then crust-render, +# then Mantle. moho = { git = "https://github.com/doubleailes/Moho", rev = "e64f228b032149641c8c9c099c259bd629a2828f" } # The hot loops are spread across crates: the integrator in `crust-core` @@ -149,22 +144,3 @@ codegen-units = 1 inherits = "release" panic = "unwind" -# openusd is pinned by `rev` to the exact commit Moho pins (Moho's root -# Cargo.toml), not tracked by `branch = "main"`: Cargo identifies a git source -# by URL plus reference, so `?branch=main` and `?rev=…` are two packages even at -# one commit, and the build would carry two openusd copies — one for Moho's -# scene index, one for crust. `tests/one_openusd.rs` in crust-core stops -# compiling if that ever happens. A patch rather than a `git =` in -# `[workspace.dependencies]`, so the requirement stays the release's `0.8` and -# dropping this section is the whole revert to it. -# -# The source is the fork Moho pins (`doubleailes/openusd`, upstream plus the -# clip fixes of mxpv/openusd#175): a git source is URL plus reference, so the -# URL must match Moho's too. -# -# One rev across the stack: Moho, crust-render and Mantle all resolve this -# commit. Bump in order — Moho, then crust-render (this rev *and* the `moho` -# rev above), then Mantle. `cargo update -p openusd` no longer moves it. -[patch.crates-io] -openusd = { git = "https://github.com/doubleailes/openusd", rev = "d7d2a29406871508b6ec3ffe9173a5941b1c6123" } -openusd-schemas = { git = "https://github.com/doubleailes/openusd", rev = "d7d2a29406871508b6ec3ffe9173a5941b1c6123" } diff --git a/crates/crust-core/Cargo.toml b/crates/crust-core/Cargo.toml index 7cc4a0db5..52bcd0923 100644 --- a/crates/crust-core/Cargo.toml +++ b/crates/crust-core/Cargo.toml @@ -25,8 +25,8 @@ jit = ["dep:crust-jit"] # `unsafe`, which this feature alone compiles. Off here and on in the # renderer, like `jit`; `CRUST_USD_MMAP=0` turns it off at run time. # openusd's own `mmap`, and with it `memmap2`, is compiled in only with this -# feature: openusd has no default features since 0.8. -mmap = ["openusd/mmap"] +# feature, forwarded through Moho: openusd has no default features since 0.8. +mmap = ["moho/mmap"] # Test-only: every import is compared with the baseline recorded from the # direct importer (`src/parity.rs`, the `moho-import` change). Turned on for # this crate's tests by the dev-dependency on itself below, and for @@ -40,21 +40,16 @@ crust-rt = { path = "../crust-rt" } rayon.workspace = true glam.workspace = true tracing.workspace = true -openusd.workspace = true -# The typed schema views (UsdGeom / UsdLux / UsdShade / UsdRender) left the -# core crate in openusd 0.7 and ship separately, versioned in lockstep. UsdSkel, -# UsdVol, UsdProc and UsdMedia are compiled in for their types alone: the import -# composes a prim's xformOps only when the schema registry knows it is -# Xformable, and a SkelRoot, Volume, GenerativeProcedural or SpatialAudio from a -# family left out is unknown, so its transform would be dropped. With them, -# every Xformable type C++ USD defines is known (the remaining families, -# UsdPhysics, UsdUI and UsdSemantics, define none). -openusd-schemas = { workspace = true, features = ["geom", "lux", "shade", "render", "skel", "vol", "proc", "media"] } -# The scene index the index import route reads the stage through -# (`scene/usd_import/index/`). It depends on the same openusd rev as the patch in -# the workspace Cargo.toml, so `moho::openusd` and `openusd` are one crate -# (`tests/one_openusd.rs`). -moho.workspace = true +# The scene index the import reads the stage through (`scene/usd_import/`), and +# crust's one way to openusd and its typed schema views (`moho::openusd`, +# `moho::openusd_schemas`). UsdGeom, UsdLux, UsdShade, UsdRender and UsdVol are +# always on in Moho; UsdSkel, UsdProc and UsdMedia are compiled in for their +# types alone: the import composes a prim's xformOps only when the schema +# registry knows it is Xformable, and a SkelRoot, GenerativeProcedural or +# SpatialAudio from a family left out is unknown, so its transform would be +# dropped. With them, every Xformable type C++ USD defines is known (UsdPhysics, +# UsdUI and UsdSemantics define none). +moho = { workspace = true, features = ["skel", "proc", "media"] } # Pure-Rust OpenSubdiv port (Far topology refinement + Sdc rules) driving # Catmull-Clark subdivision at USD import: zero dependencies, # `forbid(unsafe_code)`. Pinned to a release tag; the committed `Cargo.lock` diff --git a/crates/crust-core/src/scene/subdiv/adaptive.rs b/crates/crust-core/src/scene/subdiv/adaptive.rs index afcdc3689..33475fd60 100644 --- a/crates/crust-core/src/scene/subdiv/adaptive.rs +++ b/crates/crust-core/src/scene/subdiv/adaptive.rs @@ -1,6 +1,7 @@ //! Per-face adaptive tessellation on the limit surface. use glam::Vec3A; +use moho::openusd; use opensubdiv_rs::far::{ FVarChannelDescriptor, PrimvarRefiner, TopologyDescriptor, TopologyRefinerFactory, }; diff --git a/crates/crust-core/src/scene/subdiv/mod.rs b/crates/crust-core/src/scene/subdiv/mod.rs index 87a356225..6e7e9965c 100644 --- a/crates/crust-core/src/scene/subdiv/mod.rs +++ b/crates/crust-core/src/scene/subdiv/mod.rs @@ -32,6 +32,7 @@ //! [`opensubdiv-rs`]: https://github.com/doubleailes/OpenSubdiv-rs //! [`FVarLinearInterpolation`]: sdc::FVarLinearInterpolation +use moho::openusd; mod adaptive; mod normals; #[cfg(test)] diff --git a/crates/crust-core/src/scene/subdiv/normals.rs b/crates/crust-core/src/scene/subdiv/normals.rs index 1295c1c61..71fb9ba9d 100644 --- a/crates/crust-core/src/scene/subdiv/normals.rs +++ b/crates/crust-core/src/scene/subdiv/normals.rs @@ -1,6 +1,7 @@ //! Smooth per-vertex shading normals, for refined meshes and unrefined cages. use glam::Vec3A; +use moho::openusd; use openusd::gf::Vec3f; use super::topology::validate_cage; diff --git a/crates/crust-core/src/scene/subdiv/uniform.rs b/crates/crust-core/src/scene/subdiv/uniform.rs index 1ec411ba7..6fe789e93 100644 --- a/crates/crust-core/src/scene/subdiv/uniform.rs +++ b/crates/crust-core/src/scene/subdiv/uniform.rs @@ -1,5 +1,6 @@ //! Uniform refinement: the cage refined to one level and snapped to the limit. +use moho::openusd; use opensubdiv_rs::far::{ FVarChannelDescriptor, PrimvarRefiner, TopologyDescriptor, TopologyRefinerFactory, UniformOptions, diff --git a/crates/crust-core/src/scene/usd_import/adaptive.rs b/crates/crust-core/src/scene/usd_import/adaptive.rs index e7dae4c03..86b3992ea 100644 --- a/crates/crust-core/src/scene/usd_import/adaptive.rs +++ b/crates/crust-core/src/scene/usd_import/adaptive.rs @@ -9,6 +9,7 @@ //! `openspec/specs/usd-scene-import/design.md`. use glam::{DMat3, Mat3, Mat4 as GMat4, Vec3}; +use moho::openusd; use openusd::gf::Vec3f; /// Below this a distance, a stretch or an edge length is treated as zero. diff --git a/crates/crust-core/src/scene/usd_import/assets.rs b/crates/crust-core/src/scene/usd_import/assets.rs index bd71e963c..78f7540e1 100644 --- a/crates/crust-core/src/scene/usd_import/assets.rs +++ b/crates/crust-core/src/scene/usd_import/assets.rs @@ -5,6 +5,7 @@ //! crust-core decodes nothing itself. use crate::record_warning; +use moho::openusd; use std::collections::{HashMap, HashSet}; use std::fmt::Display; use std::hash::Hash; diff --git a/crates/crust-core/src/scene/usd_import/attrs.rs b/crates/crust-core/src/scene/usd_import/attrs.rs index 9f0f9b3bb..e42fe7550 100644 --- a/crates/crust-core/src/scene/usd_import/attrs.rs +++ b/crates/crust-core/src/scene/usd_import/attrs.rs @@ -4,6 +4,7 @@ use crate::warning; use glam::{Vec3, Vec3A}; +use moho::openusd; use openusd::gf::Vec3f; use openusd::sdf; use openusd::usd::{Attribute, Prim}; diff --git a/crates/crust-core/src/scene/usd_import/camera.rs b/crates/crust-core/src/scene/usd_import/camera.rs index 96629248b..5f5a10dfc 100644 --- a/crates/crust-core/src/scene/usd_import/camera.rs +++ b/crates/crust-core/src/scene/usd_import/camera.rs @@ -3,6 +3,7 @@ use glam::{Mat4 as GMat4, Vec3, Vec3A}; use moho::openusd::sdf; use moho::openusd::usd::{Prim, Stage}; +use moho::openusd_schemas; use moho::scene_index::SceneIndex; use moho::tokens::prim_type; use openusd_schemas::render::{AspectRatioConformPolicy, conform_aperture}; @@ -797,7 +798,7 @@ mod tests { use super::*; use crate::scene::usd_import::settings::CameraChoice; use crate::scene::usd_import::{read_camera_ahead, stage_builder}; - use openusd::usd::InitialLoadSet; + use moho::openusd::usd::InitialLoadSet; // The readers take a scene index; these build one over the test's stage, // so each test reads its camera as the import does. diff --git a/crates/crust-core/src/scene/usd_import/implicit.rs b/crates/crust-core/src/scene/usd_import/implicit.rs index ec09821a1..a7b3676b2 100644 --- a/crates/crust-core/src/scene/usd_import/implicit.rs +++ b/crates/crust-core/src/scene/usd_import/implicit.rs @@ -17,6 +17,7 @@ //! shapes" in `openspec/specs/usd-scene-import/design.md`. use crate::warning; +use moho::{openusd, openusd_schemas}; use std::collections::BTreeMap; use std::f64::consts::{FRAC_PI_2, PI, TAU}; diff --git a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs index 73cfbb503..e35bf12bd 100644 --- a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs +++ b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs @@ -9,6 +9,7 @@ //! the time range's authored-ness, from the absolute root's //! `__usdStageMetadata` ([`time_range`]). +use moho::openusd; use std::path::Path; use moho::data_source::locate; diff --git a/crates/crust-core/src/scene/usd_import/instancing.rs b/crates/crust-core/src/scene/usd_import/instancing.rs index 7c1e2df89..16effc9d8 100644 --- a/crates/crust-core/src/scene/usd_import/instancing.rs +++ b/crates/crust-core/src/scene/usd_import/instancing.rs @@ -19,6 +19,7 @@ //! (`docs/moana_profile.md`). use crate::warning; +use moho::openusd; use std::sync::Arc; use std::time::Instant; diff --git a/crates/crust-core/src/scene/usd_import/light_links.rs b/crates/crust-core/src/scene/usd_import/light_links.rs index 1736459bc..025d5c6cd 100644 --- a/crates/crust-core/src/scene/usd_import/light_links.rs +++ b/crates/crust-core/src/scene/usd_import/light_links.rs @@ -35,6 +35,7 @@ //! its camera-visible geometry. use crate::warning; +use moho::openusd; use std::collections::HashMap; use moho::scene_index::SceneIndexHandle; @@ -733,8 +734,8 @@ mod tests { /// chunks, every input present (`chain::merged`'s shape). What would let /// crust read `categories` instead (the open question). mod agreement { + use moho::openusd::sdf; use moho::scene_index::SceneIndex; - use openusd::sdf; use super::super::{Membership, link_query}; use crate::scene::usd_import::index::data::PrimData; @@ -825,7 +826,7 @@ def Xform "World" let file = write("streamed"); let name = file.to_str().unwrap(); let index = stage_builder() - .load(openusd::usd::InitialLoadSet::LoadNone) + .load(moho::openusd::usd::InitialLoadSet::LoadNone) .open(name) .unwrap(); let streamed = Streamed::new(input_chain(index, None, true), None); diff --git a/crates/crust-core/src/scene/usd_import/listing.rs b/crates/crust-core/src/scene/usd_import/listing.rs index 73fd3b5ca..d9d9855a9 100644 --- a/crates/crust-core/src/scene/usd_import/listing.rs +++ b/crates/crust-core/src/scene/usd_import/listing.rs @@ -9,6 +9,7 @@ //! the import refuses for its evaluated values (a zero radius, a transform //! that collapses it) is still listed; see [`ListKind::Light`]. +use moho::{openusd, openusd_schemas}; use std::collections::HashSet; use std::path::Path; use std::time::Instant; diff --git a/crates/crust-core/src/scene/usd_import/live.rs b/crates/crust-core/src/scene/usd_import/live.rs index 8eb8fde11..260d5a2ae 100644 --- a/crates/crust-core/src/scene/usd_import/live.rs +++ b/crates/crust-core/src/scene/usd_import/live.rs @@ -9,6 +9,7 @@ //! of the streaming import is, or the payload-free index stage for the //! settings. +use moho::{openusd, openusd_schemas}; use std::path::Path; use std::sync::Arc; diff --git a/crates/crust-core/src/scene/usd_import/materials.rs b/crates/crust-core/src/scene/usd_import/materials.rs index fba04648b..6de04270f 100644 --- a/crates/crust-core/src/scene/usd_import/materials.rs +++ b/crates/crust-core/src/scene/usd_import/materials.rs @@ -3,6 +3,7 @@ //! `PxrDisneyBsdf` and MaterialX references. use crate::warning; +use moho::{openusd, openusd_schemas}; use std::collections::HashMap; use std::sync::Arc; use std::time::Instant; diff --git a/crates/crust-core/src/scene/usd_import/mesh.rs b/crates/crust-core/src/scene/usd_import/mesh.rs index 955670344..040998e5d 100644 --- a/crates/crust-core/src/scene/usd_import/mesh.rs +++ b/crates/crust-core/src/scene/usd_import/mesh.rs @@ -3,6 +3,7 @@ //! (Ptex faces, UVs, texture density). use crate::warning; +use moho::openusd_schemas; use std::collections::HashMap; use std::hash::{Hash, Hasher}; use std::sync::Arc; @@ -3461,7 +3462,7 @@ mod displacement_tests { use crate::material::{DisplacementValue, OpenPBR}; use crate::scene::usd_import::stage_builder; use crate::{PtexRef, PtexTexture, Texture2D, TextureRef}; - use openusd::usd::Stage; + use moho::openusd::usd::Stage; /// A texture that jumps between neighbouring UV islands: every value /// differs on either side of a seam. @@ -3980,7 +3981,7 @@ def Mesh "G" (stage, sdf::path("/G").unwrap()) } - use openusd::usd::Stage; + use moho::openusd::usd::Stage; /// The mesh read under `policy` with a face table, and its triangles' /// cage faces. diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index f51e419e3..7915cefa5 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -35,6 +35,7 @@ //! that matters. use crate::warning; +use moho::{openusd, openusd_schemas}; use std::collections::HashMap; use std::path::Path; use std::sync::Arc; diff --git a/crates/crust-core/src/scene/usd_import/mtlx_network.rs b/crates/crust-core/src/scene/usd_import/mtlx_network.rs index 1725eb856..44e01a983 100644 --- a/crates/crust-core/src/scene/usd_import/mtlx_network.rs +++ b/crates/crust-core/src/scene/usd_import/mtlx_network.rs @@ -25,6 +25,7 @@ //! translated document is expanded against that library //! ([`crust_mtlx::Doc::expand`]), as a `.mtlx` is. +use moho::openusd; use std::collections::{BTreeSet, HashMap, HashSet}; use std::path::Path; diff --git a/crates/crust-core/src/scene/usd_import/precomp.rs b/crates/crust-core/src/scene/usd_import/precomp.rs index b69281ec8..f3773d919 100644 --- a/crates/crust-core/src/scene/usd_import/precomp.rs +++ b/crates/crust-core/src/scene/usd_import/precomp.rs @@ -9,6 +9,7 @@ //! a refused sample filter's outputs read their clear value, a refused display //! operation passes its input through, and an unbound input reads its default. +use moho::openusd; use std::collections::HashMap; use std::path::Path; use std::sync::Arc; diff --git a/crates/crust-core/src/scene/usd_import/products.rs b/crates/crust-core/src/scene/usd_import/products.rs index 3909f6be6..2c2e25b6a 100644 --- a/crates/crust-core/src/scene/usd_import/products.rs +++ b/crates/crust-core/src/scene/usd_import/products.rs @@ -18,6 +18,7 @@ //! valid. use crate::warning; +use moho::openusd_schemas; use std::cell::RefCell; use std::collections::HashMap; diff --git a/crates/crust-core/src/scene/usd_import/time.rs b/crates/crust-core/src/scene/usd_import/time.rs index 399cc112e..2d67a6c7d 100644 --- a/crates/crust-core/src/scene/usd_import/time.rs +++ b/crates/crust-core/src/scene/usd_import/time.rs @@ -1,5 +1,6 @@ //! Evaluation time: the USD time code every attribute read resolves at. +use moho::openusd; use std::marker::PhantomData; use openusd::usd::TimeCode; diff --git a/crates/crust-core/src/scene/usd_import/xform.rs b/crates/crust-core/src/scene/usd_import/xform.rs index 1853e1aaf..fcc73d879 100644 --- a/crates/crust-core/src/scene/usd_import/xform.rs +++ b/crates/crust-core/src/scene/usd_import/xform.rs @@ -3,6 +3,7 @@ use crate::warning; use glam::{Affine3A, Mat4 as GMat4, Vec3}; +use moho::{openusd, openusd_schemas}; use openusd::gf::Mat4d; use openusd::tf::Token; use openusd::usd::Prim; diff --git a/crates/crust-core/tests/one_openusd.rs b/crates/crust-core/tests/one_openusd.rs index 33cc210a1..ed26938f4 100644 --- a/crates/crust-core/tests/one_openusd.rs +++ b/crates/crust-core/tests/one_openusd.rs @@ -1,50 +1,54 @@ -//! One openusd in the build: the stage Moho's scene index reads and the stage -//! crust's direct import reads are the same type. -//! -//! Cargo identifies a git source by URL plus reference, so a patch to openusd's -//! `branch = "main"` and Moho's `rev = "…"` are two packages even at one commit. -//! The workspace patches openusd by the rev Moho pins (`[patch.crates-io]` in -//! the root `Cargo.toml`); if the two ever diverge, this file stops compiling, -//! because `moho::openusd` and `openusd` become different crates. -//! -//! Checked once when the guard was added: with the patch set back to -//! `branch = "main"`, the build carried two openusd packages and this file -//! failed with "mismatched types" (expected `openusd::usd::Stage`, found -//! `moho::openusd::usd::Stage`) — see the `moho-import` change, task 1.3. +//! One openusd in the build, by construction: no crate of the workspace +//! depends on `openusd` or `openusd-schemas` itself. Every crate reaches them +//! through Moho's re-exports (`moho::openusd`, `moho::openusd_schemas`), so +//! the stage Moho's scene index reads and the stage crust's code handles are +//! the same type, at the rev Moho pins. -use std::sync::Arc; +use std::path::{Path, PathBuf}; -/// Takes the workspace's openusd stage. -fn workspace_stage(stage: openusd::usd::Stage) -> openusd::usd::Stage { - stage +/// The workspace's member manifests and the root one. +fn manifests() -> Vec { + let root = Path::new(env!("CARGO_MANIFEST_DIR")).join("../.."); + let mut out = vec![root.join("Cargo.toml")]; + for entry in std::fs::read_dir(root.join("crates")).expect("crates/") { + let manifest = entry.expect("an entry").path().join("Cargo.toml"); + if manifest.exists() { + out.push(manifest); + } + } + out } -/// Takes the workspace's openusd-schemas registry. -fn workspace_registry( - registry: Arc, -) -> Arc { - registry +#[test] +fn no_crate_depends_on_openusd_directly() { + let mut offenders = Vec::new(); + for manifest in manifests() { + let text = std::fs::read_to_string(&manifest).expect("a readable manifest"); + for (n, line) in text.lines().enumerate() { + let line = line.trim_start(); + let key = line.split(['=', '.', ' ']).next().unwrap_or(""); + if matches!(key, "openusd" | "openusd-schemas") { + offenders.push(format!("{}:{}: {line}", manifest.display(), n + 1)); + } + } + } + assert!( + offenders.is_empty(), + "depend on openusd through moho (`moho::openusd`), not directly:\n{}", + offenders.join("\n") + ); } +/// Moho's re-exports are what crust names: a stage built through them is +/// the stage the scene index takes. #[test] -fn moho_and_crust_share_one_openusd() { - // A stage built through Moho's re-export, handed where crust's is expected. - let registry: Arc = - moho::openusd_schemas::schema_registry(); - let registry = workspace_registry(registry); - let stage: moho::openusd::usd::Stage = moho::openusd::usd::Stage::builder() +fn moho_reexports_the_stage_the_index_reads() { + let registry = moho::openusd_schemas::schema_registry(); + let stage = moho::openusd::usd::Stage::builder() .schema_registry(registry) .open("../../samples/cornellbox.usda") .expect("the Cornell box opens"); - let stage = workspace_stage(stage); - assert!(stage.prim("/").is_ok()); -} - -#[test] -fn moho_and_crust_share_one_openusd_schemas() { - // A typed schema view from Moho's openusd-schemas, where crust's is expected. - let as_crust: fn( - Option, - ) -> Option = |mesh| mesh; - assert!(as_crust(None).is_none()); + let index = moho::stage::StageSceneIndex::new(); + index.set_stage(stage); + assert!(index.stage().is_some()); } diff --git a/crates/crust-core/tests/usd_layers.rs b/crates/crust-core/tests/usd_layers.rs index 94bda8f9b..d9ae5194f 100644 --- a/crates/crust-core/tests/usd_layers.rs +++ b/crates/crust-core/tests/usd_layers.rs @@ -2,6 +2,7 @@ //! host watches to see the stage change on disk (`crust mcp`'s session). use crust_core::Scene; +use moho::openusd; use std::path::{Path, PathBuf}; fn work_dir(name: &str) -> PathBuf { diff --git a/crates/crust-core/tests/usd_products.rs b/crates/crust-core/tests/usd_products.rs index 54e25e99e..24187ef66 100644 --- a/crates/crust-core/tests/usd_products.rs +++ b/crates/crust-core/tests/usd_products.rs @@ -7,6 +7,7 @@ use crust_core::{ Accumulation, AovRequest, AovSource, ChannelKind, NoAssets, PixelRect, Precision, PrimvarRole, PrimvarSource, Scene, UsdImportOptions, WarningCode, }; +use moho::{openusd, openusd_schemas}; use std::path::PathBuf; /// A stage with one camera under `/World` and `render` (prims under diff --git a/crates/crust-core/tests/usd_scene.rs b/crates/crust-core/tests/usd_scene.rs index b352d758d..023b817bf 100644 --- a/crates/crust-core/tests/usd_scene.rs +++ b/crates/crust-core/tests/usd_scene.rs @@ -1,3 +1,4 @@ +use moho::{openusd, openusd_schemas}; use std::path::PathBuf; use crust_core::{Light, Ray, Scene, Vec3A}; diff --git a/crates/crust-hydra/Cargo.toml b/crates/crust-hydra/Cargo.toml index afab50824..107ad3e39 100644 --- a/crates/crust-hydra/Cargo.toml +++ b/crates/crust-hydra/Cargo.toml @@ -22,8 +22,6 @@ crate-type = ["staticlib", "rlib"] crust-render = { path = "../crust-render", default-features = false, features = ["session", "jit", "mmap"] } crust-core = { path = "../crust-core" } crust-assets = { path = "../crust-assets" } -# The session thread keeps the authoring stage the classifier reads. -openusd.workspace = true tracing.workspace = true [dev-dependencies] diff --git a/crates/crust-render/Cargo.toml b/crates/crust-render/Cargo.toml index e32d0860d..b580c728f 100644 --- a/crates/crust-render/Cargo.toml +++ b/crates/crust-render/Cargo.toml @@ -33,9 +33,9 @@ jit = ["crust-core/jit"] mmap = ["crust-core/mmap"] # The live session's core (`session`): an override layer followed on disk, # each change classified and applied in place or by a re-import. Needs only -# openusd, which authors and diffs the layer: no MCP SDK, no async runtime. -# `crust-hydra` builds the library with it alone. -session = ["dep:openusd"] +# openusd (through Moho), which authors and diffs the layer: no MCP SDK, no +# async runtime. `crust-hydra` builds the library with it alone. +session = ["dep:moho"] # `crust mcp`: a Model Context Protocol server over stdio for an agent's # live session (the `mcp-session` capability). It brings in the MCP SDK and # an async runtime, which carry only the protocol: the session itself runs @@ -45,7 +45,7 @@ mcp = [ "session", "dep:rmcp", "dep:tokio", - "openusd/serde", + "moho/serde", "dep:serde", "dep:schemars", "dep:serde_json", @@ -74,10 +74,10 @@ ctrlc = "3.4" rmcp = { version = "3.5.1", default-features = false, features = ["server", "macros", "transport-io"], optional = true } tokio = { version = "1.52", default-features = false, features = ["rt", "macros", "io-std", "sync", "time"], optional = true } # `session`: the session authors and diffs its override layer through -# openusd, the same crate (and version) crust-core imports with. `mcp` adds -# `serde`, so a queried value reaches the client as the JSON of its -# `sdf::Value`. -openusd = { workspace = true, optional = true } +# openusd, reached as `moho::openusd`, the same crate crust-core imports with. +# `mcp` adds `moho/serde`, so a queried value reaches the client as the JSON of +# its `sdf::Value`. +moho = { workspace = true, optional = true } # `mcp`: the tools' parameters and results. `schemars` is the version rmcp # derives its input schemas with. serde = { version = "1.0", features = ["derive"], optional = true } @@ -94,8 +94,7 @@ base64 = { version = "0.23", optional = true } # Every import a test performs is compared with the direct importer's # baseline (crust-core's test-only `parity` feature). crust-core = { path = "../crust-core", features = ["parity"] } -openusd.workspace = true -openusd-schemas = { workspace = true, features = ["geom"] } +moho.workspace = true ptex.workspace = true # `std` for `tracing::subscriber::with_default`, which the product writer's # test uses to see the warning an authored `crust:*` attribute gets. diff --git a/crates/crust-render/examples/mass_spike.rs b/crates/crust-render/examples/mass_spike.rs index f5871b2fb..98a8fb81f 100644 --- a/crates/crust-render/examples/mass_spike.rs +++ b/crates/crust-render/examples/mass_spike.rs @@ -27,6 +27,7 @@ //! ``` use crust_core::{Ray, Scene, Vec3A}; +use moho::{openusd, openusd_schemas}; use openusd::{sdf, usd}; use std::path::{Path, PathBuf}; diff --git a/crates/crust-render/examples/proto_probe.rs b/crates/crust-render/examples/proto_probe.rs index d498b833f..ea2939ae0 100644 --- a/crates/crust-render/examples/proto_probe.rs +++ b/crates/crust-render/examples/proto_probe.rs @@ -14,6 +14,7 @@ //! cargo run --release -p crust-render --example proto_probe -- stage.usda [/prim/path] //! ``` +use moho::{openusd, openusd_schemas}; use openusd::{sdf, usd}; fn main() { diff --git a/crates/crust-render/examples/ptex_verify.rs b/crates/crust-render/examples/ptex_verify.rs index a85874d72..e4d93035c 100644 --- a/crates/crust-render/examples/ptex_verify.rs +++ b/crates/crust-render/examples/ptex_verify.rs @@ -25,6 +25,7 @@ //! model.usd /path/to/mesh_prim color.ptx //! ``` +use moho::openusd; use openusd::{sdf, usd}; fn main() { diff --git a/crates/crust-render/examples/rel_probe.rs b/crates/crust-render/examples/rel_probe.rs index 9b95ce678..e1610856a 100644 --- a/crates/crust-render/examples/rel_probe.rs +++ b/crates/crust-render/examples/rel_probe.rs @@ -12,6 +12,7 @@ //! cargo run --release -p crust-render --example rel_probe -- stage.usd[a] [relName] //! ``` +use moho::openusd; use openusd::{sdf, usd}; fn main() { diff --git a/crates/crust-render/examples/xform_probe.rs b/crates/crust-render/examples/xform_probe.rs index 7253f8588..3cf21b842 100644 --- a/crates/crust-render/examples/xform_probe.rs +++ b/crates/crust-render/examples/xform_probe.rs @@ -11,6 +11,7 @@ //! cargo run --release -p crust-render --example xform_probe -- stage.usda /prim/path //! ``` +use moho::{openusd, openusd_schemas}; use openusd::{sdf, usd}; use openusd_schemas::geom::{Xform, XformableExt}; diff --git a/crates/crust-render/src/mcp/edit.rs b/crates/crust-render/src/mcp/edit.rs index 85be9b6f6..64412c9b3 100644 --- a/crates/crust-render/src/mcp/edit.rs +++ b/crates/crust-render/src/mcp/edit.rs @@ -16,6 +16,7 @@ //! The other list ops (`references`, `payload`, relationship targets, …) //! are replaced as a whole, as any other field: `bind_material` rebinds. +use moho::openusd; use openusd::sdf::{self, AbstractData, Specifier, Value}; use openusd::usd::Stage; use std::path::Path; diff --git a/crates/crust-render/src/mcp/place.rs b/crates/crust-render/src/mcp/place.rs index 7ed09e027..d1c45e832 100644 --- a/crates/crust-render/src/mcp/place.rs +++ b/crates/crust-render/src/mcp/place.rs @@ -11,6 +11,7 @@ use super::session::Open; use crust_core::live::Provenance; use crust_core::place::{self, Amount, Dropped, ScatterRequest, UpAxis}; use glam::{DMat4, DVec3}; +use moho::openusd; use openusd::sdf; use std::path::{Path, PathBuf}; use std::time::Instant; diff --git a/crates/crust-render/src/mcp/query.rs b/crates/crust-render/src/mcp/query.rs index 88fed471d..39650a374 100644 --- a/crates/crust-render/src/mcp/query.rs +++ b/crates/crust-render/src/mcp/query.rs @@ -2,6 +2,7 @@ //! which layers say so. Values are read at the default time, as the //! session's import (no frame) reads them. +use moho::openusd; use openusd::sdf; use openusd::usd::{LoadPolicy, Prim, ResolveInfoSource, Stage}; use serde_json::{Map, Value, json}; diff --git a/crates/crust-render/src/mcp/session.rs b/crates/crust-render/src/mcp/session.rs index cbcbef887..e30cc5ea9 100644 --- a/crates/crust-render/src/mcp/session.rs +++ b/crates/crust-render/src/mcp/session.rs @@ -26,6 +26,7 @@ use crust_render::session::sources::Sources; use crust_render::session::{ classify_saved, import_kept, loader, open_stage, replace_file, update_or_import, }; +use moho::openusd; use openusd::sdf; use openusd::usd::Stage; use std::future::Future; diff --git a/crates/crust-render/src/mcp/tests.rs b/crates/crust-render/src/mcp/tests.rs index 36f38f1ae..e76e6fd90 100644 --- a/crates/crust-render/src/mcp/tests.rs +++ b/crates/crust-render/src/mcp/tests.rs @@ -6,6 +6,7 @@ use super::session::State; use crate::{Cli, Command, RenderRun, render_and_write}; use clap::Parser; use crust_core::RenderControl; +use moho::{openusd, openusd_schemas}; use serde_json::{Value, json}; use std::path::{Path, PathBuf}; use std::time::Duration; diff --git a/crates/crust-render/src/session/delta.rs b/crates/crust-render/src/session/delta.rs index 2c0e9cc75..fb246b1a8 100644 --- a/crates/crust-render/src/session/delta.rs +++ b/crates/crust-render/src/session/delta.rs @@ -14,6 +14,7 @@ //! that name them, compose to nothing on their own. use crust_core::live::{Change, Provenance}; +use moho::openusd; use openusd::sdf::{self, AbstractData, SpecType, Specifier, Value}; use openusd::usd::Stage; use std::fmt; diff --git a/crates/crust-render/src/session/layer.rs b/crates/crust-render/src/session/layer.rs index 6efcbe287..e1e5deb91 100644 --- a/crates/crust-render/src/session/layer.rs +++ b/crates/crust-render/src/session/layer.rs @@ -2,6 +2,7 @@ //! only composition arc is a sublayer on the input; every edit is an opinion //! in it; it is saved after every edit batch. +use moho::openusd; use openusd::sdf; use std::path::{Component, Path, PathBuf}; diff --git a/crates/crust-render/src/session/live.rs b/crates/crust-render/src/session/live.rs index f58916fe3..0b4eb9c50 100644 --- a/crates/crust-render/src/session/live.rs +++ b/crates/crust-render/src/session/live.rs @@ -36,6 +36,7 @@ use super::{import_kept, loader, open_stage, update_or_import}; use crate::Assets; use crust_assets::FileAssets; use crust_core::{AovFilm, AovRequest, Buffer, RenderControl, RenderOutcome}; +use moho::openusd; use openusd::sdf::{self, AbstractData, Value}; use openusd::usd::Stage; use std::panic::{AssertUnwindSafe, catch_unwind}; diff --git a/crates/crust-render/src/session/mod.rs b/crates/crust-render/src/session/mod.rs index d75b6a647..d4538e176 100644 --- a/crates/crust-render/src/session/mod.rs +++ b/crates/crust-render/src/session/mod.rs @@ -5,6 +5,7 @@ //! Both take the change through here, so an edit classifies the same in //! either host and its scene is the one `crust render` imports. +use moho::openusd; pub mod delta; pub mod layer; pub mod live; diff --git a/crates/crust-render/tests/mcp.rs b/crates/crust-render/tests/mcp.rs index 5c7332ef9..3e6ff9c0c 100644 --- a/crates/crust-render/tests/mcp.rs +++ b/crates/crust-render/tests/mcp.rs @@ -3,6 +3,7 @@ //! messages on stdout, whatever the log level. #![cfg(feature = "mcp")] +use moho::openusd; use serde_json::{Value, json}; use std::io::{BufRead, BufReader, Write}; use std::path::{Path, PathBuf}; diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index e41ecfb18..95be2a29f 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -135,6 +135,16 @@ Since Moho's `788b1ac` the rev is `d7d2a29406871508b6ec3ffe9173a5941b1c6123` of `https://github.com/doubleailes/openusd`, the fork Moho pins, so the patch names that URL (a git source is URL plus reference). The same three checks hold. +**openusd through Moho (from Moho `e64f228`).** The user's decision: crust takes +openusd only through Moho's re-exports. Moho #12 forwards openusd's features (`mmap`, +`serde`, and the schema families `media`, `physics`, `proc`, `semantics`, `skel`, `ui`; +`geom`, `lux`, `render`, `shade` and `vol` always on). The workspace drops its +`openusd` and `openusd-schemas` entries and the `[patch.crates-io]`; crust-core's `mmap` +is `moho/mmap`, crust-render's `session` depends on an optional `moho` and `mcp` adds +`moho/serde`. One openusd is then a property of the graph, and `one_openusd.rs` checks +that no manifest names openusd directly. The paragraphs above record how the pin was +kept before. + The bump order becomes Moho, then crust-render, then Mantle. `cargo update -p openusd` stops being the way to move. A bump edits both revs: Moho's rev in the `moho` entry and the openusd rev in the patch. `CLAUDE.md` says so. From 7166f729f5e496684e04a213797f7b14309b5c72 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 19:25:58 +0100 Subject: [PATCH 64/95] crust: prototype prims and their materials read Moho's propagated prototypes (12.1) A prototype's prims are read in the instancing chain at their re-rooted paths (PrimData::rebased), named by the USD prims they come from. A binding inside a propagated prototype names the material Moho re-rooted there (M11): it is resolved in the instancing chain at that path, cached under it, and named by its USD path in warnings, provenance and the material reads. Prototype parts are keyed by the propagated path with no epoch (a stage's own /__Prototype_N keeps it). Two behaviour changes are recorded (design D3b, D3c; scene-index-import, import-parity): prims in an instance inherit its ancestors' bindings (Hydra's model; no committed baseline changes for it), and a prototype is built once per import, reused across a streamed import's chunks. Two baselines change for that reuse only, re-recorded after their images were checked equal: purpose_bindings.usda (one prototype block, mesh slot and material fewer; its check report's BVH sizes) and the volume-in- prototype fixture (its two warnings count 2, not 3). The debug suite (2661) passes; the image run differs nowhere (the guided cancellation unit test failed once under load, as before). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/index/data.rs | 68 ++++++++++ .../src/scene/usd_import/instancing.rs | 69 ++++++++--- .../src/scene/usd_import/materials.rs | 117 ++++++++++++++++-- crates/crust-core/src/scene/usd_import/mod.rs | 12 +- .../check/purpose_bindings.usda.json | 20 +-- ...se_bindings_usda-08709bdb4f451e59-1.digest | 17 ++- ...se_bindings_usda-08709bdb4f451e59-2.digest | 17 ++- ...se_bindings_usda-856ac5cdf233a681-1.digest | 17 ++- ...n_prototype_usda-d6406b3b1214ee81-1.digest | 4 +- openspec/changes/moho-import/design.md | 36 +++++- .../moho-import/specs/import-parity/spec.md | 9 +- .../specs/scene-index-import/spec.md | 17 ++- 12 files changed, 321 insertions(+), 82 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/index/data.rs b/crates/crust-core/src/scene/usd_import/index/data.rs index 0a74e8157..98f7e9cd8 100644 --- a/crates/crust-core/src/scene/usd_import/index/data.rs +++ b/crates/crust-core/src/scene/usd_import/index/data.rs @@ -34,6 +34,13 @@ pub(in crate::scene::usd_import) struct PrimData { /// For an instance proxy, `(prototype root, instance root)`: where the /// prim's data were read, and where the proxy's namespace puts them. proxy_roots: Option<(sdf::Path, sdf::Path)>, + /// For a prim of a prototype the instancing chain re-roots, + /// `(data root, name root)`: its data are read under Moho's propagated + /// prototype (or point-instancer copy), and it is named, in warnings and + /// provenance, under the USD prototype it comes from (`primOrigin`). + /// Unlike `proxy_roots`, the path values its data hold (binding targets, + /// connections) are left as the index re-rooted them (Moho's M11). + rebase: Option<(sdf::Path, sdf::Path)>, } impl PrimData { @@ -48,9 +55,51 @@ impl PrimData { index: None, proxies: None, proxy_roots: None, + rebase: None, } } + /// The prim at `data` in `index`, under the re-rooted prototype at + /// `data_root`, named under `name_root`, the USD prototype it comes from + /// (see the `rebase` field). + pub(in crate::scene::usd_import) fn rebased( + index: &SceneIndexHandle, + data: &sdf::Path, + data_root: &sdf::Path, + name_root: &sdf::Path, + ) -> Self { + let path = Self::move_root(data, data_root, name_root).unwrap_or_else(|| data.clone()); + PrimData { + path, + rebase: Some((data_root.clone(), name_root.clone())), + ..PrimData::in_index(index, data) + } + } + + /// The name of `path`, a path value the prim's data hold: under the USD + /// prototype it comes from when it lies under the re-rooted one + /// ([`PrimData::rebased`]), else itself. + pub(in crate::scene::usd_import) fn name_of(&self, path: &sdf::Path) -> sdf::Path { + match &self.rebase { + Some((data_root, name_root)) => { + Self::move_root(path, data_root, name_root).unwrap_or_else(|| path.clone()) + } + None => path.clone(), + } + } + + /// `path` moved from under `from` to under `to`, when it lies there. + fn move_root(path: &sdf::Path, from: &sdf::Path, to: &sdf::Path) -> Option { + if path == from { + return Some(to.clone()); + } + let rest = path.as_str().strip_prefix(from.as_str())?; + if !rest.starts_with('/') { + return None; + } + sdf::Path::new(format!("{to}{rest}").as_str()).ok() + } + /// The prim at `path` for a reader the bridge reaches (a prototype's /// parts through the instancing reader), which may name an instance /// proxy, a prim the scene index — like UsdImaging's — does not hold: its @@ -96,6 +145,16 @@ impl PrimData { let Some(index) = &self.index else { return Vec::new(); }; + if let Some((data_root, name_root)) = &self.rebase { + let data = Self::move_root(&self.path, name_root, data_root) + .unwrap_or_else(|| self.path.clone()); + return index + .children(&data) + .into_iter() + .filter(|c| c.name() != Some(moho::tokens::instancing::PROPAGATED_ROOT)) + .map(|c| PrimData::rebased(index, &c, data_root, name_root)) + .collect(); + } let data_path = match &self.proxy_roots { Some((proto, instance)) => self .path @@ -161,6 +220,15 @@ impl PrimData { pub(in crate::scene::usd_import) fn parent(&self) -> Option { let parent = self.path.parent()?; let index = self.index.as_ref()?; + if let Some((data_root, name_root)) = &self.rebase { + // Within the prototype, its re-rooted data; above its root, the + // USD prototype's own ancestors (the pseudo-root), as the stage + // walks them. + return Some(match Self::move_root(&parent, name_root, data_root) { + Some(data) => PrimData::rebased(index, &data, data_root, name_root), + None => PrimData::in_index(index, &parent), + }); + } Some(match &self.proxies { Some(stage) => PrimData::bridged(index, stage, &parent), None => PrimData::in_index(index, &parent), diff --git a/crates/crust-core/src/scene/usd_import/instancing.rs b/crates/crust-core/src/scene/usd_import/instancing.rs index 16effc9d8..fa73d95f2 100644 --- a/crates/crust-core/src/scene/usd_import/instancing.rs +++ b/crates/crust-core/src/scene/usd_import/instancing.rs @@ -41,7 +41,7 @@ use super::attrs::{ }; use super::implicit::{Shape, undisplaced}; use super::index::data::PrimData; -use super::materials::{resolve_bound, resolve_material}; +use super::materials::{resolve_bound_data, resolve_material_data}; use super::mesh::{ MeshNeeds, MeshPlace, constant_table, mesh_source, placement_scale, with_constant_primvars, }; @@ -107,6 +107,19 @@ impl ProtoRoot { .unwrap_or_else(|| path.clone()) } + /// The prototype caches' key: the root in the instancing chain, stable + /// across a streamed import's stages (a propagated prototype, a copy), + /// so no epoch — unless it is a stage's own `/__Prototype_N`, numbered + /// per stage. + fn key(&self, epoch: u32) -> (u32, String) { + let path = self.index.to_string(); + if path.starts_with("/__Prototype") { + (epoch, path) + } else { + (0, path) + } + } + /// A root named by its USD path alone, where the instancing chain gives /// no other (read as before). fn usd(path: &sdf::Path) -> Self { @@ -276,6 +289,17 @@ pub(super) fn collect_proto_parts( } else { prim_at(stage, proto.usd_of(&at)) }; + // Its data: in the instancing chain at its re-rooted path, named by + // its USD path (Moho's M11 re-roots the path values it holds); on the + // stage's walk, as before. + let pdata = if on_stage { + caches.prim_data(prim.path()) + } else { + match &caches.inst { + Some(inst) => PrimData::rebased(inst, &at, &proto.index, &proto.usd), + None => caches.prim_data(prim.path()), + } + }; if prototype_prunes(&prim, root, true) { continue; } @@ -338,10 +362,10 @@ pub(super) fn collect_proto_parts( "Volume at {} is inside a prototype — volumes cannot be instanced, skipped", prim.path() ); - } else if caches.prim_data(prim.path()).is_a("Mesh") { - let bound = resolve_bound(stage, &prim, caches); + } else if pdata.is_a("Mesh") { + let bound = resolve_bound_data(stage, &pdata, caches); let material = bound.material; - let data = caches.prim_data(prim.path()); + let data = pdata.clone(); let displacement = super::mesh::prim_displacement(&data, bound.displacement); let displacement = displacement.as_deref(); // Unshared: the part's own world transform, for adaptive subdivision. @@ -377,9 +401,9 @@ pub(super) fn collect_proto_parts( Arc::make_mut(&mut part.slots)[0].primvars = primvars; parts.push(part); } - } else if caches.prim_data(prim.path()).is_a("Sphere") { - let material = resolve_material(stage, &prim, caches); - let radius = sphere_radius(&caches.prim_data(prim.path())); + } else if pdata.is_a("Sphere") { + let material = resolve_material_data(stage, &pdata, caches); + let radius = sphere_radius(&pdata); let mut b = RtSceneBuilder::new(); // Local-space sphere at the origin: unlike the top-level // sphere path, which bakes the centre into world space, this @@ -389,7 +413,7 @@ pub(super) fn collect_proto_parts( center: Vec3A::ZERO, radius, }); - let data = caches.prim_data(prim.path()); + let data = pdata.clone(); let primvars = constant_table(&data, &*material, caches.working).map(Arc::new); let mut part = ProtoPart::leaf( Arc::new(b.commit_with(crate::commit_options())), @@ -402,7 +426,7 @@ pub(super) fn collect_proto_parts( Arc::make_mut(&mut part.slots)[0].primvars = primvars; parts.push(part); } else if let Some(read) = { - let data = caches.prim_data(prim.path()); + let data = pdata.clone(); if data.is_a("BasisCurves") { Some(Curve::Basis) } else if data.is_a("NurbsCurves") { @@ -411,9 +435,9 @@ pub(super) fn collect_proto_parts( None } } { - let material = resolve_material(stage, &prim, caches); + let material = resolve_material_data(stage, &pdata, caches); let request = StrandRequest::of(&*material, caches.working, &caches.meshes.primvars); - let data = caches.prim_data(prim.path()); + let data = pdata.clone(); let imported = match &read { Curve::Basis => curve_segments(&data, &data, request.as_ref()), Curve::Nurbs => nurbs_curve_segments(&data, &data, request.as_ref()), @@ -432,11 +456,11 @@ pub(super) fn collect_proto_parts( slot.strands = strands.map(Arc::new); parts.push(part); } - } else if let Some(shape) = Shape::read(&caches.prim_data(prim.path())) { + } else if let Some(shape) = Shape::read(&pdata) { // An implicit shape is a mesh once tessellated, so it is a part // like any mesh: interned, built at the end of the walk. - let data = caches.prim_data(prim.path()); - let material = undisplaced(&data, resolve_bound(stage, &prim, caches)).material; + let data = pdata.clone(); + let material = undisplaced(&data, resolve_bound_data(stage, &pdata, caches)).material; let part_world = match place { ProtoPlace::Unshared(world) => Some(world * this_local), ProtoPlace::Shared => None, @@ -448,7 +472,7 @@ pub(super) fn collect_proto_parts( .as_ref() .map_or(MeshPlace::Shared, MeshPlace::World), ); - let data = caches.prim_data(prim.path()); + let data = pdata.clone(); let src = with_constant_primvars(src, &data, &*material, caches.working); if let Some(slot) = caches.meshes.intern(&data, src, &material, None) { let faces = caches.meshes.slots[slot as usize].faces.clone(); @@ -460,7 +484,7 @@ pub(super) fn collect_proto_parts( Arc::make_mut(&mut part.slots)[0].primvars = primvars; parts.push(part); } - } else if caches.prim_data(prim.path()).is_a("PointInstancer") { + } else if pdata.is_a("PointInstancer") { // A PointInstancer inside a prototype: expand it into nested // sub-scenes rather than flattening. Flattening would multiply // the *outer* instance count by this instancer's, which is @@ -470,6 +494,7 @@ pub(super) fn collect_proto_parts( parts.extend(nested_instancer_parts( stage, &prim, + &pdata, &at, this_local, mask, @@ -578,6 +603,7 @@ fn placeholder_scene() -> Arc { fn nested_instancer_parts( stage: &Stage, prim: &Prim, + data: &PrimData, at: &sdf::Path, local: GMat4, mask: RayMask, @@ -585,9 +611,14 @@ fn nested_instancer_parts( depth: usize, place: ProtoPlace, ) -> Vec { - let Some(layout) = read_instancer(&caches.prim_data(prim.path()), true) else { + let Some(mut layout) = read_instancer(data, true) else { return Vec::new(); }; + // Targets the index re-rooted (inside a propagated prototype) are named + // by the USD prims they come from. + for target in &mut layout.targets { + *target = data.name_of(target); + } // Which version of its prototype each placement draws: the shared one // (`None`), or — in adaptive mode, inside an unshared prototype, for a // target this instancer places once — one built for that placement. @@ -750,7 +781,7 @@ fn prototype_group( caches: &mut ImportCaches<'_>, depth: usize, ) -> Option { - let key = (caches.epoch, proto_path.index.to_string()); + let key = proto_path.key(caches.epoch); if let Some(group) = caches.groups.get(&key) { return group.clone(); } @@ -1117,7 +1148,7 @@ fn prototype_parts( caches: &mut ImportCaches<'_>, depth: usize, ) -> Arc> { - let key = (caches.epoch, proto_path.index.to_string()); + let key = proto_path.key(caches.epoch); if let Some(parts) = caches.protos.get(&key) { debug!( "Prototype {} ({}, epoch {}): reusing {} cached part(s)", diff --git a/crates/crust-core/src/scene/usd_import/materials.rs b/crates/crust-core/src/scene/usd_import/materials.rs index 6de04270f..23e0ed939 100644 --- a/crates/crust-core/src/scene/usd_import/materials.rs +++ b/crates/crust-core/src/scene/usd_import/materials.rs @@ -31,6 +31,9 @@ use super::{ImportCaches, prim_at}; #[derive(Default)] pub(super) struct MaterialCache { pub(super) by_path: HashMap<(u32, String), CachedMaterial>, + /// While a material bound inside a re-rooted prototype is resolved, its + /// name and the path the instancing chain holds it at ([`MatSource`]). + pub(super) reading: Option<(sdf::Path, sdf::Path)>, pub(super) default: Option>, /// Resolved `.ptx` path -> the opened texture, or `None` if it could not /// be opened. Keyed by filesystem path, so it needs no epoch scoping. @@ -142,8 +145,13 @@ impl MaterialCache { pub(super) fn reads(&self) -> Vec<(String, String)> { let mut reads: Vec<(String, String)> = self .by_path - .iter() - .flat_map(|((_, path), cached)| cached.reads.iter().map(|r| (r.clone(), path.clone()))) + .values() + .flat_map(|cached| { + cached + .reads + .iter() + .map(|r| (r.clone(), cached.name.clone())) + }) .collect(); reads.sort(); reads.dedup(); @@ -156,7 +164,8 @@ impl MaterialCache { ) -> HashMap { let mut by_arc: HashMap<*const (), &str> = HashMap::new(); let mut out: HashMap = HashMap::new(); - for ((_, path), cached) in &self.by_path { + for cached in self.by_path.values() { + let path = &cached.name; if path.starts_with("/__Prototype") { continue; } @@ -227,6 +236,9 @@ pub(super) struct BoundMaterial { /// material's displacement program is compiled with the document, so it is /// kept here until then. pub(super) struct CachedMaterial { + /// The material's name: its USD path, which the key differs from for a + /// material read inside a re-rooted prototype. + name: String, material: Arc, /// The prims outside the material that its network reads (see /// [`material_reads`]). @@ -417,7 +429,18 @@ pub(super) fn resolve_material( prim: &Prim, caches: &mut ImportCaches<'_>, ) -> Arc { - match cached_material(stage, prim, caches) { + let data = caches.prim_data(prim.path()); + resolve_material_data(stage, &data, caches) +} + +/// [`resolve_material`] for a prim read as `data` (a prototype's prim in the +/// instancing chain). +pub(super) fn resolve_material_data( + stage: &Stage, + data: &super::index::data::PrimData, + caches: &mut ImportCaches<'_>, +) -> Arc { + match cached_material(stage, data, caches) { Some((key, _)) => caches.materials.by_path[&key].material.clone(), None => caches.materials.default_material(), } @@ -429,7 +452,18 @@ pub(super) fn resolve_bound( prim: &Prim, caches: &mut ImportCaches<'_>, ) -> BoundMaterial { - let Some((key, mat_path)) = cached_material(stage, prim, caches) else { + let data = caches.prim_data(prim.path()); + resolve_bound_data(stage, &data, caches) +} + +/// [`resolve_bound`] for a prim read as `data` (a prototype's prim in the +/// instancing chain). +pub(super) fn resolve_bound_data( + stage: &Stage, + data: &super::index::data::PrimData, + caches: &mut ImportCaches<'_>, +) -> BoundMaterial { + let Some((key, mat_path)) = cached_material(stage, data, caches) else { return BoundMaterial { material: caches.materials.default_material(), displacement: None, @@ -446,7 +480,10 @@ pub(super) fn resolve_bound( let mtlx = entry.mtlx.clone(); let displacement = if crate::config().displace { let home = material_stage(stage, &mat_path, caches); - resolve_displacement(&home, &mat_path, mtlx, caches).map(Arc::new) + caches.materials.reading = re_rooted(data, &mat_path); + let d = resolve_displacement(&home, &mat_path, mtlx, caches).map(Arc::new); + caches.materials.reading = None; + d } else { None }; @@ -466,17 +503,26 @@ pub(super) fn resolve_bound( /// and path; `None` for an unbound prim, which takes the default. fn cached_material( stage: &Stage, - prim: &Prim, + data: &super::index::data::PrimData, caches: &mut ImportCaches<'_>, ) -> Option<((u32, String), sdf::Path)> { - let Some(mat_path) = index_bound_material(&caches.prim_data(prim.path())) else { + let Some(target) = index_bound_material(data) else { debug!( "{} has no material binding — using default grey OpenPBR", - prim.path() + data.path() ); return None; }; - let key = caches.materials.key(mat_path.as_str()); + // A target the index re-rooted into a propagated prototype (Moho's M11) + // is the material read, and keys the cache: stable across stages, so no + // epoch. It is named, in warnings and provenance, by the USD prim it + // comes from. + let mat_path = data.name_of(&target); + let reading = re_rooted(data, &mat_path); + let key = match &reading { + Some((_, data_path)) => (0, data_path.to_string()), + None => caches.materials.key(mat_path.as_str()), + }; if caches.materials.by_path.contains_key(&key) { return Some((key, mat_path)); } @@ -486,11 +532,14 @@ fn cached_material( // next's — see `MaterialCache::key`. debug!("Resolving material {mat_path} (epoch {})", key.0); let home = material_stage(stage, &mat_path, caches); + caches.materials.reading = reading; let (material, mtlx) = resolve_fresh(&home, &mat_path, caches); let reads = material_reads(&home, &mat_path, caches); + caches.materials.reading = None; caches.materials.by_path.insert( key.clone(), CachedMaterial { + name: mat_path.to_string(), material, reads, mtlx, @@ -553,7 +602,7 @@ fn material_reads(home: &Stage, mat_path: &sdf::Path, caches: &ImportCaches<'_>) for target in prim.connections(&name) { // Named where the material is: an instance proxy's // connections are its prototype's, moved under the instance. - let target = prim.in_own_namespace(target.prim_path()); + let target = prim.in_own_namespace(prim.name_of(&target.prim_path())); if !target.has_prefix(mat_path) { reads.push(target.to_string()); } @@ -570,6 +619,16 @@ fn material_reads(home: &Stage, mat_path: &sdf::Path, caches: &ImportCaches<'_>) reads } +/// For a material bound inside a re-rooted prototype, `(its name, the path +/// the index holds it at)`: what [`MatSource`] reads while it is resolved. +fn re_rooted( + data: &super::index::data::PrimData, + name: &sdf::Path, +) -> Option<(sdf::Path, sdf::Path)> { + let target = index_bound_material(data)?; + (target != *name).then(|| (name.clone(), target)) +} + /// The material at `mat_path`, resolved without the cache, and the `.mtlx` /// displacement program compiled with it: what a cache miss stores, and what /// an in-place material update ([`super::live`]) rebuilds. @@ -1085,12 +1144,33 @@ pub(super) struct MatSource { /// The input built over `stage`, when the walked one does not hold the /// material: kept alive with the source. _input: Option, + /// For a material inside a re-rooted prototype, `(the path the + /// instancing chain holds it at, its name)`: its prims are read there + /// and named here ([`super::index::data::PrimData::rebased`]). + rebase: Option<(sdf::Path, sdf::Path)>, } impl MatSource { /// The material at `mat_path`, found on `home`. pub(super) fn new(home: &Stage, mat_path: &sdf::Path, caches: &ImportCaches<'_>) -> Self { use super::index::data::PrimData; + // A material bound inside a re-rooted prototype: read in the + // instancing chain, at the path the binding names (Moho's M11). + if let Some((name, data)) = &caches.materials.reading + && name == mat_path + && let (Some(inst), Some((_, stage))) = (&caches.inst, &caches.scene) + { + let prim = PrimData::rebased(inst, data, data, name); + return MatSource { + path: mat_path.clone(), + networks: super::index::network::networks(&prim), + prim, + index: inst.clone(), + stage: stage.clone(), + _input: None, + rebase: Some((data.clone(), name.clone())), + }; + } // Read at the top of the import's chain, where the material-node // resolution has filled a node outside the walked chunk (Moho's M10), // on the walked stage for the bridge's prototype mapping. @@ -1119,12 +1199,25 @@ impl MatSource { index, stage, _input: input, + rebase: None, } } /// The prim at `path`, read as the material is. pub(super) fn at(&self, path: &sdf::Path) -> super::index::data::PrimData { - super::index::data::PrimData::bridged(&self.index, &self.stage, path) + use super::index::data::PrimData; + match &self.rebase { + Some((data, name)) => { + let at = path + .as_str() + .strip_prefix(name.as_str()) + .filter(|rest| rest.is_empty() || rest.starts_with('/')) + .and_then(|rest| sdf::Path::new(format!("{data}{rest}").as_str()).ok()) + .unwrap_or_else(|| path.clone()); + PrimData::rebased(&self.index, &at, data, name) + } + None => PrimData::bridged(&self.index, &self.stage, path), + } } /// The prim of the node named `name` in `network`. diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index 7915cefa5..6aadcf2bf 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -2017,11 +2017,13 @@ struct ImportCaches<'a> { /// until its representation is decided (see [`flush_meshes`]), then its /// committed kernel scene if it needed one. meshes: MeshArena, - /// `(epoch, prototype root in the instancing chain)` → its shared parts, - /// for both instancing mechanisms: Moho's propagated prototype path. The - /// epoch stays until dropping it (reusing parts across streamed chunks) - /// is agreed: it changes digests. A prototype placed once in adaptive - /// mode is built for its placement and not cached here. + /// A prototype's root in the instancing chain → its shared parts, for both + /// instancing mechanisms: Moho's propagated prototype path (or a point + /// instancer's copy), stable across a streamed import's stages, so a + /// prototype is built once for the whole import (the change's third + /// behaviour change); the epoch remains only for a stage's own + /// `/__Prototype_N`. A prototype placed once in adaptive mode is built + /// for its placement and not cached here. protos: HashMap<(u32, String), Arc>>, /// The same prototypes as one [`ProtoPart`] each (see /// `instancing::group_parts`), `None` for one with no geometry. Same keys diff --git a/crates/crust-core/tests/data/import_baselines/check/purpose_bindings.usda.json b/crates/crust-core/tests/data/import_baselines/check/purpose_bindings.usda.json index 763b22fdf..b989dbfbb 100644 --- a/crates/crust-core/tests/data/import_baselines/check/purpose_bindings.usda.json +++ b/crates/crust-core/tests/data/import_baselines/check/purpose_bindings.usda.json @@ -2,21 +2,21 @@ "counts": { "geometries": 4, "kernel_memory": { - "bvh_nodes_bytes": 640, + "bvh_nodes_bytes": 512, "cubic_spans_bytes": 0, - "geometry_tables_bytes": 72, + "geometry_tables_bytes": 60, "indices_bytes": 8, "instances_bytes": 192, - "lanes": 56, - "lanes_filled": 40, - "leaves_bytes": 208, - "packets_bytes": 2688, + "lanes": 40, + "lanes_filled": 28, + "leaves_bytes": 160, + "packets_bytes": 1920, "packets_indexed_bytes": 0, "prim_nodes_bytes": 0, - "total_bytes": 5056, - "triangle_records_bytes": 912, + "total_bytes": 3716, + "triangle_records_bytes": 624, "vertex_normals_bytes": 0, - "vertices_bytes": 336 + "vertices_bytes": 240 }, "lights": 2, "primvar_tables_bytes": 0, @@ -37,7 +37,7 @@ "disks": 0, "instances": 2, "spheres": 0, - "triangles": 38 + "triangles": 26 }, "volumes": 0 }, diff --git a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-1.digest b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-1.digest index 7e3362a47..f248a7604 100644 --- a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-1.digest +++ b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-1.digest @@ -12,11 +12,11 @@ lights: 2 light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } volumes: 0 -world: 4 geometries, PrimitiveBreakdown { triangles: 14, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 38, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +world: 4 geometries, PrimitiveBreakdown { triangles: 14, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 26, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d39ea1d8f1160585 camera=12:d39ea1d8f1160585 shadow=12:d39ea1d8f1160585 indirect=12:d39ea1d8f1160585 -geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:49382ab6090bd205 camera=12:49382ab6090bd205 shadow=12:49382ab6090bd205 indirect=12:49382ab6090bd205 -geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b7134b56e9f18a65 camera=12:b7134b56e9f18a65 shadow=12:b7134b56e9f18a65 indirect=12:b7134b56e9f18a65 -geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:49382ab6090bd205 camera=12:49382ab6090bd205 shadow=12:49382ab6090bd205 indirect=12:49382ab6090bd205 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b7134b56e9f18a65 camera=12:b7134b56e9f18a65 shadow=12:b7134b56e9f18a65 indirect=12:b7134b56e9f18a65 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 provenance material /World/Plain/MATERIAL/full: MaterialOrigin { slots: [2], displaced: false } provenance material read: ("/World/_Asset/MATERIAL/full", "/__Prototype_0/MATERIAL/full") provenance material read: ("/World/_Asset/MATERIAL/full/surface", "/__Prototype_0/MATERIAL/full") @@ -26,12 +26,11 @@ provenance geometry 0..1: /World/TowerA provenance geometry 1..2: /World/TowerB provenance geometry 2..3: /World/Plain/GEO/block provenance geometry 3..4: /World/Ground -provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } -provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } -provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } -provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } -provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-2.digest b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-2.digest index 7e3362a47..f248a7604 100644 --- a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-2.digest +++ b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-08709bdb4f451e59-2.digest @@ -12,11 +12,11 @@ lights: 2 light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } volumes: 0 -world: 4 geometries, PrimitiveBreakdown { triangles: 14, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 38, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +world: 4 geometries, PrimitiveBreakdown { triangles: 14, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 26, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d39ea1d8f1160585 camera=12:d39ea1d8f1160585 shadow=12:d39ea1d8f1160585 indirect=12:d39ea1d8f1160585 -geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:49382ab6090bd205 camera=12:49382ab6090bd205 shadow=12:49382ab6090bd205 indirect=12:49382ab6090bd205 -geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b7134b56e9f18a65 camera=12:b7134b56e9f18a65 shadow=12:b7134b56e9f18a65 indirect=12:b7134b56e9f18a65 -geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:49382ab6090bd205 camera=12:49382ab6090bd205 shadow=12:49382ab6090bd205 indirect=12:49382ab6090bd205 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b7134b56e9f18a65 camera=12:b7134b56e9f18a65 shadow=12:b7134b56e9f18a65 indirect=12:b7134b56e9f18a65 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 provenance material /World/Plain/MATERIAL/full: MaterialOrigin { slots: [2], displaced: false } provenance material read: ("/World/_Asset/MATERIAL/full", "/__Prototype_0/MATERIAL/full") provenance material read: ("/World/_Asset/MATERIAL/full/surface", "/__Prototype_0/MATERIAL/full") @@ -26,12 +26,11 @@ provenance geometry 0..1: /World/TowerA provenance geometry 1..2: /World/TowerB provenance geometry 2..3: /World/Plain/GEO/block provenance geometry 3..4: /World/Ground -provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } -provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } -provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } -provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } -provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-856ac5cdf233a681-1.digest b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-856ac5cdf233a681-1.digest index d53b4966b..aa5319288 100644 --- a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-856ac5cdf233a681-1.digest +++ b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-856ac5cdf233a681-1.digest @@ -12,11 +12,11 @@ lights: 2 light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } volumes: 0 -world: 4 geometries, PrimitiveBreakdown { triangles: 14, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 38, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +world: 4 geometries, PrimitiveBreakdown { triangles: 14, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 26, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d39ea1d8f1160585 camera=12:d39ea1d8f1160585 shadow=12:d39ea1d8f1160585 indirect=12:d39ea1d8f1160585 -geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:49382ab6090bd205 camera=12:49382ab6090bd205 shadow=12:49382ab6090bd205 indirect=12:49382ab6090bd205 -geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b7134b56e9f18a65 camera=12:b7134b56e9f18a65 shadow=12:b7134b56e9f18a65 indirect=12:b7134b56e9f18a65 -geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:49382ab6090bd205 camera=12:49382ab6090bd205 shadow=12:49382ab6090bd205 indirect=12:49382ab6090bd205 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b7134b56e9f18a65 camera=12:b7134b56e9f18a65 shadow=12:b7134b56e9f18a65 indirect=12:b7134b56e9f18a65 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 provenance material /World/Plain/MATERIAL/full: MaterialOrigin { slots: [2], displaced: false } provenance material read: ("/World/_Asset/MATERIAL/full", "/__Prototype_0/MATERIAL/full") provenance material read: ("/World/_Asset/MATERIAL/full/surface", "/__Prototype_0/MATERIAL/full") @@ -26,12 +26,11 @@ provenance geometry 0..1: /World/TowerA provenance geometry 1..2: /World/TowerB provenance geometry 2..3: /World/Plain/GEO/block provenance geometry 3..4: /World/Ground -provenance mesh: MeshOrigin { geom_id: 2, slot: 2, baked: true, moving: false } -provenance mesh: MeshOrigin { geom_id: 3, slot: 3, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } -provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } -provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } -provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } provenance spheres: [] provenance volumes: [] provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: true, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/volume_in_prototype_usda-d6406b3b1214ee81-1.digest b/crates/crust-core/tests/data/import_baselines/volume_in_prototype_usda-d6406b3b1214ee81-1.digest index 2d810629d..d1a0e9bf9 100644 --- a/crates/crust-core/tests/data/import_baselines/volume_in_prototype_usda-d6406b3b1214ee81-1.digest +++ b/crates/crust-core/tests/data/import_baselines/volume_in_prototype_usda-d6406b3b1214ee81-1.digest @@ -8,8 +8,8 @@ aovs: AovRequest { products: [], precomp: None } pass: None source: Source { lens: None, depth_of_field: true, motion_blur: false, layer_stack: ["$DIR/volume_in_prototype.usda"], invisible_overrides: Some(0) } layer: $DIR/volume_in_prototype.usda -warning: Warning { code: VolumeInPrototype, kind: Skipped, count: 3, prims: ["/__Prototype_0/Fog", "/World/Scatter/Protos/Puff"], message: "Volume at /__Prototype_0/Fog is inside a prototype — volumes cannot be instanced, skipped" } -warning: Warning { code: InstancingEmptyPrototype, kind: Skipped, count: 3, prims: ["/__Prototype_0", "/World/Scatter/Protos/Puff"], message: "Prototype /__Prototype_0 contributed no geometry" } +warning: Warning { code: VolumeInPrototype, kind: Skipped, count: 2, prims: ["/__Prototype_0/Fog", "/World/Scatter/Protos/Puff"], message: "Volume at /__Prototype_0/Fog is inside a prototype — volumes cannot be instanced, skipped" } +warning: Warning { code: InstancingEmptyPrototype, kind: Skipped, count: 2, prims: ["/__Prototype_0", "/World/Scatter/Protos/Puff"], message: "Prototype /__Prototype_0 contributed no geometry" } warning: Warning { code: CameraMissing, kind: Skipped, count: 1, prims: [], message: "USD stage has no UsdGeomCamera — falling back to world::get_settings camera" } lights: 0 volumes: 0 diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index 95be2a29f..0f6a76a0e 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -187,13 +187,13 @@ bridge, `EvalTimeScope` and the prototype epoch are deleted together in the fina group, once every family reads the index and parity holds on the samples, fixtures, ALab and Moana. -### D3a. The one behaviour change: undefined prims are not imported +### D3a. The first behaviour change: undefined prims are not imported The direct importer walked every prim, defined or not, and read an `over`-only prim by its type. USD defines no such prim, and the scene index, like UsdImaging, holds only defined ones (`active`, `defined`, not abstract). The user's decision: the import follows USD's rule, and an `over` with no `def` anywhere is not imported. It is the one change -of behaviour this change makes. On the committed samples and fixtures it changes no +of behaviour this change makes (D3b and D3c add two more). On the committed samples and fixtures it changes no baseline: the one fixture that met it authored two specs of one prim in one layer by accident, and was corrected rather than re-baselined. On ALab it drops one camera the direct importer listed from the provenance (`over Camera "renderCam"` under the @@ -201,6 +201,38 @@ direct importer listed from the provenance (`over Camera "renderCam"` under the nothing else changes. A baseline that changes for this reason only is re-recorded, and each such change is checked to be explained by it. +### D3b. The second behaviour change: prims in an instance inherit its bindings + +In USD a prim inside an instance inherits the material bindings of the instance's +ancestors (`ComputeBoundMaterial` on an instance proxy), and UsdImaging propagates them +into the instance's prototype, grouping instances by binding. The direct importer +resolved a prototype prim's binding inside `/__Prototype_N` only. The user's decision: +the import takes Moho's propagated prototypes as they are (Hydra's model), a fix to the +direct importer's rule. Prototype prims are read in the instancing chain at their +re-rooted paths; a binding inside a propagated prototype names the re-rooted material +(Moho's M11), read there, and named, in warnings and provenance, by the USD prim it +comes from (`primOrigin`). Instances of one USD prototype bound differently become +several prototypes, which can change placement counts, shared-or-unshared and +bake-or-instance. A baseline that changes for this reason only is re-recorded, each +change checked against it. On the committed samples and fixtures none does. + +### D3c. The third behaviour change: a prototype is built once per import + +The direct importer keyed a prototype's parts by `(epoch, /__Prototype_N)`, the epoch +numbering a streamed import's stages, so a prototype placed in two chunks was built +twice. The parts are now keyed by Moho's propagated prototype path (or a point +instancer's copy), which is stable across stages, with no epoch (the user's decision): +a prototype is built once for the whole import and its parts reused in every chunk; +its materials, keyed by their re-rooted paths, are reused with it. Geometry, materials +and placements are otherwise equal, and so are the images. The digests that change for +this reason only, re-recorded after their images were checked equal: +- `samples/purpose_bindings.usda` (streamed, two instances in two chunks): one + prototype block instead of two (unique triangles 38 to 26, one mesh slot and one + material fewer, the `crust check` report's BVH sizes with them); +- `usd_inline.rs`, `a_volume_cube_in_a_prototype_is_neither_a_volume_nor_a_box`: the + prototype walked once, so `volume.in_prototype` and `instancing.empty_prototype` + count 2 instead of 3. + ### D4. Index layout: S0's merged index, the consumer deciding what is in - **Single stage** (fewer than 4 subtrees, or `CRUST_STREAM_IMPORT=0`): one diff --git a/openspec/changes/moho-import/specs/import-parity/spec.md b/openspec/changes/moho-import/specs/import-parity/spec.md index 9bcc3bd5f..fb3039a0d 100644 --- a/openspec/changes/moho-import/specs/import-parity/spec.md +++ b/openspec/changes/moho-import/specs/import-parity/spec.md @@ -42,9 +42,12 @@ An import SHALL equal its baseline when all of these hold: - its render at `-s 16 --indirect-clamp 0` is bitwise equal. No tolerance SHALL apply. A difference SHALL be fixed, or listed here with its reason. -Undefined prims are not imported (the change's one behaviour change, in -`scene-index-import`): a baseline that differs for that reason only SHALL be re-recorded, -each changed baseline checked to be explained by it. +The change makes three behaviour changes (`scene-index-import`): undefined prims are not +imported; a prim inside an instance inherits the instance's ancestors' bindings, through +the propagated prototypes; and a prototype is built once per import, reused across a +streamed import's chunks. A baseline that differs for one of these reasons only SHALL be +re-recorded, each changed baseline checked to be explained by it and its image checked +equal where the reason does not change the render. The one listed exception SHALL be the number openusd gives a native prototype (`/__Prototype_`): openusd numbers a stage's prototypes in the order they are first asked for, the scene index's population walk asks in another order than the direct diff --git a/openspec/changes/moho-import/specs/scene-index-import/spec.md b/openspec/changes/moho-import/specs/scene-index-import/spec.md index 62b9419e4..351d053c4 100644 --- a/openspec/changes/moho-import/specs/scene-index-import/spec.md +++ b/openspec/changes/moho-import/specs/scene-index-import/spec.md @@ -59,8 +59,15 @@ same thing, as recorded in the baselines (`import-parity`): - the same prims pruned (abstract, inactive, `proxy`/`guide` purpose, invisible), with invisible subtrees still searched for cameras. -The one exception SHALL be undefined prims: an `over` that no layer defines SHALL NOT be -imported, as USD and UsdImaging have it, where the direct importer read it by its type. +Three exceptions SHALL apply, each as USD and UsdImaging have it: +- undefined prims: an `over` that no layer defines SHALL NOT be imported, where the + direct importer read it by its type; +- bindings in instances: a prim inside a native instance SHALL take the material its + instance's ancestors bind when it binds none itself, through Moho's propagated + prototypes, where the direct importer resolved bindings inside `/__Prototype_N` only; +- prototypes built once: a prototype's parts SHALL be keyed by its propagated path and + reused in every chunk of a streamed import, where the direct importer rebuilt them per + chunk. Renderer attributes (`crust:*`) SHALL be read from the scene index's generic attribute data, with the same authored-versus-fallback rule as the direct importer. @@ -82,6 +89,12 @@ data, with the same authored-versus-fallback rule as the direct importer. - **WHEN** a layer authors `over Camera "renderCam"` and no layer defines that prim - **THEN** the import does not hold it: it is no camera the render can go through +#### Scenario: A prototype in two chunks + +- **WHEN** a streamed import places one prototype from two chunks +- **THEN** its parts are built once and placed twice, and the image is the direct + importer's + #### Scenario: Warnings - **WHEN** a stage's baseline records warnings from the direct importer From ec16bf504fca2b4fae7a21ccd629f0501763d516 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 20:16:48 +0100 Subject: [PATCH 65/95] crust: the walk reads the instancing chain, chain::standard's and chain::merged's shape (12.1) The walk, its children and pruning, the readers it calls, and the top of the chain (light linking and material-node resolution over it; streamed, over the merging index of instancing chains) now read the input's instancing chain: Moho's native and point instancing filters included, the propagated prototypes skipped at their scopes and reached through their instances. A point instancer's prototype authored instanceable is read through its own propagated prototype, named under the root, so no prototype is read on the stage any more but one reached through an instance proxy. The prototype walk's volume check reads the re-rooted data too. The debug suite (2661) and the image run equal their baselines. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/index/mod.rs | 14 ++++---- .../src/scene/usd_import/index/walk.rs | 6 ++-- .../src/scene/usd_import/instancing.rs | 33 +++++++++++++------ 3 files changed, 34 insertions(+), 19 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/index/mod.rs b/crates/crust-core/src/scene/usd_import/index/mod.rs index d4d59d9bd..0db29e1bd 100644 --- a/crates/crust-core/src/scene/usd_import/index/mod.rs +++ b/crates/crust-core/src/scene/usd_import/index/mod.rs @@ -98,7 +98,7 @@ impl Single { let input = input_chain(stage, time, false); let membership: Rc = input.stage.clone(); let top = MaterialNodeResolvingSceneIndex::new(LightLinkingSceneIndex::new( - input.chain.clone(), + input.inst.clone(), Some(membership), )); Single { input, top } @@ -129,7 +129,7 @@ impl Streamed { /// index stage, unloaded prims included). pub(super) fn new(scene: Input, time: Option) -> Self { let merging = MergingSceneIndex::new(); - merging.add_input_scene(scene.chain.clone(), sdf::Path::abs_root()); + merging.add_input_scene(scene.inst.clone(), sdf::Path::abs_root()); let input: SceneIndexHandle = merging.clone(); let top = MaterialNodeResolvingSceneIndex::new(LightLinkingSceneIndex::new(input, None)); Streamed { @@ -146,14 +146,14 @@ impl Streamed { pub(super) fn add_chunk(&self, stage: Stage, root: &sdf::Path) -> Input { let chunk = input_chain(stage, self.time, false); self.merging - .insert_input_scene(0, chunk.chain.clone(), root.clone()); + .insert_input_scene(0, chunk.inst.clone(), root.clone()); chunk } /// Removes a chunk added by [`Streamed::add_chunk`]; its stage is freed /// when the returned input is dropped. pub(super) fn remove_chunk(&self, chunk: &Input) { - self.merging.remove_input_scene(&chunk.chain); + self.merging.remove_input_scene(&chunk.inst); } /// Grows the side input until the merged index holds everything the @@ -194,11 +194,11 @@ impl Streamed { }; let input = input_chain(stage.clone(), self.time, false); if let Some((old, _)) = self.side.borrow_mut().take() { - self.merging.remove_input_scene(&old.chain); + self.merging.remove_input_scene(&old.inst); } // After the chunk (position 0), before the scene input. self.merging - .insert_input_scene(1, input.chain.clone(), sdf::Path::abs_root()); + .insert_input_scene(1, input.inst.clone(), sdf::Path::abs_root()); *self.side.borrow_mut() = Some((input, paths.clone())); changed = Some((stage, paths)); } @@ -208,7 +208,7 @@ impl Streamed { /// Removes the side input, after the last chunk. pub(super) fn remove_side(&self) { if let Some((old, _)) = self.side.borrow_mut().take() { - self.merging.remove_input_scene(&old.chain); + self.merging.remove_input_scene(&old.inst); } } diff --git a/crates/crust-core/src/scene/usd_import/index/walk.rs b/crates/crust-core/src/scene/usd_import/index/walk.rs index c1e4dbb96..8ffcd8d31 100644 --- a/crates/crust-core/src/scene/usd_import/index/walk.rs +++ b/crates/crust-core/src/scene/usd_import/index/walk.rs @@ -37,11 +37,11 @@ pub(in crate::scene::usd_import) fn walk( top: &moho::scene_index::SceneIndexHandle, ctx: &mut ImportCtx, ) { - let index: &dyn SceneIndex = input.chain.as_ref(); + let index: &dyn SceneIndex = input.inst.as_ref(); if let Some(pass) = &mut ctx.pass { pass.begin_chunk(input); } - ctx.caches.scene = Some((input.chain.clone(), stage.clone())); + ctx.caches.scene = Some((input.inst.clone(), stage.clone())); ctx.caches.top = Some(top.clone()); ctx.caches.stage_index = Some(input.stage.clone()); ctx.caches.inst = Some(input.inst.clone()); @@ -86,6 +86,8 @@ pub(in crate::scene::usd_import) fn children( path: &sdf::Path, ) -> Vec { let mut children = index.children(path); + // Moho's propagated prototypes are reached through their instances. + children.retain(|c| c.name() != Some(moho::tokens::instancing::PROPAGATED_ROOT)); if path.is_abs_root() { children.retain(|c| !bridge::prim(stage, c).is_prototype().unwrap_or(false)); } diff --git a/crates/crust-core/src/scene/usd_import/instancing.rs b/crates/crust-core/src/scene/usd_import/instancing.rs index fa73d95f2..ae3512b22 100644 --- a/crates/crust-core/src/scene/usd_import/instancing.rs +++ b/crates/crust-core/src/scene/usd_import/instancing.rs @@ -266,11 +266,29 @@ pub(super) fn collect_proto_parts( return parts; } // Walked in the instancing chain, each prim read at its USD path. + // A prototype reached through an instance proxy (the chain holds no + // proxies) is walked on the stage, as before. // A root that is itself an instance (a point instancer's prototype - // authored instanceable) holds no children in the chain, which does not - // populate instance proxies: its proxies are walked on the stage, as - // before. - let on_stage = !proto.in_index || root.is_instance().unwrap_or(false); + // authored instanceable) is read through its own propagated prototype, + // named under the root. + let redirected; + let proto = match caches + .inst + .as_ref() + .filter(|_| proto.in_index && root.is_instance().unwrap_or(false)) + .and_then(|inst| super::index::instancers::native_prototype(inst.as_ref(), &proto.index)) + { + Some(index) => { + redirected = ProtoRoot { + index, + usd: proto.usd.clone(), + in_index: true, + }; + &redirected + } + None => proto, + }; + let on_stage = !proto.in_index; let start = if on_stage { proto.usd.clone() } else { @@ -343,7 +361,6 @@ pub(super) fn collect_proto_parts( ), } } - let mask = prim_ray_mask(&prim); // Volumes first, as at the top level: a `crust:volume:*` prim is a @@ -351,11 +368,7 @@ pub(super) fn collect_proto_parts( // as a box. Volumes live outside the surface BVH entirely (their // bounds must not occlude shadow rays), so they cannot ride an // instance transform. Say so rather than dropping silently. - if caches - .prim_data(prim.path()) - .custom_token("crust:volume:type") - .is_some() - { + if pdata.custom_token("crust:volume:type").is_some() { warning!( VolumeInPrototype, at = prim.path(), From 82f6767e460aee4e4d2459455b7854085aa71df1 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 20:46:37 +0100 Subject: [PATCH 66/95] crust: one chain per input, moho::chain::input (12.1) The input's plain chain (crust's filters without instancing) goes: every reader reads moho::chain::input over the stage scene index, the native and point instancing filters included, and the top is chain::standard's or chain::merged's shape over it. The binding agreement test skips the re-rooted prims, which have no stage counterpart (and inherit bindings, D3b). The debug suite equals its baselines, and the image run differs nowhere. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/index/mod.rs | 36 +++++++------------ .../src/scene/usd_import/index/walk.rs | 6 ++-- .../src/scene/usd_import/materials.rs | 10 ++++++ 3 files changed, 25 insertions(+), 27 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/index/mod.rs b/crates/crust-core/src/scene/usd_import/index/mod.rs index 0db29e1bd..ab38313a0 100644 --- a/crates/crust-core/src/scene/usd_import/index/mod.rs +++ b/crates/crust-core/src/scene/usd_import/index/mod.rs @@ -30,10 +30,7 @@ use std::rc::Rc; -use moho::filter::{ - FlatteningSceneIndex, LightLinkingSceneIndex, MaterialBindingResolvingSceneIndex, - MaterialNodeResolvingSceneIndex, MergingSceneIndex, RenderSettingsFlatteningSceneIndex, -}; +use moho::filter::{LightLinkingSceneIndex, MaterialNodeResolvingSceneIndex, MergingSceneIndex}; use moho::openusd::sdf; use moho::openusd::usd::{Stage, TimeCode}; use moho::scene_index::{CollectionMembership, SceneIndexHandle}; @@ -50,13 +47,10 @@ pub(super) mod walk; pub(super) struct Input { /// The stage index, which owns the stage while the input lives. pub(super) stage: Rc, - /// `chain::input`'s filters over it, without the instancing filters while - /// instancing reads through the bridge. + /// `moho::chain::input` over it: the native and point instancing + /// filters, flattening, material binding resolution and render settings + /// flattening. pub(super) chain: SceneIndexHandle, - /// `chain::input` itself over the same stage index, instancing filters - /// included: where the instancing reader finds Moho's instancers and - /// propagated prototypes (task 12.1) while the walk moves to it. - pub(super) inst: SceneIndexHandle, } /// The input over `stage`, at the import's `time` (`None` reads default @@ -70,16 +64,10 @@ pub(super) fn input_chain(stage: Stage, time: Option, include_unloaded: boo index.set_time(TimeCode::new(t)); } index.set_stage(stage); - let membership: Rc = index.clone(); - let input: SceneIndexHandle = index.clone(); - let flat = FlatteningSceneIndex::new(input); - let bindings = MaterialBindingResolvingSceneIndex::new(flat, Some(membership)); - let chain = RenderSettingsFlatteningSceneIndex::new(bindings); - let inst = moho::chain::input(index.clone()); + let chain = moho::chain::input(index.clone()); Input { stage: index, chain, - inst, } } @@ -98,7 +86,7 @@ impl Single { let input = input_chain(stage, time, false); let membership: Rc = input.stage.clone(); let top = MaterialNodeResolvingSceneIndex::new(LightLinkingSceneIndex::new( - input.inst.clone(), + input.chain.clone(), Some(membership), )); Single { input, top } @@ -129,7 +117,7 @@ impl Streamed { /// index stage, unloaded prims included). pub(super) fn new(scene: Input, time: Option) -> Self { let merging = MergingSceneIndex::new(); - merging.add_input_scene(scene.inst.clone(), sdf::Path::abs_root()); + merging.add_input_scene(scene.chain.clone(), sdf::Path::abs_root()); let input: SceneIndexHandle = merging.clone(); let top = MaterialNodeResolvingSceneIndex::new(LightLinkingSceneIndex::new(input, None)); Streamed { @@ -146,14 +134,14 @@ impl Streamed { pub(super) fn add_chunk(&self, stage: Stage, root: &sdf::Path) -> Input { let chunk = input_chain(stage, self.time, false); self.merging - .insert_input_scene(0, chunk.inst.clone(), root.clone()); + .insert_input_scene(0, chunk.chain.clone(), root.clone()); chunk } /// Removes a chunk added by [`Streamed::add_chunk`]; its stage is freed /// when the returned input is dropped. pub(super) fn remove_chunk(&self, chunk: &Input) { - self.merging.remove_input_scene(&chunk.inst); + self.merging.remove_input_scene(&chunk.chain); } /// Grows the side input until the merged index holds everything the @@ -194,11 +182,11 @@ impl Streamed { }; let input = input_chain(stage.clone(), self.time, false); if let Some((old, _)) = self.side.borrow_mut().take() { - self.merging.remove_input_scene(&old.inst); + self.merging.remove_input_scene(&old.chain); } // After the chunk (position 0), before the scene input. self.merging - .insert_input_scene(1, input.inst.clone(), sdf::Path::abs_root()); + .insert_input_scene(1, input.chain.clone(), sdf::Path::abs_root()); *self.side.borrow_mut() = Some((input, paths.clone())); changed = Some((stage, paths)); } @@ -208,7 +196,7 @@ impl Streamed { /// Removes the side input, after the last chunk. pub(super) fn remove_side(&self) { if let Some((old, _)) = self.side.borrow_mut().take() { - self.merging.remove_input_scene(&old.inst); + self.merging.remove_input_scene(&old.chain); } } diff --git a/crates/crust-core/src/scene/usd_import/index/walk.rs b/crates/crust-core/src/scene/usd_import/index/walk.rs index 8ffcd8d31..21ce29896 100644 --- a/crates/crust-core/src/scene/usd_import/index/walk.rs +++ b/crates/crust-core/src/scene/usd_import/index/walk.rs @@ -37,14 +37,14 @@ pub(in crate::scene::usd_import) fn walk( top: &moho::scene_index::SceneIndexHandle, ctx: &mut ImportCtx, ) { - let index: &dyn SceneIndex = input.inst.as_ref(); + let index: &dyn SceneIndex = input.chain.as_ref(); if let Some(pass) = &mut ctx.pass { pass.begin_chunk(input); } - ctx.caches.scene = Some((input.inst.clone(), stage.clone())); + ctx.caches.scene = Some((input.chain.clone(), stage.clone())); ctx.caches.top = Some(top.clone()); ctx.caches.stage_index = Some(input.stage.clone()); - ctx.caches.inst = Some(input.inst.clone()); + ctx.caches.inst = Some(input.chain.clone()); let mut stack: Vec<(sdf::Path, GMat4, bool, Timing)> = vec![( sdf::Path::abs_root(), GMat4::IDENTITY, diff --git a/crates/crust-core/src/scene/usd_import/materials.rs b/crates/crust-core/src/scene/usd_import/materials.rs index 23e0ed939..fb130b80a 100644 --- a/crates/crust-core/src/scene/usd_import/materials.rs +++ b/crates/crust-core/src/scene/usd_import/materials.rs @@ -1654,6 +1654,16 @@ mod binding_tests { let mut bound = 0; let mut stack = vec![sdf::Path::abs_root()]; while let Some(path) = stack.pop() { + // Moho's propagated prototypes and point-instancer copies have no + // stage prim to compare with (and take Hydra's binding + // inheritance, the change's second behaviour change). + let rerooted = path + .as_str() + .contains(moho::tokens::instancing::PROPAGATED_ROOT) + || path.as_str().contains("/ForInstancer"); + if rerooted { + continue; + } if !path.is_abs_root() { let prim = super::super::prim_at(stage, path.clone()); let direct = bound_material(stage, &prim); From 2157506fea366f3a6b5794eb768067ea1772e92c Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 21:08:48 +0100 Subject: [PATCH 67/95] crust: adaptive placements counted per propagated prototype (12.2) Native placements count, and are looked up, under the propagated prototype their parts are cached under, so instances of one USD prototype bound differently are counted apart (D3b). A test imports the instancing samples with adaptive subdivision on (baselines from the direct importer); purpose_bindings.usda's differs only by the build-once reuse (D3c), re-recorded after its image was checked equal. 12.1 and 12.2 are ticked, with what remains noted. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/instancing.rs | 18 +++--- crates/crust-core/src/scene/usd_import/mod.rs | 4 ++ .../instancing_usda-3bde40325dcc4104-1.digest | 49 ++++++++++++++++ .../instancing_usda-3bde40325dcc4104-1.image | 1 + ..._instancing_usda-859971197d976bdc-1.digest | 56 +++++++++++++++++++ ...d_instancing_usda-859971197d976bdc-1.image | 1 + ...se_bindings_usda-b7b3a3303527bce0-1.digest | 37 ++++++++++++ ...ose_bindings_usda-b7b3a3303527bce0-1.image | 1 + crates/crust-core/tests/usd_adaptive.rs | 23 ++++++++ openspec/changes/moho-import/design.md | 3 + openspec/changes/moho-import/tasks.md | 12 +++- 11 files changed, 193 insertions(+), 12 deletions(-) create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-3bde40325dcc4104-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/instancing_usda-3bde40325dcc4104-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancing_usda-859971197d976bdc-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_instancing_usda-859971197d976bdc-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-b7b3a3303527bce0-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-b7b3a3303527bce0-1.image diff --git a/crates/crust-core/src/scene/usd_import/instancing.rs b/crates/crust-core/src/scene/usd_import/instancing.rs index ae3512b22..528dff230 100644 --- a/crates/crust-core/src/scene/usd_import/instancing.rs +++ b/crates/crust-core/src/scene/usd_import/instancing.rs @@ -871,15 +871,6 @@ pub(super) fn emit_native_instance( .primvars .report_placement(&caches.prim_data(prim.path()), "the instance prim"); let world_xf = span.open; - // Adaptive subdivision refines a prototype by its size on screen only when - // this is its one placement in its top-level subtree. - let place = if caches.meshes.subdiv.adaptive.is_some() - && caches.placement_count(prim.path(), proto_path) == 1 - { - ProtoPlace::Unshared(world_xf) - } else { - ProtoPlace::Shared - }; let root = match caches .inst .as_ref() @@ -892,6 +883,15 @@ pub(super) fn emit_native_instance( }, None => ProtoRoot::usd(proto_path), }; + // Adaptive subdivision refines a prototype by its size on screen only when + // this is its one placement in its top-level subtree. + let place = if caches.meshes.subdiv.adaptive.is_some() + && caches.placement_count(prim.path(), &root.index) == 1 + { + ProtoPlace::Unshared(world_xf) + } else { + ProtoPlace::Shared + }; let parts = placed_parts(stage, &root, caches, place); let first = world.count(); let motion = prim_motion_translate(prim); diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index 6aadcf2bf..2df7f7746 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -225,6 +225,10 @@ fn count_placements(stage: &Stage, input: &index::Input, caches: &mut ImportCach _ => None, }; if let Some(proto) = proto { + // Counted per propagated prototype, the key its parts are cached + // under: instances of one USD prototype bound differently are + // different prototypes (design D3b). + let proto = index::instancers::native_prototype(chain, &path).unwrap_or(proto); // A zero-scale placement draws nothing (`attach_proto_parts` // skips it), so it does not make its prototype shared. if world.determinant().abs() >= 1e-12 { diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-3bde40325dcc4104-1.digest b/crates/crust-core/tests/data/import_baselines/instancing_usda-3bde40325dcc4104-1.digest new file mode 100644 index 000000000..5b4e2e4e2 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-3bde40325dcc4104-1.digest @@ -0,0 +1,49 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.2, 13.0), lower_left_corner: Vec3A(-5.6632595, -1.346313, 3.5406666), horizontal: Vec3A(11.326519, -0.0, 0.0), vertical: Vec3A(0.0, 6.3091636, -0.8866952), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9902681, -0.13917312), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/instancing.usda +warning: Warning { code: SubdivAdaptiveNeedsCamera, kind: Approximated, count: 1, prims: [], message: "Adaptive subdivision (2 px) needs the render camera before the stage is read — name it with --camera or RenderSettings.camera, or a dicing camera with crust:dicingCamera. Using the uniform level 0" } +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 13 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } top level, PrimitiveBreakdown { triangles: 36, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 11 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:32b8fc7fab01f734 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:32b8fc7fab01f734 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:58d360c7905fa0c5 camera=2:58d360c7905fa0c5 shadow=2:58d360c7905fa0c5 indirect=2:58d360c7905fa0c5 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2599211 motion [] pieces all=8:cb8213f19e1889e5 camera=8:cb8213f19e1889e5 shadow=8:cb8213f19e1889e5 indirect=8:cb8213f19e1889e5 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0079368 motion [] pieces all=8:9f690ca55fcd34b1 camera=8:9f690ca55fcd34b1 shadow=8:9f690ca55fcd34b1 indirect=8:9f690ca55fcd34b1 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.6378974 motion [] pieces all=8:bf00f68921a1ff6d camera=8:bf00f68921a1ff6d shadow=8:bf00f68921a1ff6d indirect=8:bf00f68921a1ff6d +geom 5: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.1370313 motion [] pieces all=8:d86fbb7901e66cf5 camera=8:d86fbb7901e66cf5 shadow=8:d86fbb7901e66cf5 indirect=8:d86fbb7901e66cf5 +geom 6: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.2962416 motion [] pieces all=8:100fb1034ea0bf45 camera=8:100fb1034ea0bf45 shadow=8:100fb1034ea0bf45 indirect=8:100fb1034ea0bf45 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:01961e1714f11539 camera=12:01961e1714f11539 shadow=12:01961e1714f11539 indirect=12:01961e1714f11539 +geom 8: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.7958115 motion [] pieces all=12:94d0d184098e3ffd camera=12:94d0d184098e3ffd shadow=12:94d0d184098e3ffd indirect=12:94d0d184098e3ffd +geom 9: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d4ab18518f82edfd camera=12:d4ab18518f82edfd shadow=12:d4ab18518f82edfd indirect=12:d4ab18518f82edfd +geom 10: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:83f43ac124235a31 camera=12:83f43ac124235a31 shadow=12:83f43ac124235a31 indirect=12:83f43ac124235a31 +geom 11: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:295cfa9554179a8d camera=12:295cfa9554179a8d shadow=12:295cfa9554179a8d indirect=12:295cfa9554179a8d +geom 12: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:3ea47e28253b632d camera=12:3ea47e28253b632d shadow=12:3ea47e28253b632d indirect=12:3ea47e28253b632d +provenance material /World/Looks/Copper: MaterialOrigin { slots: [8, 10, 12], displaced: false } +provenance material /World/Looks/Emerald: MaterialOrigin { slots: [2, 3, 4, 5, 6, 7, 9, 11], displaced: false } +provenance material /World/Looks/Grey: MaterialOrigin { slots: [1], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 13..13 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..7: /World/Scatter +provenance geometry 7..9: /World/TowerC +provenance geometry 9..11: /World/TowerB +provenance geometry 11..13: /World/TowerA +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6334356113930313994, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 6822106956337694752, n_points: 6, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2005039782605831059, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 2103454763208511752, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: Some(2.0), skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/instancing_usda-3bde40325dcc4104-1.image b/crates/crust-core/tests/data/import_baselines/instancing_usda-3bde40325dcc4104-1.image new file mode 100644 index 000000000..04f5b4e66 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/instancing_usda-3bde40325dcc4104-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off bc733f3dea963f51 diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-859971197d976bdc-1.digest b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-859971197d976bdc-1.digest new file mode 100644 index 000000000..dc66d239f --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-859971197d976bdc-1.digest @@ -0,0 +1,56 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 3.4, 15.0), lower_left_corner: Vec3A(-4.530607, -0.34816408, 5.3851185), horizontal: Vec3A(9.061214, -0.0, 0.0), vertical: Vec3A(0.0, 5.058942, -0.62115985), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9925462, -0.121869326), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: Some("/Render/settings") +settings: RenderSettings { samples_per_pixel: 48, max_depth: 8, width: 480, height: 270, region: PixelRect { x0: 0, y0: 0, x1: 480, y1: 270 }, min_samples_per_pixel: 16, variance_threshold: 0.02, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 30.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/nested_instancing.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested_instancing.usda +warning: Warning { code: SubdivAdaptiveNeedsCamera, kind: Approximated, count: 1, prims: [], message: "Adaptive subdivision (2 px) needs the render camera before the stage is read — name it with --camera or RenderSettings.camera, or a dicing camera with crust:dicingCamera. Using the uniform level 0" } +warning: Warning { code: AssetUnsupportedByHost, kind: Skipped, count: 1, prims: [], message: "No asset loader: environment map $DIR/sky_gradient.exr ignored — the dome falls back to its uniform colour. Use Scene::from_usd_with_assets to supply one." } +lights: 2 +light 0: area name Some("/World/Key") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 21 geometries, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 9 } top level, PrimitiveBreakdown { triangles: 28, spheres: 3, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 15 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:986409906e99ce0b camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:986409906e99ce0b +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:f6fecef7f865e305 camera=2:f6fecef7f865e305 shadow=2:f6fecef7f865e305 indirect=2:f6fecef7f865e305 +geom 2: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:c39b723835719483 camera=1:c39b723835719483 shadow=1:c39b723835719483 indirect=1:c39b723835719483 +geom 3: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:8507dcd6df7db891 camera=12:8507dcd6df7db891 shadow=12:8507dcd6df7db891 indirect=12:8507dcd6df7db891 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:34db86a4181bc99b camera=1:34db86a4181bc99b shadow=1:34db86a4181bc99b indirect=1:34db86a4181bc99b +geom 5: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:2e59a4f39b6703b9 camera=12:2e59a4f39b6703b9 shadow=12:2e59a4f39b6703b9 indirect=12:2e59a4f39b6703b9 +geom 6: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=16:5eb5e682e31960a1 camera=16:5eb5e682e31960a1 shadow=16:5eb5e682e31960a1 indirect=16:5eb5e682e31960a1 +geom 7: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 8: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 9: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=16:93601f672d232a8a camera=16:93601f672d232a8a shadow=16:93601f672d232a8a indirect=16:93601f672d232a8a +geom 10: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 11: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0772173 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 12: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=16:b4f39ab97ac3b7ac camera=16:b4f39ab97ac3b7ac shadow=16:b4f39ab97ac3b7ac indirect=16:b4f39ab97ac3b7ac +geom 13: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 14: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.9472682 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 15: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=16:9a1c2df9f06cc828 camera=16:9a1c2df9f06cc828 shadow=16:9a1c2df9f06cc828 indirect=16:9a1c2df9f06cc828 +geom 16: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 17: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0476896 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 18: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=16:f8f87e14f3286bf5 camera=16:f8f87e14f3286bf5 shadow=16:f8f87e14f3286bf5 indirect=16:f8f87e14f3286bf5 +geom 19: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +geom 20: material #4 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 0.98304754 motion [] pieces all=0:cbf29ce484222325 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=0:cbf29ce484222325 +provenance material /World/Looks/Bark: MaterialOrigin { slots: [3, 5], displaced: false } +provenance material /World/Looks/Blossom: MaterialOrigin { slots: [2, 4, 7, 10, 13, 16, 19], displaced: false } +provenance material /World/Looks/Ground: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Looks/Leafy: MaterialOrigin { slots: [6, 8, 9, 11, 12, 14, 15, 17, 18, 20], displaced: false } +provenance light /World/Key: LightOrigin { index: 0, geoms: 0..1 } +provenance light /World/Sky: LightOrigin { index: 1, geoms: 21..21 } +provenance geometry 0..1: /World/Key +provenance geometry 1..2: /World/Floor +provenance geometry 2..4: /World/PlanterB +provenance geometry 4..6: /World/PlanterA +provenance geometry 6..21: /World/Grove +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 10492340787237780741, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12249693463529756870, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 12038934229465983880, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 2 }), placements: 0, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: Some(2.0), skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-859971197d976bdc-1.image b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-859971197d976bdc-1.image new file mode 100644 index 000000000..603a6c224 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_instancing_usda-859971197d976bdc-1.image @@ -0,0 +1 @@ +480x270 16spp clamp-off 876c98e5bda352fd diff --git a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-b7b3a3303527bce0-1.digest b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-b7b3a3303527bce0-1.digest new file mode 100644 index 000000000..9a412f381 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-b7b3a3303527bce0-1.digest @@ -0,0 +1,37 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(0.0, 1.5, 9.0), lower_left_corner: Vec3A(-4.3656254, -1.9874965, -0.6885319), horizontal: Vec3A(8.731251, -0.0, 0.0), vertical: Vec3A(0.0, 4.8844237, -0.5133736), u: Vec3A(1.0, -0.0, 0.0), v: Vec3A(0.0, 0.9945219, -0.104528464), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 24.0, aperture: [20.955, 11.787], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/purpose_bindings.usda"], invisible_overrides: Some(0) } +layer: $DIR/purpose_bindings.usda +warning: Warning { code: SubdivAdaptiveNeedsCamera, kind: Approximated, count: 1, prims: [], message: "Adaptive subdivision (2 px) needs the render camera before the stage is read — name it with --camera or RenderSettings.camera, or a dicing camera with crust:dicingCamera. Using the uniform level 0" } +lights: 2 +light 0: distant name Some("/World/Sun") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +light 1: dome name Some("/World/Sky") lpe None pmf 0.5 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 4 geometries, PrimitiveBreakdown { triangles: 14, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } top level, PrimitiveBreakdown { triangles: 26, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 2 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:d39ea1d8f1160585 camera=12:d39ea1d8f1160585 shadow=12:d39ea1d8f1160585 indirect=12:d39ea1d8f1160585 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:49382ab6090bd205 camera=12:49382ab6090bd205 shadow=12:49382ab6090bd205 indirect=12:49382ab6090bd205 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=12:b7134b56e9f18a65 camera=12:b7134b56e9f18a65 shadow=12:b7134b56e9f18a65 indirect=12:b7134b56e9f18a65 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9626b0f2f3e041c5 camera=2:9626b0f2f3e041c5 shadow=2:9626b0f2f3e041c5 indirect=2:9626b0f2f3e041c5 +provenance material /World/Plain/MATERIAL/full: MaterialOrigin { slots: [2], displaced: false } +provenance material read: ("/World/_Asset/MATERIAL/full", "/__Prototype_0/MATERIAL/full") +provenance material read: ("/World/_Asset/MATERIAL/full/surface", "/__Prototype_0/MATERIAL/full") +provenance light /World/Sky: LightOrigin { index: 1, geoms: 0..0 } +provenance light /World/Sun: LightOrigin { index: 0, geoms: 0..0 } +provenance geometry 0..1: /World/TowerA +provenance geometry 1..2: /World/TowerB +provenance geometry 2..3: /World/Plain/GEO/block +provenance geometry 3..4: /World/Ground +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 9489415549461608354, n_points: 8, n_indices: 24, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 14002714535549629103, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: Some(2.0), skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-b7b3a3303527bce0-1.image b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-b7b3a3303527bce0-1.image new file mode 100644 index 000000000..a91e71dcb --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/purpose_bindings_usda-b7b3a3303527bce0-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off 150ac3a4441bf342 diff --git a/crates/crust-core/tests/usd_adaptive.rs b/crates/crust-core/tests/usd_adaptive.rs index d330ec6ef..4c32152be 100644 --- a/crates/crust-core/tests/usd_adaptive.rs +++ b/crates/crust-core/tests/usd_adaptive.rs @@ -1084,3 +1084,26 @@ fn products_do_not_override_the_dicing_camera() { assert_eq!(diced.camera_path.as_deref(), Some("/W/Near")); assert_eq!(tessellation(&diced), tessellation(&through_cam)); } + +/// The instancing samples with adaptive subdivision on (the `moho-import` +/// change, task 12.2): placements counted per subtree on the index, the +/// shared-or-unshared decision taken per propagated prototype, each import +/// checked against the direct importer's baseline (`crust_core::parity`). +/// `instancing.usda` and `purpose_bindings.usda` stream; `nested_instancing` +/// is read on one stage. +#[test] +fn the_instancing_samples_import_adaptively_as_their_baselines() { + let samples = Path::new(env!("CARGO_MANIFEST_DIR")).join("../../samples"); + let options = UsdImportOptions { + subdivision_edge_length: Some(2.0), + ..Default::default() + }; + for name in [ + "instancing.usda", + "nested_instancing.usda", + "purpose_bindings.usda", + ] { + let scene = load(&samples.join(name), &options); + assert!(scene.world.count() > 0, "{name} imports geometry"); + } +} diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index 0f6a76a0e..71fee6d4b 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -232,6 +232,9 @@ this reason only, re-recorded after their images were checked equal: - `usd_inline.rs`, `a_volume_cube_in_a_prototype_is_neither_a_volume_nor_a_box`: the prototype walked once, so `volume.in_prototype` and `instancing.empty_prototype` count 2 instead of 3. +- `usd_adaptive.rs`, `the_instancing_samples_import_adaptively_as_their_baselines` + (added with 12.2, recorded from the direct importer): `purpose_bindings.usda` with + adaptive subdivision, the same one block, mesh slot and material fewer. ### D4. Index layout: S0's merged index, the consumer deciding what is in diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index a7128b11c..2116ad0c5 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -295,7 +295,7 @@ this group, and kept for the whole change. ## 12. Instancing and the standard chain -- [ ] 12.1 Switch to `moho::chain::standard` (one stage), and to `chain::input` per +- [x] 12.1 Switch to `moho::chain::standard` (one stage), and to `chain::input` per input under `chain::merged` (streamed). Read `instancer` prims: - native instances: `instancerTopology` and `hydra:instanceTransforms`, with prototypes walked under their stable paths through the same readers; @@ -308,8 +308,14 @@ this group, and kept for the whole change. `primOrigin/scenePath` (M4). Verify parity green on `instancing.usda`, `nested_instancing.usda`, `PointInstancedMedCity.usd`, the Kitchen set variants and the `usd_scene.rs` instancing tests, with no path normalisation; a remaining difference is - reported, not normalised. -- [ ] 12.2 Placement counts for adaptive subdivision and the bake-versus-instance + reported, not normalised. (Done: one chain per input, `moho::chain::input`, under + `chain::standard`'s or `chain::merged`'s top; prototypes read at Moho's propagated + paths, named by their USD prims, materials through Moho's re-rooted bindings (M11); + caches on the propagated path, no epoch (D3c). A native instance is placed at its own + world transform, which `hydra:instanceTransforms` holds too; a prototype reached + through an instance proxy is still walked on the stage. The prototype numbers keep + the listed normalisation: the USD names are openusd's `/__Prototype_N`.) +- [x] 12.2 Placement counts for adaptive subdivision and the bake-versus-instance decision from instancers, per top-level subtree. Instances judged at the instance or instancer path for links and passes. Verify that parity is green with adaptive subdivision on, on the instancing samples, streamed and not. From 135251e18d67aa40ec15bb4c2db64ea35ea02abd Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 21:29:33 +0100 Subject: [PATCH 68/95] crust: the walk visits prims by path, with no stage prim (12.3 in part) visit_prim takes the walked path: a native instance is told and placed by its prototype in __usdPrimInfo; the walk's children come from the chain alone (openusd's prototypes the instancing filter hides); the motion tallies, the native and point instancer emitters, the material resolution entry points and the camera visit take paths; unread Gprims are typed by IsA on the index; a prim inside a prototype is asked about time through its stage-index xform. Two reads stay on the stage, in stage_facts (design D7): a prim's prim_stack for provenance's arc sources, and the instanceable-without-prototype diagnostic the index cannot show. The debug suite (2662) equals its baselines. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../crust-core/src/scene/usd_import/attrs.rs | 12 +- .../src/scene/usd_import/index/stage_facts.rs | 28 +++ .../src/scene/usd_import/index/walk.rs | 14 +- .../src/scene/usd_import/instancing.rs | 43 ++-- .../src/scene/usd_import/materials.rs | 8 +- crates/crust-core/src/scene/usd_import/mod.rs | 199 +++++++++--------- .../crust-core/src/scene/usd_import/xform.rs | 42 ++-- 7 files changed, 177 insertions(+), 169 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/attrs.rs b/crates/crust-core/src/scene/usd_import/attrs.rs index e42fe7550..d057bddaf 100644 --- a/crates/crust-core/src/scene/usd_import/attrs.rs +++ b/crates/crust-core/src/scene/usd_import/attrs.rs @@ -3,7 +3,7 @@ //! schema-attribute value decoding. Every read resolves at [`eval_time`]. use crate::warning; -use glam::{Vec3, Vec3A}; +use glam::Vec3A; use moho::openusd; use openusd::gf::Vec3f; use openusd::sdf; @@ -30,12 +30,6 @@ pub(super) fn prim_ray_mask(prim: &Prim) -> RayMask { /// (the Moana island's `islandPrman.usda` authors it on every light). pub(super) const RI_CAMERA_VISIBILITY: &str = "primvars:ri:attributes:visibility:camera"; -/// `crust:motion:translate` — a world-space translation the prim moves -/// through over the shutter interval (transform motion blur). -pub(super) fn prim_motion_translate(prim: &Prim) -> Option { - custom_color3(prim, "crust:motion:translate").map(|v| Vec3::new(v.x, v.y, v.z)) -} - /// The refinement level a subdivision surface (any scheme but `none`) gets /// when neither the host nor the stage's `RenderSettings` names one: 0, so /// by default nothing is refined — a subdivision surface renders its cage, @@ -285,10 +279,6 @@ pub(super) fn custom_token(prim: &Prim, name: &str) -> Option { prim_value(prim, name).and_then(decode_text) } -pub(super) fn custom_color3(prim: &Prim, name: &str) -> Option { - prim_value(prim, name).and_then(decode_vec3) -} - #[cfg(test)] mod tests { use super::*; diff --git a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs index e35bf12bd..748823fed 100644 --- a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs +++ b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs @@ -281,3 +281,31 @@ pub(in crate::scene::usd_import) fn xform_error( Ok(query) => query.local_transform(time).err().map(|e| e.to_string()), } } + +/// The paths of the prim specs `path` composes from (`prim_stack`), prim +/// sites only: which layers' specs an edit would reach, for provenance +/// (design D7) — not scene description. +pub(in crate::scene::usd_import) fn prim_stack_paths( + stage: &Stage, + path: &sdf::Path, +) -> Vec { + super::super::prim_at(stage, path.clone()) + .prim_stack() + .unwrap_or_default() + .into_iter() + .filter(|site| site.path.is_prim()) + .map(|site| site.path.to_string()) + .collect() +} + +/// Whether the prim at `path` is instanceable with a composition arc but has +/// no prototype: for `instancing.instanceable_without_prototype` only, a +/// state the scene index (which names an instance by its prototype) cannot +/// show (design D7). +pub(in crate::scene::usd_import) fn instance_without_prototype( + stage: &Stage, + path: &sdf::Path, +) -> bool { + let prim = super::super::prim_at(stage, path.clone()); + prim.is_instance().unwrap_or(false) && !matches!(prim.prototype(), Ok(Some(_))) +} diff --git a/crates/crust-core/src/scene/usd_import/index/walk.rs b/crates/crust-core/src/scene/usd_import/index/walk.rs index 21ce29896..922a448ad 100644 --- a/crates/crust-core/src/scene/usd_import/index/walk.rs +++ b/crates/crust-core/src/scene/usd_import/index/walk.rs @@ -25,7 +25,7 @@ use moho::tokens::usd as generic; use super::super::xform::Timing; use super::super::{ImportCtx, Prune, visit_prim}; -use super::{Input, bridge}; +use super::Input; /// Walks `input`'s chain into `ctx`, reading each prim's families through the /// bridge on `stage`, the stage `input` was built over. `top` is the top of @@ -52,12 +52,11 @@ pub(in crate::scene::usd_import) fn walk( Timing::Static, )]; while let Some((path, parent_world, parent_hidden, parent_timing)) = stack.pop() { - let prim = bridge::prim(stage, &path); let pruned = prune(index, &path); let Some((world, hidden, timing)) = visit_prim( stage, index, - &prim, + &path, pruned, parent_world, parent_hidden, @@ -66,7 +65,7 @@ pub(in crate::scene::usd_import) fn walk( ) else { continue; }; - for child in children(stage, index, &path) { + for child in children(index, &path) { stack.push((child, world, hidden, timing.clone())); } } @@ -81,16 +80,13 @@ pub(in crate::scene::usd_import) fn walk( /// the direct traversal never reached from the root — an instance takes its /// prototype's geometry through the instancing reader. pub(in crate::scene::usd_import) fn children( - stage: &Stage, index: &dyn SceneIndex, path: &sdf::Path, ) -> Vec { let mut children = index.children(path); - // Moho's propagated prototypes are reached through their instances. + // Moho's propagated prototypes are reached through their instances; + // openusd's `/__Prototype_N` the instancing filter already hides. children.retain(|c| c.name() != Some(moho::tokens::instancing::PROPAGATED_ROOT)); - if path.is_abs_root() { - children.retain(|c| !bridge::prim(stage, c).is_prototype().unwrap_or(false)); - } children } diff --git a/crates/crust-core/src/scene/usd_import/instancing.rs b/crates/crust-core/src/scene/usd_import/instancing.rs index 528dff230..fac160ed2 100644 --- a/crates/crust-core/src/scene/usd_import/instancing.rs +++ b/crates/crust-core/src/scene/usd_import/instancing.rs @@ -36,9 +36,7 @@ use crate::material::Material; use crate::primvars::PrimvarTable; use crate::rt_world::{FaceMap, UvMap, WorldBuilder}; -use super::attrs::{ - decode_i32_array, decode_i64_array, decode_vec3f_array, prim_motion_translate, prim_ray_mask, -}; +use super::attrs::{decode_i32_array, decode_i64_array, decode_vec3f_array, prim_ray_mask}; use super::implicit::{Shape, undisplaced}; use super::index::data::PrimData; use super::materials::{resolve_bound_data, resolve_material_data}; @@ -131,6 +129,15 @@ impl ProtoRoot { } } +/// The prim at `prim`'s USD path in the walked input's stage scene index, +/// before any filter: its local `xform`. +fn xform_at(caches: &ImportCaches<'_>, prim: &Prim) -> PrimData { + match &caches.stage_index { + Some(index) => PrimData::at(index.as_ref(), prim.path()), + None => caches.prim_data(prim.path()), + } +} + /// The children the prototype walk descends into, from the instancing /// chain: the prim's own, less the scopes Moho propagates nested instances' /// prototypes into (reached through their instances). @@ -323,7 +330,9 @@ pub(super) fn collect_proto_parts( } let this_local = part_local(&prim, root, parent_local); if prim.path() != root.path() || !is_native_prototype(root) { - caches.motion.in_prototype(&prim); + caches + .motion + .in_prototype(&xform_at(caches, &prim), prim.path()); } // A native instance nested in this prototype: splice its prototype's @@ -518,7 +527,7 @@ pub(super) fn collect_proto_parts( // Its prototypes are reached through it, never drawn directly. continue; } else { - caches.unread.saw(&prim); + caches.unread.saw(&pdata); } let children = if !on_stage { @@ -859,7 +868,7 @@ const TOP_LEVEL_GROUP_MIN_PARTS: usize = 64; pub(super) fn emit_native_instance( stage: &Stage, world: &mut WorldBuilder, - prim: &Prim, + path: &sdf::Path, proto_path: &sdf::Path, span: Span, caches: &mut ImportCaches<'_>, @@ -869,12 +878,12 @@ pub(super) fn emit_native_instance( caches .meshes .primvars - .report_placement(&caches.prim_data(prim.path()), "the instance prim"); + .report_placement(&caches.prim_data(path), "the instance prim"); let world_xf = span.open; let root = match caches .inst .as_ref() - .and_then(|inst| super::index::instancers::native_prototype(inst.as_ref(), prim.path())) + .and_then(|inst| super::index::instancers::native_prototype(inst.as_ref(), path)) { Some(index) => ProtoRoot { index, @@ -886,7 +895,7 @@ pub(super) fn emit_native_instance( // Adaptive subdivision refines a prototype by its size on screen only when // this is its one placement in its top-level subtree. let place = if caches.meshes.subdiv.adaptive.is_some() - && caches.placement_count(prim.path(), &root.index) == 1 + && caches.placement_count(path, &root.index) == 1 { ProtoPlace::Unshared(world_xf) } else { @@ -894,7 +903,7 @@ pub(super) fn emit_native_instance( }; let parts = placed_parts(stage, &root, caches, place); let first = world.count(); - let motion = prim_motion_translate(prim); + let motion = super::index::data::motion_translate(&caches.prim_data(path)); attach_proto_parts( world, &parts, @@ -905,7 +914,7 @@ pub(super) fn emit_native_instance( ); debug!( "Instance {} uses prototype {proto_path} ({} instance(s), geom ids {first}..{})", - prim.path(), + path, parts.len(), world.count() ); @@ -1268,12 +1277,12 @@ pub(super) fn instancer_target_counts(prim: &PrimData, world: &GMat4) -> Vec<(St pub(super) fn emit_point_instancer( stage: &Stage, world: &mut WorldBuilder, - prim: &Prim, + path: &sdf::Path, span: Span, caches: &mut ImportCaches<'_>, ) { let world_xf = span.open; - let Some(layout) = read_instancer(&caches.prim_data(prim.path()), true) else { + let Some(layout) = read_instancer(&caches.prim_data(path), true) else { return; }; // Per-instance primvars, and any above the instancer, do not reach the @@ -1281,8 +1290,8 @@ pub(super) fn emit_point_instancer( caches .meshes .primvars - .report_placement(&caches.prim_data(prim.path()), "the PointInstancer"); - let roots = proto_roots(caches, prim.path(), &layout.targets); + .report_placement(&caches.prim_data(path), "the PointInstancer"); + let roots = proto_roots(caches, path, &layout.targets); // The version of its prototype each placement draws: the shared one, or — // in adaptive mode, for a target this instancer places once — one built // for that placement. @@ -1294,7 +1303,7 @@ pub(super) fn emit_point_instancer( .iter() .map(|t| { if adaptive { - caches.placement_count(prim.path(), t) + caches.placement_count(path, t) } else { 0 } @@ -1370,7 +1379,7 @@ pub(super) fn emit_point_instancer( debug!( "Imported PointInstancer at {} ({} instances of {} prototype(s): {} kernel instances attached, geom ids {first}..{}{})", - prim.path(), + path, layout.placements.len(), layout.targets.len(), attached, diff --git a/crates/crust-core/src/scene/usd_import/materials.rs b/crates/crust-core/src/scene/usd_import/materials.rs index fb130b80a..e1309329d 100644 --- a/crates/crust-core/src/scene/usd_import/materials.rs +++ b/crates/crust-core/src/scene/usd_import/materials.rs @@ -426,10 +426,10 @@ fn collection_includes(stage: &Stage, collection: &sdf::Path, queried: &sdf::Pat /// (spheres, curves): its displacement is not resolved. pub(super) fn resolve_material( stage: &Stage, - prim: &Prim, + path: &sdf::Path, caches: &mut ImportCaches<'_>, ) -> Arc { - let data = caches.prim_data(prim.path()); + let data = caches.prim_data(path); resolve_material_data(stage, &data, caches) } @@ -449,10 +449,10 @@ pub(super) fn resolve_material_data( /// The material bound to `prim`, with its displacement. pub(super) fn resolve_bound( stage: &Stage, - prim: &Prim, + path: &sdf::Path, caches: &mut ImportCaches<'_>, ) -> BoundMaterial { - let data = caches.prim_data(prim.path()); + let data = caches.prim_data(path); resolve_bound_data(stage, &data, caches) } diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index 2df7f7746..9951f9e38 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -61,7 +61,6 @@ use openusd::sdf; use openusd::usd::{ InitialLoadSet, Prim, SchemaRegistry, Stage, StageBuilder, StagePopulationMask, }; -use openusd_schemas::geom::PointInstancer; mod adaptive; mod assets; @@ -248,7 +247,7 @@ fn count_placements(stage: &Stage, input: &index::Input, caches: &mut ImportCach continue; } stack.extend( - index::walk::children(stage, chain, &path) + index::walk::children(chain, &path) .into_iter() .map(|c| (c, world)), ); @@ -328,7 +327,7 @@ struct ImportCtx<'a> { fn visit_prim( stage: &Stage, index: &dyn moho::scene_index::SceneIndex, - prim: &Prim, + path: &sdf::Path, pruned: Option, parent_world: GMat4, parent_hidden: bool, @@ -336,14 +335,27 @@ fn visit_prim( ctx: &mut ImportCtx, ) -> Option<(GMat4, bool, Timing)> { if let Some(reason) = pruned.filter(|&r| r != Prune::Invisible) { - debug!("Skipping {reason} prim {}", prim.path()); + debug!("Skipping {reason} prim {}", path); return None; } - let xform = ctx.caches.stage_prim(prim.path()); + let xform = ctx.caches.stage_prim(path); + // A native instance, by its prototype in `__usdPrimInfo`. + let prototype = { + use moho::tokens::usd_prim_info as info; + match ctx + .caches + .prim_data(path) + .locate([info::USD_PRIM_INFO, info::NI_PROTOTYPE_PATH]) + .and_then(|d| d.value()) + { + Some(sdf::Value::PathVec(mut v)) => v.pop(), + _ => None, + } + }; let this_world = compose_index(stage, &xform, parent_world, ctx.caches.time); if let Some(sources) = &mut ctx.arc_sources { - record_arc_sources(stage, prim, sources); + record_arc_sources(stage, &ctx.caches.prim_data(path), sources); } // An invisible subtree draws nothing and lights nothing, but is still @@ -355,12 +367,12 @@ fn visit_prim( let hidden = parent_hidden || pruned == Some(Prune::Invisible); if hidden { if !parent_hidden { - debug!("Skipping invisible prim {} and its subtree", prim.path()); + debug!("Skipping invisible prim {} and its subtree", path); } - if prim.is_instance().unwrap_or(false) { + if prototype.is_some() { return None; } - visit_camera(index, stage, prim, ctx); + visit_camera(index, stage, path, ctx); return Some((this_world, true, Timing::Static)); } @@ -382,28 +394,25 @@ fn visit_prim( // geometry from the prototype and place it — never descend into // the instance's own (proxy) subtree, which would rebuild the same // triangles once per instance. - if prim.is_instance().unwrap_or(false) { - match prim.prototype() { - Ok(Some(proto_path)) => { - ctx.caches.motion.drawn(prim, &timing); - emit_native_instance( - stage, - &mut ctx.world, - prim, - &proto_path, - span, - &mut ctx.caches, - ); - saw(ctx, prim.path(), geoms_before..ctx.world.count(), 0..0); - return None; - } - _ => warning!( - InstancingInstanceableWithoutPrototype, - at = prim.path(), - "Prim {} is instanceable but has no prototype — importing directly", - prim.path() - ), - } + if let Some(proto_path) = prototype { + ctx.caches.motion.drawn(path, &timing); + emit_native_instance( + stage, + &mut ctx.world, + path, + &proto_path, + span, + &mut ctx.caches, + ); + saw(ctx, path, geoms_before..ctx.world.count(), 0..0); + return None; + } else if index::stage_facts::instance_without_prototype(stage, path) { + warning!( + InstancingInstanceableWithoutPrototype, + at = path, + "Prim {} is instanceable but has no prototype — importing directly", + path + ); } // Dispatch by schema. Volume prims are checked first: a prim @@ -413,26 +422,26 @@ fn visit_prim( // branches then go in the prototype walk's order // (`collect_proto_parts`), and a geometry prim no branch reads is // counted for `geom.unsupported_type`. - if ctx.caches.prim_data(prim.path()).is_a("PointInstancer") { - ctx.caches.motion.drawn(prim, &timing); - emit_point_instancer(stage, &mut ctx.world, prim, span, &mut ctx.caches); - saw(ctx, prim.path(), geoms_before..ctx.world.count(), 0..0); + if ctx.caches.prim_data(path).is_a("PointInstancer") { + ctx.caches.motion.drawn(path, &timing); + emit_point_instancer(stage, &mut ctx.world, path, span, &mut ctx.caches); + saw(ctx, path, geoms_before..ctx.world.count(), 0..0); // Prototypes are conventionally authored beneath the // instancer; they are drawn through it, never on their own. return None; } else if ctx .caches - .prim_data(prim.path()) + .prim_data(path) .custom_token("crust:volume:type") .is_some() { - ctx.caches.motion.unmoved(prim, &timing); - let data = ctx.caches.prim_data(prim.path()); + ctx.caches.motion.unmoved(path, &timing); + let data = ctx.caches.prim_data(path); emit_volume(&data, this_world, &mut ctx.volumes, ctx.caches.working); - } else if ctx.caches.prim_data(prim.path()).is_a("Mesh") { - ctx.caches.motion.drawn(prim, &timing); - let mat = resolve_bound(stage, prim, &mut ctx.caches); - let data = ctx.caches.prim_data(prim.path()); + } else if ctx.caches.prim_data(path).is_a("Mesh") { + ctx.caches.motion.drawn(path, &timing); + let mat = resolve_bound(stage, path, &mut ctx.caches); + let data = ctx.caches.prim_data(path); let baked_moving = emit_mesh( &mut ctx.world, &data, @@ -443,38 +452,38 @@ fn visit_prim( &mut ctx.pending_meshes, ); if baked_moving { - ctx.caches.motion.ignored.saw(prim); + ctx.caches.motion.ignored.saw(path); } - } else if ctx.caches.prim_data(prim.path()).is_a("Sphere") { - ctx.caches.motion.drawn(prim, &timing); - let mat = resolve_material(stage, prim, &mut ctx.caches); - let data = ctx.caches.prim_data(prim.path()); + } else if ctx.caches.prim_data(path).is_a("Sphere") { + ctx.caches.motion.drawn(path, &timing); + let mat = resolve_material(stage, path, &mut ctx.caches); + let data = ctx.caches.prim_data(path); if let Some(id) = emit_sphere(&mut ctx.world, &data, span, mat, ctx.caches.working) { ctx.spheres.push(id); } - } else if ctx.caches.prim_data(prim.path()).is_a("BasisCurves") { - ctx.caches.motion.unmoved(prim, &timing); - let mat = resolve_material(stage, prim, &mut ctx.caches); + } else if ctx.caches.prim_data(path).is_a("BasisCurves") { + ctx.caches.motion.unmoved(path, &timing); + let mat = resolve_material(stage, path, &mut ctx.caches); let request = StrandRequest::of(&*mat, ctx.caches.working, &ctx.caches.meshes.primvars); - let data = ctx.caches.prim_data(prim.path()); + let data = ctx.caches.prim_data(path); let imported = curve_segments(&data, &data, request.as_ref()); emit_curves(&mut ctx.world, &data, imported, this_world, mat); - } else if ctx.caches.prim_data(prim.path()).is_a("NurbsCurves") { - ctx.caches.motion.unmoved(prim, &timing); - let mat = resolve_material(stage, prim, &mut ctx.caches); + } else if ctx.caches.prim_data(path).is_a("NurbsCurves") { + ctx.caches.motion.unmoved(path, &timing); + let mat = resolve_material(stage, path, &mut ctx.caches); let request = StrandRequest::of(&*mat, ctx.caches.working, &ctx.caches.meshes.primvars); - let data = ctx.caches.prim_data(prim.path()); + let data = ctx.caches.prim_data(path); let imported = nurbs_curve_segments(&data, &data, request.as_ref()); emit_curves(&mut ctx.world, &data, imported, this_world, mat); - } else if let Some(shape) = Shape::read(&ctx.caches.prim_data(prim.path())) { - ctx.caches.motion.drawn(prim, &timing); - let data = ctx.caches.prim_data(prim.path()); - let bound = undisplaced(&data, resolve_bound(stage, prim, &mut ctx.caches)); + } else if let Some(shape) = Shape::read(&ctx.caches.prim_data(path)) { + ctx.caches.motion.drawn(path, &timing); + let data = ctx.caches.prim_data(path); + let bound = undisplaced(&data, resolve_bound(stage, path, &mut ctx.caches)); let src = ctx .caches .implicit - .source(prim.path(), &shape, MeshPlace::World(&span.open)); - let data = ctx.caches.prim_data(prim.path()); + .source(path, &shape, MeshPlace::World(&span.open)); + let data = ctx.caches.prim_data(path); let src = with_constant_primvars(src, &data, &*bound.material, ctx.caches.working); let baked_moving = place_mesh_source( &mut ctx.world, @@ -486,19 +495,19 @@ fn visit_prim( &mut ctx.pending_meshes, ); if baked_moving { - ctx.caches.motion.ignored.saw(prim); + ctx.caches.motion.ignored.saw(path); } - } else if visit_camera(index, stage, prim, ctx) { + } else if visit_camera(index, stage, path, ctx) { // Recorded (and built, if it is the one) inside the call. A // moving camera is out of scope: it renders from the frame. - } else if emit_walked_light(ctx, prim.path(), this_world) { - ctx.caches.motion.unmoved(prim, &timing); + } else if emit_walked_light(ctx, path, this_world) { + ctx.caches.motion.unmoved(path, &timing); } else { - ctx.caches.unread.saw(prim); + ctx.caches.unread.saw(&ctx.caches.prim_data(path)); } saw( ctx, - prim.path(), + path, geoms_before..ctx.world.count(), vols_before..ctx.volumes.len(), ); @@ -512,13 +521,12 @@ fn visit_prim( .as_ref() .map(|(chain, stage)| (chain, stage)) .unwrap_or_else(|| unreachable!("a light met outside a walk of the scene index")); - ctx.links - .light_added(whole, chunk, prim.path(), lights_before); + ctx.links.light_added(whole, chunk, path, lights_before); if let Some(pass) = &ctx.pass { - pass.light_added(prim.path(), lights_before, &mut ctx.lights); + pass.light_added(path, lights_before, &mut ctx.lights); } ctx.light_origins.push(( - prim.path().to_string(), + path.to_string(), LightOrigin { index: lights_before, geoms: geoms_before as u32..ctx.world.count() as u32, @@ -548,22 +556,18 @@ fn saw( /// Adds the prims `prim` composes from to `sources`: the paths of its /// `prim_stack` sites other than its own (a site inside one of its variants -/// is its own), and a `PointInstancer`'s prototype targets. -fn record_arc_sources(stage: &Stage, prim: &Prim, sources: &mut Vec) { +/// is its own), read off the stage (design D7), and a `PointInstancer`'s +/// prototype targets. +fn record_arc_sources(stage: &Stage, prim: &index::data::PrimData, sources: &mut Vec) { let own = prim.path().as_str(); - for site in prim.prim_stack().unwrap_or_default() { - // Only prim sites: a layer's pseudo-root is no prim another composes. - if !site.path.is_prim() { - continue; - } - let path = without_variants(site.path.as_str()); + for path in index::stage_facts::prim_stack_paths(stage, prim.path()) { + let path = without_variants(&path); if path != own && !path.is_empty() { sources.push(path); } } - if let Ok(Some(instancer)) = PointInstancer::get(stage, prim.path().clone()) { - use openusd_schemas::geom::PointInstancerSchema; - for target in instancer.prototypes_rel().targets().unwrap_or_default() { + if prim.is_a("PointInstancer") { + for target in prim.targets("prototypes") { sources.push(target.to_string()); } } @@ -624,30 +628,30 @@ fn emit_walked_light(ctx: &mut ImportCtx, path: &sdf::Path, world_xf: GMat4) -> fn visit_camera( index: &dyn moho::scene_index::SceneIndex, stage: &Stage, - prim: &Prim, + path: &sdf::Path, ctx: &mut ImportCtx, ) -> bool { - if index.prim(prim.path()).ty.as_str() != moho::tokens::prim_type::CAMERA { + if index.prim(path).ty.as_str() != moho::tokens::prim_type::CAMERA { return false; } - ctx.cameras_seen.push(prim.path().clone()); + ctx.cameras_seen.push(path.clone()); let named = ctx.wanted_camera.as_ref().map(CameraChoice::path); - let is_named = named == Some(prim.path()); + let is_named = named == Some(path); // A named camera is built when met; otherwise only the first // camera is, and kept aside as the fallback while a named one // might still turn up later in the traversal. if ctx.camera.is_none() && (is_named || ctx.first_camera.is_none()) { - match build_camera(index, stage, prim.path(), &ctx.settings, ctx.framing) { + match build_camera(index, stage, path, &ctx.settings, ctx.framing) { Some(c) if is_named || named.is_none() => { - debug!("Imported USD camera at {}", prim.path()); - ctx.camera = Some((c, prim.path().clone())); + debug!("Imported USD camera at {}", path); + ctx.camera = Some((c, path.clone())); } - Some(c) => ctx.first_camera = Some((c, prim.path().clone())), + Some(c) => ctx.first_camera = Some((c, path.clone())), None => warning!( CameraUnreadable, - at = prim.path(), + at = path, "Failed to build camera from {}", - prim.path() + path ), } } @@ -1822,7 +1826,7 @@ fn first_camera(index: &Stage, scene: &dyn moho::scene_index::SceneIndex) -> Opt continue; } stack.extend( - index::walk::children(index, scene, &path) + index::walk::children(scene, &path) .into_iter() .map(|c| (c, hidden)), ); @@ -2121,14 +2125,11 @@ struct UnreadGprims { impl UnreadGprims { /// Counts `prim`, which every reading branch has passed over, when it is /// a `Gprim`: a camera, a light, a material or a transform is not one. - fn saw(&mut self, prim: &Prim) { - if !prim.is_a("Gprim").unwrap_or(false) { + fn saw(&mut self, prim: &index::data::PrimData) { + if !prim.is_a("Gprim") { return; } - let ty = match prim.type_name() { - Ok(Some(t)) => t.as_str().to_owned(), - _ => return, - }; + let ty = prim.usd_type(); match self.types.iter_mut().find(|(t, ..)| *t == ty) { Some((.., n)) => *n += 1, None => self.types.push((ty, prim.path().to_string(), 1)), diff --git a/crates/crust-core/src/scene/usd_import/xform.rs b/crates/crust-core/src/scene/usd_import/xform.rs index fcc73d879..e1c18a9c6 100644 --- a/crates/crust-core/src/scene/usd_import/xform.rs +++ b/crates/crust-core/src/scene/usd_import/xform.rs @@ -311,7 +311,7 @@ fn compose_data( if resets { local } else { parent * local } } -/// [`own_timing`] from the scene index: whether the prim's local transform +/// What the prim's own op stack says about time, from the scene index: whether the prim's local transform /// might vary (`TransformMightBeTimeVarying`: its ops have an effect, Moho's /// `xform` is there, and an op attribute might vary, its generic /// `mightBeTimeVarying`, M9), and whether it resets its parent's. @@ -334,23 +334,6 @@ fn own_timing_data(prim: &PrimData) -> (bool, bool) { (varies, resets) } -/// What `prim`'s own op stack says about time: whether the transform it -/// composes might differ at another time (C++ -/// `UsdGeomXformable::TransformMightBeTimeVarying`), and whether it resets -/// its parent's. A prim that is not `Xformable` neither varies nor resets. -fn own_timing(prim: &Prim) -> (bool, bool) { - let Some(xf) = Xformable::from_prim(prim.clone()).ok().flatten() else { - return (false, false); - }; - match XformQuery::new(&xf) { - Ok(q) => ( - q.transform_might_be_time_varying().unwrap_or(false), - q.resets_xform_stack(), - ), - Err(_) => (false, false), - } -} - /// A moving prim's local-to-world at shutter open and at shutter close. #[derive(Clone, Copy, Debug, PartialEq)] pub(super) struct Pair { @@ -433,10 +416,10 @@ pub(super) struct Tally { } impl Tally { - pub(super) fn saw(&mut self, prim: &Prim) { + pub(super) fn saw(&mut self, path: &openusd::sdf::Path) { self.count += 1; if self.first.is_none() { - self.first = Some(prim.path().to_string()); + self.first = Some(path.to_string()); } } } @@ -571,29 +554,30 @@ impl TransformMotion { } /// Counts `prim`, whose transform has `timing` but which gets no motion. - pub(super) fn unmoved(&mut self, prim: &Prim, timing: &Timing) { + pub(super) fn unmoved(&mut self, path: &openusd::sdf::Path, timing: &Timing) { match timing { Timing::Static => {} - Timing::Varies => self.varying.saw(prim), - Timing::Moves(_) => self.ignored.saw(prim), + Timing::Varies => self.varying.saw(path), + Timing::Moves(_) => self.ignored.saw(path), } } /// Counts a drawn prim whose transform varies but which the shutter does /// not move. - pub(super) fn drawn(&mut self, prim: &Prim, timing: &Timing) { + pub(super) fn drawn(&mut self, path: &openusd::sdf::Path, timing: &Timing) { if *timing == Timing::Varies { - self.varying.saw(prim); + self.varying.saw(path); } } /// Counts `prim`, inside a prototype, when its own ops vary: motion /// inside a prototype is not produced. - pub(super) fn in_prototype(&mut self, prim: &Prim) { - if self.query && own_timing(prim).0 { + /// `xform` is the prim in the stage scene index, `path` its name. + pub(super) fn in_prototype(&mut self, xform: &PrimData, path: &openusd::sdf::Path) { + if self.query && own_timing_data(xform).0 { match self.interval { - Some(_) => self.ignored.saw(prim), - None => self.varying.saw(prim), + Some(_) => self.ignored.saw(path), + None => self.varying.saw(path), } } } From d9b8eb56c0f0810bda70f99abd92b3bd0c3efe58 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 21:59:22 +0100 Subject: [PATCH 69/95] crust: the prototype walk reads only the instancing chain (12.3 in part) The prototype walk no longer reads the stage: each prim is read at its re-rooted path and named by its USD path; pruning is the index's (purpose and visibility; inactive prims are not held); a part's transform is Moho's local xform from the stage scene index, composed as before, the native root contributing none; a nested native instance is told by __usdPrimInfo and read through its propagated prototype; the ray mask and motion tallies read generic data. The stage fallback for prototypes reached through instance proxies goes: the walk never enters an instance, and an instanceable point-instancer prototype is read through its own propagated prototype. The no-prototype diagnostic asks stage_facts. The Prim-based helpers left unused are removed. The debug suite (2662) and the image run equal their baselines. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../crust-core/src/scene/usd_import/attrs.rs | 15 -- .../src/scene/usd_import/instancing.rs | 224 ++++++------------ 2 files changed, 78 insertions(+), 161 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/attrs.rs b/crates/crust-core/src/scene/usd_import/attrs.rs index d057bddaf..a61c4b905 100644 --- a/crates/crust-core/src/scene/usd_import/attrs.rs +++ b/crates/crust-core/src/scene/usd_import/attrs.rs @@ -9,23 +9,12 @@ use openusd::gf::Vec3f; use openusd::sdf; use openusd::usd::{Attribute, Prim}; -use crate::ray::{MASK_ALL, RayMask}; - use super::time::eval_time; // ----------------------------------------------------------------------- // Per-prim geometry attributes (visibility mask, motion) // ----------------------------------------------------------------------- -/// `crust:rayMask` — which ray categories see this geometry (bit 0 camera, -/// bit 1 shadow, bit 2 indirect; default: all). E.g. `crust:rayMask = 6` -/// makes a light-blocker invisible to the camera. -pub(super) fn prim_ray_mask(prim: &Prim) -> RayMask { - custom_i32(prim, "crust:rayMask") - .map(|m| RayMask(m as u32)) - .unwrap_or(MASK_ALL) -} - /// RenderMan's per-light camera visibility, which published assets carry /// (the Moana island's `islandPrman.usda` authors it on every light). pub(super) const RI_CAMERA_VISIBILITY: &str = "primvars:ri:attributes:visibility:camera"; @@ -271,10 +260,6 @@ pub(super) fn decode_vec3f_array(v: sdf::Value) -> Option> { } } -pub(super) fn custom_i32(prim: &Prim, name: &str) -> Option { - prim_value(prim, name).and_then(decode_i32) -} - pub(super) fn custom_token(prim: &Prim, name: &str) -> Option { prim_value(prim, name).and_then(decode_text) } diff --git a/crates/crust-core/src/scene/usd_import/instancing.rs b/crates/crust-core/src/scene/usd_import/instancing.rs index fac160ed2..8e755b472 100644 --- a/crates/crust-core/src/scene/usd_import/instancing.rs +++ b/crates/crust-core/src/scene/usd_import/instancing.rs @@ -28,7 +28,7 @@ use crust_rt::{ }; use glam::{Affine3A, Mat4 as GMat4, Vec3, Vec3A}; use openusd::sdf; -use openusd::usd::{Prim, Stage}; +use openusd::usd::Stage; use std::collections::{BTreeMap, BTreeSet}; use tracing::debug; @@ -36,7 +36,8 @@ use crate::material::Material; use crate::primvars::PrimvarTable; use crate::rt_world::{FaceMap, UvMap, WorldBuilder}; -use super::attrs::{decode_i32_array, decode_i64_array, decode_vec3f_array, prim_ray_mask}; +use super::ImportCaches; +use super::attrs::{decode_i32_array, decode_i64_array, decode_vec3f_array}; use super::implicit::{Shape, undisplaced}; use super::index::data::PrimData; use super::materials::{resolve_bound_data, resolve_material_data}; @@ -45,8 +46,7 @@ use super::mesh::{ }; use super::shapes::{Curves, curve_segments, curves_scene, nurbs_curve_segments, sphere_radius}; use super::strands::StrandRequest; -use super::xform::{Span, compose_with_parent}; -use super::{ImportCaches, WalkScope, prim_at, prune_reason}; +use super::xform::{Span, compose_index}; use crate::strands::StrandTable; /// How deep prototypes may nest before the importer gives up. USD forbids @@ -86,11 +86,6 @@ pub(super) enum ProtoPlace { pub(super) struct ProtoRoot { pub(super) index: sdf::Path, pub(super) usd: sdf::Path, - /// Whether `index` is a prim of the instancing chain. Not for a - /// prototype reached through an instance proxy (a point instancer inside - /// an instance, walked by its proxy path): the chain holds no proxies, so - /// it is walked on the stage, as before. - pub(super) in_index: bool, } impl ProtoRoot { @@ -124,17 +119,16 @@ impl ProtoRoot { ProtoRoot { index: path.clone(), usd: path.clone(), - in_index: false, } } } /// The prim at `prim`'s USD path in the walked input's stage scene index, /// before any filter: its local `xform`. -fn xform_at(caches: &ImportCaches<'_>, prim: &Prim) -> PrimData { +fn xform_at(caches: &ImportCaches<'_>, path: &sdf::Path) -> PrimData { match &caches.stage_index { - Some(index) => PrimData::at(index.as_ref(), prim.path()), - None => caches.prim_data(prim.path()), + Some(index) => PrimData::at(index.as_ref(), path), + None => caches.prim_data(path), } } @@ -261,78 +255,70 @@ pub(super) fn collect_proto_parts( depth: usize, place: ProtoPlace, ) -> Vec { - let root = &prim_at(stage, proto.usd.clone()); let mut parts = Vec::new(); if depth > MAX_INSTANCE_NESTING { warning!( InstancingNestingTooDeep, - at = root.path(), + at = proto.usd, "Prototype {} exceeds {MAX_INSTANCE_NESTING} levels of instance nesting — not expanded", - root.path() + proto.usd ); return parts; } - // Walked in the instancing chain, each prim read at its USD path. - // A prototype reached through an instance proxy (the chain holds no - // proxies) is walked on the stage, as before. - // A root that is itself an instance (a point instancer's prototype - // authored instanceable) is read through its own propagated prototype, - // named under the root. + let Some(inst) = caches.inst.clone() else { + return parts; + }; + // Walked in the instancing chain, each prim read at its re-rooted path + // and named by its USD path (`ProtoRoot`). A root that is itself an + // instance (a point instancer's prototype authored instanceable) is read + // through its own propagated prototype, named under the root. let redirected; - let proto = match caches - .inst - .as_ref() - .filter(|_| proto.in_index && root.is_instance().unwrap_or(false)) - .and_then(|inst| super::index::instancers::native_prototype(inst.as_ref(), &proto.index)) - { + let proto = match super::index::instancers::native_prototype(inst.as_ref(), &proto.index) { Some(index) => { redirected = ProtoRoot { index, usd: proto.usd.clone(), - in_index: true, }; &redirected } None => proto, }; - let on_stage = !proto.in_index; - let start = if on_stage { - proto.usd.clone() - } else { - proto.index.clone() - }; - let mut stack: Vec<(sdf::Path, GMat4, bool)> = vec![(start, GMat4::IDENTITY, on_stage)]; + // A native prototype's root stands for the instance prim, whose + // transform the placement already carries. + let native_root = proto.usd.as_str().starts_with("/__Prototype"); + let mut stack: Vec<(sdf::Path, GMat4)> = vec![(proto.index.clone(), GMat4::IDENTITY)]; // Mesh parts found by the walk, as (index into `parts`, mesh slot). Their // kernel scenes are built together once the walk is done — in parallel, // see `MeshArena::commit_slots` — and each part holds a placeholder until // then. let mut pending_meshes: Vec<(usize, u32)> = Vec::new(); - while let Some((at, parent_local, on_stage)) = stack.pop() { - let prim = if on_stage { - prim_at(stage, at.clone()) - } else { - prim_at(stage, proto.usd_of(&at)) - }; + while let Some((at, parent_local)) = stack.pop() { + let name = proto.usd_of(&at); // Its data: in the instancing chain at its re-rooted path, named by - // its USD path (Moho's M11 re-roots the path values it holds); on the - // stage's walk, as before. - let pdata = if on_stage { - caches.prim_data(prim.path()) - } else { - match &caches.inst { - Some(inst) => PrimData::rebased(inst, &at, &proto.index, &proto.usd), - None => caches.prim_data(prim.path()), - } - }; - if prototype_prunes(&prim, root, true) { + // its USD path (Moho's M11 re-roots the path values it holds). + let pdata = PrimData::rebased(&inst, &at, &proto.index, &proto.usd); + // The same pruning as the top-level walk, abstractness aside: purpose + // and visibility, from the index (an inactive prim it does not hold). + if let Some(reason) = super::index::walk::prune(inst.as_ref(), &at) { + debug!("Skipping {reason} prim {name} (prototype {})", proto.usd); continue; } - let this_local = part_local(&prim, root, parent_local); - if prim.path() != root.path() || !is_native_prototype(root) { - caches - .motion - .in_prototype(&xform_at(caches, &prim), prim.path()); + let is_root = at == proto.index; + let xform = xform_at(caches, &name); + // A point instancer prototype's root contributes its own transform, + // applied before the per-instance one, as + // `UsdGeomPointInstancer::ComputeInstanceTransformsAtTime` composes it + // by default (`IncludeProtoXform`): composed here rather than folded + // into each placement, so a descendant whose stack resets drops it + // like any other ancestor's. + let this_local = if is_root && native_root { + GMat4::IDENTITY + } else { + compose_index(stage, &xform, parent_local, caches.time) + }; + if !is_root || !native_root { + caches.motion.in_prototype(&xform, &name); } // A native instance nested in this prototype: splice its prototype's @@ -342,35 +328,38 @@ pub(super) fn collect_proto_parts( // Always the shared version: `count_placements` does not descend // into instances, so nothing says this placement is the only one. // Each part keeps its own mask, as at a top-level instance. - if prim.path() != root.path() && prim.is_instance().unwrap_or(false) { - match prim.prototype() { - Ok(Some(inner)) => { - let inner = match caches.inst.as_ref().and_then(|inst| { - super::index::instancers::native_prototype(inst.as_ref(), &at) - }) { - Some(index) => ProtoRoot { - index, - usd: inner, - in_index: true, - }, - None => ProtoRoot::usd(&inner), - }; - let inner_parts = prototype_parts(stage, &inner, caches, depth + 1); - parts.extend(inner_parts.iter().map(|part| ProtoPart { - local: this_local * part.local, - ..part.clone() - })); - continue; - } - _ => warning!( + if !is_root { + use moho::tokens::usd_prim_info as info; + let inner_usd = match pdata + .locate([info::USD_PRIM_INFO, info::NI_PROTOTYPE_PATH]) + .and_then(|d| d.value()) + { + Some(sdf::Value::PathVec(mut v)) => v.pop(), + _ => None, + }; + if let (Some(usd), Some(index)) = ( + inner_usd, + super::index::instancers::native_prototype(inst.as_ref(), &at), + ) { + let inner = ProtoRoot { index, usd }; + let inner_parts = prototype_parts(stage, &inner, caches, depth + 1); + parts.extend(inner_parts.iter().map(|part| ProtoPart { + local: this_local * part.local, + ..part.clone() + })); + continue; + } + if super::index::stage_facts::instance_without_prototype(stage, &name) { + warning!( InstancingInstanceableWithoutPrototype, - at = prim.path(), + at = name, "Prim {} is instanceable but has no prototype — importing directly", - prim.path() - ), + name + ); } } - let mask = prim_ray_mask(&prim); + + let mask = super::index::data::ray_mask(&pdata); // Volumes first, as at the top level: a `crust:volume:*` prim is a // volume whatever its schema, so a volume `Cube` must never be read @@ -380,9 +369,9 @@ pub(super) fn collect_proto_parts( if pdata.custom_token("crust:volume:type").is_some() { warning!( VolumeInPrototype, - at = prim.path(), + at = &name, "Volume at {} is inside a prototype — volumes cannot be instanced, skipped", - prim.path() + &name ); } else if pdata.is_a("Mesh") { let bound = resolve_bound_data(stage, &pdata, caches); @@ -488,7 +477,7 @@ pub(super) fn collect_proto_parts( ProtoPlace::Shared => None, }; let src = caches.implicit.source( - prim.path(), + &name, &shape, part_world .as_ref() @@ -515,7 +504,6 @@ pub(super) fn collect_proto_parts( // outer instances, not 250 000. parts.extend(nested_instancer_parts( stage, - &prim, &pdata, &at, this_local, @@ -530,17 +518,9 @@ pub(super) fn collect_proto_parts( caches.unread.saw(&pdata); } - let children = if !on_stage { - proto_children(caches, &at) - } else { - prim.children() - .unwrap_or_default() - .iter() - .map(|c| c.path().clone()) - .collect() - }; + let children = proto_children(caches, &at); for child in children { - stack.push((child, this_local, on_stage)); + stack.push((child, this_local)); } } // Committing is also what marks each slot as ineligible for baking, so a @@ -553,51 +533,6 @@ pub(super) fn collect_proto_parts( parts } -/// Whether the prototype walk leaves `prim` and its subtree out: the same -/// pruning as the top-level traversal ([`prune_reason`], abstractness -/// aside). `report` logs why. -fn prototype_prunes(prim: &Prim, root: &Prim, report: bool) -> bool { - // Visibility counts from the prototype root down, as UsdImaging - // computes it for a prototype: an invisible part of a prototype is - // missing from every instance. No camera is taken from a prototype, - // so here an invisible subtree is simply pruned. - if let Some(reason) = prune_reason(prim, WalkScope::Prototype) { - if report { - debug!( - "Skipping {reason} prim {} (prototype {})", - prim.path(), - root.path() - ); - } - return true; - } - false -} - -/// `prim`'s transform in its prototype's frame, given its parent's. -/// -/// A native prototype root contributes nothing: it stands for the instance -/// prim, whose transform the placement already carries. A `PointInstancer` -/// prototype root contributes its own transform, applied before the -/// per-instance one, as `UsdGeomPointInstancer::ComputeInstanceTransformsAtTime` -/// composes it by default (`IncludeProtoXform`). It is applied here rather -/// than folded into each placement so that a descendant whose stack lists -/// `!resetXformStack!` drops it like any other ancestor's, and a singular -/// root hides only the parts that inherit it. -fn part_local(prim: &Prim, root: &Prim, parent_local: GMat4) -> GMat4 { - if prim.path() == root.path() && is_native_prototype(root) { - GMat4::IDENTITY - } else { - compose_with_parent(prim, parent_local) - } -} - -/// Whether `root` is a native instance's prototype (`/__Prototype_N`) rather -/// than a prim a `PointInstancer` targets. -fn is_native_prototype(root: &Prim) -> bool { - root.is_prototype().unwrap_or(false) -} - /// What a prototype's mesh part holds until its kernel scene is built at the /// end of the walk (see `collect_proto_parts`). Never attached to anything. fn placeholder_scene() -> Arc { @@ -624,7 +559,6 @@ fn placeholder_scene() -> Arc { #[allow(clippy::too_many_arguments)] fn nested_instancer_parts( stage: &Stage, - prim: &Prim, data: &PrimData, at: &sdf::Path, local: GMat4, @@ -730,7 +664,7 @@ fn nested_instancer_parts( debug!( "Expanded nested PointInstancer at {} ({} instances of {} prototype(s) -> {} slot(s))", - prim.path(), + data.path(), layout.placements.len(), layout.targets.len(), slots.len() @@ -888,7 +822,6 @@ pub(super) fn emit_native_instance( Some(index) => ProtoRoot { index, usd: proto_path.clone(), - in_index: true, }, None => ProtoRoot::usd(proto_path), }; @@ -1156,7 +1089,6 @@ fn proto_roots(caches: &ImportCaches<'_>, at: &sdf::Path, targets: &[sdf::Path]) Some(index) => ProtoRoot { index: index.clone(), usd: target.clone(), - in_index: true, }, None => ProtoRoot::usd(target), }) From 7c77705b2b5c99697a99af4a8f06a708ec304bc1 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 22:31:47 +0100 Subject: [PATCH 70/95] crust: cameras and the live rebuilds compose transforms on the index (12.3 in part) A camera's world transform (its lens, its build, the screen projection) and a live rebuild's placement compose Moho's local xforms from the root down over a stage scene index (xform::stage_local_to_world), as the walk composes them; the live sphere and mesh checks ask the index (IsA). The stage composition (compose_with_parent, camera::local_to_world and their warnings) has no reader left and goes. The debug suite (2662) and the image run equal their baselines. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../crust-core/src/scene/usd_import/camera.rs | 32 +--- .../crust-core/src/scene/usd_import/live.rs | 33 ++--- .../crust-core/src/scene/usd_import/xform.rs | 139 +++--------------- 3 files changed, 44 insertions(+), 160 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/camera.rs b/crates/crust-core/src/scene/usd_import/camera.rs index 5f5a10dfc..824d9a1bc 100644 --- a/crates/crust-core/src/scene/usd_import/camera.rs +++ b/crates/crust-core/src/scene/usd_import/camera.rs @@ -2,7 +2,7 @@ use glam::{Mat4 as GMat4, Vec3, Vec3A}; use moho::openusd::sdf; -use moho::openusd::usd::{Prim, Stage}; +use moho::openusd::usd::Stage; use moho::openusd_schemas; use moho::scene_index::SceneIndex; use moho::tokens::prim_type; @@ -14,11 +14,8 @@ use crate::tracer::RenderSettings; use crate::warning; use super::attrs::decode_text; -use super::index::bridge; use super::index::data::{PrimData, stage_metadata}; -use super::prim_at; use super::products::{Framing, valid_pixel_aspect}; -use super::xform::compose_with_parent; /// One `UsdGeomCamera` as all its readers see it: [`build_camera`], which /// builds the render camera, [`screen_projection`], which adaptive @@ -245,7 +242,7 @@ pub(super) fn camera_lens( framing: Framing, ) -> Option { let cam = camera_at(scene, path)?; - let world = local_to_world(stage, &bridge::prim(stage, path)); + let world = super::xform::stage_local_to_world(stage, path); Some(lens( &cam, &CameraFrame::read(&cam, world, settings, framing), @@ -420,7 +417,7 @@ pub(super) fn build_camera( framing: Framing, ) -> Option { let cam = camera_at(scene, path)?; - let world = local_to_world(stage, &bridge::prim(stage, path)); + let world = super::xform::stage_local_to_world(stage, path); let frame = CameraFrame::read(&cam, world, settings, framing); let (camera, refused_meters_per_unit) = lens_camera(&cam, scene, &frame, settings); let clip = clipping(&cam); @@ -673,7 +670,7 @@ pub(super) fn screen_projection( framing: Framing, ) -> Option { let cam = camera_at(scene, path)?; - let world = local_to_world(stage, &bridge::prim(stage, path)); + let world = super::xform::stage_local_to_world(stage, path); let frame = CameraFrame::read(&cam, world, settings, framing); if frame.orthographic { // Pixels per world unit at every distance, and the window's half @@ -774,31 +771,14 @@ pub(super) struct ScreenProjection { pub(super) centre: [f32; 2], } -/// Composed local-to-world by walking the prim path upwards. Slower than -/// tracking it during DFS, but exact and only used at build_camera time. -pub(super) fn local_to_world(stage: &Stage, prim: &Prim) -> GMat4 { - let mut ancestors: Vec = Vec::new(); - let mut cur_path = prim.path().clone(); - ancestors.push(prim_at(stage, cur_path.clone())); - while let Some(parent) = cur_path.parent() { - cur_path = parent; - ancestors.push(prim_at(stage, cur_path.clone())); - if cur_path.as_str() == "/" { - break; - } - } - ancestors.reverse(); - ancestors - .iter() - .fold(GMat4::IDENTITY, |acc, p| compose_with_parent(p, acc)) -} - #[cfg(test)] mod tests { + use super::super::prim_at; use super::*; use crate::scene::usd_import::settings::CameraChoice; use crate::scene::usd_import::{read_camera_ahead, stage_builder}; use moho::openusd::usd::InitialLoadSet; + use moho::openusd::usd::Prim; // The readers take a scene index; these build one over the test's stage, // so each test reads its camera as the import does. diff --git a/crates/crust-core/src/scene/usd_import/live.rs b/crates/crust-core/src/scene/usd_import/live.rs index 260d5a2ae..fcf3a96ac 100644 --- a/crates/crust-core/src/scene/usd_import/live.rs +++ b/crates/crust-core/src/scene/usd_import/live.rs @@ -20,7 +20,6 @@ use std::collections::{BTreeMap, HashMap}; use crust_rt::Geometry; use glam::Affine3A; -use openusd_schemas::geom::{Mesh as UsdMesh, Sphere as UsdSphere}; use crate::light::LightList; use crate::live::{ @@ -32,7 +31,7 @@ use crate::{AssetLoader, Warning}; use moho::scene_index::SceneIndexHandle; -use super::camera::{build_camera, local_to_world}; +use super::camera::build_camera; use super::index::data::PrimData; use super::light_links::LightLinks; use super::materials::{resolve_displacement, resolve_fresh}; @@ -42,10 +41,10 @@ use super::mesh::{ }; use super::shapes::emit_sphere; use super::time::EvalTimeScope; -use super::xform::{Span, compose_with_parent}; +use super::xform::Span; use super::{ ImportCaches, ImportCtx, ValidOptions, apply_exposure, asks_about_time, emit_light, frame_pose, - open_stage, open_stage_masked, prim_at, read_index, stage_builder, + open_stage, open_stage_masked, read_index, stage_builder, }; /// Warning codes a settings change can move, by family: the settings, the @@ -428,18 +427,18 @@ impl Rebuilding<'_> { id: u32, world: &World, ) -> Result { - let prim = prim_at(stage, prim_path(prim_str)?); - let Ok(Some(_)) = UsdSphere::get(stage, prim.path().clone()) else { + let path = prim_path(prim_str)?; + let scene = self.scene(stage); + if !PrimData::at(scene.chain.as_ref(), &path).is_a("Sphere") { return Err(Structural(format!("{prim_str} is not a Sphere"))); - }; - let world_xf = local_to_world(stage, &prim); + } + let world_xf = super::xform::stage_local_to_world(stage, &path); // Emitted alone, at id 0: a sphere's geometry and tables do not // depend on its id, so the edit is re-addressed rather than the // scratch world padded up to the id, which made a batch of spheres // quadratic. let mut scratch = WorldBuilder::new(); - let scene = self.scene(stage); - let data = super::index::data::PrimData::in_index(&scene.chain, prim.path()); + let data = super::index::data::PrimData::in_index(&scene.chain, &path); let placed = emit_sphere( &mut scratch, &data, @@ -468,8 +467,8 @@ impl Rebuilding<'_> { batch: &[SlotKey], ) -> Result<(GeometryEdit, Option), Structural> { let id = origin.geom_id; - let prim = prim_at(stage, prim_path(prim_str)?); - let world_xf = local_to_world(stage, &prim); + let path = prim_path(prim_str)?; + let world_xf = super::xform::stage_local_to_world(stage, &path); // A singular placement is baked at attach time, with no slot: a // fresh import would build it another way. if world_xf.determinant().abs() < 1e-12 { @@ -497,9 +496,9 @@ impl Rebuilding<'_> { }; return Ok((world.edit_with(id, geometry, scale), None)); } - let Ok(Some(_)) = UsdMesh::get(stage, prim.path().clone()) else { + if !PrimData::at(self.scene(stage).chain.as_ref(), &path).is_a("Mesh") { return Err(Structural(format!("{prim_str} is not a Mesh"))); - }; + } let slot_facts = self .prov .mesh_slots @@ -514,7 +513,7 @@ impl Rebuilding<'_> { let meshes = &mut caches.meshes; let needs = MeshNeeds::of(&*material, None, &meshes.primvars, meshes.working); let scene = self.scene(stage); - let data = super::index::data::PrimData::in_index(&scene.chain, prim.path()); + let data = super::index::data::PrimData::in_index(&scene.chain, &path); let src = mesh_source( &data, &data, @@ -832,9 +831,9 @@ pub(crate) fn prim_frames( .unwrap_or_default(); let parent = path .parent() - .map(|p| local_to_world(&stage, &prim_at(&stage, p))) + .map(|p| super::xform::stage_local_to_world(&stage, &p)) .unwrap_or(glam::Mat4::IDENTITY); - let world = compose_with_parent(&prim, parent); + let world = super::xform::stage_local_to_world(&stage, path); let place = prim .attribute(place_op) .get::() diff --git a/crates/crust-core/src/scene/usd_import/xform.rs b/crates/crust-core/src/scene/usd_import/xform.rs index e1c18a9c6..71cfc08a0 100644 --- a/crates/crust-core/src/scene/usd_import/xform.rs +++ b/crates/crust-core/src/scene/usd_import/xform.rs @@ -6,8 +6,6 @@ use glam::{Affine3A, Mat4 as GMat4, Vec3}; use moho::{openusd, openusd_schemas}; use openusd::gf::Mat4d; use openusd::tf::Token; -use openusd::usd::Prim; -use openusd_schemas::geom::{XformQuery, Xformable, XformableSchema}; use super::index::data::PrimData; use super::time::eval_time; @@ -53,111 +51,6 @@ fn op_kind(entry: &str) -> Option<&str> { name.strip_prefix("xformOp:")?.split(':').next() } -/// Warns once, naming every `xformOpOrder` entry that is not a -/// `UsdGeomXformOp` kind: openusd reads each as identity. -fn warn_unknown_ops(xf: &Xformable) { - let Ok(Some(order)) = xf.xform_op_order() else { - return; - }; - let unknown: Vec<&str> = order - .iter() - .filter(|e| e.as_str() != "!resetXformStack!") - .filter(|e| !op_kind(e).is_some_and(|k| XFORM_OP_KINDS.contains(&k))) - .map(|e| e.as_str()) - .collect(); - if !unknown.is_empty() { - warning!( - XformUnknownOp, - at = xf.path(), - "{}: xformOpOrder lists {} — not a UsdGeomXformOp kind, read as identity", - xf.path(), - unknown.join(", ") - ); - } -} - -/// Warns when a prim whose type the schema registry does not know (a plugin or -/// studio schema) authors an `xformOpOrder`: it reads as not `Xformable`, so -/// its ops and the placement of everything under it are dropped, as in C++ -/// USD without that plugin. An untyped prim and a known type that is not -/// `Xformable` (a `Scope`, a `Material`) stay silent: C++ ignores their ops by -/// definition. -fn warn_unknown_type(prim: &Prim) { - let Ok(Some(ty)) = prim.type_name() else { - return; - }; - if ty.as_str().is_empty() || openusd_schemas::schema_registry().is_concrete_type(&ty) { - return; - } - let authors_ops = prim - .attribute("xformOpOrder") - .get::>() - .ok() - .flatten() - .is_some_and(|order| !order.is_empty()); - if authors_ops { - warning!( - XformUnknownType, - at = prim.path(), - "{}: its type {ty} is not one the schema registry knows, so it is not Xformable and \ - its xformOps are ignored (further occurrences are counted in the import's \ - warnings)", - prim.path() - ); - } -} - -/// `prim`'s transform given its parent's: `parent · local`, or `local` alone -/// when the prim's `xformOpOrder` lists `!resetXformStack!` — the one -/// composition rule every walk (the traversal, the placement count, the -/// prototype walk, a camera's ancestor chain) applies. -/// -/// openusd composes the stack as C++ `UsdGeomXformable` does, in `f64`, cast -/// once: a reset drops the ops listed before it, and a prim that is not -/// `Xformable` (the pseudo-root, an untyped prim, a `Scope`) contributes -/// nothing, whatever ops it authors. A stack openusd cannot compose (a -/// singular `transform` to invert) keeps the parent, with a warning. -pub(super) fn compose_with_parent(prim: &Prim, parent: GMat4) -> GMat4 { - compose(prim, parent, true) -} - -fn compose(prim: &Prim, parent: GMat4, report: bool) -> GMat4 { - let Some(xf) = Xformable::from_prim(prim.clone()).ok().flatten() else { - if report { - warn_unknown_type(prim); - } - return parent; - }; - if report { - warn_unknown_ops(&xf); - } - let query = XformQuery::new(&xf); - let composed = query - .as_ref() - .map_err(|e| e.to_string()) - .and_then(|q| q.local_transform(eval_time()).map_err(|e| e.to_string())); - let local = match composed { - Ok(m) => usd_mat_to_glam(m), - Err(e) => { - if report { - warning!( - XformUncomposable, - at = xf.path(), - "{}: could not compose its xformOp stack ({e}) — its local transform is \ - identity", - xf.path() - ); - } - GMat4::IDENTITY - } - }; - if query.is_ok_and(|q| q.resets_xform_stack()) { - local - } else { - parent * local - } -} - /// `xformOpOrder`'s entries, as the prim composes it (its fallback, empty, /// when unauthored). fn op_order(prim: &PrimData) -> Vec { @@ -233,7 +126,8 @@ fn local_xform(prim: &PrimData, offset: f32) -> Option<(Option, bool)> { Some((local, resets)) } -/// [`compose_with_parent`] over the scene index: `prim` is the prim in the +/// A prim's transform given its parent's, over the scene index (`parent · +/// local`, or `local` alone when its stack resets): `prim` is the prim in the /// input's stage scene index, `stage` its stage (for the one diagnostic the /// index does not carry, `xform.uncomposable`, design D7) and `time` the /// index's time. @@ -246,6 +140,24 @@ pub(super) fn compose_index( compose_data(stage, prim, parent, time, 0.0, true) } +/// The local-to-world of the prim at `path` on `stage`, for a reader that is +/// handed a stage rather than the walk's index (a camera's lens, a live +/// rebuild): [`index_local_to_world`] over a stage scene index of its own, at +/// the import's time. +pub(super) fn stage_local_to_world( + stage: &openusd::usd::Stage, + path: &openusd::sdf::Path, +) -> GMat4 { + let time = eval_time().map(|t| t.value()); + let index = moho::stage::StageSceneIndex::new(); + if let Some(t) = time { + index.set_time(openusd::usd::TimeCode::new(t)); + } + index.set_stage(stage.clone()); + let handle: moho::scene_index::SceneIndexHandle = index; + index_local_to_world(stage, &handle, path, time) +} + /// A prim's local-to-world over the scene index: [`compose_index`] folded /// from the root down `path`'s ancestors in the stage scene index `index` /// over `stage`, at the index's `time` — `camera::local_to_world` (the @@ -266,7 +178,7 @@ pub(super) fn index_local_to_world( cur = parent; } chain.iter().rev().fold(GMat4::IDENTITY, |acc, p| { - compose_index(stage, &PrimData::bridged(index, stage, p), acc, time) + compose_index(stage, &PrimData::at(index.as_ref(), p), acc, time) }) } @@ -613,14 +525,7 @@ mod tests { let stage = stage_builder() .open(path.to_str().unwrap()) .expect("stage opens"); - [ - sdf::Path::abs_root(), - sdf::path("/W").unwrap(), - sdf::path("/W/P").unwrap(), - ] - .into_iter() - .map(|p| super::super::prim_at(&stage, p)) - .fold(GMat4::IDENTITY, |acc, p| compose_with_parent(&p, acc)) + stage_local_to_world(&stage, &sdf::path("/W/P").unwrap()) } fn assert_near(a: GMat4, b: GMat4) { From d7ab23d7f0cb5fe416e1b2fcd65e8d20ce1f25ab Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 23:01:15 +0100 Subject: [PATCH 71/95] crust: the bridge goes; readers read the scene index alone (12.3) No reader is handed a stage prim any more: PrimData::bridged, its instance-proxy plumbing and the bridge module go (the walk never enters an instance, and prototypes are read at Moho's propagated paths); the material reader, the walked prims and the stage-index xforms are read in the chain. The stage is read only in stage_facts. The debug suite (2662) and the image run equal their baselines. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/index/bridge.rs | 13 --- .../src/scene/usd_import/index/data.rs | 94 ++----------------- .../src/scene/usd_import/index/mod.rs | 1 - .../src/scene/usd_import/index/stage_facts.rs | 2 +- .../src/scene/usd_import/materials.rs | 38 +++----- crates/crust-core/src/scene/usd_import/mod.rs | 4 +- .../crust-core/src/scene/usd_import/xform.rs | 18 ++-- 7 files changed, 30 insertions(+), 140 deletions(-) delete mode 100644 crates/crust-core/src/scene/usd_import/index/bridge.rs diff --git a/crates/crust-core/src/scene/usd_import/index/bridge.rs b/crates/crust-core/src/scene/usd_import/index/bridge.rs deleted file mode 100644 index 9f846e04f..000000000 --- a/crates/crust-core/src/scene/usd_import/index/bridge.rs +++ /dev/null @@ -1,13 +0,0 @@ -//! The transitional bridge (design D6): the `usd::Prim` at a walked path, on -//! the stage of the input that holds it, for a schema family whose reader has -//! not moved to the scene index yet. It reads at the import's time through -//! `EvalTimeScope`, as the direct readers do. It goes, with the direct readers, -//! once every family reads the index. - -use moho::openusd::sdf; -use moho::openusd::usd::{Prim, Stage}; - -/// The prim at `path` on `stage`, for the direct reader that still reads it. -pub(in crate::scene::usd_import) fn prim(stage: &Stage, path: &sdf::Path) -> Prim { - super::super::prim_at(stage, path.clone()) -} diff --git a/crates/crust-core/src/scene/usd_import/index/data.rs b/crates/crust-core/src/scene/usd_import/index/data.rs index 98f7e9cd8..f9956c8ee 100644 --- a/crates/crust-core/src/scene/usd_import/index/data.rs +++ b/crates/crust-core/src/scene/usd_import/index/data.rs @@ -28,18 +28,12 @@ pub(in crate::scene::usd_import) struct PrimData { /// The index the prim was read from, when the reader may walk to its /// ancestors ([`PrimData::in_index`]). index: Option, - /// The stage a bridged reader walks, when it may name an instance proxy - /// ([`PrimData::bridged`]): a transitional field, gone with the bridge. - proxies: Option, - /// For an instance proxy, `(prototype root, instance root)`: where the - /// prim's data were read, and where the proxy's namespace puts them. - proxy_roots: Option<(sdf::Path, sdf::Path)>, /// For a prim of a prototype the instancing chain re-roots, /// `(data root, name root)`: its data are read under Moho's propagated /// prototype (or point-instancer copy), and it is named, in warnings and /// provenance, under the USD prototype it comes from (`primOrigin`). - /// Unlike `proxy_roots`, the path values its data hold (binding targets, - /// connections) are left as the index re-rooted them (Moho's M11). + /// The path values its data hold (binding targets, connections) are left + /// as the index re-rooted them (Moho's M11). rebase: Option<(sdf::Path, sdf::Path)>, } @@ -53,8 +47,6 @@ impl PrimData { ty: prim.ty.as_str().to_owned(), data: prim.data, index: None, - proxies: None, - proxy_roots: None, rebase: None, } } @@ -100,47 +92,8 @@ impl PrimData { sdf::Path::new(format!("{to}{rest}").as_str()).ok() } - /// The prim at `path` for a reader the bridge reaches (a prototype's - /// parts through the instancing reader), which may name an instance - /// proxy, a prim the scene index — like UsdImaging's — does not hold: its - /// data are its prototype prim's (`Prim::prim_in_prototype`, the same - /// composed prim), still named by `path`, and its ancestors are walked - /// the same way. Transitional: the instancing family's move to Moho's - /// instancing filters retires it. - pub(in crate::scene::usd_import) fn bridged( - index: &SceneIndexHandle, - stage: &moho::openusd::usd::Stage, - path: &sdf::Path, - ) -> Self { - let in_prototype = stage - .prim(path) - .ok() - .filter(|p| p.is_instance_proxy().unwrap_or(false)) - .and_then(|p| p.prim_in_prototype().ok().flatten()) - .map(|p| p.path().clone()); - let data_path = in_prototype.as_ref().unwrap_or(path); - // The two roots: strip the components the paths share at their ends. - let proxy_roots = in_prototype.as_ref().map(|proto| { - let (mut a, mut b) = (proto.clone(), path.clone()); - while a.name() == b.name() - && let (Some(pa), Some(pb)) = (a.parent(), b.parent()) - && !pa.is_abs_root() - { - (a, b) = (pa, pb); - } - (a, b) - }); - PrimData { - path: path.clone(), - proxies: Some(stage.clone()), - proxy_roots, - ..PrimData::in_index(index, data_path) - } - } - - /// The prim's children in the index it was read from (instance proxies - /// through their prototype, as [`PrimData::bridged`] reads them), in the - /// index's order. + /// The prim's children in the index it was read from, in the index's + /// order. pub(in crate::scene::usd_import) fn children(&self) -> Vec { let Some(index) = &self.index else { return Vec::new(); @@ -155,43 +108,13 @@ impl PrimData { .map(|c| PrimData::rebased(index, &c, data_root, name_root)) .collect(); } - let data_path = match &self.proxy_roots { - Some((proto, instance)) => self - .path - .as_str() - .strip_prefix(instance.as_str()) - .and_then(|rest| sdf::Path::new(format!("{proto}{rest}").as_str()).ok()) - .unwrap_or_else(|| self.path.clone()), - None => self.path.clone(), - }; index - .children(&data_path) + .children(&self.path) .into_iter() - .map(|child| { - let path = self.in_own_namespace(child); - match &self.proxies { - Some(stage) => PrimData::bridged(index, stage, &path), - None => PrimData::in_index(index, &path), - } - }) + .map(|child| PrimData::in_index(index, &child)) .collect() } - /// A path the prim's data name (a material binding's target), in the - /// namespace the prim is named in: for an instance proxy, a path inside - /// its prototype moved under the instance, as the stage names it there. - pub(in crate::scene::usd_import) fn in_own_namespace(&self, target: sdf::Path) -> sdf::Path { - let Some((proto, instance)) = &self.proxy_roots else { - return target; - }; - target - .as_str() - .strip_prefix(proto.as_str()) - .filter(|rest| rest.is_empty() || rest.starts_with('/') || rest.starts_with('.')) - .and_then(|rest| sdf::Path::new(format!("{instance}{rest}").as_str()).ok()) - .unwrap_or(target) - } - /// [`PrimData::at`], keeping `index` so the reader can walk to the /// prim's ancestors ([`PrimData::parent`]). pub(in crate::scene::usd_import) fn in_index( @@ -229,10 +152,7 @@ impl PrimData { None => PrimData::in_index(index, &parent), }); } - Some(match &self.proxies { - Some(stage) => PrimData::bridged(index, stage, &parent), - None => PrimData::in_index(index, &parent), - }) + Some(PrimData::in_index(index, &parent)) } /// The path of attribute `name`, for a warning that names it. diff --git a/crates/crust-core/src/scene/usd_import/index/mod.rs b/crates/crust-core/src/scene/usd_import/index/mod.rs index ab38313a0..94d8d6996 100644 --- a/crates/crust-core/src/scene/usd_import/index/mod.rs +++ b/crates/crust-core/src/scene/usd_import/index/mod.rs @@ -36,7 +36,6 @@ use moho::openusd::usd::{Stage, TimeCode}; use moho::scene_index::{CollectionMembership, SceneIndexHandle}; use moho::stage::StageSceneIndex; -pub(super) mod bridge; pub(super) mod data; pub(super) mod instancers; pub(super) mod network; diff --git a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs index 748823fed..d684e1be1 100644 --- a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs +++ b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs @@ -138,7 +138,7 @@ pub(in crate::scene::usd_import) fn invisible_overrides(stage: &Stage) -> u32 { /// reads in the error, and the scene index carries Hydra types only (a /// `Scope` or an `Xform` has none), so it is read from the stage. pub(in crate::scene::usd_import) fn not_a_pass(stage: &Stage, pass: &sdf::Path) -> String { - let prim = super::bridge::prim(stage, pass); + let prim = super::super::prim_at(stage, pass.clone()); if !prim.is_valid().unwrap_or(false) { return "there is no prim at this path on the stage".to_string(); } diff --git a/crates/crust-core/src/scene/usd_import/materials.rs b/crates/crust-core/src/scene/usd_import/materials.rs index e1309329d..3709326bb 100644 --- a/crates/crust-core/src/scene/usd_import/materials.rs +++ b/crates/crust-core/src/scene/usd_import/materials.rs @@ -308,9 +308,7 @@ pub(super) fn index_bound_material(prim: &super::index::data::PrimData) -> Optio .locate([t::MATERIAL_BINDINGS, purpose, t::PATH])? .value()? { - sdf::Value::PathVec(mut paths) if paths.len() == 1 => { - paths.pop().map(|p| prim.in_own_namespace(p)) - } + sdf::Value::PathVec(mut paths) if paths.len() == 1 => paths.pop(), _ => None, } }) @@ -602,7 +600,7 @@ fn material_reads(home: &Stage, mat_path: &sdf::Path, caches: &ImportCaches<'_>) for target in prim.connections(&name) { // Named where the material is: an instance proxy's // connections are its prototype's, moved under the instance. - let target = prim.in_own_namespace(prim.name_of(&target.prim_path())); + let target = prim.name_of(&target.prim_path()); if !target.has_prefix(mat_path) { reads.push(target.to_string()); } @@ -1140,7 +1138,6 @@ pub(super) struct MatSource { pub(super) prim: super::index::data::PrimData, pub(super) networks: std::collections::BTreeMap, index: moho::scene_index::SceneIndexHandle, - stage: Stage, /// The input built over `stage`, when the walked one does not hold the /// material: kept alive with the source. _input: Option, @@ -1158,7 +1155,7 @@ impl MatSource { // instancing chain, at the path the binding names (Moho's M11). if let Some((name, data)) = &caches.materials.reading && name == mat_path - && let (Some(inst), Some((_, stage))) = (&caches.inst, &caches.scene) + && let Some(inst) = &caches.inst { let prim = PrimData::rebased(inst, data, data, name); return MatSource { @@ -1166,30 +1163,22 @@ impl MatSource { networks: super::index::network::networks(&prim), prim, index: inst.clone(), - stage: stage.clone(), _input: None, rebase: Some((data.clone(), name.clone())), }; } // Read at the top of the import's chain, where the material-node - // resolution has filled a node outside the walked chunk (Moho's M10), - // on the walked stage for the bridge's prototype mapping. - let walked = - caches - .scene - .as_ref() - .zip(caches.top.as_ref()) - .and_then(|((_, stage), top)| { - let prim = PrimData::bridged(top, stage, mat_path); - (prim.ty() == moho::tokens::prim_type::MATERIAL) - .then(|| (top.clone(), stage.clone(), prim)) - }); - let (index, stage, prim, input) = match walked { - Some((index, stage, prim)) => (index, stage, prim, None), + // resolution has filled a node outside the walked chunk (Moho's M10). + let walked = caches.top.as_ref().and_then(|top| { + let prim = PrimData::in_index(top, mat_path); + (prim.ty() == moho::tokens::prim_type::MATERIAL).then(|| (top.clone(), prim)) + }); + let (index, prim, input) = match walked { + Some((index, prim)) => (index, prim, None), None => { let input = super::index::input_chain(home.clone(), caches.time, false); - let prim = PrimData::bridged(&input.chain, home, mat_path); - (input.chain.clone(), home.clone(), prim, Some(input)) + let prim = PrimData::in_index(&input.chain, mat_path); + (input.chain.clone(), prim, Some(input)) } }; MatSource { @@ -1197,7 +1186,6 @@ impl MatSource { networks: super::index::network::networks(&prim), prim, index, - stage, _input: input, rebase: None, } @@ -1216,7 +1204,7 @@ impl MatSource { .unwrap_or_else(|| path.clone()); PrimData::rebased(&self.index, &at, data, name) } - None => PrimData::bridged(&self.index, &self.stage, path), + None => PrimData::in_index(&self.index, path), } } diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index 9951f9e38..9cb9f092c 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -2216,7 +2216,7 @@ impl<'a> ImportCaches<'a> { /// any filter: what the transform reader reads. fn stage_prim(&self, path: &sdf::Path) -> index::data::PrimData { match (&self.stage_index, &self.scene) { - (Some(index), Some((_, stage))) => index::data::PrimData::bridged(index, stage, path), + (Some(index), Some(_)) => index::data::PrimData::at(index.as_ref(), path), _ => unreachable!("a reader reached outside a walk of the scene index"), } } @@ -2226,7 +2226,7 @@ impl<'a> ImportCaches<'a> { /// prototype's parts through the instancing reader). fn prim_data(&self, path: &sdf::Path) -> index::data::PrimData { match &self.scene { - Some((scene, stage)) => index::data::PrimData::bridged(scene, stage, path), + Some((scene, _)) => index::data::PrimData::in_index(scene, path), None => unreachable!("a reader reached outside a walk of the scene index"), } } diff --git a/crates/crust-core/src/scene/usd_import/xform.rs b/crates/crust-core/src/scene/usd_import/xform.rs index 71cfc08a0..33dc88b0b 100644 --- a/crates/crust-core/src/scene/usd_import/xform.rs +++ b/crates/crust-core/src/scene/usd_import/xform.rs @@ -673,12 +673,8 @@ def Xform "Still" } /// `path` in `index`, as the walk reads it. - fn at_path( - index: &moho::scene_index::SceneIndexHandle, - stage: &openusd::usd::Stage, - path: &str, - ) -> PrimData { - PrimData::bridged(index, stage, &sdf::path(path).unwrap()) + fn at_path(index: &moho::scene_index::SceneIndexHandle, path: &str) -> PrimData { + PrimData::in_index(index, &sdf::path(path).unwrap()) } /// At an offset from the index's time: Moho's sampled `xform/matrix`. @@ -686,7 +682,7 @@ def Xform "Still" fn an_offset_reads_another_time() { let stage = open("compose_at", ANIMATED); let index = stage_index(&stage, Some(2.0)); - let a = at_path(&index, &stage, "/A"); + let a = at_path(&index, "/A"); let at = |m: GMat4| m.transform_point3(Vec3::ZERO); assert_eq!( at(compose_data( @@ -715,7 +711,7 @@ def Xform "Still" let motion = TransformMotion::new(Some((2.0, 3.0)), true, false, false).with_frame(Some(2.0)); let timing = |path: &str, parent: Timing, parent_world: GMat4| { - let p = at_path(&index, &stage, path); + let p = at_path(&index, path); let world = compose_index(&stage, &p, parent_world, Some(2.0)); ( motion.timing_index(&stage, &p, &parent, parent_world, world), @@ -760,7 +756,7 @@ def Xform "Still" fn a_frame_pose_starts_at_the_frame_and_moves_by_the_shutter() { let stage = open("frame_pose", ANIMATED); let index = stage_index(&stage, Some(2.0)); - let a = at_path(&index, &stage, "/A"); + let a = at_path(&index, "/A"); let world = compose_index(&stage, &a, GMat4::IDENTITY, Some(2.0)); let at = |m: GMat4| m.transform_point3(Vec3::ZERO); let ends = |motion: TransformMotion| { @@ -793,7 +789,7 @@ def Xform "Still" fn without_an_interval_a_varying_prim_varies_and_moves_nothing() { let stage = open("varies", ANIMATED); let index = stage_index(&stage, None); - let a = at_path(&index, &stage, "/A"); + let a = at_path(&index, "/A"); let world = compose_index(&stage, &a, GMat4::IDENTITY, None); let asked = TransformMotion::new(None, true, false, true); assert_eq!( @@ -807,7 +803,7 @@ def Xform "Still" ); let moving = TransformMotion::new(Some((0.0, 1.0)), true, false, false).with_frame(Some(0.0)); - let still = at_path(&index, &stage, "/Still"); + let still = at_path(&index, "/Still"); let still_world = compose_index(&stage, &still, GMat4::IDENTITY, None); assert_eq!( moving.timing_index( From 523203da08cf8c5482ce90bbc0ab5f2688b9604e Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 23:01:40 +0100 Subject: [PATCH 72/95] openspec: moho-import 12.3 is done; the index module says what is read where grep finds no usd::Prim in index/ outside stage_facts.rs; the importer's other stage reads are stage_facts' (D7) or crust ls's listing. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../crust-core/src/scene/usd_import/index/mod.rs | 14 ++++++-------- openspec/changes/moho-import/tasks.md | 2 +- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/index/mod.rs b/crates/crust-core/src/scene/usd_import/index/mod.rs index 94d8d6996..94579d1fa 100644 --- a/crates/crust-core/src/scene/usd_import/index/mod.rs +++ b/crates/crust-core/src/scene/usd_import/index/mod.rs @@ -18,15 +18,13 @@ //! through Moho's re-exports here, so the types that cross the Moho boundary //! are visible as such (design D2). //! -//! # The bridge (design D6) +//! # What is read where //! -//! While a schema family has not moved to the index, its existing reader is -//! handed the `usd::Prim` at the walked path on the stage of the input that -//! holds it ([`bridge`]). The bridge cannot reach a prim that exists only in -//! Moho's namespace (re-rooted prototypes), so until instancing moves each -//! input's chain is `chain::input` without the two instancing filters -//! ([`input_chain`]). The bridge is transitional: it goes with the direct -//! readers it calls, at the end of the change. +//! Every input's chain is `moho::chain::input` ([`input_chain`]), the +//! instancing filters included, under a top of `chain::standard`'s or +//! `chain::merged`'s shape; prototypes are read at Moho's propagated paths. +//! Every reader reads the scene index alone; what is not imaging data is +//! read off the stage in one place, [`stage_facts`] (design D7). use std::rc::Rc; diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 2116ad0c5..82dabd9a7 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -319,7 +319,7 @@ this group, and kept for the whole change. decision from instancers, per top-level subtree. Instances judged at the instance or instancer path for links and passes. Verify that parity is green with adaptive subdivision on, on the instancing samples, streamed and not. -- [ ] 12.3 Every index reader reads only the scene index or `stage_facts`: no bridged +- [x] 12.3 Every index reader reads only the scene index or `stage_facts`: no bridged call remains. Verify with `grep` that `index/` names no `usd::Prim` outside `stage_facts.rs`, and that parity is green. - [ ] 12.4 Run `scripts/import_parity.sh check` on ALab and Moana against their From 205fbc026fc3a7659eafc76e294d3a743d74001c Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Mon, 26 Oct 2026 23:11:06 +0100 Subject: [PATCH 73/95] crust: the choice of subtrees to stream is read in stage_facts subtree_roots, which partitions the stage into the subtrees streamed one masked stage at a time (and the scope placements are counted in), moves into stage_facts with a comment that it is an import-strategy read, not scene data (design D7): stage_facts is now the importer's one reader of the stage, besides crust ls's listing. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/index/stage_facts.rs | 22 ++++++++++++++++ crates/crust-core/src/scene/usd_import/mod.rs | 26 +++---------------- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs index d684e1be1..c35654033 100644 --- a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs +++ b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs @@ -309,3 +309,25 @@ pub(in crate::scene::usd_import) fn instance_without_prototype( let prim = super::super::prim_at(stage, path.clone()); prim.is_instance().unwrap_or(false) && !matches!(prim.prototype(), Ok(Some(_))) } + +/// The stage's top-level subtrees: the children of its one root prim, or its +/// root prims when it has several. The unit `stream_roots` streams, and the +/// scope adaptive subdivision counts native placements in — in every import +/// mode, so that streaming cannot change which prototypes are shared. +/// +/// An import-strategy read, not scene data: which subtrees the import +/// streams one masked stage at a time is the host's decision, made on the +/// stage it opens (design D7). +pub(in crate::scene::usd_import) fn subtree_roots(stage: &Stage) -> Vec { + let pseudo_root = super::super::prim_at(stage, sdf::Path::abs_root()); + let Ok(top) = pseudo_root.children() else { + return Vec::new(); + }; + match top.as_slice() { + [only] => match only.children() { + Ok(children) => children.iter().map(|c| c.path().clone()).collect(), + Err(_) => Vec::new(), + }, + many => many.iter().map(|p| p.path().clone()).collect(), + } +} diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index 9cb9f092c..3bd144d83 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -174,31 +174,13 @@ fn stream_roots(stage: &Stage) -> Vec { debug!("Streaming import disabled by CRUST_STREAM_IMPORT=0"); return Vec::new(); } - let chunks = subtree_roots(stage); + let chunks = index::stage_facts::subtree_roots(stage); if chunks.len() < MIN_STREAM_CHUNKS { return Vec::new(); } chunks } -/// The stage's top-level subtrees: the children of its one root prim, or its -/// root prims when it has several. The unit [`stream_roots`] streams, and the -/// scope adaptive subdivision counts native placements in — in every import -/// mode, so that streaming cannot change which prototypes are shared. -fn subtree_roots(stage: &Stage) -> Vec { - let pseudo_root = prim_at(stage, sdf::Path::abs_root()); - let Ok(top) = pseudo_root.children() else { - return Vec::new(); - }; - match top.as_slice() { - [only] => match only.children() { - Ok(children) => children.iter().map(|c| c.path().clone()).collect(), - Err(_) => Vec::new(), - }, - many => many.iter().map(|p| p.path().clone()).collect(), - } -} - /// Counts the native placements of every prototype on `stage`, per top-level /// subtree, into `caches.placements`: the same walk and pruning /// ([`prune_reason`]) as the walk ([`index::walk`]), not @@ -1232,7 +1214,7 @@ pub(crate) fn load_scene( settings::read_settings_prim(scene_input.chain.as_ref(), pass).map(|p| p.to_string()); let chunks = stream_roots(&index); let subtrees: std::collections::HashSet = if subdiv.adaptive.is_some() { - subtree_roots(&index) + index::stage_facts::subtree_roots(&index) .iter() .map(ToString::to_string) .collect() @@ -2042,7 +2024,7 @@ struct ImportCaches<'a> { /// ([`count_placements`]). A prototype placed once in its subtree is /// unshared, and refined by its size on screen. placements: HashMap<(String, String), u32>, - /// The top-level subtrees placements are counted in ([`subtree_roots`]). + /// The top-level subtrees placements are counted in ([`index::stage_facts::subtree_roots`]). subtrees: std::collections::HashSet, /// Which stage the entries above came from. /// @@ -2153,7 +2135,7 @@ impl UnreadGprims { } impl ImportCaches<'_> { - /// The top-level subtree `path` lies in, as [`subtree_roots`] partitions the + /// The top-level subtree `path` lies in, as [`index::stage_facts::subtree_roots`] partitions the /// stage; empty above every subtree. fn subtree_of(&self, path: &sdf::Path) -> String { let mut cur = Some(path.clone()); From 899f83514dc8dbf4af46c424cb0007889ac27be6 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 05:49:40 +0100 Subject: [PATCH 74/95] crust: two instancers of one instanced asset share its prototype (D3c) A fixture of ALab's shape: two point instancers whose prototypes are instanceable references to one asset binding its own material. Recorded from the direct importer, then re-recorded: Moho's one propagated prototype is built once, so the mesh and material are shared (unique triangles 6 to 4, one material and one mesh slot fewer); the image is equal. Cross-instancer reuse is recorded under D3c and in the specs. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- ...hared_asset_usda-b4118459ba391348-1.digest | 31 ++++++++ ...shared_asset_usda-b4118459ba391348-1.image | 1 + .../crust-core/tests/instanced_instancers.rs | 78 +++++++++++++++++++ openspec/changes/moho-import/design.md | 11 ++- .../moho-import/specs/import-parity/spec.md | 2 +- .../specs/scene-index-import/spec.md | 12 ++- 6 files changed, 131 insertions(+), 4 deletions(-) create mode 100644 crates/crust-core/tests/data/import_baselines/shared_asset_usda-b4118459ba391348-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/shared_asset_usda-b4118459ba391348-1.image diff --git a/crates/crust-core/tests/data/import_baselines/shared_asset_usda-b4118459ba391348-1.digest b/crates/crust-core/tests/data/import_baselines/shared_asset_usda-b4118459ba391348-1.digest new file mode 100644 index 000000000..ea6b55580 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shared_asset_usda-b4118459ba391348-1.digest @@ -0,0 +1,31 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(1.0, 1.0, 10.0), lower_left_corner: Vec3A(-1.7183647, -0.52908015, 0.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/shared_asset.usda"], invisible_overrides: Some(0) } +layer: $DIR/shared_asset.usda +lights: 0 +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 4, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:e53d9a101514f968 camera=2:e53d9a101514f968 shadow=2:e53d9a101514f968 indirect=2:e53d9a101514f968 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:55e4388480c28b55 camera=2:55e4388480c28b55 shadow=2:55e4388480c28b55 indirect=2:55e4388480c28b55 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:61e4350a67ec8255 camera=2:61e4350a67ec8255 shadow=2:61e4350a67ec8255 indirect=2:61e4350a67ec8255 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:802f8cea72d34ba8 camera=2:802f8cea72d34ba8 shadow=2:802f8cea72d34ba8 indirect=2:802f8cea72d34ba8 +geom 4: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:61e4350a67ec8255 camera=2:61e4350a67ec8255 shadow=2:61e4350a67ec8255 indirect=2:61e4350a67ec8255 +provenance material /Branch/Looks/Bark: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Generation2/Prototypes/Branch/Looks/Bark: MaterialOrigin { slots: [0, 1, 2, 3], displaced: false } +provenance material read: ("/Branch/Looks/Bark", "/World/Generation2/Prototypes/Branch/Looks/Bark") +provenance material read: ("/Branch/Looks/Bark/S", "/World/Generation2/Prototypes/Branch/Looks/Bark") +provenance geometry 0..2: /World/Generation2 +provenance geometry 2..4: /World/Generation1 +provenance geometry 4..5: /Branch/Geo +provenance mesh: MeshOrigin { geom_id: 4, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11573210918765220906, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11573210918765220906, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/shared_asset_usda-b4118459ba391348-1.image b/crates/crust-core/tests/data/import_baselines/shared_asset_usda-b4118459ba391348-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/shared_asset_usda-b4118459ba391348-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/instanced_instancers.rs b/crates/crust-core/tests/instanced_instancers.rs index b2bbf811f..2a5273b72 100644 --- a/crates/crust-core/tests/instanced_instancers.rs +++ b/crates/crust-core/tests/instanced_instancers.rs @@ -191,3 +191,81 @@ fn a_binding_inside_an_instanced_prototype_is_named_in_the_proxys_namespace() { assert!(fallback.is_none(), "{fallback:?}"); assert!(scene.world.count() > 1, "the leaves are placed"); } + +/// Two point instancers whose prototypes are instanceable references to one +/// asset, each prototype binding a material it carries — ALab's bonsai +/// generations. The asset is one USD prototype, read once through Moho's +/// propagated prototype, its material resolved once and its mesh shared by +/// both instancers (the change's third behaviour change, D3c): the direct +/// importer walked each instancer's prototype through its instance proxies +/// and resolved the material once per instancer. The image is the same. +const SHARED_ASSET: &str = r#"#usda 1.0 +def Xform "Branch" +{ + def Mesh "Geo" (prepend apiSchemas = ["MaterialBindingAPI"]) + { + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 2, 3] + point3f[] points = [(0, 0, 0), (0.5, 0, 0), (0.5, 0.5, 0), (0, 0.5, 0)] + uniform token subdivisionScheme = "none" + rel material:binding = + } + def Scope "Looks" + { + def Material "Bark" + { + token outputs:surface.connect = + def Shader "S" + { + uniform token info:id = "UsdPreviewSurface" + color3f inputs:diffuseColor = (0.4, 0.25, 0.1) + token outputs:surface + } + } + } +} +def Xform "World" +{ + def Camera "Cam" + { + double3 xformOp:translate = (1, 1, 10) + uniform token[] xformOpOrder = ["xformOp:translate"] + } + def PointInstancer "Generation1" + { + rel prototypes = [] + int[] protoIndices = [0, 0] + point3f[] positions = [(0, 0, 0), (1, 0, 0)] + def Scope "Prototypes" + { + def Xform "Branch" (prepend references = instanceable = true) {} + } + } + def PointInstancer "Generation2" + { + rel prototypes = [] + int[] protoIndices = [0, 0] + point3f[] positions = [(0, 2, 0), (1, 2, 0)] + def Scope "Prototypes" + { + def Xform "Branch" (prepend references = instanceable = true) {} + } + } +} +"#; + +#[test] +fn instancers_of_one_instanced_asset_share_its_prototype() { + let dir = std::env::temp_dir().join("crust_instanced_instancers"); + std::fs::create_dir_all(&dir).expect("temp dir"); + let path = dir.join("shared_asset.usda"); + std::fs::write(&path, SHARED_ASSET).expect("write stage"); + let scene = Scene::from_usd(&path).expect("imports"); + // Both instancers read the one native prototype of `/Branch`, so its + // material is converted once and shared (D3c); the digest holds that. + assert_eq!( + scene.world.count(), + 5, + "two copies per instancer, and the asset itself" + ); +} diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index 71fee6d4b..d75dc9b30 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -223,7 +223,12 @@ numbering a streamed import's stages, so a prototype placed in two chunks was bu twice. The parts are now keyed by Moho's propagated prototype path (or a point instancer's copy), which is stable across stages, with no epoch (the user's decision): a prototype is built once for the whole import and its parts reused in every chunk; -its materials, keyed by their re-rooted paths, are reused with it. Geometry, materials +its materials, keyed by their re-rooted paths, are reused with it. The same key reuses +a prototype across point instancers (the user's decision, after ALab's 12.4 run): two +instancers whose prototypes are instanceable references to one asset read Moho's one +propagated prototype for it, so its parts and materials are built once, where the +direct importer walked each instancer's prototype through its instance proxies and +built it once per instancer. Geometry, materials and placements are otherwise equal, and so are the images. The digests that change for this reason only, re-recorded after their images were checked equal: - `samples/purpose_bindings.usda` (streamed, two instances in two chunks): one @@ -235,6 +240,10 @@ this reason only, re-recorded after their images were checked equal: - `usd_adaptive.rs`, `the_instancing_samples_import_adaptively_as_their_baselines` (added with 12.2, recorded from the direct importer): `purpose_bindings.usda` with adaptive subdivision, the same one block, mesh slot and material fewer. +- `instanced_instancers.rs`, `instancers_of_one_instanced_asset_share_its_prototype` + (recorded from the direct importer, then re-recorded): two instancers of one + instanceable asset share its mesh and material (unique triangles 6 to 4, one material + and one mesh slot fewer). ### D4. Index layout: S0's merged index, the consumer deciding what is in diff --git a/openspec/changes/moho-import/specs/import-parity/spec.md b/openspec/changes/moho-import/specs/import-parity/spec.md index fb3039a0d..11c257fcf 100644 --- a/openspec/changes/moho-import/specs/import-parity/spec.md +++ b/openspec/changes/moho-import/specs/import-parity/spec.md @@ -45,7 +45,7 @@ No tolerance SHALL apply. A difference SHALL be fixed, or listed here with its r The change makes three behaviour changes (`scene-index-import`): undefined prims are not imported; a prim inside an instance inherits the instance's ancestors' bindings, through the propagated prototypes; and a prototype is built once per import, reused across a -streamed import's chunks. A baseline that differs for one of these reasons only SHALL be +streamed import's chunks and across point instancers. A baseline that differs for one of these reasons only SHALL be re-recorded, each changed baseline checked to be explained by it and its image checked equal where the reason does not change the render. The one listed exception SHALL be the number openusd gives a native prototype diff --git a/openspec/changes/moho-import/specs/scene-index-import/spec.md b/openspec/changes/moho-import/specs/scene-index-import/spec.md index 351d053c4..8736832d5 100644 --- a/openspec/changes/moho-import/specs/scene-index-import/spec.md +++ b/openspec/changes/moho-import/specs/scene-index-import/spec.md @@ -66,8 +66,9 @@ Three exceptions SHALL apply, each as USD and UsdImaging have it: instance's ancestors bind when it binds none itself, through Moho's propagated prototypes, where the direct importer resolved bindings inside `/__Prototype_N` only; - prototypes built once: a prototype's parts SHALL be keyed by its propagated path and - reused in every chunk of a streamed import, where the direct importer rebuilt them per - chunk. + reused in every chunk of a streamed import and by every point instancer whose + prototypes reference it, where the direct importer rebuilt them per chunk and per + instancer. Renderer attributes (`crust:*`) SHALL be read from the scene index's generic attribute data, with the same authored-versus-fallback rule as the direct importer. @@ -95,6 +96,13 @@ data, with the same authored-versus-fallback rule as the direct importer. - **THEN** its parts are built once and placed twice, and the image is the direct importer's +#### Scenario: Two instancers of one instanced asset + +- **WHEN** two point instancers' prototypes are instanceable references to one asset + that binds its own material +- **THEN** the asset's mesh and material are built once and shared by both instancers, + and the image is the direct importer's + #### Scenario: Warnings - **WHEN** a stage's baseline records warnings from the direct importer From 28f0cd977af07020b54ef9ef93b5eaf69a439ee0 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 05:50:00 +0100 Subject: [PATCH 75/95] crust: a fixture for point-instancer targets inside an instance (M12) Moana's coral shape: a point instancer whose prototypes are prims inside a native instance, so each target is an instance proxy. Its baseline is the direct importer's. Moho copies such a target as an empty prim until M12 (Moho PR #14), so the test is should_panic on the parity check until the Moho rev that carries it; M12 is listed in the design's open gaps, and Moana's 12.4 run waits for it. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- ...oxy_targets_usda-8355941db6dce051-1.digest | 28 +++++++++ ...roxy_targets_usda-8355941db6dce051-1.image | 1 + .../crust-core/tests/instanced_instancers.rs | 61 +++++++++++++++++++ openspec/changes/moho-import/design.md | 14 ++++- 4 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 crates/crust-core/tests/data/import_baselines/proxy_targets_usda-8355941db6dce051-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/proxy_targets_usda-8355941db6dce051-1.image diff --git a/crates/crust-core/tests/data/import_baselines/proxy_targets_usda-8355941db6dce051-1.digest b/crates/crust-core/tests/data/import_baselines/proxy_targets_usda-8355941db6dce051-1.digest new file mode 100644 index 000000000..73df771d8 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/proxy_targets_usda-8355941db6dce051-1.digest @@ -0,0 +1,28 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(1.0, 1.0, 10.0), lower_left_corner: Vec3A(-1.7183647, -0.52908015, 0.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/proxy_targets.usda"], invisible_overrides: Some(0) } +layer: $DIR/proxy_targets.usda +lights: 0 +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 0, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } top level, PrimitiveBreakdown { triangles: 3, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 5 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:61e4350a67ec8255 camera=2:61e4350a67ec8255 shadow=2:61e4350a67ec8255 indirect=2:61e4350a67ec8255 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:55f984fc5f87c675 camera=1:55f984fc5f87c675 shadow=1:55f984fc5f87c675 indirect=1:55f984fc5f87c675 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6b2659e60b0616d8 camera=2:6b2659e60b0616d8 shadow=2:6b2659e60b0616d8 indirect=2:6b2659e60b0616d8 +geom 3: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7782f7a0c7c05335 camera=1:7782f7a0c7c05335 shadow=1:7782f7a0c7c05335 indirect=1:7782f7a0c7c05335 +geom 4: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:61e4350a67ec8255 camera=2:61e4350a67ec8255 shadow=2:61e4350a67ec8255 indirect=2:61e4350a67ec8255 +provenance geometry 0..3: /World/Scatter +provenance geometry 3..4: /ArchiveAsset/Piece2 +provenance geometry 4..5: /ArchiveAsset/Piece1 +provenance mesh: MeshOrigin { geom_id: 3, slot: 1, baked: false, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 0, baked: false, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11573210918765220906, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17603972815358145815, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 0 }), placements: 1, shared: true, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/proxy_targets_usda-8355941db6dce051-1.image b/crates/crust-core/tests/data/import_baselines/proxy_targets_usda-8355941db6dce051-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/proxy_targets_usda-8355941db6dce051-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/instanced_instancers.rs b/crates/crust-core/tests/instanced_instancers.rs index 2a5273b72..a68be1863 100644 --- a/crates/crust-core/tests/instanced_instancers.rs +++ b/crates/crust-core/tests/instanced_instancers.rs @@ -269,3 +269,64 @@ fn instancers_of_one_instanced_asset_share_its_prototype() { "two copies per instancer, and the asset itself" ); } + +/// A point instancer whose prototypes are prims *inside* a native instance — +/// Moana's coral: `Prototypes/Archive` is instanceable, so each target is an +/// instance proxy. The direct importer read the proxied meshes on the stage. +const PROXY_TARGETS: &str = r#"#usda 1.0 +def Xform "ArchiveAsset" +{ + def Mesh "Piece1" + { + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 2, 3] + point3f[] points = [(0, 0, 0), (0.5, 0, 0), (0.5, 0.5, 0), (0, 0.5, 0)] + uniform token subdivisionScheme = "none" + } + def Mesh "Piece2" + { + int[] faceVertexCounts = [3] + int[] faceVertexIndices = [0, 1, 2] + point3f[] points = [(0, 0, 0), (0.5, 0, 0), (0, 0.5, 0)] + uniform token subdivisionScheme = "none" + } +} +def Xform "World" +{ + def Camera "Cam" + { + double3 xformOp:translate = (1, 1, 10) + uniform token[] xformOpOrder = ["xformOp:translate"] + } + def PointInstancer "Scatter" + { + rel prototypes = [, ] + int[] protoIndices = [0, 1, 0] + point3f[] positions = [(0, 0, 0), (1, 0, 0), (2, 0, 0)] + def Scope "Prototypes" + { + def Xform "Archive" (prepend references = instanceable = true) {} + } + } +} +"#; + +/// Expected to fail until Moho's M12 (point instancing resolving an +/// instance-proxy target through native instancing's propagated prototype): +/// the scene index holds no instance proxies, so the targets are read as +/// empty and the import differs from the direct importer's baseline. Remove +/// `should_panic` with the Moho bump that carries M12. +#[test] +#[should_panic(expected = "parity")] +fn a_point_instancer_targeting_prims_inside_an_instance_places_them() { + let dir = std::env::temp_dir().join("crust_instanced_instancers"); + std::fs::create_dir_all(&dir).expect("temp dir"); + let path = dir.join("proxy_targets.usda"); + std::fs::write(&path, PROXY_TARGETS).expect("write stage"); + let scene = Scene::from_usd(&path).expect("imports"); + let empty = scene + .warnings + .iter() + .find(|w| w.code == WarningCode::InstancingEmptyPrototype); + assert!(empty.is_none(), "{empty:?}"); +} diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index d75dc9b30..0329e50d0 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -484,7 +484,7 @@ all of them, with tests, and merged into Moho's `main` at `fc391a5`, the rev Cru ### Moho-side gaps found while migrating (open) -Moving the families onto the index found three more gaps. Each blocks the readers that +Moving the families onto the index found more gaps. Each blocks the readers that need it; none is worked around in Crust. - **M8. The USD prim type and applied API schemas.** Hydra's `__usdPrimInfo` @@ -523,6 +523,18 @@ need it; none is worked around in Crust. absolute path, and fill the node after the merge from the prim at that path, as light linking runs after the merge. The material networks (9.2) wait on it, kept off the branch until then. +- **M12. A point-instancer prototype inside a native instance.** Moana's coral + (`elements/isCoral`) scatters prims inside the native instance + `Prototypes/xgStaghorn`: each target is an instance proxy, which the scene index does + not hold, so Moho's point instancing copies it as an empty, untyped prim and the + import places nothing (geometries 2,912,341 to 13,638 on that element, with 174 + `instancing.empty_prototype`). Moho will resolve such a target through the instance's + propagated prototype, its copy at `/ForInstancer/prototype`; Crust + already takes copies from `instancerTopology/prototypes` and names them by + `primOrigin`. `instanced_instancers.rs`, + `a_point_instancer_targeting_prims_inside_an_instance_places_them`, recorded from the + direct importer, is expected to fail (`should_panic`) until the Moho rev that carries + M12; Moana's 12.4 run waits for it. ## Risks / Trade-offs From abf69344154db4f7ea4e43adaca1378fb13dda2c Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 06:02:29 +0100 Subject: [PATCH 76/95] openspec: moho-import records ALab's cross-instancer reuse (D3c) ALab's report was re-recorded for the reuse alone (unique triangles 12,007,504 to 12,001,706) and the direct importer's EXR kept; the import_parity check passes, report and image equal. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/design.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index 0329e50d0..d0b3e7b5f 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -244,6 +244,10 @@ this reason only, re-recorded after their images were checked equal: (recorded from the direct importer, then re-recorded): two instancers of one instanceable asset share its mesh and material (unique triangles 6 to 4, one material and one mesh slot fewer). +- ALab (`import_parity.sh`, 12.4): its SPRUCE point instancers' instanceable prototypes + share one propagated prototype, so the `crust check` report's unique triangles go + from 12,007,504 to 12,001,706 (BVH sizes with them). The report was re-recorded and + the direct importer's EXR kept; the check then passes, report and image equal. ### D4. Index layout: S0's merged index, the consumer deciding what is in From 15a3d8a9dfe84586f8eb9bc96037055977409763 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 06:22:42 +0100 Subject: [PATCH 77/95] crust: bump moho to d09cc94 (M12, point-instancer targets inside instances) Moho now copies a point-instancer target that is an instance proxy from the instance's propagated prototype. Crust already takes copies from instancerTopology/prototypes, so it needs no change: the M12 fixture passes, digest and image equal to the direct importer's, and M12 is recorded closed in the design. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- Cargo.lock | 2 +- Cargo.toml | 2 +- .../crust-core/tests/instanced_instancers.rs | 9 +++----- openspec/changes/moho-import/design.md | 22 +++++++++---------- 4 files changed, 16 insertions(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a5f38c0f9..82f271aca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1281,7 +1281,7 @@ dependencies = [ [[package]] name = "moho" version = "0.1.0" -source = "git+https://github.com/doubleailes/Moho?rev=e64f228b032149641c8c9c099c259bd629a2828f#e64f228b032149641c8c9c099c259bd629a2828f" +source = "git+https://github.com/doubleailes/Moho?rev=d09cc946def933d3f0b3aa66c3b5249aff7c91d4#d09cc946def933d3f0b3aa66c3b5249aff7c91d4" dependencies = [ "openusd", "openusd-schemas", diff --git a/Cargo.toml b/Cargo.toml index 95e3e6cb0..0add28158 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -89,7 +89,7 @@ ocio = "0.2.0" # families `media`, `physics`, `proc`, `semantics`, `skel`, `ui` (`geom`, `lux`, # `render`, `shade`, `vol` are always on). Bump order: Moho, then crust-render, # then Mantle. -moho = { git = "https://github.com/doubleailes/Moho", rev = "e64f228b032149641c8c9c099c259bd629a2828f" } +moho = { git = "https://github.com/doubleailes/Moho", rev = "d09cc946def933d3f0b3aa66c3b5249aff7c91d4" } # The hot loops are spread across crates: the integrator in `crust-core` # calls the kernel in `crust-rt`, which calls `glam`'s SIMD vector ops. diff --git a/crates/crust-core/tests/instanced_instancers.rs b/crates/crust-core/tests/instanced_instancers.rs index a68be1863..a209113c7 100644 --- a/crates/crust-core/tests/instanced_instancers.rs +++ b/crates/crust-core/tests/instanced_instancers.rs @@ -311,13 +311,10 @@ def Xform "World" } "#; -/// Expected to fail until Moho's M12 (point instancing resolving an -/// instance-proxy target through native instancing's propagated prototype): -/// the scene index holds no instance proxies, so the targets are read as -/// empty and the import differs from the direct importer's baseline. Remove -/// `should_panic` with the Moho bump that carries M12. +/// Moho's M12: point instancing copies an instance-proxy target from the +/// instance's propagated prototype (`/ForInstancer/prototype`), +/// so the import places the proxied meshes, equal to the direct importer's. #[test] -#[should_panic(expected = "parity")] fn a_point_instancer_targeting_prims_inside_an_instance_places_them() { let dir = std::env::temp_dir().join("crust_instanced_instancers"); std::fs::create_dir_all(&dir).expect("temp dir"); diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index d0b3e7b5f..4718b2d0e 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -527,18 +527,18 @@ need it; none is worked around in Crust. absolute path, and fill the node after the merge from the prim at that path, as light linking runs after the merge. The material networks (9.2) wait on it, kept off the branch until then. -- **M12. A point-instancer prototype inside a native instance.** Moana's coral - (`elements/isCoral`) scatters prims inside the native instance - `Prototypes/xgStaghorn`: each target is an instance proxy, which the scene index does - not hold, so Moho's point instancing copies it as an empty, untyped prim and the - import places nothing (geometries 2,912,341 to 13,638 on that element, with 174 - `instancing.empty_prototype`). Moho will resolve such a target through the instance's - propagated prototype, its copy at `/ForInstancer/prototype`; Crust - already takes copies from `instancerTopology/prototypes` and names them by - `primOrigin`. `instanced_instancers.rs`, +- **M12. A point-instancer prototype inside a native instance (closed at Moho + `d09cc94`).** Moana's coral (`elements/isCoral`) scatters prims inside the native + instance `Prototypes/xgStaghorn`: each target is an instance proxy, which the scene + index does not hold, so Moho's point instancing copied it as an empty, untyped prim + and the import placed nothing (geometries 2,912,341 to 13,638 on that element, with + 174 `instancing.empty_prototype`). Moho now copies such a target from the instance's + propagated prototype, at `/ForInstancer/prototype`; Crust takes + copies from `instancerTopology/prototypes` and names them by `primOrigin`, so it + needed no change. `instanced_instancers.rs`, `a_point_instancer_targeting_prims_inside_an_instance_places_them`, recorded from the - direct importer, is expected to fail (`should_panic`) until the Moho rev that carries - M12; Moana's 12.4 run waits for it. + direct importer, was expected to fail until that rev and now matches its digest and + image. ## Risks / Trade-offs From 33c9fd656fe79b3755a8b4e4f9787e9a9900f6c1 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 07:20:28 +0100 Subject: [PATCH 78/95] crust: a point-instancer copy names its instance's materials (M12) A copy of a prim inside a native instance binds a material beside its target, which the index holds in the instance's propagated prototype, outside the copy. The copy now carries the instance (the target's nearest ancestor the instancing chain holds as an instance, found at the target as the chain holds it), so the material is read there and named under the instance, as the direct importer named it through the proxy. Moana's isCoral raised 29 material.fallback_default without it. Two fixtures, recorded from the direct importer, cover a top-level and an instanced instancer; both match their digests and images. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/index/data.rs | 36 +++- .../src/scene/usd_import/instancing.rs | 63 ++++++- ...t_materials_usda-aa86a76f3c3ba1b5-1.digest | 35 ++++ ...et_materials_usda-aa86a76f3c3ba1b5-1.image | 1 + ...t_materials_usda-5191f22d92ef400d-1.digest | 38 +++++ ...et_materials_usda-5191f22d92ef400d-1.image | 1 + .../crust-core/tests/instanced_instancers.rs | 154 ++++++++++++++++++ openspec/changes/moho-import/design.md | 16 +- 8 files changed, 324 insertions(+), 20 deletions(-) create mode 100644 crates/crust-core/tests/data/import_baselines/nested_proxy_target_materials_usda-aa86a76f3c3ba1b5-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/nested_proxy_target_materials_usda-aa86a76f3c3ba1b5-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/proxy_target_materials_usda-5191f22d92ef400d-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/proxy_target_materials_usda-5191f22d92ef400d-1.image diff --git a/crates/crust-core/src/scene/usd_import/index/data.rs b/crates/crust-core/src/scene/usd_import/index/data.rs index f9956c8ee..e89e9cc70 100644 --- a/crates/crust-core/src/scene/usd_import/index/data.rs +++ b/crates/crust-core/src/scene/usd_import/index/data.rs @@ -35,6 +35,12 @@ pub(in crate::scene::usd_import) struct PrimData { /// The path values its data hold (binding targets, connections) are left /// as the index re-rooted them (Moho's M11). rebase: Option<(sdf::Path, sdf::Path)>, + /// For a point instancer's copy of a prim inside a native instance (Moho's + /// M12), `(the instance's propagated prototype, the instance)`: the copy's + /// path values that name the rest of the instance (a material beside the + /// target) lie under the propagated prototype, outside the copy, and are + /// named under the instance ([`PrimData::name_of`]). + outer: Option<(sdf::Path, sdf::Path)>, } impl PrimData { @@ -48,6 +54,7 @@ impl PrimData { data: prim.data, index: None, rebase: None, + outer: None, } } @@ -72,12 +79,21 @@ impl PrimData { /// prototype it comes from when it lies under the re-rooted one /// ([`PrimData::rebased`]), else itself. pub(in crate::scene::usd_import) fn name_of(&self, path: &sdf::Path) -> sdf::Path { - match &self.rebase { - Some((data_root, name_root)) => { - Self::move_root(path, data_root, name_root).unwrap_or_else(|| path.clone()) - } - None => path.clone(), - } + [&self.rebase, &self.outer] + .into_iter() + .flatten() + .find_map(|(data_root, name_root)| Self::move_root(path, data_root, name_root)) + .unwrap_or_else(|| path.clone()) + } + + /// The prim with `outer` (see the field): how a point instancer's copy of + /// a prim inside a native instance names what the instance holds. + pub(in crate::scene::usd_import) fn with_outer( + mut self, + outer: Option<(sdf::Path, sdf::Path)>, + ) -> Self { + self.outer = outer; + self } /// `path` moved from under `from` to under `to`, when it lies there. @@ -105,7 +121,10 @@ impl PrimData { .children(&data) .into_iter() .filter(|c| c.name() != Some(moho::tokens::instancing::PROPAGATED_ROOT)) - .map(|c| PrimData::rebased(index, &c, data_root, name_root)) + .map(|c| { + PrimData::rebased(index, &c, data_root, name_root) + .with_outer(self.outer.clone()) + }) .collect(); } index @@ -148,7 +167,8 @@ impl PrimData { // USD prototype's own ancestors (the pseudo-root), as the stage // walks them. return Some(match Self::move_root(&parent, name_root, data_root) { - Some(data) => PrimData::rebased(index, &data, data_root, name_root), + Some(data) => PrimData::rebased(index, &data, data_root, name_root) + .with_outer(self.outer.clone()), None => PrimData::in_index(index, &parent), }); } diff --git a/crates/crust-core/src/scene/usd_import/instancing.rs b/crates/crust-core/src/scene/usd_import/instancing.rs index 8e755b472..6c329f821 100644 --- a/crates/crust-core/src/scene/usd_import/instancing.rs +++ b/crates/crust-core/src/scene/usd_import/instancing.rs @@ -86,6 +86,10 @@ pub(super) enum ProtoPlace { pub(super) struct ProtoRoot { pub(super) index: sdf::Path, pub(super) usd: sdf::Path, + /// For a point instancer's copy of a prim inside a native instance, + /// `(the instance's propagated prototype, the instance)`, which names + /// what the copy's data point to beside it (`PrimData::with_outer`). + pub(super) outer: Option<(sdf::Path, sdf::Path)>, } impl ProtoRoot { @@ -119,6 +123,7 @@ impl ProtoRoot { ProtoRoot { index: path.clone(), usd: path.clone(), + outer: None, } } } @@ -278,6 +283,7 @@ pub(super) fn collect_proto_parts( redirected = ProtoRoot { index, usd: proto.usd.clone(), + outer: None, }; &redirected } @@ -297,7 +303,8 @@ pub(super) fn collect_proto_parts( let name = proto.usd_of(&at); // Its data: in the instancing chain at its re-rooted path, named by // its USD path (Moho's M11 re-roots the path values it holds). - let pdata = PrimData::rebased(&inst, &at, &proto.index, &proto.usd); + let pdata = + PrimData::rebased(&inst, &at, &proto.index, &proto.usd).with_outer(proto.outer.clone()); // The same pruning as the top-level walk, abstractness aside: purpose // and visibility, from the index (an inactive prim it does not hold). if let Some(reason) = super::index::walk::prune(inst.as_ref(), &at) { @@ -341,7 +348,11 @@ pub(super) fn collect_proto_parts( inner_usd, super::index::instancers::native_prototype(inst.as_ref(), &at), ) { - let inner = ProtoRoot { index, usd }; + let inner = ProtoRoot { + index, + usd, + outer: None, + }; let inner_parts = prototype_parts(stage, &inner, caches, depth + 1); parts.extend(inner_parts.iter().map(|part| ProtoPart { local: this_local * part.local, @@ -572,6 +583,7 @@ fn nested_instancer_parts( }; // Targets the index re-rooted (inside a propagated prototype) are named // by the USD prims they come from. + let held = layout.targets.clone(); for target in &mut layout.targets { *target = data.name_of(target); } @@ -601,7 +613,7 @@ fn nested_instancer_parts( } else { (0..layout.targets.len()).map(|k| (k, None)).collect() }; - let roots = proto_roots(caches, at, &layout.targets); + let roots = proto_roots(caches, at, &layout.targets, &held, &|p| data.name_of(p)); let groups: BTreeMap<(usize, Option), Option> = versions .into_iter() .map(|(k, placed)| { @@ -822,6 +834,7 @@ pub(super) fn emit_native_instance( Some(index) => ProtoRoot { index, usd: proto_path.clone(), + outer: None, }, None => ProtoRoot::usd(proto_path), }; @@ -1075,8 +1088,16 @@ fn read_instancer(prim: &PrimData, report: bool) -> Option { /// The prototype roots a point instancer at `at` (in the instancing chain) /// places, one per target: its `ForInstancer` copies, named by the targets -/// they copy (`primOrigin`'s USD source, in the targets' order). -fn proto_roots(caches: &ImportCaches<'_>, at: &sdf::Path, targets: &[sdf::Path]) -> Vec { +/// they copy (`primOrigin`'s USD source, in the targets' order). `held` are +/// the targets as the instancing chain holds them (re-rooted inside a +/// propagated prototype), and `name` names a path it holds. +fn proto_roots( + caches: &ImportCaches<'_>, + at: &sdf::Path, + targets: &[sdf::Path], + held: &[sdf::Path], + name: &dyn Fn(&sdf::Path) -> sdf::Path, +) -> Vec { let copies = caches .inst .as_ref() @@ -1084,17 +1105,43 @@ fn proto_roots(caches: &ImportCaches<'_>, at: &sdf::Path, targets: &[sdf::Path]) .unwrap_or_default(); targets .iter() + .zip(held) .enumerate() - .map(|(k, target)| match copies.get(k) { + .map(|(k, (target, held))| match copies.get(k) { Some(index) => ProtoRoot { index: index.clone(), usd: target.clone(), + outer: caches + .inst + .as_ref() + .and_then(|inst| enclosing_instance(inst.as_ref(), held)) + .map(|(prototype, instance)| (prototype, name(&instance))), }, None => ProtoRoot::usd(target), }) .collect() } +/// For a point-instancer target inside a native instance (an instance proxy, +/// Moho's M12), `(the instance's propagated prototype, the instance)`: the +/// nearest ancestor of `target` the instancing chain holds as an instance. +fn enclosing_instance( + inst: &dyn moho::scene_index::SceneIndex, + target: &sdf::Path, +) -> Option<(sdf::Path, sdf::Path)> { + let mut at = target.parent(); + while let Some(path) = at { + if path.is_abs_root() { + return None; + } + if let Some(prototype) = super::index::instancers::native_prototype(inst, &path) { + return Some((prototype, path)); + } + at = path.parent(); + } + None +} + /// A prototype's parts, from the cache or freshly built. fn prototype_parts( stage: &Stage, @@ -1223,7 +1270,9 @@ pub(super) fn emit_point_instancer( .meshes .primvars .report_placement(&caches.prim_data(path), "the PointInstancer"); - let roots = proto_roots(caches, path, &layout.targets); + let roots = proto_roots(caches, path, &layout.targets, &layout.targets, &|p| { + p.clone() + }); // The version of its prototype each placement draws: the shared one, or — // in adaptive mode, for a target this instancer places once — one built // for that placement. diff --git a/crates/crust-core/tests/data/import_baselines/nested_proxy_target_materials_usda-aa86a76f3c3ba1b5-1.digest b/crates/crust-core/tests/data/import_baselines/nested_proxy_target_materials_usda-aa86a76f3c3ba1b5-1.digest new file mode 100644 index 000000000..cb24dc590 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_proxy_target_materials_usda-aa86a76f3c3ba1b5-1.digest @@ -0,0 +1,35 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(1.0, 1.0, 10.0), lower_left_corner: Vec3A(-1.7183647, -0.52908015, 0.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/nested_proxy_target_materials.usda"], invisible_overrides: Some(0) } +layer: $DIR/nested_proxy_target_materials.usda +lights: 0 +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 2, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 4 } top level, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 6 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:9fd357dae73a17f8 camera=4:9fd357dae73a17f8 shadow=4:9fd357dae73a17f8 indirect=4:9fd357dae73a17f8 +geom 1: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=4:f0a04a35a27e23f8 camera=4:f0a04a35a27e23f8 shadow=4:f0a04a35a27e23f8 indirect=4:f0a04a35a27e23f8 +geom 2: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:61e4350a67ec8255 camera=2:61e4350a67ec8255 shadow=2:61e4350a67ec8255 indirect=2:61e4350a67ec8255 +geom 3: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:802f8cea72d34ba8 camera=2:802f8cea72d34ba8 shadow=2:802f8cea72d34ba8 indirect=2:802f8cea72d34ba8 +geom 4: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:61e4350a67ec8255 camera=2:61e4350a67ec8255 shadow=2:61e4350a67ec8255 indirect=2:61e4350a67ec8255 +provenance material /ArchiveAsset/Looks/Red: MaterialOrigin { slots: [4], displaced: false } +provenance material /Element/Scatter/Prototypes/Archive/Looks/Red: MaterialOrigin { slots: [2, 3], displaced: false } +provenance material read: ("/ArchiveAsset/Looks/Red", "/Element/Scatter/Prototypes/Archive/Looks/Red") +provenance material read: ("/ArchiveAsset/Looks/Red", "/__Prototype_0/Scatter/Prototypes/Archive/Looks/Red") +provenance material read: ("/ArchiveAsset/Looks/Red/S", "/Element/Scatter/Prototypes/Archive/Looks/Red") +provenance material read: ("/ArchiveAsset/Looks/Red/S", "/__Prototype_0/Scatter/Prototypes/Archive/Looks/Red") +provenance geometry 0..1: /World/E2 +provenance geometry 1..2: /World/E1 +provenance geometry 2..4: /Element/Scatter +provenance geometry 4..5: /ArchiveAsset/Piece1 +provenance mesh: MeshOrigin { geom_id: 4, slot: 2, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11573210918765220906, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11573210918765220906, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11573210918765220906, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/nested_proxy_target_materials_usda-aa86a76f3c3ba1b5-1.image b/crates/crust-core/tests/data/import_baselines/nested_proxy_target_materials_usda-aa86a76f3c3ba1b5-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/nested_proxy_target_materials_usda-aa86a76f3c3ba1b5-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/data/import_baselines/proxy_target_materials_usda-5191f22d92ef400d-1.digest b/crates/crust-core/tests/data/import_baselines/proxy_target_materials_usda-5191f22d92ef400d-1.digest new file mode 100644 index 000000000..d5c4f202c --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/proxy_target_materials_usda-5191f22d92ef400d-1.digest @@ -0,0 +1,38 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(1.0, 1.0, 10.0), lower_left_corner: Vec3A(-1.7183647, -0.52908015, 0.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/proxy_target_materials.usda"], invisible_overrides: Some(0) } +layer: $DIR/proxy_target_materials.usda +lights: 0 +volumes: 0 +world: 5 geometries, PrimitiveBreakdown { triangles: 3, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } top level, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 3 } unique, motion false +geom 0: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:61e4350a67ec8255 camera=2:61e4350a67ec8255 shadow=2:61e4350a67ec8255 indirect=2:61e4350a67ec8255 +geom 1: material #1 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:55f984fc5f87c675 camera=1:55f984fc5f87c675 shadow=1:55f984fc5f87c675 indirect=1:55f984fc5f87c675 +geom 2: material #0 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:6b2659e60b0616d8 camera=2:6b2659e60b0616d8 shadow=2:6b2659e60b0616d8 indirect=2:6b2659e60b0616d8 +geom 3: material #2 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=1:7782f7a0c7c05335 camera=1:7782f7a0c7c05335 shadow=1:7782f7a0c7c05335 indirect=1:7782f7a0c7c05335 +geom 4: material #3 Signature { kind: "OpenPBR", cutout: false, straight: false, boundary: false, emits: false, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:61e4350a67ec8255 camera=2:61e4350a67ec8255 shadow=2:61e4350a67ec8255 indirect=2:61e4350a67ec8255 +provenance material /ArchiveAsset/Looks/Blue: MaterialOrigin { slots: [3], displaced: false } +provenance material /ArchiveAsset/Looks/Red: MaterialOrigin { slots: [4], displaced: false } +provenance material /World/Scatter/Prototypes/Archive/Looks/Blue: MaterialOrigin { slots: [1], displaced: false } +provenance material /World/Scatter/Prototypes/Archive/Looks/Red: MaterialOrigin { slots: [0, 2], displaced: false } +provenance material read: ("/ArchiveAsset/Looks/Blue", "/World/Scatter/Prototypes/Archive/Looks/Blue") +provenance material read: ("/ArchiveAsset/Looks/Blue/S", "/World/Scatter/Prototypes/Archive/Looks/Blue") +provenance material read: ("/ArchiveAsset/Looks/Red", "/World/Scatter/Prototypes/Archive/Looks/Red") +provenance material read: ("/ArchiveAsset/Looks/Red/S", "/World/Scatter/Prototypes/Archive/Looks/Red") +provenance geometry 0..3: /World/Scatter +provenance geometry 3..4: /ArchiveAsset/Piece2 +provenance geometry 4..5: /ArchiveAsset/Piece1 +provenance mesh: MeshOrigin { geom_id: 3, slot: 2, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 4, slot: 3, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11573210918765220906, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 0 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17603972815358145815, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 1 }), placements: 0, shared: true, displaced: false } +provenance mesh slot 2: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 17603972815358145815, n_points: 3, n_indices: 3, n_uvs: None, smooth: false, material: 2 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 3: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 11573210918765220906, n_points: 4, n_indices: 4, n_uvs: None, smooth: false, material: 3 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/proxy_target_materials_usda-5191f22d92ef400d-1.image b/crates/crust-core/tests/data/import_baselines/proxy_target_materials_usda-5191f22d92ef400d-1.image new file mode 100644 index 000000000..c734c5b1d --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/proxy_target_materials_usda-5191f22d92ef400d-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off a04a09c0d4b5e325 diff --git a/crates/crust-core/tests/instanced_instancers.rs b/crates/crust-core/tests/instanced_instancers.rs index a209113c7..b5eb41665 100644 --- a/crates/crust-core/tests/instanced_instancers.rs +++ b/crates/crust-core/tests/instanced_instancers.rs @@ -327,3 +327,157 @@ fn a_point_instancer_targeting_prims_inside_an_instance_places_them() { .find(|w| w.code == WarningCode::InstancingEmptyPrototype); assert!(empty.is_none(), "{empty:?}"); } + +/// [`PROXY_TARGETS`] with a material inside the instanced asset, bound by the +/// targets: Moana's coral binds each archive piece to a material of its own +/// archive. The copy's binding names the material in the instance's +/// propagated prototype, outside the copy; it is read there and named under +/// the instance, as the direct importer read it through the proxy. +const PROXY_TARGET_MATERIALS: &str = r#"#usda 1.0 +def Xform "ArchiveAsset" +{ + def Mesh "Piece1" (prepend apiSchemas = ["MaterialBindingAPI"]) + { + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 2, 3] + point3f[] points = [(0, 0, 0), (0.5, 0, 0), (0.5, 0.5, 0), (0, 0.5, 0)] + uniform token subdivisionScheme = "none" + rel material:binding = + } + def Mesh "Piece2" (prepend apiSchemas = ["MaterialBindingAPI"]) + { + int[] faceVertexCounts = [3] + int[] faceVertexIndices = [0, 1, 2] + point3f[] points = [(0, 0, 0), (0.5, 0, 0), (0, 0.5, 0)] + uniform token subdivisionScheme = "none" + rel material:binding = + } + def Scope "Looks" + { + def Material "Red" + { + token outputs:surface.connect = + def Shader "S" + { + uniform token info:id = "UsdPreviewSurface" + color3f inputs:diffuseColor = (0.8, 0.1, 0.1) + token outputs:surface + } + } + def Material "Blue" + { + token outputs:surface.connect = + def Shader "S" + { + uniform token info:id = "UsdPreviewSurface" + color3f inputs:diffuseColor = (0.1, 0.1, 0.8) + token outputs:surface + } + } + } +} +def Xform "World" +{ + def Camera "Cam" + { + double3 xformOp:translate = (1, 1, 10) + uniform token[] xformOpOrder = ["xformOp:translate"] + } + def PointInstancer "Scatter" + { + rel prototypes = [, ] + int[] protoIndices = [0, 1, 0] + point3f[] positions = [(0, 0, 0), (1, 0, 0), (2, 0, 0)] + def Scope "Prototypes" + { + def Xform "Archive" (prepend references = instanceable = true) {} + } + } +} +"#; + +#[test] +fn a_point_instancer_target_inside_an_instance_keeps_its_material() { + let dir = std::env::temp_dir().join("crust_instanced_instancers"); + std::fs::create_dir_all(&dir).expect("temp dir"); + let path = dir.join("proxy_target_materials.usda"); + std::fs::write(&path, PROXY_TARGET_MATERIALS).expect("write stage"); + let scene = Scene::from_usd(&path).expect("imports"); + let fallback = scene + .warnings + .iter() + .find(|w| w.code == WarningCode::MaterialFallbackDefault); + assert!(fallback.is_none(), "{fallback:?}"); +} + +/// [`PROXY_TARGET_MATERIALS`]' instancer inside an instanced element, as +/// Moana's coral elements are: the instancer's targets are held re-rooted in +/// the element's propagated prototype, and the archive instance they lie in +/// is named under the element's USD prototype. +const NESTED_PROXY_TARGET_MATERIALS: &str = r#"#usda 1.0 +def Xform "ArchiveAsset" +{ + def Mesh "Piece1" (prepend apiSchemas = ["MaterialBindingAPI"]) + { + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 2, 3] + point3f[] points = [(0, 0, 0), (0.5, 0, 0), (0.5, 0.5, 0), (0, 0.5, 0)] + uniform token subdivisionScheme = "none" + rel material:binding = + } + def Scope "Looks" + { + def Material "Red" + { + token outputs:surface.connect = + def Shader "S" + { + uniform token info:id = "UsdPreviewSurface" + color3f inputs:diffuseColor = (0.8, 0.1, 0.1) + token outputs:surface + } + } + } +} +def Xform "Element" +{ + def PointInstancer "Scatter" + { + rel prototypes = [] + int[] protoIndices = [0, 0] + point3f[] positions = [(0, 0, 0), (1, 0, 0)] + def Scope "Prototypes" + { + def Xform "Archive" (prepend references = instanceable = true) {} + } + } +} +def Xform "World" +{ + def Camera "Cam" + { + double3 xformOp:translate = (1, 1, 10) + uniform token[] xformOpOrder = ["xformOp:translate"] + } + def Xform "E1" (prepend references = instanceable = true) {} + def Xform "E2" (prepend references = instanceable = true) + { + double3 xformOp:translate = (0, 1, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + } +} +"#; + +#[test] +fn an_instanced_point_instancer_target_inside_an_instance_keeps_its_material() { + let dir = std::env::temp_dir().join("crust_instanced_instancers"); + std::fs::create_dir_all(&dir).expect("temp dir"); + let path = dir.join("nested_proxy_target_materials.usda"); + std::fs::write(&path, NESTED_PROXY_TARGET_MATERIALS).expect("write stage"); + let scene = Scene::from_usd(&path).expect("imports"); + let fallback = scene + .warnings + .iter() + .find(|w| w.code == WarningCode::MaterialFallbackDefault); + assert!(fallback.is_none(), "{fallback:?}"); +} diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index 4718b2d0e..244794bd5 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -534,11 +534,17 @@ need it; none is worked around in Crust. and the import placed nothing (geometries 2,912,341 to 13,638 on that element, with 174 `instancing.empty_prototype`). Moho now copies such a target from the instance's propagated prototype, at `/ForInstancer/prototype`; Crust takes - copies from `instancerTopology/prototypes` and names them by `primOrigin`, so it - needed no change. `instanced_instancers.rs`, - `a_point_instancer_targeting_prims_inside_an_instance_places_them`, recorded from the - direct importer, was expected to fail until that rev and now matches its digest and - image. + copies from `instancerTopology/prototypes` and names them by their targets. A copy's + binding names a material beside the target, in the instance's propagated prototype + and outside the copy: Crust reads it there and names it under the instance, the + target's nearest ancestor the instancing chain holds as an instance (for an + instancer inside a prototype, that instance as the chain holds it, named under the + USD prototype). `instanced_instancers.rs` covers the three cases, each recorded from + the direct importer: `a_point_instancer_targeting_prims_inside_an_instance_places_them` + (expected to fail until that rev), and the material cases + `a_point_instancer_target_inside_an_instance_keeps_its_material` and + `an_instanced_point_instancer_target_inside_an_instance_keeps_its_material`. All + three match their digests and images. ## Risks / Trade-offs From a92b97436ff8ee682c9eebef2d1b9be01d169983 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 08:14:54 +0100 Subject: [PATCH 79/95] scripts: import_parity.sh always rebuilds the release binary cargo test --release (parity_images.sh) leaves a test build at target/release/crust, with crust-core's test-only parity feature, which digests and checks every import: a Moana check measured that build. The script now builds crust-render first unless BIN names a binary. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- scripts/import_parity.sh | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/scripts/import_parity.sh b/scripts/import_parity.sh index c14dc870b..9a0a5b9a5 100755 --- a/scripts/import_parity.sh +++ b/scripts/import_parity.sh @@ -19,7 +19,10 @@ # Give `check` the render flags `record` was given. Environment: # N= renders per side for the timings (default 1; the image and # report come from the first) -# BIN= the binary (default target/release/crust, built if missing) +# BIN= the binary (default target/release/crust, always rebuilt +# first: `cargo test --release` leaves a test build there, with +# crust-core's test-only `parity` feature, which digests and +# checks every import and so measures the wrong thing) # # Examples: # scripts/import_parity.sh record ~/baselines/alab samples/ALab/entry.usda -f 1004 @@ -34,14 +37,15 @@ DIR="${2:-}" SCENE="${3:-}" EXTRA=("${@:4}") N="${N:-1}" -BIN="${BIN:-target/release/crust}" +BIN="${BIN:-}" if { [ "$MODE" != record ] && [ "$MODE" != check ]; } || [ -z "$DIR" ] || [ -z "$SCENE" ]; then - sed -n '2,27p' "$0" + sed -n '2,30p' "$0" exit 2 fi -if [ ! -x "$BIN" ]; then +if [ -z "$BIN" ]; then cargo build --release -p crust-render + BIN=target/release/crust fi mkdir -p "$DIR" From 376cd4a284384c88abf70261768ff498e4878f94 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 09:42:35 +0100 Subject: [PATCH 80/95] crust: the time is passed, and prototype keys carry no epoch (13.1) EvalTimeScope and time.rs go: every stage read takes its time code explicitly (the camera readers, stage_local_to_world, and crust ls's value reads at its frame), and the index readers take the index's time. The prototype and material caches are keyed by Moho's propagated paths alone: ImportCaches::epoch and MaterialCache::epoch go, since no root the instancing chain holds is a per-stage /__Prototype_N (probed across the suite before removing it). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- crates/crust-core/src/live.rs | 2 +- crates/crust-core/src/scene/displace.rs | 2 +- .../crust-core/src/scene/usd_import/attrs.rs | 23 +++---- .../crust-core/src/scene/usd_import/camera.rs | 36 +++++++++-- .../src/scene/usd_import/instancing.rs | 26 ++++---- .../src/scene/usd_import/listing.rs | 45 +++++++++----- .../crust-core/src/scene/usd_import/live.rs | 14 ++--- .../src/scene/usd_import/materials.rs | 59 +++++++----------- crates/crust-core/src/scene/usd_import/mod.rs | 62 ++++++++----------- .../crust-core/src/scene/usd_import/time.rs | 54 ---------------- .../crust-core/src/scene/usd_import/xform.rs | 7 +-- crates/crust-core/src/warnings.rs | 5 +- 12 files changed, 144 insertions(+), 191 deletions(-) delete mode 100644 crates/crust-core/src/scene/usd_import/time.rs diff --git a/crates/crust-core/src/live.rs b/crates/crust-core/src/live.rs index 66d4793e2..8a4db38d8 100644 --- a/crates/crust-core/src/live.rs +++ b/crates/crust-core/src/live.rs @@ -130,7 +130,7 @@ impl Provenance { #[derive(Clone, Debug, Default, PartialEq, Eq)] pub struct MaterialOrigin { /// Every `World` slot whose material is this prim's: by `Arc` identity, - /// every streamed epoch's `Arc` of it included. + /// every streamed chunk's `Arc` of it included. pub slots: Vec, /// Whether a mesh displaced by it: its geometry depends on its inputs. pub displaced: bool, diff --git a/crates/crust-core/src/scene/displace.rs b/crates/crust-core/src/scene/displace.rs index 1e86e6683..f51618265 100644 --- a/crates/crust-core/src/scene/displace.rs +++ b/crates/crust-core/src/scene/displace.rs @@ -3,7 +3,7 @@ //! Pure: local-space points, polygon topology, per-vertex charts and a //! [`Displacement`] in, displaced points and shading normals out. No USD, no //! texture loading — the samplers are resolved before this runs — so it may -//! fan out over rayon without touching the import's thread-local time. See +//! fan out over rayon, off the importing thread. See //! "Displacement" in `openspec/specs/usd-scene-import/design.md`. //! //! Two rules carry the whole design: diff --git a/crates/crust-core/src/scene/usd_import/attrs.rs b/crates/crust-core/src/scene/usd_import/attrs.rs index a61c4b905..73665a82e 100644 --- a/crates/crust-core/src/scene/usd_import/attrs.rs +++ b/crates/crust-core/src/scene/usd_import/attrs.rs @@ -1,6 +1,6 @@ //! Typed readers for authored attributes: the `crust:*` custom attributes, the //! per-prim geometry flags (ray mask, motion), the subdivision level, and -//! schema-attribute value decoding. Every read resolves at [`eval_time`]. +//! schema-attribute value decoding. Every stage read takes its time code. use crate::warning; use glam::Vec3A; @@ -9,8 +9,6 @@ use openusd::gf::Vec3f; use openusd::sdf; use openusd::usd::{Attribute, Prim}; -use super::time::eval_time; - // ----------------------------------------------------------------------- // Per-prim geometry attributes (visibility mask, motion) // ----------------------------------------------------------------------- @@ -114,7 +112,7 @@ pub(super) fn resolve_adaptive_max_level(host: Option, authored: Option, authored: Option Option { - let value = attr.get_at::(eval_time()).ok().flatten()?; +pub(super) fn value_at(attr: &Attribute, time: Option) -> Option { + let value = attr + .get_at::(time.map(openusd::usd::TimeCode::new)) + .ok() + .flatten()?; match attr.fallback_value() { Ok(Some(fallback)) if fallback == value => attr.has_authored_value().ok()?.then_some(value), _ => Some(value), } } -/// The value of `prim`'s attribute `name` at [`eval_time`] — [`value_at`] by +/// The value of `prim`'s attribute `name` at `time` — [`value_at`] by /// name. -pub(super) fn prim_value(prim: &Prim, name: &str) -> Option { - value_at(&prim.attribute(name)) +pub(super) fn prim_value(prim: &Prim, name: &str, time: Option) -> Option { + value_at(&prim.attribute(name), time) } /// A scalar float, whatever precision it was authored in. @@ -260,8 +261,8 @@ pub(super) fn decode_vec3f_array(v: sdf::Value) -> Option> { } } -pub(super) fn custom_token(prim: &Prim, name: &str) -> Option { - prim_value(prim, name).and_then(decode_text) +pub(super) fn custom_token(prim: &Prim, name: &str, time: Option) -> Option { + prim_value(prim, name, time).and_then(decode_text) } #[cfg(test)] diff --git a/crates/crust-core/src/scene/usd_import/camera.rs b/crates/crust-core/src/scene/usd_import/camera.rs index 824d9a1bc..a54315c85 100644 --- a/crates/crust-core/src/scene/usd_import/camera.rs +++ b/crates/crust-core/src/scene/usd_import/camera.rs @@ -240,9 +240,10 @@ pub(super) fn camera_lens( path: &sdf::Path, settings: &RenderSettings, framing: Framing, + time: Option, ) -> Option { let cam = camera_at(scene, path)?; - let world = super::xform::stage_local_to_world(stage, path); + let world = super::xform::stage_local_to_world(stage, path, time); Some(lens( &cam, &CameraFrame::read(&cam, world, settings, framing), @@ -415,9 +416,10 @@ pub(super) fn build_camera( path: &sdf::Path, settings: &RenderSettings, framing: Framing, + time: Option, ) -> Option { let cam = camera_at(scene, path)?; - let world = super::xform::stage_local_to_world(stage, path); + let world = super::xform::stage_local_to_world(stage, path, time); let frame = CameraFrame::read(&cam, world, settings, framing); let (camera, refused_meters_per_unit) = lens_camera(&cam, scene, &frame, settings); let clip = clipping(&cam); @@ -668,9 +670,10 @@ pub(super) fn screen_projection( path: &sdf::Path, settings: &RenderSettings, framing: Framing, + time: Option, ) -> Option { let cam = camera_at(scene, path)?; - let world = super::xform::stage_local_to_world(stage, path); + let world = super::xform::stage_local_to_world(stage, path, time); let frame = CameraFrame::read(&cam, world, settings, framing); if frame.orthographic { // Pixels per world unit at every distance, and the window's half @@ -793,7 +796,14 @@ mod tests { framing: Framing, ) -> Option { let scene = scene_of(stage); - super::build_camera(scene.chain.as_ref(), stage, prim.path(), settings, framing) + super::build_camera( + scene.chain.as_ref(), + stage, + prim.path(), + settings, + framing, + None, + ) } fn camera_lens( @@ -803,7 +813,14 @@ mod tests { framing: Framing, ) -> Option { let scene = scene_of(stage); - super::camera_lens(scene.chain.as_ref(), stage, prim.path(), settings, framing) + super::camera_lens( + scene.chain.as_ref(), + stage, + prim.path(), + settings, + framing, + None, + ) } fn screen_projection( @@ -813,7 +830,14 @@ mod tests { framing: Framing, ) -> Option { let scene = scene_of(stage); - super::screen_projection(scene.chain.as_ref(), stage, prim.path(), settings, framing) + super::screen_projection( + scene.chain.as_ref(), + stage, + prim.path(), + settings, + framing, + None, + ) } fn authored_meters_per_unit(stage: &Stage) -> Option { diff --git a/crates/crust-core/src/scene/usd_import/instancing.rs b/crates/crust-core/src/scene/usd_import/instancing.rs index 6c329f821..687e8a60c 100644 --- a/crates/crust-core/src/scene/usd_import/instancing.rs +++ b/crates/crust-core/src/scene/usd_import/instancing.rs @@ -105,16 +105,13 @@ impl ProtoRoot { } /// The prototype caches' key: the root in the instancing chain, stable - /// across a streamed import's stages (a propagated prototype, a copy), - /// so no epoch — unless it is a stage's own `/__Prototype_N`, numbered - /// per stage. - fn key(&self, epoch: u32) -> (u32, String) { - let path = self.index.to_string(); - if path.starts_with("/__Prototype") { - (epoch, path) - } else { - (0, path) - } + /// across a streamed import's stages (a propagated prototype, a copy). + /// No epoch: openusd's per-stage `/__Prototype_N` is never a root the + /// chain holds, so it keys nothing (a native instance always resolves to + /// its propagated prototype; checked on every fixture and sample when the + /// epoch went, `moho-import` 13.1). + fn key(&self) -> String { + self.index.to_string() } /// A root named by its USD path alone, where the instancing chain gives @@ -749,7 +746,7 @@ fn prototype_group( caches: &mut ImportCaches<'_>, depth: usize, ) -> Option { - let key = proto_path.key(caches.epoch); + let key = proto_path.key(); if let Some(group) = caches.groups.get(&key) { return group.clone(); } @@ -1149,13 +1146,12 @@ fn prototype_parts( caches: &mut ImportCaches<'_>, depth: usize, ) -> Arc> { - let key = proto_path.key(caches.epoch); + let key = proto_path.key(); if let Some(parts) = caches.protos.get(&key) { debug!( - "Prototype {} ({}, epoch {}): reusing {} cached part(s)", + "Prototype {} ({}): reusing {} cached part(s)", proto_path.usd, - key.1, - key.0, + key, parts.len() ); return parts.clone(); diff --git a/crates/crust-core/src/scene/usd_import/listing.rs b/crates/crust-core/src/scene/usd_import/listing.rs index d9d9855a9..d5ceda6f1 100644 --- a/crates/crust-core/src/scene/usd_import/listing.rs +++ b/crates/crust-core/src/scene/usd_import/listing.rs @@ -35,7 +35,6 @@ use super::lights::light_inputs; use super::materials::{bound_material, surface_shader_id}; use super::products::{Framing, import_render_products}; use super::settings::{CameraPick, import_render_settings, pick_camera, wanted_camera}; -use super::time::EvalTimeScope; use super::{ Prune, WalkScope, open_stage, prim_at, prune_reason, release_stage, stage_builder, stream_roots, }; @@ -50,7 +49,7 @@ pub(crate) fn list_prims(path: &Path, kind: ListKind) -> Result, cra let chunks = stream_roots(&open_index(path, path_str)?); let mut found = Found::default(); for_each_chunk(path, path_str, &chunks, |stage| { - collect(stage, kind, Order::Authored, |prim, _| { + collect(stage, kind, Order::Authored, None, |prim, _| { found.push(prim.path().to_string(), ()); }); })?; @@ -76,7 +75,6 @@ pub(crate) fn list_records( { return Err(crate::Error::InvalidFrame(t)); } - let _time_scope = EvalTimeScope::enter(frame); let started = Instant::now(); let path_str = utf8(path)?; let index = open_index(path, path_str)?; @@ -107,21 +105,21 @@ pub(crate) fn list_records( // index of the stage it is on. let scene = matches!(kind, ListKind::Camera | ListKind::Light) .then(|| super::index::input_chain(stage.clone(), frame, false)); - collect(stage, kind, Order::Authored, |prim, hidden| { + collect(stage, kind, Order::Authored, frame, |prim, hidden| { let scene = scene.as_ref().map(|s| s.chain.as_ref()); - if let Some(r) = record(stage, scene, prim, kind, hidden, &settings, framing) { + if let Some(r) = record(stage, scene, prim, kind, hidden, &settings, framing, frame) { found.push(prim.path().to_string(), r); } }); match kind { ListKind::Camera if first_camera.is_none() => { - collect(stage, kind, Order::Import, |prim, _| { + collect(stage, kind, Order::Import, frame, |prim, _| { if first_camera.is_none() { first_camera = Some(prim.path().to_string()); } }); } - ListKind::Material => bound_materials(stage, &mut bound), + ListKind::Material => bound_materials(stage, &mut bound, frame), _ => {} } })?; @@ -203,6 +201,7 @@ fn for_each_chunk( /// One listed prim's record, its derived fields (`is_render_camera`, /// `bound`) left for the caller, who has seen every chunk. +#[allow(clippy::too_many_arguments)] fn record( stage: &Stage, scene: Option<&dyn moho::scene_index::SceneIndex>, @@ -211,11 +210,12 @@ fn record( hidden: bool, settings: &RenderSettings, framing: Framing, + frame: Option, ) -> Option { let path = prim.path().to_string(); Some(match kind { ListKind::Camera => { - let lens = camera_lens(scene?, stage, prim.path(), settings, framing)?; + let lens = camera_lens(scene?, stage, prim.path(), settings, framing, frame)?; ListRecord::Camera(CameraRecord { path, focal_length_mm: lens.focal_length, @@ -254,7 +254,7 @@ fn record( }) } ListKind::Material => ListRecord::Material(MaterialRecord { - surface: surface_shader_id(stage, prim.path()), + surface: surface_shader_id(stage, prim.path(), frame), path, bound: false, }), @@ -272,12 +272,12 @@ fn record( /// prototype walked once in its place, a `PointInstancer`'s `prototypes` /// targets walked once each in prototype scope (they render through it, a /// `class` prototype included). -fn bound_materials(stage: &Stage, out: &mut HashSet) { +fn bound_materials(stage: &Stage, out: &mut HashSet, frame: Option) { let mut prototypes: HashSet = HashSet::new(); let mut stack: Vec<(Prim, WalkScope)> = vec![(prim_at(stage, sdf::Path::abs_root()), WalkScope::Stage)]; while let Some((prim, scope)) = stack.pop() { - if prune_reason(&prim, scope).is_some() { + if prune_reason(&prim, scope, frame).is_some() { continue; } if prim.is_instance().unwrap_or(false) @@ -306,7 +306,8 @@ fn bound_materials(stage: &Stage, out: &mut HashSet) { || matches!(UsdSphere::get(stage, p()), Ok(Some(_))) || matches!(UsdBasisCurves::get(stage, p()), Ok(Some(_))) || matches!(UsdNurbsCurves::get(stage, p()), Ok(Some(_))) - || (custom_token(&prim, "crust:volume:type").is_none() && Shape::is_shape(&prim)); + || (custom_token(&prim, "crust:volume:type", frame).is_none() + && Shape::is_shape(&prim)); if geometry && let Some(m) = bound_material(stage, &prim) { out.insert(m.to_string()); } @@ -362,10 +363,16 @@ impl Found { /// Calls `found` with each `kind` prim a walk of `stage` meets, in `order`, /// and whether it is under an invisible ancestor. -fn collect(stage: &Stage, kind: ListKind, order: Order, mut found: impl FnMut(&Prim, bool)) { +fn collect( + stage: &Stage, + kind: ListKind, + order: Order, + frame: Option, + mut found: impl FnMut(&Prim, bool), +) { let mut stack: Vec<(Prim, bool)> = vec![(prim_at(stage, sdf::Path::abs_root()), false)]; while let Some((prim, parent_hidden)) = stack.pop() { - let Visit::Enter { hidden } = visit(stage, &prim, kind, parent_hidden) else { + let Visit::Enter { hidden } = visit(stage, &prim, kind, parent_hidden, frame) else { continue; }; if is_kind(stage, &prim, kind) { @@ -396,8 +403,14 @@ fn collect(stage: &Stage, kind: ListKind, order: Order, mut found: impl FnMut(&P /// bound only from inside it). /// - **passes** — every `RenderPass` `--pass` accepts: only an inactive /// subtree prunes. -fn visit(stage: &Stage, prim: &Prim, kind: ListKind, parent_hidden: bool) -> Visit { - let pruned = prune_reason(prim, WalkScope::Stage); +fn visit( + stage: &Stage, + prim: &Prim, + kind: ListKind, + parent_hidden: bool, + frame: Option, +) -> Visit { + let pruned = prune_reason(prim, WalkScope::Stage, frame); let is_instance = prim.is_instance().unwrap_or(false); let has_prototype = || matches!(prim.prototype(), Ok(Some(_))); let is_instancer = || { diff --git a/crates/crust-core/src/scene/usd_import/live.rs b/crates/crust-core/src/scene/usd_import/live.rs index fcf3a96ac..f8344448d 100644 --- a/crates/crust-core/src/scene/usd_import/live.rs +++ b/crates/crust-core/src/scene/usd_import/live.rs @@ -40,7 +40,6 @@ use super::mesh::{ mesh_source, placement_scale, }; use super::shapes::emit_sphere; -use super::time::EvalTimeScope; use super::xform::Span; use super::{ ImportCaches, ImportCtx, ValidOptions, apply_exposure, asks_about_time, emit_light, frame_pose, @@ -77,7 +76,6 @@ pub(crate) fn rebuild( let working = facts .working .ok_or_else(|| Structural("the scene was not imported from a stage".into()))?; - let _time = EvalTimeScope::enter(facts.options.frame); let mut update = Update::default(); if change.settings { update.settings = Some(refresh_settings(prov, layer, path_str, warnings)?); @@ -432,7 +430,8 @@ impl Rebuilding<'_> { if !PrimData::at(scene.chain.as_ref(), &path).is_a("Sphere") { return Err(Structural(format!("{prim_str} is not a Sphere"))); } - let world_xf = super::xform::stage_local_to_world(stage, &path); + let world_xf = + super::xform::stage_local_to_world(stage, &path, self.prov.stage.options.frame); // Emitted alone, at id 0: a sphere's geometry and tables do not // depend on its id, so the edit is re-addressed rather than the // scratch world padded up to the id, which made a batch of spheres @@ -468,7 +467,8 @@ impl Rebuilding<'_> { ) -> Result<(GeometryEdit, Option), Structural> { let id = origin.geom_id; let path = prim_path(prim_str)?; - let world_xf = super::xform::stage_local_to_world(stage, &path); + let world_xf = + super::xform::stage_local_to_world(stage, &path, self.prov.stage.options.frame); // A singular placement is baked at attach time, with no slot: a // fresh import would build it another way. if world_xf.determinant().abs() < 1e-12 { @@ -759,6 +759,7 @@ fn refresh_settings( &target, &read.settings, read.products.framing, + facts.options.frame, ) .ok_or_else(|| Structural(format!("{camera} is no longer a camera")))?; rc.warn_lens_units(Some(camera)); @@ -803,7 +804,6 @@ pub(crate) fn prim_frames( let path_str = layer .to_str() .ok_or_else(|| Structural("the layer path is not UTF-8".into()))?; - let _time = EvalTimeScope::enter(prov.stage.options.frame); let prims = paths .iter() .map(|p| prim_path(p)) @@ -831,9 +831,9 @@ pub(crate) fn prim_frames( .unwrap_or_default(); let parent = path .parent() - .map(|p| super::xform::stage_local_to_world(&stage, &p)) + .map(|p| super::xform::stage_local_to_world(&stage, &p, prov.stage.options.frame)) .unwrap_or(glam::Mat4::IDENTITY); - let world = super::xform::stage_local_to_world(&stage, path); + let world = super::xform::stage_local_to_world(&stage, path, prov.stage.options.frame); let place = prim .attribute(place_op) .get::() diff --git a/crates/crust-core/src/scene/usd_import/materials.rs b/crates/crust-core/src/scene/usd_import/materials.rs index 3709326bb..077b1df35 100644 --- a/crates/crust-core/src/scene/usd_import/materials.rs +++ b/crates/crust-core/src/scene/usd_import/materials.rs @@ -30,7 +30,7 @@ use super::{ImportCaches, prim_at}; /// which is what lets `MeshKey` recognize shared mesh geometry. #[derive(Default)] pub(super) struct MaterialCache { - pub(super) by_path: HashMap<(u32, String), CachedMaterial>, + pub(super) by_path: HashMap, /// While a material bound inside a re-rooted prototype is resolved, its /// name and the path the instancing chain holds it at ([`MatSource`]). pub(super) reading: Option<(sdf::Path, sdf::Path)>, @@ -44,9 +44,6 @@ pub(super) struct MaterialCache { /// map is raw; the albedo beside it is display-encoded) and the decode /// happens once, at load. pub(super) textures: HashMap<(String, crate::ColorSpace), Option>>, - /// Which stage the prototype-scoped entries belong to; see - /// [`MaterialCache::key`]. Kept in step with [`ImportCaches::epoch`]. - pub(super) epoch: u32, /// The displacement of the `.mtlx` material the last resolution loaded, /// handed from [`load_mtlx_material`] to [`cached_material`], which keeps /// it with the material: the document is compiled once, for both. @@ -189,28 +186,13 @@ impl MaterialCache { self.default.get_or_insert_with(default_material).clone() } - /// Cache key for a bound material path. - /// - /// Authored scene paths are stable across stages, so they key on the - /// path alone and a material shared by several subtrees resolves to - /// one `Arc` — which is what lets the mesh cache deduplicate across - /// them. Paths *inside* a prototype are not stable: prototypes are - /// numbered per composition, so under the streaming importer every - /// stage has its own `/__Prototype_0`, and keying those on the path - /// alone hands one chunk's material to the next chunk's geometry. - /// Those are therefore scoped by epoch. - /// - /// This bit the streaming importer for real: on the Moana island it - /// silently merged distinct meshes onto shared materials, losing - /// 5 835 258 triangles. No single element reproduces it — it needs - /// two chunks that both carry prototype-internal materials. - pub(super) fn key(&self, path: &str) -> (u32, String) { - let epoch = if path.starts_with("/__Prototype") { - self.epoch - } else { - 0 - }; - (epoch, path.to_string()) + /// Cache key for a bound material path: the path itself, stable across a + /// streamed import's stages (a material inside a prototype is read at + /// Moho's propagated path, M11), so a material shared by several subtrees + /// resolves to one `Arc`, which is what lets the mesh cache deduplicate + /// across them. + pub(super) fn key(&self, path: &str) -> String { + path.to_string() } } @@ -503,7 +485,7 @@ fn cached_material( stage: &Stage, data: &super::index::data::PrimData, caches: &mut ImportCaches<'_>, -) -> Option<((u32, String), sdf::Path)> { +) -> Option<(String, sdf::Path)> { let Some(target) = index_bound_material(data) else { debug!( "{} has no material binding — using default grey OpenPBR", @@ -518,7 +500,7 @@ fn cached_material( let mat_path = data.name_of(&target); let reading = re_rooted(data, &mat_path); let key = match &reading { - Some((_, data_path)) => (0, data_path.to_string()), + Some((_, data_path)) => data_path.to_string(), None => caches.materials.key(mat_path.as_str()), }; if caches.materials.by_path.contains_key(&key) { @@ -528,7 +510,7 @@ fn cached_material( // to 10 000 prims logs this once. The key carries the cache epoch, which // is what keeps one streamed chunk's `/__Prototype_N` apart from the // next's — see `MaterialCache::key`. - debug!("Resolving material {mat_path} (epoch {})", key.0); + debug!("Resolving material {mat_path} ({key})"); let home = material_stage(stage, &mat_path, caches); caches.materials.reading = reading; let (material, mtlx) = resolve_fresh(&home, &mat_path, caches); @@ -1060,12 +1042,17 @@ fn resolve_material_uncached( /// (see [`resolve_material_uncached`]), else the shader the surface terminal /// resolves to. `None` when there is none — a MaterialX reference composes /// no shader prim. What `crust ls material --json` reports as `surface`. -pub(super) fn surface_shader_id(stage: &Stage, mat_path: &sdf::Path) -> Option { - if has_shader_id(stage, mat_path, "PxrDisneyBsdf") { +pub(super) fn surface_shader_id( + stage: &Stage, + mat_path: &sdf::Path, + time: Option, +) -> Option { + if has_shader_id(stage, mat_path, "PxrDisneyBsdf", time) { return Some("PxrDisneyBsdf".to_owned()); } let mat = UsdMaterial::get(stage, mat_path.clone()).ok().flatten()?; - terminal_shader(mat.surface_source(SURFACE_RENDER_CONTEXTS)).and_then(|s| shader_info_id(&s)) + terminal_shader(mat.surface_source(SURFACE_RENDER_CONTEXTS)) + .and_then(|s| shader_info_id(&s, time)) } /// The first `Shader`-typed source driving a resolved terminal. @@ -1264,7 +1251,7 @@ pub(super) fn default_material() -> Arc { Arc::new(OpenPBR::diffuse(Vec3A::new(0.5, 0.5, 0.5))) } -pub(super) fn shader_info_id(shader: &Shader) -> Option { +pub(super) fn shader_info_id(shader: &Shader, time: Option) -> Option { // `UsdShadeNodeDefAPI::GetShaderId`: the composed `info:id` when the // shader's implementation source is `id`. if let Ok(Some(id)) = shader.node_def().shader_id() { @@ -1272,7 +1259,7 @@ pub(super) fn shader_info_id(shader: &Shader) -> Option { } // Otherwise the raw `info:id`, as the import has always read it whatever // the implementation source says. - value_at(&shader.attribute("info:id")).and_then(decode_text) + value_at(&shader.attribute("info:id"), time).and_then(decode_text) } /// Whether the material has a child `Shader` prim with this `info:id`. @@ -1281,13 +1268,13 @@ pub(super) fn shader_info_id(shader: &Shader) -> Option { /// question actually being asked — "does this material shade with X" — since a /// material may declare several context outputs and USD gives no ordering /// between them without a configured render context. -fn has_shader_id(stage: &Stage, mat_path: &sdf::Path, id: &str) -> bool { +fn has_shader_id(stage: &Stage, mat_path: &sdf::Path, id: &str, time: Option) -> bool { let Ok(children) = prim_at(stage, mat_path.clone()).children() else { return false; }; children .iter() - .any(|c| custom_token(c, "info:id").as_deref() == Some(id)) + .any(|c| custom_token(c, "info:id", time).as_deref() == Some(id)) } /// Maps RenderMan's `PxrDisneyBsdf` onto [`OpenPBR`]. diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index 3bd144d83..822b819b5 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -83,7 +83,6 @@ mod products; mod settings; mod shapes; mod strands; -mod time; mod volume; mod xform; @@ -119,7 +118,6 @@ use settings::{ }; use shapes::{curve_segments, emit_curves, emit_sphere, nurbs_curve_segments}; use strands::StrandRequest; -use time::EvalTimeScope; use volume::emit_volume; use xform::{Timing, TransformMotion, compose_index}; @@ -164,9 +162,9 @@ const MIN_STREAM_CHUNKS: usize = 4; /// layer — which is what [`MIN_STREAM_CHUNKS`] guards against on scenes /// too small for the excluded payloads to pay for them. /// -/// Getting this right depends on the caches distinguishing paths that -/// are stable across stages from paths that are not; see -/// [`MaterialCache::key`] and [`ImportCaches::epoch`]. +/// Getting this right depends on the caches keying on paths that are stable +/// across stages: Moho's propagated prototype paths, and the materials read +/// there ([`MaterialCache::key`]). fn stream_roots(stage: &Stage) -> Vec { // Escape hatch, and the way to A/B the two import paths against each // other on one scene: `CRUST_STREAM_IMPORT=0` forces a single stage. @@ -623,7 +621,14 @@ fn visit_camera( // camera is, and kept aside as the fallback while a named one // might still turn up later in the traversal. if ctx.camera.is_none() && (is_named || ctx.first_camera.is_none()) { - match build_camera(index, stage, path, &ctx.settings, ctx.framing) { + match build_camera( + index, + stage, + path, + &ctx.settings, + ctx.framing, + ctx.caches.time, + ) { Some(c) if is_named || named.is_none() => { debug!("Imported USD camera at {}", path); ctx.camera = Some((c, path.clone())); @@ -703,14 +708,14 @@ pub(super) enum WalkScope { /// subtree for cameras (see [`visit_prim`]). /// /// Checked in that order, so the reason reported is the first that applies. -pub(super) fn prune_reason(prim: &Prim, scope: WalkScope) -> Option { +pub(super) fn prune_reason(prim: &Prim, scope: WalkScope, time: Option) -> Option { if scope == WalkScope::Stage && prim.is_abstract().unwrap_or(false) { return Some(Prune::Abstract); } if !prim.is_active().unwrap_or(true) { return Some(Prune::Inactive); } - let token = |name: &str| prim_value(prim, name); + let token = |name: &str| prim_value(prim, name, time); if let Some(v) = token("purpose") { match v.as_str() { Some("proxy") => return Some(Prune::Purpose("proxy")), @@ -997,12 +1002,9 @@ fn traverse_stage( ctx.layers .extend(index::stage_facts::layer_identifiers(&stage)); release_stage(stage, false); - // Separate this stage's prototypes from the next stage's — - // see ImportCaches::epoch. Deliberately not a clear: the - // mesh cache keys materials by Arc address, so nothing may - // be freed while it is live. - ctx.caches.epoch += 1; - ctx.caches.materials.epoch = ctx.caches.epoch; + // Nothing cached is cleared between stages: the mesh cache keys + // materials by `Arc` address, so nothing may be freed while it is + // live, and the caches' keys are stable across stages. debug!( "Chunk {}/{} done in {:?} — running totals: {} geometries, {} light(s), \ {} volume region(s), {} mesh placement(s) pending", @@ -1151,7 +1153,6 @@ pub(crate) fn load_scene( ) -> Result { let valid = ValidOptions::check(options)?; let time = valid.time; - let _time_scope = EvalTimeScope::enter(time); // Every coded warning this import raises, on this thread, is recorded // here and handed back on the scene. let warning_scope = crate::WarningScope::enter(); @@ -1695,8 +1696,12 @@ fn read_camera_ahead( frame: Option, ) -> Result<(Dicer, Shutter), crate::Error> { let read_on = |scene: &dyn moho::scene_index::SceneIndex, stage: &Stage, at: &sdf::Path| { - shutter_offsets(scene, at) - .map(|s| (screen_projection(scene, stage, at, settings, framing), s)) + shutter_offsets(scene, at).map(|s| { + ( + screen_projection(scene, stage, at, settings, framing, frame), + s, + ) + }) }; let read = |camera_path: &sdf::Path| -> Result<_, crate::Error> { Ok(match read_on(scene, index, camera_path) { @@ -2011,14 +2016,13 @@ struct ImportCaches<'a> { /// instancing mechanisms: Moho's propagated prototype path (or a point /// instancer's copy), stable across a streamed import's stages, so a /// prototype is built once for the whole import (the change's third - /// behaviour change); the epoch remains only for a stage's own - /// `/__Prototype_N`. A prototype placed once in adaptive mode is built + /// behaviour change). A prototype placed once in adaptive mode is built /// for its placement and not cached here. - protos: HashMap<(u32, String), Arc>>, + protos: HashMap>>, /// The same prototypes as one [`ProtoPart`] each (see /// `instancing::group_parts`), `None` for one with no geometry. Same keys /// as `protos`. - groups: HashMap<(u32, String), Option>, + groups: HashMap>, /// Adaptive mode only: native placements per `(top-level subtree, /// prototype path)`, counted before the subtree is walked /// ([`count_placements`]). A prototype placed once in its subtree is @@ -2026,21 +2030,6 @@ struct ImportCaches<'a> { placements: HashMap<(String, String), u32>, /// The top-level subtrees placements are counted in ([`index::stage_facts::subtree_roots`]). subtrees: std::collections::HashSet, - /// Which stage the entries above came from. - /// - /// Prototype paths (`/__Prototype_N`) are numbered per composition, so - /// under the streaming importer the same name denotes different - /// geometry in each stage. Bumping the epoch between stages keeps - /// those apart. - /// - /// It bumps rather than clearing because [`MeshKey`](mesh::MeshKey) identifies a - /// material by its `Arc` *address*: dropping the parts would free - /// material `Arc`s whose addresses a later allocation could reuse, - /// and a stale mesh-cache entry would then match the wrong material. - /// Nothing here is freed before the import ends, so those addresses - /// stay unique — and the mesh and material caches keep deduplicating - /// across stages, which is what stops streaming costing extra memory. - epoch: u32, /// The host's decoder, for materials that carry a texture asset. assets: &'a dyn AssetLoader, /// The import's time code, for a scene index the readers build over a @@ -2174,7 +2163,6 @@ impl<'a> ImportCaches<'a> { groups: HashMap::new(), placements: HashMap::new(), subtrees: std::collections::HashSet::new(), - epoch: 0, assets, stage_path, asset_time: Duration::ZERO, diff --git a/crates/crust-core/src/scene/usd_import/time.rs b/crates/crust-core/src/scene/usd_import/time.rs deleted file mode 100644 index 2d67a6c7d..000000000 --- a/crates/crust-core/src/scene/usd_import/time.rs +++ /dev/null @@ -1,54 +0,0 @@ -//! Evaluation time: the USD time code every attribute read resolves at. - -use moho::openusd; -use std::marker::PhantomData; - -use openusd::usd::TimeCode; - -thread_local! { - /// The USD time code every attribute read in this import resolves at — - /// `None` for the attribute's *default* value, which is what the importer - /// read before a frame could be asked for. - /// - /// A thread-local rather than a parameter because the answer is the - /// same for every one of the ~40 read sites and several of them sit in - /// helpers that are handed only a `Prim` or an `Attribute`; threading a - /// time through all of them would change every signature in this module - /// to carry a value none of them decide. It is sound only because every - /// attribute read happens on the importing thread — the one piece of - /// rayon work, `MeshArena::commit_slots`, builds BVHs from arrays already - /// read and never touches the stage — and it is scoped by - /// [`EvalTimeScope`], so a second import on the same thread (the tests) - /// never sees a stale time. A change that reads attributes from a rayon - /// task must thread the time explicitly instead. - static EVAL_TIME: std::cell::Cell> = const { std::cell::Cell::new(None) }; -} - -/// Sets [`EVAL_TIME`] for the lifetime of one `load_scene` call and restores -/// whatever was there before, including on an early `?` return. -/// -/// `!Send`: the guard restores a thread-local, so dropping it on any other -/// thread than the one that entered it would restore the wrong thread's time. -/// The marker makes moving it into a rayon task a compile error. -#[must_use = "the evaluation time is restored when the scope is dropped"] -pub(super) struct EvalTimeScope(Option, PhantomData<*const ()>); - -impl EvalTimeScope { - pub(super) fn enter(time: Option) -> Self { - EvalTimeScope(EVAL_TIME.with(|t| t.replace(time)), PhantomData) - } -} - -impl Drop for EvalTimeScope { - fn drop(&mut self) { - EVAL_TIME.with(|t| t.set(self.0)); - } -} - -/// The time an attribute read resolves at: `None` reads the default value -/// (`Attribute::get`), `Some` resolves time samples at that code, falling -/// back to the default when the attribute has none — so a static attribute -/// reads the same either way and only animated ones move. -pub(super) fn eval_time() -> Option { - EVAL_TIME.with(|t| t.get()).map(TimeCode::new) -} diff --git a/crates/crust-core/src/scene/usd_import/xform.rs b/crates/crust-core/src/scene/usd_import/xform.rs index 33dc88b0b..d2e0accc6 100644 --- a/crates/crust-core/src/scene/usd_import/xform.rs +++ b/crates/crust-core/src/scene/usd_import/xform.rs @@ -8,7 +8,6 @@ use openusd::gf::Mat4d; use openusd::tf::Token; use super::index::data::PrimData; -use super::time::eval_time; /// USD authors 4x4 matrices as row-vector row-major (translation in the /// last row, indices 12..15). glam::Mat4 is column-major with the @@ -143,12 +142,12 @@ pub(super) fn compose_index( /// The local-to-world of the prim at `path` on `stage`, for a reader that is /// handed a stage rather than the walk's index (a camera's lens, a live /// rebuild): [`index_local_to_world`] over a stage scene index of its own, at -/// the import's time. +/// time code `time` (`None`, the default time). pub(super) fn stage_local_to_world( stage: &openusd::usd::Stage, path: &openusd::sdf::Path, + time: Option, ) -> GMat4 { - let time = eval_time().map(|t| t.value()); let index = moho::stage::StageSceneIndex::new(); if let Some(t) = time { index.set_time(openusd::usd::TimeCode::new(t)); @@ -525,7 +524,7 @@ mod tests { let stage = stage_builder() .open(path.to_str().unwrap()) .expect("stage opens"); - stage_local_to_world(&stage, &sdf::path("/W/P").unwrap()) + stage_local_to_world(&stage, &sdf::path("/W/P").unwrap(), None) } fn assert_near(a: GMat4, b: GMat4) { diff --git a/crates/crust-core/src/warnings.rs b/crates/crust-core/src/warnings.rs index 9ed6a52e8..df8efe280 100644 --- a/crates/crust-core/src/warnings.rs +++ b/crates/crust-core/src/warnings.rs @@ -20,9 +20,8 @@ //! counted, the first [`MAX_PRIMS`] distinct prims kept, in first-fire order. //! Outside a scope the macros only log. //! -//! The collector is a thread-local, like the import's evaluation time -//! (`usd_import/time.rs`), and sound for the same reason: every import-time -//! warning is raised on the importing thread. A warning raised from a rayon +//! The collector is a thread-local, sound because every import-time warning +//! is raised on the importing thread. A warning raised from a rayon //! task during an import is logged but not recorded; in a debug build it //! panics instead, so the mistake is found by the tests rather than by a //! report that silently misses it. From 76ad2844de094edff11f304afa5b053d658cc849 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 09:43:25 +0100 Subject: [PATCH 81/95] crust: the stage readers crust ls alone uses live in listing.rs (13.1) The import reads openusd only through index/ and stage_facts.rs: the stage binding resolution, shader ids, attribute value reads, the stage pruning rule and the shape test, which only crust ls (walking the stage) still calls, move into listing.rs; Prune keeps the rule's documentation. prim_frames' authored ops (Xformable, xformOpOrder, the place op's default) are authoring facts, read in stage_facts::authored_ops (D7). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../crust-core/src/scene/usd_import/attrs.rs | 32 -- .../src/scene/usd_import/implicit.rs | 18 +- .../src/scene/usd_import/index/stage_facts.rs | 42 +++ .../src/scene/usd_import/listing.rs | 307 +++++++++++++++++- .../crust-core/src/scene/usd_import/live.rs | 34 +- .../src/scene/usd_import/materials.rs | 220 +------------ crates/crust-core/src/scene/usd_import/mod.rs | 85 ++--- 7 files changed, 381 insertions(+), 357 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/attrs.rs b/crates/crust-core/src/scene/usd_import/attrs.rs index 73665a82e..61355fa95 100644 --- a/crates/crust-core/src/scene/usd_import/attrs.rs +++ b/crates/crust-core/src/scene/usd_import/attrs.rs @@ -7,7 +7,6 @@ use glam::Vec3A; use moho::openusd; use openusd::gf::Vec3f; use openusd::sdf; -use openusd::usd::{Attribute, Prim}; // ----------------------------------------------------------------------- // Per-prim geometry attributes (visibility mask, motion) @@ -112,33 +111,6 @@ pub(super) fn resolve_adaptive_max_level(host: Option, authored: Option) -> Option { - let value = attr - .get_at::(time.map(openusd::usd::TimeCode::new)) - .ok() - .flatten()?; - match attr.fallback_value() { - Ok(Some(fallback)) if fallback == value => attr.has_authored_value().ok()?.then_some(value), - _ => Some(value), - } -} - -/// The value of `prim`'s attribute `name` at `time` — [`value_at`] by -/// name. -pub(super) fn prim_value(prim: &Prim, name: &str, time: Option) -> Option { - value_at(&prim.attribute(name), time) -} - /// A scalar float, whatever precision it was authored in. pub(super) fn decode_f32(v: sdf::Value) -> Option { match v { @@ -261,10 +233,6 @@ pub(super) fn decode_vec3f_array(v: sdf::Value) -> Option> { } } -pub(super) fn custom_token(prim: &Prim, name: &str, time: Option) -> Option { - prim_value(prim, name, time).and_then(decode_text) -} - #[cfg(test)] mod tests { use super::*; diff --git a/crates/crust-core/src/scene/usd_import/implicit.rs b/crates/crust-core/src/scene/usd_import/implicit.rs index a7b3676b2..5c109c720 100644 --- a/crates/crust-core/src/scene/usd_import/implicit.rs +++ b/crates/crust-core/src/scene/usd_import/implicit.rs @@ -23,10 +23,7 @@ use std::f64::consts::{FRAC_PI_2, PI, TAU}; use glam::Vec3; use openusd::gf::Vec3f; -use openusd::usd::Prim; -use openusd_schemas::geom::{ - Axis as UsdAxis, Capsule, Capsule_1, Cone, Cube, Cylinder, Cylinder_1, Plane, -}; +use openusd_schemas::geom::Axis as UsdAxis; use tracing::debug; use super::adaptive::{Aabb, Cull, ScreenProjection}; @@ -513,19 +510,6 @@ impl Shape { } } - /// Whether `prim` is one of the seven shapes [`Shape::read`] reads, from - /// its USD type alone: what `crust ls` asks of the stage it lists. - pub(super) fn is_shape(prim: &Prim) -> bool { - let prim = || prim.clone(); - matches!(Cube::from_prim(prim()), Ok(Some(_))) - || matches!(Plane::from_prim(prim()), Ok(Some(_))) - || matches!(Cylinder::from_prim(prim()), Ok(Some(_))) - || matches!(Cylinder_1::from_prim(prim()), Ok(Some(_))) - || matches!(Cone::from_prim(prim()), Ok(Some(_))) - || matches!(Capsule::from_prim(prim()), Ok(Some(_))) - || matches!(Capsule_1::from_prim(prim()), Ok(Some(_))) - } - /// The largest radius of a curved shape, which its radial count is chosen /// for; `None` for the cube and the plane, which have no radial count. pub(super) fn r_max(&self) -> Option { diff --git a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs index c35654033..5bac39292 100644 --- a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs +++ b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs @@ -331,3 +331,45 @@ pub(in crate::scene::usd_import) fn subtree_roots(stage: &Stage) -> Vec many.iter().map(|p| p.path().clone()).collect(), } } + +/// What a placement tool edits on the prim at `path`: whether it is +/// `Xformable`, its authored `xformOpOrder`, and the composed default value +/// of its op `place_op`. Authoring facts for writing a transform back to a +/// layer (`crust_core::live::PrimFrame`), not scene description (design D7): +/// the transforms themselves are composed from the scene index. `None` when +/// the stage holds no prim there. +pub(in crate::scene::usd_import) fn authored_ops( + stage: &Stage, + path: &sdf::Path, + place_op: &str, +) -> Option { + use moho::openusd_schemas::geom::{Xformable, XformableSchema}; + let prim = stage + .prim(path.clone()) + .ok() + .filter(|p| p.is_valid().unwrap_or(false))?; + let xf = Xformable::from_prim(prim.clone()).ok().flatten(); + let order = xf + .as_ref() + .and_then(|xf| xf.xform_op_order().ok().flatten()) + .map(|o| o.iter().map(|t| t.as_str().to_string()).collect()) + .unwrap_or_default(); + let place = prim + .attribute(place_op) + .get::() + .ok() + .flatten() + .map(|m| glam::DMat4::from_cols_array(&m.0)); + Some(AuthoredOps { + xformable: xf.is_some(), + order, + place, + }) +} + +/// [`authored_ops`]' answer. +pub(in crate::scene::usd_import) struct AuthoredOps { + pub(in crate::scene::usd_import) xformable: bool, + pub(in crate::scene::usd_import) order: Vec, + pub(in crate::scene::usd_import) place: Option, +} diff --git a/crates/crust-core/src/scene/usd_import/listing.rs b/crates/crust-core/src/scene/usd_import/listing.rs index d5ceda6f1..acf96ee50 100644 --- a/crates/crust-core/src/scene/usd_import/listing.rs +++ b/crates/crust-core/src/scene/usd_import/listing.rs @@ -15,29 +15,30 @@ use std::path::Path; use std::time::Instant; use openusd::sdf; -use openusd::usd::{InitialLoadSet, Prim, Stage}; +use openusd::usd::{Attribute, CollectionAPI, InitialLoadSet, Prim, Stage}; use openusd_schemas::geom::{ BasisCurves as UsdBasisCurves, Camera as UsdCamera, Mesh as UsdMesh, NurbsCurves as UsdNurbsCurves, PointInstancer, PointInstancerSchema, Sphere as UsdSphere, }; +use openusd_schemas::geom::{Capsule, Capsule_1, Cone, Cube, Cylinder, Cylinder_1, Plane}; use openusd_schemas::lux::{ CylinderLight, DiskLight, DistantLight, DomeLight, DomeLight_1, RectLight, SphereLight, }; use openusd_schemas::render::Pass as UsdRenderPass; -use openusd_schemas::shade::Material as UsdMaterial; +use openusd_schemas::shade::{ + BindingStrength, CollectionBinding, Material as UsdMaterial, MaterialBindingAPI, Shader, + TerminalSource, +}; use tracing::debug; -use super::attrs::custom_token; +use super::attrs::decode_text; use super::camera::camera_lens; -use super::implicit::Shape; use super::index::data::PrimData; use super::lights::light_inputs; -use super::materials::{bound_material, surface_shader_id}; +use super::materials::{RENDER_BINDING_PURPOSE, SURFACE_RENDER_CONTEXTS}; use super::products::{Framing, import_render_products}; use super::settings::{CameraPick, import_render_settings, pick_camera, wanted_camera}; -use super::{ - Prune, WalkScope, open_stage, prim_at, prune_reason, release_stage, stage_builder, stream_roots, -}; +use super::{Prune, open_stage, prim_at, release_stage, stage_builder, stream_roots}; use crate::scene::{CameraRecord, LightRecord, ListKind, ListRecord, MaterialRecord, PassRecord}; use crate::tracer::RenderSettings; @@ -306,8 +307,7 @@ fn bound_materials(stage: &Stage, out: &mut HashSet, frame: Option) || matches!(UsdSphere::get(stage, p()), Ok(Some(_))) || matches!(UsdBasisCurves::get(stage, p()), Ok(Some(_))) || matches!(UsdNurbsCurves::get(stage, p()), Ok(Some(_))) - || (custom_token(&prim, "crust:volume:type", frame).is_none() - && Shape::is_shape(&prim)); + || (custom_token(&prim, "crust:volume:type", frame).is_none() && is_shape(&prim)); if geometry && let Some(m) = bound_material(stage, &prim) { out.insert(m.to_string()); } @@ -484,3 +484,290 @@ fn pass_render_source(stage: &Stage, path: &sdf::Path) -> Option { .into_iter() .next() } + +// ----------------------------------------------------------------------- +// The stage readers only the listing uses +// ----------------------------------------------------------------------- +// +// `crust ls` walks the stage, not the scene index, so these read openusd +// directly: the import's pruning rule, binding resolution and shader ids as +// the direct importer read them, and attribute values with its +// authored-versus-fallback rule (the scene index's generic data carry the +// same rule for the import, `index::data`). + +/// Where a prim is met, which decides whether [`Prune::Abstract`] applies. +#[derive(Clone, Copy, PartialEq, Eq)] +enum WalkScope { + /// The stage's own namespace: the top-level traversal and the placement + /// count that must agree with it. + Stage, + /// Inside a prototype, reached through an instance. A prototype is + /// commonly authored under a `class` prim, so abstractness does not prune + /// here. + Prototype, +} + +/// [`Prune`]'s rule read on the stage, for a listing that walks the stage: +/// abstractness (in the stage's own namespace only) and activity, then +/// purpose and visibility at `time`. +fn prune_reason(prim: &Prim, scope: WalkScope, time: Option) -> Option { + if scope == WalkScope::Stage && prim.is_abstract().unwrap_or(false) { + return Some(Prune::Abstract); + } + if !prim.is_active().unwrap_or(true) { + return Some(Prune::Inactive); + } + let token = |name: &str| prim_value(prim, name, time); + if let Some(v) = token("purpose") { + match v.as_str() { + Some("proxy") => return Some(Prune::Purpose("proxy")), + Some("guide") => return Some(Prune::Purpose("guide")), + _ => {} + } + } + token("visibility") + .is_some_and(|v| v.as_str() == Some("invisible")) + .then_some(Prune::Invisible) +} + +/// The material bound to `prim` for a final render, resolved the way +/// `UsdShadeMaterialBindingAPI::ComputeBoundMaterial` does. +/// +/// Two things this has to get right that a direct lookup on the prim does not: +/// +/// - **Inheritance.** A binding on an ancestor applies to every prim beneath +/// it, and production assets bind on the group: ALab binds each asset's +/// `GEO` scope, never its meshes. openusd-schemas' `bound_material` +/// walks the ancestors (binding strength and collection bindings included), +/// but only from a prim that *carries* `MaterialBindingAPI`, and +/// `MaterialBindingAPI::get` returns `None` for any other — which is every +/// mesh under a bound group. So the walk starts at the nearest ancestor +/// that has the API. Skipping the API-less prims in between loses nothing: +/// USD disregards a binding on a prim without the API applied. +/// - **Purpose.** ALab authors `material:binding:full` and +/// `material:binding:preview` and almost never the all-purpose relationship, +/// so asking for `""` alone found nothing on 7 256 prims. +/// - **Targets outside the stage.** openusd-schemas' `bound_material` +/// answers with the `Material` prim, and so `None` wherever the winning +/// target is not one *on this stage* — which a streamed import's masked +/// stage makes of every material outside the chunk (the Cornell box binds +/// `/scene/Looks/…` from five sibling chunks). That answer would drop the +/// binding: no material provenance for `crust mcp`, no +/// `material.fallback_default` warning. So when it answers nothing, the +/// binding is read as the *winning* binding's target instead +/// ([`winning_binding_target`]), which the resolution then composes on the +/// stage it keeps for materials outside the chunk (`materials::material_stage`), +/// reporting it unresolvable only when it is not there either. It has to +/// be the winner, strength and +/// collections included: a weaker binding that does resolve would render +/// its material where the winner's default grey belongs. +pub(super) fn bound_material(stage: &Stage, prim: &Prim) -> Option { + let api = nearest_binding_api(stage, prim.path().clone())?; + match api.bound_material(RENDER_BINDING_PURPOSE) { + Ok(Some(material)) => Some(material.path().clone()), + _ => winning_binding_target(stage, api.path()), + } +} + +/// The `MaterialBindingAPI` of `path` or its nearest ancestor carrying it. +fn nearest_binding_api(stage: &Stage, path: sdf::Path) -> Option { + let mut path = Some(path); + while let Some(p) = path { + if p.is_abs_root() { + return None; + } + if let Ok(Some(api)) = MaterialBindingAPI::get(stage, p.clone()) { + return Some(api); + } + path = p.parent(); + } + None +} + +/// The target of the binding that wins for `queried`, as openusd-schemas' +/// `bound_material` chooses it, but answering the target path whether or not +/// it is a `Material` on this stage. [`RENDER_BINDING_PURPOSE`] is resolved +/// across the whole ancestor chain before the all-purpose binding; within a +/// purpose the closest binding wins unless an ancestor's is +/// `strongerThanDescendants` (the topmost such then wins); at one prim a +/// collection binding including `queried` beats the direct one, in native +/// property order. The walk visits only prims carrying `MaterialBindingAPI`. +fn winning_binding_target(stage: &Stage, queried: &sdf::Path) -> Option { + [RENDER_BINDING_PURPOSE, ""] + .into_iter() + .find_map(|purpose| { + let mut winner = None; + let mut at = Some(queried.clone()); + while let Some(api) = at.and_then(|p| nearest_binding_api(stage, p)) { + if let Some((target, strength)) = winning_binding_at(stage, &api, queried, purpose) + && (winner.is_none() || strength == BindingStrength::StrongerThanDescendants) + { + winner = Some(target); + } + at = api.path().parent(); + } + winner + }) +} + +/// The binding that wins at `api`'s prim for `queried` and one `purpose`, as +/// `(target, strength)`: a collection binding whose collection includes +/// `queried`, in native property order, else the direct binding. +fn winning_binding_at( + stage: &Stage, + api: &MaterialBindingAPI, + queried: &sdf::Path, + purpose: &str, +) -> Option<(sdf::Path, BindingStrength)> { + let prefix = "material:binding:collection:"; + for name in api.authored_property_names().unwrap_or_default() { + let Some(rest) = name.as_str().strip_prefix(prefix) else { + continue; + }; + // `:` is purpose-restricted; anything else is + // all-purpose, as C++ `_GetMaterialPurpose` counts tokens. + let (binding_purpose, binding_name) = match rest.split_once(':') { + Some((p, n)) if !n.contains(':') => (p, n), + _ => ("", rest), + }; + if binding_purpose != purpose { + continue; + } + let Ok(Some(binding)) = + CollectionBinding::new(api.collection_binding_rel(binding_name, purpose)) + else { + continue; + }; + let (collection, target) = (binding.collection_path(), binding.material_path().clone()); + if collection_includes(stage, collection, queried) { + let strength = api + .path() + .append_property(name.as_str()) + .ok() + .and_then(|rel| stage.field::(rel, "bindMaterialAs").ok()) + .and_then(|v| match v { + Some(sdf::Value::Token(t)) => BindingStrength::from_token(t), + _ => None, + }) + .unwrap_or_default(); + return Some((target, strength)); + } + } + let binding = api.direct_binding(purpose).ok()??; + let strength = binding.strength().unwrap_or_default(); + Some((binding.material_path().clone(), strength)) +} + +/// Whether the collection at `collection` (a `.collection:` +/// path) includes `queried`; a path that names no collection includes nothing. +fn collection_includes(stage: &Stage, collection: &sdf::Path, queried: &sdf::Path) -> bool { + let Some((prim, name)) = CollectionAPI::instance_at_path(collection) else { + return false; + }; + stage + .prim(prim) + .ok() + .and_then(|prim| { + CollectionAPI::from_prim_unchecked(prim, name) + .membership_query() + .ok() + }) + .is_some_and(|q| q.is_included(queried)) +} + +/// The `info:id` of the surface shader the import decodes the material at +/// `mat_path` from, in the import's order: a `PxrDisneyBsdf` child first +/// (see `materials::resolve_material_uncached`), else the shader the surface terminal +/// resolves to. `None` when there is none — a MaterialX reference composes +/// no shader prim. What `crust ls material --json` reports as `surface`. +fn surface_shader_id(stage: &Stage, mat_path: &sdf::Path, time: Option) -> Option { + if has_shader_id(stage, mat_path, "PxrDisneyBsdf", time) { + return Some("PxrDisneyBsdf".to_owned()); + } + let mat = UsdMaterial::get(stage, mat_path.clone()).ok().flatten()?; + terminal_shader(mat.surface_source(SURFACE_RENDER_CONTEXTS)) + .and_then(|s| shader_info_id(&s, time)) +} + +/// The first `Shader`-typed source driving a resolved terminal. +fn terminal_shader( + resolved: Result< + Option, + openusd_schemas::SchemaError, + >, +) -> Option { + resolved + .ok() + .flatten() + .and_then(|t| t.sources().iter().find_map(TerminalSource::shader).cloned()) +} + +fn shader_info_id(shader: &Shader, time: Option) -> Option { + // `UsdShadeNodeDefAPI::GetShaderId`: the composed `info:id` when the + // shader's implementation source is `id`. + if let Ok(Some(id)) = shader.node_def().shader_id() { + return Some(id.as_str().to_owned()); + } + // Otherwise the raw `info:id`, as the import has always read it whatever + // the implementation source says. + value_at(&shader.attribute("info:id"), time).and_then(decode_text) +} + +/// Whether the material has a child `Shader` prim with this `info:id`. +/// +/// Cheaper and more reliable than resolving a render-context output for the +/// question actually being asked — "does this material shade with X" — since a +/// material may declare several context outputs and USD gives no ordering +/// between them without a configured render context. +fn has_shader_id(stage: &Stage, mat_path: &sdf::Path, id: &str, time: Option) -> bool { + let Ok(children) = prim_at(stage, mat_path.clone()).children() else { + return false; + }; + children + .iter() + .any(|c| custom_token(c, "info:id", time).as_deref() == Some(id)) +} + +/// `attr`'s value at time code `time`, or `None` when it is unauthored, blocked +/// or unreadable. +/// +/// openusd resolves an unauthored schema attribute to its schema fallback, +/// and the importer's readers take `None` as "unauthored": a product inherits +/// the settings' resolution and a camera's focus distance is crust's 10, not +/// the schema's 0. So a +/// value equal to the fallback is asked whether a layer authored it — only +/// then, since a value that differs from the fallback was authored, and an +/// attribute no schema declares (`crust:*`, primvars, shader inputs) has none. +fn value_at(attr: &Attribute, time: Option) -> Option { + let value = attr + .get_at::(time.map(openusd::usd::TimeCode::new)) + .ok() + .flatten()?; + match attr.fallback_value() { + Ok(Some(fallback)) if fallback == value => attr.has_authored_value().ok()?.then_some(value), + _ => Some(value), + } +} + +/// The value of `prim`'s attribute `name` at `time` — [`value_at`] by +/// name. +fn prim_value(prim: &Prim, name: &str, time: Option) -> Option { + value_at(&prim.attribute(name), time) +} + +fn custom_token(prim: &Prim, name: &str, time: Option) -> Option { + prim_value(prim, name, time).and_then(decode_text) +} + +/// Whether `prim` is one of the seven shapes `implicit::Shape::read` reads, from +/// its USD type alone: what `crust ls` asks of the stage it lists. +fn is_shape(prim: &Prim) -> bool { + let prim = || prim.clone(); + matches!(Cube::from_prim(prim()), Ok(Some(_))) + || matches!(Plane::from_prim(prim()), Ok(Some(_))) + || matches!(Cylinder::from_prim(prim()), Ok(Some(_))) + || matches!(Cylinder_1::from_prim(prim()), Ok(Some(_))) + || matches!(Cone::from_prim(prim()), Ok(Some(_))) + || matches!(Capsule::from_prim(prim()), Ok(Some(_))) + || matches!(Capsule_1::from_prim(prim()), Ok(Some(_))) +} diff --git a/crates/crust-core/src/scene/usd_import/live.rs b/crates/crust-core/src/scene/usd_import/live.rs index f8344448d..13506c2d5 100644 --- a/crates/crust-core/src/scene/usd_import/live.rs +++ b/crates/crust-core/src/scene/usd_import/live.rs @@ -9,7 +9,7 @@ //! of the streaming import is, or the payload-free index stage for the //! settings. -use moho::{openusd, openusd_schemas}; +use moho::openusd; use std::path::Path; use std::sync::Arc; @@ -794,7 +794,9 @@ fn refresh_settings( /// Each of `paths` as the import composes it: on a stage masked to them with /// payloads loaded (so ops a payload authors count), at the import's time -/// code, through the traversal's own [`compose_with_parent`]. +/// code, composed from a scene index over that stage as the walk composes +/// (`xform::stage_local_to_world`), with the ops a placement edits read in +/// `stage_facts` ([`super::index::stage_facts::authored_ops`]). pub(crate) fn prim_frames( prov: &Provenance, layer: &Path, @@ -815,39 +817,21 @@ pub(crate) fn prim_frames( prims .iter() .map(|path| { - let prim = stage - .prim(path.clone()) - .ok() - .filter(|p| p.is_valid().unwrap_or(false)) + let ops = super::index::stage_facts::authored_ops(&stage, path, place_op) .ok_or_else(|| Structural(format!("{path} is not a prim of the stage")))?; - use openusd_schemas::geom::XformableSchema; - let xf = openusd_schemas::geom::Xformable::from_prim(prim.clone()) - .ok() - .flatten(); - let order: Vec = xf - .as_ref() - .and_then(|xf| xf.xform_op_order().ok().flatten()) - .map(|o| o.iter().map(|t| t.as_str().to_string()).collect()) - .unwrap_or_default(); let parent = path .parent() .map(|p| super::xform::stage_local_to_world(&stage, &p, prov.stage.options.frame)) .unwrap_or(glam::Mat4::IDENTITY); let world = super::xform::stage_local_to_world(&stage, path, prov.stage.options.frame); - let place = prim - .attribute(place_op) - .get::() - .ok() - .flatten() - .map(|m| glam::DMat4::from_cols_array(&m.0)); Ok(PrimFrame { path: path.to_string(), - xformable: xf.is_some(), - resets_xform_stack: order.iter().any(|e| e == "!resetXformStack!"), + xformable: ops.xformable, + resets_xform_stack: ops.order.iter().any(|e| e == "!resetXformStack!"), parent_to_world: parent.as_dmat4(), local_to_world: world.as_dmat4(), - xform_op_order: order, - place_op: place, + xform_op_order: ops.order, + place_op: ops.place, }) }) .collect() diff --git a/crates/crust-core/src/scene/usd_import/materials.rs b/crates/crust-core/src/scene/usd_import/materials.rs index 077b1df35..b4896e17a 100644 --- a/crates/crust-core/src/scene/usd_import/materials.rs +++ b/crates/crust-core/src/scene/usd_import/materials.rs @@ -3,27 +3,23 @@ //! `PxrDisneyBsdf` and MaterialX references. use crate::warning; -use moho::{openusd, openusd_schemas}; +use moho::openusd; use std::collections::HashMap; use std::sync::Arc; use std::time::Instant; use glam::Vec3A; use openusd::sdf; -use openusd::usd::{CollectionAPI, Prim, Stage}; -use openusd_schemas::shade::{ - BindingStrength, CollectionBinding, Material as UsdMaterial, MaterialBindingAPI, Shader, - TerminalSource, -}; +use openusd::usd::Stage; use tracing::debug; use crate::color::Space; use crate::material::{DispRemap, Displacement, DisplacementValue, Material, OpenPBR}; +use super::ImportCaches; use super::assets::{asset_value_path, load_ptex, load_uv_texture}; -use super::attrs::{custom_token, decode_number, decode_text, value_at}; +use super::attrs::{decode_number, decode_text}; use super::preview::{preview_displacement, preview_surface_material}; -use super::{ImportCaches, prim_at}; /// Memoizes resolved materials by binding path (and shares one default), /// so prims bound to the same USD material get pointer-identical Arcs — @@ -234,46 +230,7 @@ pub(super) struct CachedMaterial { /// The binding purpose a final render resolves: USD's `full`, falling back to /// the all-purpose binding (`bound_material` does the fallback). /// `preview` is for interactive proxies and is never consulted. -const RENDER_BINDING_PURPOSE: &str = "full"; - -/// The material bound to `prim` for a final render, resolved the way -/// `UsdShadeMaterialBindingAPI::ComputeBoundMaterial` does. -/// -/// Two things this has to get right that a direct lookup on the prim does not: -/// -/// - **Inheritance.** A binding on an ancestor applies to every prim beneath -/// it, and production assets bind on the group: ALab binds each asset's -/// `GEO` scope, never its meshes. openusd-schemas' `bound_material` -/// walks the ancestors (binding strength and collection bindings included), -/// but only from a prim that *carries* `MaterialBindingAPI`, and -/// `MaterialBindingAPI::get` returns `None` for any other — which is every -/// mesh under a bound group. So the walk starts at the nearest ancestor -/// that has the API. Skipping the API-less prims in between loses nothing: -/// USD disregards a binding on a prim without the API applied. -/// - **Purpose.** ALab authors `material:binding:full` and -/// `material:binding:preview` and almost never the all-purpose relationship, -/// so asking for `""` alone found nothing on 7 256 prims. -/// - **Targets outside the stage.** openusd-schemas' `bound_material` -/// answers with the `Material` prim, and so `None` wherever the winning -/// target is not one *on this stage* — which a streamed import's masked -/// stage makes of every material outside the chunk (the Cornell box binds -/// `/scene/Looks/…` from five sibling chunks). That answer would drop the -/// binding: no material provenance for `crust mcp`, no -/// `material.fallback_default` warning. So when it answers nothing, the -/// binding is read as the *winning* binding's target instead -/// ([`winning_binding_target`]), which the resolution then composes on the -/// stage it keeps for materials outside the chunk ([`material_stage`]), -/// reporting it unresolvable only when it is not there either. It has to -/// be the winner, strength and -/// collections included: a weaker binding that does resolve would render -/// its material where the winner's default grey belongs. -pub(super) fn bound_material(stage: &Stage, prim: &Prim) -> Option { - let api = nearest_binding_api(stage, prim.path().clone())?; - match api.bound_material(RENDER_BINDING_PURPOSE) { - Ok(Some(material)) => Some(material.path().clone()), - _ => winning_binding_target(stage, api.path()), - } -} +pub(super) const RENDER_BINDING_PURPOSE: &str = "full"; /// The material bound to `prim` for a render, from the scene index's resolved /// `materialBindings` (Moho's `MaterialBindingResolvingSceneIndex`): the @@ -296,112 +253,6 @@ pub(super) fn index_bound_material(prim: &super::index::data::PrimData) -> Optio }) } -/// The `MaterialBindingAPI` of `path` or its nearest ancestor carrying it. -fn nearest_binding_api(stage: &Stage, path: sdf::Path) -> Option { - let mut path = Some(path); - while let Some(p) = path { - if p.is_abs_root() { - return None; - } - if let Ok(Some(api)) = MaterialBindingAPI::get(stage, p.clone()) { - return Some(api); - } - path = p.parent(); - } - None -} - -/// The target of the binding that wins for `queried`, as openusd-schemas' -/// `bound_material` chooses it, but answering the target path whether or not -/// it is a `Material` on this stage. [`RENDER_BINDING_PURPOSE`] is resolved -/// across the whole ancestor chain before the all-purpose binding; within a -/// purpose the closest binding wins unless an ancestor's is -/// `strongerThanDescendants` (the topmost such then wins); at one prim a -/// collection binding including `queried` beats the direct one, in native -/// property order. The walk visits only prims carrying `MaterialBindingAPI`. -fn winning_binding_target(stage: &Stage, queried: &sdf::Path) -> Option { - [RENDER_BINDING_PURPOSE, ""] - .into_iter() - .find_map(|purpose| { - let mut winner = None; - let mut at = Some(queried.clone()); - while let Some(api) = at.and_then(|p| nearest_binding_api(stage, p)) { - if let Some((target, strength)) = winning_binding_at(stage, &api, queried, purpose) - && (winner.is_none() || strength == BindingStrength::StrongerThanDescendants) - { - winner = Some(target); - } - at = api.path().parent(); - } - winner - }) -} - -/// The binding that wins at `api`'s prim for `queried` and one `purpose`, as -/// `(target, strength)`: a collection binding whose collection includes -/// `queried`, in native property order, else the direct binding. -fn winning_binding_at( - stage: &Stage, - api: &MaterialBindingAPI, - queried: &sdf::Path, - purpose: &str, -) -> Option<(sdf::Path, BindingStrength)> { - let prefix = "material:binding:collection:"; - for name in api.authored_property_names().unwrap_or_default() { - let Some(rest) = name.as_str().strip_prefix(prefix) else { - continue; - }; - // `:` is purpose-restricted; anything else is - // all-purpose, as C++ `_GetMaterialPurpose` counts tokens. - let (binding_purpose, binding_name) = match rest.split_once(':') { - Some((p, n)) if !n.contains(':') => (p, n), - _ => ("", rest), - }; - if binding_purpose != purpose { - continue; - } - let Ok(Some(binding)) = - CollectionBinding::new(api.collection_binding_rel(binding_name, purpose)) - else { - continue; - }; - let (collection, target) = (binding.collection_path(), binding.material_path().clone()); - if collection_includes(stage, collection, queried) { - let strength = api - .path() - .append_property(name.as_str()) - .ok() - .and_then(|rel| stage.field::(rel, "bindMaterialAs").ok()) - .and_then(|v| match v { - Some(sdf::Value::Token(t)) => BindingStrength::from_token(t), - _ => None, - }) - .unwrap_or_default(); - return Some((target, strength)); - } - } - let binding = api.direct_binding(purpose).ok()??; - let strength = binding.strength().unwrap_or_default(); - Some((binding.material_path().clone(), strength)) -} - -/// Whether the collection at `collection` (a `.collection:` -/// path) includes `queried`; a path that names no collection includes nothing. -fn collection_includes(stage: &Stage, collection: &sdf::Path, queried: &sdf::Path) -> bool { - let Some((prim, name)) = CollectionAPI::instance_at_path(collection) else { - return false; - }; - stage - .prim(prim) - .ok() - .and_then(|prim| { - CollectionAPI::from_prim_unchecked(prim, name) - .membership_query() - .ok() - }) - .is_some_and(|q| q.is_included(queried)) -} - /// The material bound to `prim`, for a prim that cannot be displaced /// (spheres, curves): its displacement is not resolved. pub(super) fn resolve_material( @@ -869,7 +720,7 @@ fn preview_displacement_of(src: &MatSource, caches: &mut ImportCaches<'_>) -> Op /// [`super::mtlx_network`]) is used when nothing the universal or preview /// context names is decodable, so a stage that already rendered through its /// preview surface renders exactly as before. -const SURFACE_RENDER_CONTEXTS: &[&str] = &["", "glslfx", "mtlx"]; +pub(super) const SURFACE_RENDER_CONTEXTS: &[&str] = &["", "glslfx", "mtlx"]; /// Render contexts for the `volume` terminal. Only a MaterialX network can /// drive one (`ND_volume`, a VDF), so the universal terminal is read too, and @@ -1037,37 +888,6 @@ fn resolve_material_uncached( } } -/// The `info:id` of the surface shader the import decodes the material at -/// `mat_path` from, in the import's order: a `PxrDisneyBsdf` child first -/// (see [`resolve_material_uncached`]), else the shader the surface terminal -/// resolves to. `None` when there is none — a MaterialX reference composes -/// no shader prim. What `crust ls material --json` reports as `surface`. -pub(super) fn surface_shader_id( - stage: &Stage, - mat_path: &sdf::Path, - time: Option, -) -> Option { - if has_shader_id(stage, mat_path, "PxrDisneyBsdf", time) { - return Some("PxrDisneyBsdf".to_owned()); - } - let mat = UsdMaterial::get(stage, mat_path.clone()).ok().flatten()?; - terminal_shader(mat.surface_source(SURFACE_RENDER_CONTEXTS)) - .and_then(|s| shader_info_id(&s, time)) -} - -/// The first `Shader`-typed source driving a resolved terminal. -fn terminal_shader( - resolved: Result< - Option, - openusd_schemas::SchemaError, - >, -) -> Option { - resolved - .ok() - .flatten() - .and_then(|t| t.sources().iter().find_map(TerminalSource::shader).cloned()) -} - /// Builds a material from an inline MaterialX network: the nodes driving /// the `surface` and `volume` terminals, translated into one document /// ([`super::mtlx_network`]) and compiled as a `.mtlx`'s would be. Textures @@ -1251,32 +1071,6 @@ pub(super) fn default_material() -> Arc { Arc::new(OpenPBR::diffuse(Vec3A::new(0.5, 0.5, 0.5))) } -pub(super) fn shader_info_id(shader: &Shader, time: Option) -> Option { - // `UsdShadeNodeDefAPI::GetShaderId`: the composed `info:id` when the - // shader's implementation source is `id`. - if let Ok(Some(id)) = shader.node_def().shader_id() { - return Some(id.as_str().to_owned()); - } - // Otherwise the raw `info:id`, as the import has always read it whatever - // the implementation source says. - value_at(&shader.attribute("info:id"), time).and_then(decode_text) -} - -/// Whether the material has a child `Shader` prim with this `info:id`. -/// -/// Cheaper and more reliable than resolving a render-context output for the -/// question actually being asked — "does this material shade with X" — since a -/// material may declare several context outputs and USD gives no ordering -/// between them without a configured render context. -fn has_shader_id(stage: &Stage, mat_path: &sdf::Path, id: &str, time: Option) -> bool { - let Ok(children) = prim_at(stage, mat_path.clone()).children() else { - return false; - }; - children - .iter() - .any(|c| custom_token(c, "info:id", time).as_deref() == Some(id)) -} - /// Maps RenderMan's `PxrDisneyBsdf` onto [`OpenPBR`]. /// /// The Moana island — the reason this exists — shades every surface with it, @@ -1641,7 +1435,7 @@ mod binding_tests { } if !path.is_abs_root() { let prim = super::super::prim_at(stage, path.clone()); - let direct = bound_material(stage, &prim); + let direct = super::super::listing::bound_material(stage, &prim); let index = index_bound_material(&PrimData::in_index(&input.chain, &path)); assert_eq!(direct, index, "{path}"); bound += usize::from(direct.is_some()); diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index 822b819b5..c5bbdb817 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -87,9 +87,7 @@ mod volume; mod xform; use adaptive::{Frustum, ScreenProjection, ScreenRate}; -use attrs::{ - prim_value, resolve_adaptive_max_level, resolve_subdiv_edge_length, resolve_subdiv_level, -}; +use attrs::{resolve_adaptive_max_level, resolve_subdiv_edge_length, resolve_subdiv_level}; use camera::{ RenderCamera, Shutter, ShutterOffsets, build_camera, screen_projection, shutter_offsets, }; @@ -181,7 +179,7 @@ fn stream_roots(stage: &Stage) -> Vec { /// Counts the native placements of every prototype on `stage`, per top-level /// subtree, into `caches.placements`: the same walk and pruning -/// ([`prune_reason`]) as the walk ([`index::walk`]), not +/// ([`index::walk::prune`]) as the walk ([`index::walk`]), not /// descending into an instance or a `PointInstancer`, whose contents the /// traversal does not reach directly either. fn count_placements(stage: &Stage, input: &index::Input, caches: &mut ImportCaches<'_>) { @@ -645,46 +643,10 @@ fn visit_camera( true } -/// Why a traversal leaves a prim and its whole subtree out of the render — -/// see [`prune_reason`]. -#[derive(Clone, Copy, PartialEq, Eq, Debug)] -pub(super) enum Prune { - /// A `class` prim: it exists only to be referenced or instanced. - Abstract, - /// `active = false`. - Inactive, - /// A purpose a final render does not draw (`"proxy"` / `"guide"`). - Purpose(&'static str), - /// `visibility = "invisible"`. - Invisible, -} - -impl std::fmt::Display for Prune { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - Prune::Abstract => f.write_str("abstract (class)"), - Prune::Inactive => f.write_str("inactive"), - Prune::Purpose(p) => write!(f, "{p}-purpose"), - Prune::Invisible => f.write_str("invisible"), - } - } -} - -/// Where a prim is met, which decides whether [`Prune::Abstract`] applies. -#[derive(Clone, Copy, PartialEq, Eq)] -pub(super) enum WalkScope { - /// The stage's own namespace: the top-level traversal and the placement - /// count that must agree with it. - Stage, - /// Inside a prototype, reached through an instance. A prototype is - /// commonly authored under a `class` prim, so abstractness does not prune - /// here. - Prototype, -} - -/// The one pruning rule every walk applies, so that the traversal, the -/// placement count and the prototype walk cannot disagree about which prims -/// exist. +/// Why a traversal leaves a prim and its whole subtree out of the render: +/// the one pruning rule every walk applies ([`index::walk::prune`] on the +/// scene index, `listing`'s on the stage), so that they cannot disagree +/// about which prims exist. /// /// Each rule prunes a whole subtree, decided where the opinion is authored: /// @@ -708,24 +670,27 @@ pub(super) enum WalkScope { /// subtree for cameras (see [`visit_prim`]). /// /// Checked in that order, so the reason reported is the first that applies. -pub(super) fn prune_reason(prim: &Prim, scope: WalkScope, time: Option) -> Option { - if scope == WalkScope::Stage && prim.is_abstract().unwrap_or(false) { - return Some(Prune::Abstract); - } - if !prim.is_active().unwrap_or(true) { - return Some(Prune::Inactive); - } - let token = |name: &str| prim_value(prim, name, time); - if let Some(v) = token("purpose") { - match v.as_str() { - Some("proxy") => return Some(Prune::Purpose("proxy")), - Some("guide") => return Some(Prune::Purpose("guide")), - _ => {} +#[derive(Clone, Copy, PartialEq, Eq, Debug)] +pub(super) enum Prune { + /// A `class` prim: it exists only to be referenced or instanced. + Abstract, + /// `active = false`. + Inactive, + /// A purpose a final render does not draw (`"proxy"` / `"guide"`). + Purpose(&'static str), + /// `visibility = "invisible"`. + Invisible, +} + +impl std::fmt::Display for Prune { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Prune::Abstract => f.write_str("abstract (class)"), + Prune::Inactive => f.write_str("inactive"), + Prune::Purpose(p) => write!(f, "{p}-purpose"), + Prune::Invisible => f.write_str("invisible"), } } - token("visibility") - .is_some_and(|v| v.as_str() == Some("invisible")) - .then_some(Prune::Invisible) } /// Drops a stage the traversal is done with, or — for a single-stage import From b56f41ccfc2c29c2a4440baaee423d76cd9c23ad Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 09:43:42 +0100 Subject: [PATCH 82/95] docs: CLAUDE.md's time and prototype-key rules follow the index (13.2) The import keeps no time in a thread-local (the index owns it, stage reads take it explicitly), and prototype caches key on Moho's propagated paths, never on openusd's per-stage /__Prototype_N. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- CLAUDE.md | 10 ++++++---- openspec/changes/moho-import/tasks.md | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 9c009070d..d2819b7d4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -160,8 +160,9 @@ with CMake against OpenUSD 26 from `hydra/pixi.toml`, outside `cargo build`. Imp it — a wrapper adds a vtable hop per texel fetch that LTO cannot remove. - `scene/usd_import/` siblings share through `pub(super)` and import each other explicitly — no `use super::*`, so a file's `use` block is its real dependency list. -- The USD import is single-threaded and reads the time code from a thread-local - (`EvalTimeScope`); parallelising it means threading the time explicitly. +- The USD import reads USD through Moho's scene index, which owns the time: a reader + takes the index's time, or a time code passed to it explicitly (`crust ls`, the + stage facts). No reader keeps the time in a thread-local. - No RNG outside `openqmc`: stratified draws through keyed sub-domains (`K_*` in `tracer/path.rs`), incidental ones through `draw_rnd` / `domain.rng()`. @@ -192,8 +193,9 @@ without the other (full list: `docs/architecture.md` § Invariants): an MCP edit applied in place ↔ a full re-import of the same layer (`crust_core::live` rebuilds through the import's own functions; a material property the import bakes into geometry or a world flag belongs in `Signature`, in `rt_world.rs`). -- Anything keyed on a prototype path is scoped by the stage epoch - (`ImportCaches::epoch`): `/__Prototype_N` is renumbered per masked stage. +- Anything keyed on a prototype is keyed by Moho's propagated prototype path (or a + point instancer's copy), which is stable across a streamed import's stages, never + by openusd's `/__Prototype_N`, which is renumbered per masked stage. - `Material::resolve` must return exactly what per-query shading would (pinned for every material by `crust-core/tests/resolve.rs`); build it with `Resolution::new`, which takes the emission from the parameters *before* `into_resolved` — the type allows no other order. diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 82dabd9a7..060759ca8 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -335,7 +335,7 @@ this group, and kept for the whole change. (`crust ls`) is not an import and stays. Verify with `grep` that none of them remains, that `usd_import/` reads openusd only through `index/` and `stage_facts.rs` (and `listing.rs`), and that parity is green. -- [ ] 13.2 Update the `CLAUDE.md` rules the deletion retires or changes: "The USD import +- [x] 13.2 Update the `CLAUDE.md` rules the deletion retires or changes: "The USD import is single-threaded and reads the time code from a thread-local (`EvalTimeScope`)", and the pair "Anything keyed on a prototype path is scoped by the stage epoch". Verify with `grep` that neither names a deleted item. From f910a4fa0df2f7b00e1bcbb503cdad0c69b08913 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 09:55:21 +0100 Subject: [PATCH 83/95] openspec: moho-import 13.1 is done Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/tasks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 060759ca8..c091b48c1 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -328,7 +328,7 @@ this group, and kept for the whole change. ## 13. Delete the direct importer (design D3, D6) -- [ ] 13.1 Delete the direct readers and the traversal they served (`traverse_into`, +- [x] 13.1 Delete the direct readers and the traversal they served (`traverse_into`, `count_placements`' stage walk, the per-family `usd::Prim` readers no index reader calls), the bridge (`index/bridge.rs`), `EvalTimeScope` and `time.rs`, and the prototype epoch (`ImportCaches::epoch`, `MaterialCache::epoch`). `listing.rs` From ba628879d52f5cb75ccca1f66f52ca88e078de34 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 10:20:53 +0100 Subject: [PATCH 84/95] scripts: check_images.sh always rebuilds the release binary As import_parity.sh: a test build left at target/release/crust carries crust-core's test-only parity feature. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- scripts/check_images.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/scripts/check_images.sh b/scripts/check_images.sh index b057f0984..1c4d33247 100755 --- a/scripts/check_images.sh +++ b/scripts/check_images.sh @@ -34,10 +34,11 @@ if [ -z "$DIR" ]; then exit 2 fi +# Always built first: `cargo test --release` leaves a test build at this +# path, with crust-core's test-only `parity` feature, which checks every +# import against a baseline and so is not the renderer being gated. BIN=target/release/crust -if [ ! -x "$BIN" ]; then - cargo build --release -p crust-render -fi +cargo build --release -p crust-render if ! "$BIN" diff --help >/dev/null 2>&1; then echo "error: $BIN has no diff subcommand; rebuild it (cargo build --release -p crust-render)" >&2 exit 2 From 933ce471dc464c64363604ba467cfeddb281d316 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 11:51:29 +0100 Subject: [PATCH 85/95] crust: material cache comments say what keys it, now the epoch is gone Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/materials.rs | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/materials.rs b/crates/crust-core/src/scene/usd_import/materials.rs index b4896e17a..fec3d3934 100644 --- a/crates/crust-core/src/scene/usd_import/materials.rs +++ b/crates/crust-core/src/scene/usd_import/materials.rs @@ -32,7 +32,7 @@ pub(super) struct MaterialCache { pub(super) reading: Option<(sdf::Path, sdf::Path)>, pub(super) default: Option>, /// Resolved `.ptx` path -> the opened texture, or `None` if it could not - /// be opened. Keyed by filesystem path, so it needs no epoch scoping. + /// be opened. Keyed by filesystem path. pub(super) ptex: HashMap<(String, crate::ColorSpace), Option>>, /// `(resolved path, colour space)` -> the opened UV texture. Keyed by /// filesystem path for the same reason as `ptex`, and by colour space @@ -127,12 +127,6 @@ impl MaterialCache { } } - /// Each material prim the cache resolved → the `world` slots holding it - /// and whether a mesh was displaced by it ([`crate::live::Provenance`]). - /// By `Arc` identity: a slot holds exactly the `Arc` the cache handed out. - /// Prototype-scoped paths (`/__Prototype_N`, renumbered per streamed - /// stage) are left out: no edit names one, and two epochs' `Arc`s under - /// one such path are different materials. /// `(prim read, material reading it)` for every material the cache /// resolved, prototype-scoped ones included ([`material_reads`]). pub(super) fn reads(&self) -> Vec<(String, String)> { @@ -151,6 +145,13 @@ impl MaterialCache { reads } + /// Each material prim the cache resolved → the `world` slots holding it + /// and whether a mesh was displaced by it ([`crate::live::Provenance`]). + /// By `Arc` identity: a slot holds exactly the `Arc` the cache handed out. + /// Materials named under openusd's `/__Prototype_N` (renumbered per + /// streamed stage) are left out: no edit names one, and two chunks' + /// materials, cached apart under their propagated paths, can share one + /// such name. pub(super) fn origins( &self, world: &crate::World, @@ -194,7 +195,7 @@ impl MaterialCache { /// A prim's resolved material and the displacement it defines, if any. /// -/// Cached together per `(epoch, path)` ([`CachedMaterial`]), the displacement +/// Cached together per material key ([`MaterialCache::key`]), the displacement /// resolved the first time a mesh asks: displacement is a property of the /// material, but it is consumed once at import rather /// than per hit, so it lives beside the [`Material`] instead of inside it. @@ -345,9 +346,8 @@ fn cached_material( return None; }; // A target the index re-rooted into a propagated prototype (Moho's M11) - // is the material read, and keys the cache: stable across stages, so no - // epoch. It is named, in warnings and provenance, by the USD prim it - // comes from. + // is the material read, and keys the cache: stable across stages. It is + // named, in warnings and provenance, by the USD prim it comes from. let mat_path = data.name_of(&target); let reading = re_rooted(data, &mat_path); let key = match &reading { @@ -358,9 +358,7 @@ fn cached_material( return Some((key, mat_path)); } // Per *distinct* material, not per binding: a stage binding one material - // to 10 000 prims logs this once. The key carries the cache epoch, which - // is what keeps one streamed chunk's `/__Prototype_N` apart from the - // next's — see `MaterialCache::key`. + // to 10 000 prims logs this once. debug!("Resolving material {mat_path} ({key})"); let home = material_stage(stage, &mat_path, caches); caches.materials.reading = reading; From 6cedd7e7fa162b8179153390248cbc9f2068047b Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 11:52:11 +0100 Subject: [PATCH 86/95] openspec: moho-import records 12.4, 14.2 and 14.3 ALab and Moana pass import_parity on Moho d09cc94, their reports re-recorded for D3c's cross-instancer reuse alone, with the spike's (A), (B) and (D) beside them; Moana's import time (12x) is reported. check_images is bit-identical against the direct importer's goldens (cornellbox_guided's re-rendered, guided rendering being nondeterministic), and crust diagnostic equals its report timings aside. hdCrust cannot pass on this machine's glibc, before or after the change alike; 14.1 stays open for the CI runner. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/design.md | 5 ++ openspec/changes/moho-import/tasks.md | 6 +- openspec/specs/usd-scene-import/design.md | 73 ++++++++++++++++++++++- 3 files changed, 78 insertions(+), 6 deletions(-) diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index 244794bd5..96fef563b 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -248,6 +248,11 @@ this reason only, re-recorded after their images were checked equal: share one propagated prototype, so the `crust check` report's unique triangles go from 12,007,504 to 12,001,706 (BVH sizes with them). The report was re-recorded and the direct importer's EXR kept; the check then passes, report and image equal. +- Moana (`import_parity.sh`, 12.4, after Moho's M12): the point instancers of + `isCoral1` to `isCoral5` place prims of one instanced archive, whose materials and + meshes are now built once, so unique triangles go from 60,880,698 to 60,844,338 (BVH + sizes with them). The report was re-recorded and the direct importer's EXR kept; the + check then passes, report and image equal. ### D4. Index layout: S0's merged index, the consumer deciding what is in diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index c091b48c1..a8c7446d1 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -322,7 +322,7 @@ this group, and kept for the whole change. - [x] 12.3 Every index reader reads only the scene index or `stage_facts`: no bridged call remains. Verify with `grep` that `index/` names no `usd::Prim` outside `stage_facts.rs`, and that parity is green. -- [ ] 12.4 Run `scripts/import_parity.sh check` on ALab and Moana against their +- [x] 12.4 Run `scripts/import_parity.sh check` on ALab and Moana against their baselines. Verify that both exit 0, and record the runs (and Moho's spike strategies (B) and (D) on the same machine) in the design record. @@ -344,11 +344,11 @@ this group, and kept for the whole change. - [ ] 14.1 hdCrust: run `hydra/hdCrust/test/compare.sh`, `interaction.sh` and `usdc_roundtrip.sh`. Verify that all three pass. -- [ ] 14.2 Run `crust diagnostic --budget 2m` on `samples/cornellbox.usda` and compare +- [x] 14.2 Run `crust diagnostic --budget 2m` on `samples/cornellbox.usda` and compare its report with the one recorded from the direct importer in group 2, timings aside, and run the MCP session tests (`crust-render` with feature `mcp`). Verify equal reports and green tests. -- [ ] 14.3 Run `scripts/check_images.sh check` against the goldens recorded from the +- [x] 14.3 Run `scripts/check_images.sh check` against the goldens recorded from the direct importer in group 2. Verify exit 0. - [ ] 14.4 Run `scripts/import_parity.sh check` on ALab and Moana against their baselines on the final commit. Verify that both exit 0 and that the full CI is green, diff --git a/openspec/specs/usd-scene-import/design.md b/openspec/specs/usd-scene-import/design.md index b92bc8ca5..59a04dccd 100644 --- a/openspec/specs/usd-scene-import/design.md +++ b/openspec/specs/usd-scene-import/design.md @@ -1679,6 +1679,72 @@ networks (preview, MaterialX, Pxr, displacement), materials outside a streamed c One run, alone on the machine. +### Instancing on the index (task 12.4) + +`scripts/import_parity.sh check` on the same machine with Moho `d09cc94` (M11 and M12 +in), the instancing family on the index and the bridge gone. ALab at `933ce471`, +alone on the machine. Moana at `33c9fd65`, alone on the machine for the timings below; +that run differed only in the unique triangles named next, and after the report was +re-recorded a second run passed (24.18 GiB, 2139.21 s, with a debug build beside it): + +| scene | report and 16 spp image | peak memory (ratio) | `Parse USD stage` (ratio) | +|---|---|---|---| +| ALab | equal | 21.17 GiB (1.93) | 55.41 s (1.78) | +| Moana | equal | 24.04 GiB (1.01) | 2053.05 s (11.82) | + +Both reports were re-recorded for the change's third behaviour change alone +(`moho-import` D3c, cross-instancer reuse), keeping the direct importer's EXRs, which +the images equal: ALab's unique triangles 12,007,504 to 12,001,706, Moana's 60,880,698 +to 60,844,338 (its coral, `isCoral1` to `isCoral5`, whose point instancers place prims +of one instanced archive), with the BVH sizes that follow. Everything else in the +reports, warnings and geometry counts included, is equal. + +Moho's spike on Moana at `d09cc94`, the same machine (`--skip-c --with-d`): + +| strategy | chunks | total | peak | final | largest chunk | +|---|---|---|---|---|---| +| (A) | 22 | 51.62 s | 5.05 GiB | 2.43 GiB | 4.81 GiB | +| (B) | 22 | 49.47 s | 1.91 GiB | 1.64 GiB | 1.69 GiB | +| (D) | 22 | 380.41 s | 2.36 GiB | 1.90 GiB | 1.90 GiB | + +Moana's import is twelve times the direct importer's time. (D), which only reads every +prim's data through Moho's merging index, is already 7.7 times (B), so most of it is the +index's read path; the rest is Crust's material resolution, which builds a scene index +over the material's stage when the walked chunk does not hold it (39 times on +`isHibiscus` alone), and the instancing walks. Reported, not gated; a follow-up with +ALab's memory, after S2. + +Earlier Moana timings taken after a `cargo test --release` (the image parity run) are +not comparable: that run leaves a test build at `target/release/crust`, with +crust-core's test-only `parity` feature, which digests every import. +`import_parity.sh` and `check_images.sh` now always rebuild the release binary first. + +### Hosts (tasks 14.1 to 14.3) + +- `scripts/check_images.sh check` against the goldens recorded from the direct + importer: all 48 scenes bit-identical. `cornellbox_guided`'s golden was re-rendered + with the direct importer first: guided rendering is nondeterministic (the listed + parity-image exception), the recorded golden was an outlier, and four direct and six + index renders all agree with each other. +- `crust diagnostic --budget 2m samples/cornellbox.usda` equals the direct importer's + report but for its timings and what follows from them (efficiency ratios, the profile + shares); scene, settings, findings, crops, MRSEs and luminance shifts are equal, and + so is the verdict (converged, no change), three runs in three. It must be run with the + release profile as configured (fat LTO): with LTO off, as the parity scripts build + for speed, rendering is a few per cent slower, the trials' time-equalised sample + counts change, and the verdict flipped in two runs of three. With LTO on, cornellbox + still renders about 2.5% slower than the direct importer's binary (4.56 s against + 4.45 s at 1024 spp), with no render code changed and the scene digests equal. +- hdCrust (`compare.sh`, `interaction.sh`, `usdc_roundtrip.sh`) cannot pass on this + machine: its glibc is 2.34 and the pixi environment's OpenUSD needs 2.38, so the + plugin runs only through the sysroot's loader (`CONDA_OVERRIDE_GLIBC=2.39`, linked + with `--dynamic-linker` into the sysroot). There `usdc_roundtrip.sh` passes, and + `compare.sh` and `interaction.sh` show one-ulp differences between the delegate + (the sysroot's libm) and the CLI (the host's) on a few pixels. hdCrust built at the + direct importer's commit gives the same outcomes, and its images are bit-identical to + this build's, delegate and CLI alike. The CI runner (glibc 2.39) is where the three + must pass. + ## Provenance and in-place rebuilds An imported `Scene` carries `provenance` (`crust_core::live::Provenance`): which `World` @@ -1703,9 +1769,10 @@ What it asked of the import, so a rebuild runs the traversal's code and not a co - A rebuilt light's geometry gets the `geom_id`s it had by claiming the ids before it in a scratch `WorldBuilder` (`reserve_slot`) before the emitter runs. -*Trap:* `MaterialCache::origins` leaves out prototype-scoped paths. One -`/__Prototype_N/...` path names a different material in each streamed chunk (that is -what the epoch in its key is for); an authored path has one `Arc` across every chunk. +*Trap:* `MaterialCache::origins` leaves out materials named under openusd's +`/__Prototype_N`. The cache keys a material inside a prototype by Moho's propagated path, +stable across a streamed import's chunks, but names it under the USD prototype, and one +`/__Prototype_N/...` name can stand for a different material in each chunk. ## Known gaps: instancing From 543ec8c4581b9efcdda31880a2834e38e9721269 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 12:05:13 +0100 Subject: [PATCH 87/95] docs: the architecture map and the import's module table name Moho (15.2) Moho in the crate map and the render flow, the index/ module, two new invariants (a family's index reader and its in-place rebuild change together; one openusd through Moho, one rev across the stack), the epoch and EvalTimeScope rules gone; usd_import's module table names each family's index reader, and stale doc links are fixed. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../src/scene/usd_import/index/instancers.rs | 2 +- .../src/scene/usd_import/materials.rs | 7 +-- crates/crust-core/src/scene/usd_import/mod.rs | 49 ++++++++++-------- .../crust-core/src/scene/usd_import/xform.rs | 4 +- docs/architecture.md | 51 +++++++++++++------ openspec/changes/moho-import/tasks.md | 2 +- 6 files changed, 71 insertions(+), 44 deletions(-) diff --git a/crates/crust-core/src/scene/usd_import/index/instancers.rs b/crates/crust-core/src/scene/usd_import/index/instancers.rs index f17344955..0fb21cf1f 100644 --- a/crates/crust-core/src/scene/usd_import/index/instancers.rs +++ b/crates/crust-core/src/scene/usd_import/index/instancers.rs @@ -1,5 +1,5 @@ //! Moho's instancers, as the instancing reader finds them in an input's -//! instancing chain ([`super::Input::inst`]): a native instance's propagated +//! instancing chain ([`super::Input::chain`]): a native instance's propagated //! prototype (`instance` → its instancer's `instancerTopology`), and a //! point instancer's prototype copies (`ForInstancer`, in the order of //! its `prototypes` targets), as UsdImaging's prototype propagation names diff --git a/crates/crust-core/src/scene/usd_import/materials.rs b/crates/crust-core/src/scene/usd_import/materials.rs index fec3d3934..452c1d216 100644 --- a/crates/crust-core/src/scene/usd_import/materials.rs +++ b/crates/crust-core/src/scene/usd_import/materials.rs @@ -235,9 +235,10 @@ pub(super) const RENDER_BINDING_PURPOSE: &str = "full"; /// The material bound to `prim` for a render, from the scene index's resolved /// `materialBindings` (Moho's `MaterialBindingResolvingSceneIndex`): the -/// `full` purpose's, else the all-purpose one's — [`bound_material`]'s rule -/// (the closest binding, unless an ancestor's is `strongerThanDescendants`; -/// a collection binding including the prim over the direct one), answered +/// `full` purpose's, else the all-purpose one's — USD's `ComputeBoundMaterial`, +/// as `listing::bound_material` resolves it on the stage (the closest +/// binding, unless an ancestor's is `strongerThanDescendants`; a collection +/// binding including the prim over the direct one), answered /// whether or not the target is a `Material` the walked stage holds. pub(super) fn index_bound_material(prim: &super::index::data::PrimData) -> Option { use moho::tokens::material_bindings as t; diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index c5bbdb817..be9852932 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -4,35 +4,42 @@ //! # Layout //! //! This module owns the import as a whole — [`load_scene`], the streaming -//! chunk loop, the prim traversal ([`index::walk`]) and the state threaded -//! through it ([`ImportCtx`], [`ImportCaches`]). Each schema family is a -//! submodule that the traversal dispatches into: +//! chunk loop and the state threaded through it ([`ImportCtx`], +//! [`ImportCaches`]). Every stage is read through Moho's scene index +//! ([`index`]: the inputs, the walk, the prim data, the material networks, +//! the instancers, and [`index::stage_facts`], the one place that reads the +//! stage for what is not imaging data). The walk dispatches each prim, by its +//! Hydra type, to its family's index reader: //! -//! | module | reads | +//! | module | index reader of | //! |----------------|--------------------------------------------------------------| -//! | [`time`] | the time code every attribute read resolves at (`-f`) | -//! | [`settings`] | `UsdRenderSettings`, `crust:*` render attributes, camera choice | -//! | [`attrs`] | typed attribute readers, `crust:rayMask` / motion / subdivision | -//! | [`xform`] | `xformOp:*` stacks → world matrices | -//! | [`camera`] | `UsdGeomCamera` | -//! | [`mesh`] | `UsdGeomMesh`: interning, deferred bake-vs-instance, side tables | +//! | [`settings`] | `renderSettings` and its generic data: `crust:*` render attributes, camera choice | +//! | [`products`] | `renderProduct` / `renderVar`: outputs, resolution, AOVs | +//! | [`precomp`] | `crust:precomp` sample-filter graphs | +//! | [`passes`] | the active `renderPass` and its collections (`matte`, `cameraVisibility`) | +//! | [`attrs`] | the decoders every reader shares; subdivision and adaptive levels | +//! | [`xform`] | the local `xform` → world matrices, motion over the shutter | +//! | [`camera`] | `camera` | +//! | [`mesh`] | `mesh`: interning, deferred bake-vs-instance, side tables | //! | [`adaptive`] | the camera's projection; adaptive subdivision: a mesh's level from its size on screen | -//! | [`shapes`] | `UsdGeomSphere`, `UsdGeomBasisCurves` | -//! | [`implicit`] | `Cube`, `Plane`, `Cylinder`, `Cone`, `Capsule` (+ `_1`) → GeomUtil meshes | -//! | [`instancing`] | `PointInstancer` and native `instanceable` prototypes | -//! | [`lights`] | every UsdLux light type, shaping and IES | -//! | [`light_links`] | `collection:lightLink`: lights that illuminate nothing | -//! | [`passes`] | the active `RenderPass`: `matte` holdouts, `cameraVisibility` | -//! | [`materials`] | binding resolution, the material cache, shader dispatch | +//! | [`shapes`] | `sphere`, `basisCurves`, `nurbsCurves` | +//! | [`strands`] | curve primvars kept for shading | +//! | [`implicit`] | `cube`, `plane`, `cylinder`, `cone`, `capsule` (+ `_1`) → GeomUtil meshes | +//! | [`instancing`] | `instancer`: Moho's propagated prototypes and point-instancer copies | +//! | [`lights`] | every light type, shaping and IES | +//! | [`light_links`] | the lights' `lightLink` / `shadowLink` collections, judged after the last chunk | +//! | [`materials`] | `materialBindings`, the material cache, shader dispatch | //! | [`preview`] | `UsdPreviewSurface` + `UsdUVTexture` networks | //! | [`mtlx_network`] | inline MaterialX (`ND_*`) networks → crust-mtlx documents | +//! | [`assets`] | textures, Ptex and IES files, through the host's loader | //! | [`volume`] | `crust:volume:*` regions | -//! | [`listing`] | what a stage holds, without importing it (`crust ls`) | +//! | [`live`] | in-place rebuilds, through the same readers on a masked stage | +//! | [`listing`] | what a stage holds, without importing it (`crust ls`): the one walk of the stage itself | //! //! Submodules expose what their siblings need as `pub(super)` and import //! each other explicitly, so a file's `use super::…` block is its real -//! dependency list. The traversal is single-threaded; see [`time`] for why -//! that matters. +//! dependency list. A reader takes the index's time; a stage read (`crust +//! ls`, the stage facts) takes its time code explicitly. use crate::warning; use moho::{openusd, openusd_schemas}; @@ -2011,7 +2018,7 @@ struct ImportCaches<'a> { /// the local `xform` before the flattening ([`xform::compose_index`]). stage_index: Option, /// The walked input's instancing chain while a walk runs - /// ([`index::Input::inst`]): Moho's instancers and their prototypes. + /// ([`index::Input::chain`]): Moho's instancers and their prototypes. inst: Option, /// Root layer, the fallback anchor for an asset path openusd handed back /// unresolved. diff --git a/crates/crust-core/src/scene/usd_import/xform.rs b/crates/crust-core/src/scene/usd_import/xform.rs index d2e0accc6..a4d704466 100644 --- a/crates/crust-core/src/scene/usd_import/xform.rs +++ b/crates/crust-core/src/scene/usd_import/xform.rs @@ -418,8 +418,8 @@ impl TransformMotion { self } - /// [`TransformMotion::timing`] over the scene index: `prim` in the - /// input's stage scene index. Its transform at the shutter's ends is + /// How `prim` (in the input's stage scene index) moves over the shutter, + /// below a parent timed `parent`. Its transform at the shutter's ends is /// Moho's `xform/matrix` at those ends' offsets from the frame, `f32` /// as Hydra's sampled data sources take them: an offset `f32` cannot hold /// exactly reads another time than the direct importer's `f64` one, the diff --git a/docs/architecture.md b/docs/architecture.md index 7c7aadc08..40df057fc 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -22,7 +22,8 @@ graph TD nn["crust-nn
tiny networks: hash grid, MLP, Adam"] utils["utils
sampling warps, MIS heuristics"] oqmc["openqmc-rs
QMC samplers (crates.io)"] - usd["openusd + openusd-schemas"] + moho["moho
scene index over openusd (Hydra 2.0)"] + usd["openusd + openusd-schemas
through moho's re-exports"] ptex["ptex-rs"] osd["opensubdiv-rs"] ocio["ocio
OpenColorIO port"] @@ -39,7 +40,8 @@ graph TD jit --> mtlx core --> utils core --> oqmc - core --> usd + core --> moho + moho --> usd core --> osd core --> ocio ``` @@ -50,7 +52,7 @@ graph TD | `crust-mtlx` | `.mtlx` parsing, graph → slot-indexed `Program`, the BSDF closure tree and EDF terms, surface-shader nodes expanded into their nodegraphs | crust types (it defines the `Texture` trait it consumes) | | `crust-jit` | compiling a `Program` to machine code, bit-identical to the interpreter | everything but `crust-mtlx` | | `crust-nn` | tiny, bit-deterministic networks: the multi-resolution hash grid, dense layers, sigmoid cross-entropy, Adam, gradient checking (what `neural` light selection learns visibility with) | crust types, threads (the caller maps a batch's chunks) and random numbers (the caller draws them) | -| `crust-core` | USD import, `Scene`, `Renderer`, integrator, materials, lights, volumes, guiding, colour management (the OCIO config, every transfer curve), stats/profile, the diagnostic (`diagnostic/`: phases, trials, the `crust-diagnostic/1` report and its Markdown), the light path inspector (`inspect/`: the `crust-light-paths/1` report) | image, texture and IES decoding; UI | +| `crust-core` | USD import (through Moho's scene index, `scene/usd_import/index/`), `Scene`, `Renderer`, integrator, materials, lights, volumes, guiding, colour management (the OCIO config, every transfer curve), stats/profile, the diagnostic (`diagnostic/`: phases, trials, the `crust-diagnostic/1` report and its Markdown), the light path inspector (`inspect/`: the `crust-light-paths/1` report) | image, texture and IES decoding; UI | | `crust-assets` | every file decoder (EXR, PNG/HDR, Ptex, IES, `.tx`), the tile caches, `maketx` | the integrator | | `crust-render` | lib + bin. The library (`lib.rs`): the scene flags and the CLI's import-and-check policy (`load_scene`, `apply_scene_overrides`, `check_scene`, `select_products`), the product writer (`products.rs`), and with cargo feature `session` (openusd only) the live session's core (`session/`: the override layer diffed, classified, updated in place or re-imported). The binary (`main.rs`): argument parsing, logging, progress bar, writing EXR + PNG, printing and saving the diagnostic's and the light path inspector's reports, exit codes; `crust mcp`, the MCP server (`mcp/`, cargo feature `mcp`, implies `session`, on by default) | decoding anything | | `crust-hydra` | crust behind a C ABI (`include/crust_hydra.h`) for `hdCrust`, the C++ Hydra render delegate in `hydra/hdCrust` (built with CMake against OpenUSD 26, outside `cargo build`): a `Session` on the layers the delegate writes (the `crust-render` session core), a render thread polled for snapshots, AOVs at completion, panics caught at every entry point under `[profile.hydra]` (`panic = "unwind"`), `tracing` and import warnings forwarded to the host. `deny(unsafe_code)` with five audited blocks, all in `ffi.rs` | Hydra and C++ (the plugin speaks them) | @@ -58,7 +60,7 @@ graph TD Two properties of this graph are deliberate and worth keeping: -- **`crust-core` decodes no assets.** It parses USD itself (through `openusd`), +- **`crust-core` decodes no assets.** It reads USD through Moho's scene index (openusd beneath, through Moho's re-exports), but every byte read from an image, Ptex or IES file crosses the `AssetLoader` seam (below) into `crust-assets`. That is why the engine library has no codec dependencies and why the probe examples in @@ -79,10 +81,13 @@ crust-render::main → render (`crust render`; `crust ls ` is Scene::list ├─ FileAssets::new() crust-assets: residency policy from CRUST_* env ├─ Scene::from_usd_with_options(path, &assets, opts) │ └─ scene::usd_import::load_scene crust-core - │ ├─ index stage (payloads unloaded) → RenderSettings, RenderProducts (AovRequest), camera choice, chunk list - │ ├─ for each chunk: open masked stage → traverse_into → drop stage - │ │ prims dispatch to mesh / shapes / instancing / lights / volume / camera - │ │ materials resolve through materials::resolve_material (cached per stage epoch) + │ ├─ index stage (payloads unloaded) → the scene input, a Moho chain::input over it: + │ │ RenderSettings, RenderProducts (AovRequest), camera choice, chunk list + │ ├─ for each chunk: open masked stage → its chain::input joins the MergingSceneIndex + │ │ (a side input for materials bound from outside it, streaming::unresolved) + │ │ → index::walk::walk over its children → remove the input, drop the stage + │ │ prims dispatch by Hydra type to mesh / shapes / instancing / lights / volume / camera + │ │ materials resolve through materials::resolve_material (cached by Moho's paths) │ │ assets decode through AssetLoader (timed as "Load assets") │ ├─ mesh::flush_meshes bake-once vs instance, now that counts are final │ └─ WorldBuilder::commit top-level SBVH (crust-rt) @@ -184,7 +189,7 @@ both sides must keep; the contract lives in the doc comment at the definition. | area | modules | |------|---------| | scene description | `scene.rs` (`Scene`, `AssetLoader`, `UsdImportOptions`), `camera.rs`, `world.rs` (procedural fallback scene) | -| USD import | `scene/usd_import/` — module map in its `mod.rs`; `scene/usd_import/implicit.rs` (`Cube`, `Plane`, `Cylinder`, `Cone`, `Capsule` and the `_1` variants tessellated as OpenUSD's GeomUtil does, pinned point for point by `tests/geomutil_oracle.rs`, their radial count chosen from the screen when a camera is named); `scene/subdiv/` (OpenSubdiv refinement: `uniform`, per-face `adaptive`, `topology`, `normals`); `scene/displace.rs` (scalar displacement of tessellated meshes, once per distinct mesh) | +| USD import | `scene/usd_import/` — module map in its `mod.rs`; `scene/usd_import/index/` (the import through Moho: the inputs and their chains, the walk, `PrimData` over a prim's schemas and generic data, the material networks, the instancers, and `stage_facts`, the one place that reads the stage for what is not imaging data); `scene/usd_import/implicit.rs` (`Cube`, `Plane`, `Cylinder`, `Cone`, `Capsule` and the `_1` variants tessellated as OpenUSD's GeomUtil does, pinned point for point by `tests/geomutil_oracle.rs`, their radial count chosen from the screen when a camera is named); `scene/subdiv/` (OpenSubdiv refinement: `uniform`, per-face `adaptive`, `topology`, `normals`); `scene/displace.rs` (scalar displacement of tessellated meshes, once per distinct mesh) | | geometry bridge | `rt_world.rs` (`World`, side tables), `strands.rs` (`StrandTable`, `CurveHit`), `primvars.rs` (`PrimvarTable`, `MeshHit`), `hittable.rs` (`HitRecord`), `ray.rs` (`Ray`, `RayCone`, ray masks), `aabb.rs` (re-export of the kernel's) | | AOVs | `aov.rs` (the source vocabulary, `AovRequest`, the per-unit planes and the full-frame `AovFilm`, the sample filters' unit evaluation and planes); products resolved in `scene/usd_import/products.rs`; `precomp.rs` (the precomp: sample filters compiled by `crust_mtlx::compile_value_graph`, the five display operations, `run`, `displayed`), read by `scene/usd_import/precomp.rs`; `lpe/` (OSL light path expressions: parser, one DFA per render; the lobe events it matches are the materials' `material/lobe.rs`); `tracer/route.rs` (routing a path's light into the expressions, and the albedo) | | integrator | `tracer/` — `mod.rs` (`Renderer`: passes, tiles, guiding schedule, the per-pass sampler dispatch), `path.rs` (`trace_path`, NEE, MIS weights, QMC domain keys), `settings.rs` (`RenderSettings`, `SamplingStrategy`); `sampler.rs` (`SamplerKind`: the six OpenQMC samplers by token), `filter.rs` (pixel filter importance sampling), `buffer.rs` (and `var_of_mean`, the one variance estimator), `region.rs` (`PixelRect`) | @@ -237,7 +242,7 @@ other. The pairs: (`settings`, `materials`, `lights`) must give the scene a fresh import of the same layer gives, warnings included. So the rebuild calls the functions the traversal called (`read_index`, `apply_exposure`, `resolve_fresh`, - `emit_light`), never copies of them; `World::check_materials` and + `emit_light`), never copies of them, over a scene index of the masked stage; `World::check_materials` and `LightList::check_replace` refuse a swap that would move anything the world, the geometry or the list was built on (`Signature`, in `rt_world.rs`); and the renderer is rebuilt with `Renderer::new`, so the light selection is a fresh one's. A new @@ -357,17 +362,31 @@ other. The pairs: `site/content/docs/reference/warnings.md`, kind included — `the_reference_page_lists_every_code` fails until the two agree. It must be raised on the importing thread: the collector is a thread-local entered by - `load_scene` (like `EvalTimeScope`), so a warning raised from a rayon task + `load_scene`, so a warning raised from a rayon task during the import would be logged but not recorded. A debug build panics when that happens (`recording_from_a_rayon_worker_during_an_import_panics`); work done on other threads (the `--auto-tx` conversions) collects its failures and raises them after joining. -- **Import cache keys.** Anything keyed on a prototype path is scoped by the - stage epoch (`ImportCaches::epoch`), because `/__Prototype_N` is renumbered - per masked stage. +- **Import cache keys.** Anything keyed on a prototype is keyed by Moho's + propagated prototype path (or a point instancer's copy), stable across a + streamed import's stages, never by openusd's `/__Prototype_N`, which is + renumbered per masked stage; a name under `/__Prototype_N` is kept for + warnings and provenance only. +- **A family's index reader ↔ its in-place rebuild.** Each schema family reads + the scene index through one reader (`usd_import/`, dispatched by Hydra type + from `index::walk`), and its in-place rebuild (`usd_import/live.rs`) builds a + scene index over the masked stage and calls that same reader. Change one and + the other follows, or an edit applied in place stops equalling a full + re-import (`crust-core/tests/live.rs`). +- **One openusd, through Moho.** crust reaches openusd only through + `moho::openusd` and `moho::openusd_schemas`, so it builds against exactly the + rev Moho pins; Moho is pinned by git `rev` in the root `Cargo.toml`, one rev + across the stack (Moho, then crust-render, then Mantle), and no manifest names + openusd (`crust-core/tests/one_openusd.rs`). Bumping Moho is its own commit. - **Stage listing.** `crust ls` (`Scene::list_usd`, `usd_import/listing.rs`) - walks the stage apart from `traverse_into`, and must meet exactly the - cameras and lights it meets: the same chunks, `prune_reason` (invisible + walks the stage itself (the one walk that does), apart from the import's + walk over the scene index, and must meet exactly the cameras and lights it + meets: the same chunks, the same pruning (`Prune`; invisible subtrees walked for cameras only), instances and `PointInstancer`s not entered. A light type the import learns must join `listing::is_kind`. Pinned by `list_usd_lists_what_a_render_uses`, which renders through every diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index a8c7446d1..7cd942a96 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -363,7 +363,7 @@ this group, and kept for the whole change. them, and any parity exception that remains (none is planned). Verify that M1 to M7 are each named with what Crust uses from them. -- [ ] 15.2 Update `docs/architecture.md`: Moho in the crate map and render flow, the +- [x] 15.2 Update `docs/architecture.md`: Moho in the crate map and render flow, the `index/` module, and the new invariant that each family's index reader and its in-place rebuild change together. Update the `usd_import/mod.rs` module table to name each family's index reader. Verify with `grep` that each document names Moho From b4909411acb9add86ce02b406aeb20901bb4549e Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 12:05:13 +0100 Subject: [PATCH 88/95] openspec: the usd-scene-import record describes the import through Moho (15.1) The layout, the walk, the stage facts, the bridge's history and the rev rule; the behaviour changes and the listed exceptions; Moho's gaps M1 to M12 with what Crust uses from each and the rev that closed it; the streaming and cache-keying paragraphs rewritten for the index. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/tasks.md | 2 +- openspec/specs/usd-scene-import/design.md | 223 ++++++++++++++++------ 2 files changed, 162 insertions(+), 63 deletions(-) diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index 7cd942a96..e750cc42c 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -356,7 +356,7 @@ this group, and kept for the whole change. ## 15. Documentation and specs -- [ ] 15.1 Update `openspec/specs/usd-scene-import/design.md`: +- [x] 15.1 Update `openspec/specs/usd-scene-import/design.md`: - the import through Moho (layout, walk order, the bridge's history, stage facts); - the baselines and the parity runs; - Moho's gaps M1 to M7, closed in `scene-index-gaps`, with the Moho rev that closes diff --git a/openspec/specs/usd-scene-import/design.md b/openspec/specs/usd-scene-import/design.md index 59a04dccd..288555de1 100644 --- a/openspec/specs/usd-scene-import/design.md +++ b/openspec/specs/usd-scene-import/design.md @@ -8,24 +8,28 @@ ## Overview, streaming import and import time -The only scene format. The module is split by schema family — `mod.rs` holds -`load_scene`, the streaming chunk loop, the traversal and the import-wide state -(`ImportCtx`, `ImportCaches`), and dispatches into `mesh`, `shapes`, `instancing`, -`lights`, `light_links`, `materials`, `preview`, `volume`, `camera`, `xform`, -`settings`, `attrs` and `time`; the table in `mod.rs`'s module doc says which reads what. Siblings expose what +The only scene format, read through Moho, the Hydra-2.0-style scene index over openusd +(§ Index import below). The module is split by schema family — `mod.rs` holds +`load_scene`, the streaming chunk loop and the import-wide state (`ImportCtx`, +`ImportCaches`); `index/` holds the scene indices, the walk over them and the stage +facts; the walk dispatches each prim by its Hydra type into `mesh`, `shapes`, +`instancing`, `lights`, `light_links`, `materials`, `preview`, `volume`, `camera`, +`xform`, `settings` and the rest, each its family's index reader; the table in `mod.rs`'s +module doc says which reads what. Siblings expose what they share as `pub(super)` and import each other explicitly — keep it that way (no `use super::*`), so a file's `use` block stays its real dependency list. -`load_scene` opens the stage, imports `RenderSettings` first (the -camera needs the aspect ratio), then traverses prims with an explicit stack that bakes the -Xform hierarchy into world matrices. +`load_scene` opens the stage and builds the scene index over it, imports +`RenderSettings` first (the camera needs the aspect ratio), then walks the index's prims +with an explicit stack that bakes the transform hierarchy into world matrices. **Streaming import.** A production stage is dominated by USD itself, not by the renderer's own structures: composing all of Moana costs openusd 75.74 GiB and 6m19s, against 1.10 GiB and 2.6s for a stage masked to one element. So `load_scene` opens a cheap index stage (`InitialLoadSet::LoadNone`) for the settings and the list of -top-level subtrees, then composes, traverses and **drops one masked stage per subtree** -(`stream_roots` + `traverse_into`), bounding the composed set at about one element. +top-level subtrees, then composes, walks and **drops one masked stage per subtree** +(`stream_roots`; each chunk's scene index joins a merging index, is walked and is +removed), bounding the composed set at about one element. On the island: 117.10 GiB / 13:20 → 43.76 GiB / 09:19, output pixel-identical. `MIN_STREAM_CHUNKS` keeps the single-stage path for scenes too small to repay the re-opens; `CRUST_STREAM_IMPORT=0` forces it. @@ -35,39 +39,43 @@ its subtree alone, so a `Material` in another top-level subtree (`/World/Looks` `/MaterialX/Materials`) is absent from the stage that traverses the geometry bound to it. It used to resolve to grey with "not resolvable" — the Cornell box's `/scene/Looks` did, from five sibling chunks, unseen because that material is empty; -a stage laid out that way lost every material. Now -`materials::material_stage` notices a material outside the chunk's mask, walks the -chunk's `material:binding*` relationships once (`outside_binding_targets`, instance -proxies included) and opens **one** stage masked to every out-of-chunk target, -resolving the material there. The stage is kept across chunks (`OutsideMaterials`) -and re-opened only when a chunk binds a path it does not cover, with its mask grown -to the union, then dropped after the last chunk, before the top-level commit. A -dangling target stays in the mask, so it costs no second open, and still reports -"not resolvable". The cost is one more masked open per import (the root layer -parsed once more, the materials composed) for a stage that binds from outside its -chunks, and none for one that does not. On a small stage with a large root layer -the single-stage import (`CRUST_STREAM_IMPORT=0`) can be faster than streaming -altogether, which `MIN_STREAM_CHUNKS` (a count of subtrees) does not see. Rejected: re-opening the chunk with an expanded mask (C++ USD's -`ExpandPopulationMask`) composes the chunk's geometry twice, which the common -"one `/Looks` scope beside N geometry chunks" layout would pay per chunk; walking -the index stage up front composes everything outside payloads, which on ALab is the -whole stage. A chunk with nothing bound from outside pays nothing: the walk runs at -the first miss. A material whose network connects to a prim outside itself (a node -graph shared from another scope) needs that prim too, whether the material is in the -chunk or not: `connected_outside` follows its connections (and theirs, through each -reached prim's subtree) on whichever stage holds it, and any target the mask lacks -sends the material to the side stage with the target masked in beside it — one more -open per hop of a chain of shared graphs, at most `MAX_SIDE_STAGE_OPENS` (8) per -material. The mask moves only with a stage opened to it, so a failed open leaves the -stage and its mask in step. -The subtlety is cache keying: prototype paths (`/__Prototype_N`) are **numbered per -composition**, so every masked stage has its own `/__Prototype_0`. Anything keyed on -such a path must be scoped per stage, or one chunk's data is silently handed to the -next — see `MaterialCache::key` and `ImportCaches::epoch`. Keying materials on the bare -path cost 5 835 258 triangles before it was caught, and *no single element reproduces -it*: it needs two chunks that both carry prototype-internal materials. - -**Where import time goes** (ALab frame 1004, single-stage, stack-sampled with +a stage laid out that way lost every material. The direct importer then +walked the chunk's bindings once and opened **one** stage masked to every +out-of-chunk target, kept across chunks and grown when a chunk bound a path it did not +cover. The index import keeps that stage and its rules as Moho's streaming pattern +puts them: after a chunk's input joins the merging index, `moho::streaming::unresolved` +lists what the chunk's prims depend on that no input holds (bound materials, and the +network nodes outside a material, which a node graph shared from another scope needs), +and a **side input** over a stage masked to them, payloads loaded, sits between the +chunks and the payload-free scene (`index::Streamed::resolve_outside`). The rounds run +per chunk, before it is walked, until one resolves nothing new — at most +`MAX_SIDE_STAGE_OPENS` (8) per chunk, one per hop of a chain of shared graphs; the +stage is kept across chunks, so a chunk binding nothing new opens none, and it is +removed after the last chunk, before the top-level commit. A dangling target stays in +the mask, so it costs no second open, and still reports "not resolvable". Materials are +read at the top of the chain, where `MaterialNodeResolvingSceneIndex` fills a network's +node outside the chunk from whichever input holds it; what is read off a material's +stage rather than the index (a `.mtlx` reference, its composition arcs) is read off the +stage of the input that holds it (`materials::material_stage`). The cost is one more +masked open per import for a stage that binds from outside its chunks, and none for one +that does not. On a small stage with a large root layer the single-stage import +(`CRUST_STREAM_IMPORT=0`) can be faster than streaming altogether, which +`MIN_STREAM_CHUNKS` (a count of subtrees) does not see. Rejected: re-opening the chunk +with an expanded mask (C++ USD's `ExpandPopulationMask`) composes the chunk's geometry +twice, which the common "one `/Looks` scope beside N geometry chunks" layout would pay +per chunk; walking the index stage up front composes everything outside payloads, which +on ALab is the whole stage. +The subtlety is cache keying: openusd's prototype paths (`/__Prototype_N`) are +**numbered per composition**, so every masked stage has its own `/__Prototype_0`. +Keying materials on the bare path cost 5 835 258 triangles before it was caught, and +*no single element reproduces it*: it needs two chunks that both carry +prototype-internal materials. The direct importer scoped such keys by a stage epoch; +the index import keys prototypes, and the materials inside them, by Moho's propagated +prototype paths (or a point instancer's copy), which agree across chunks by +construction, so a prototype is built once per import (`moho-import`'s third behaviour +change). A `/__Prototype_N` name is kept for warnings and provenance only. + +**Where import time goes** (the direct importer: ALab frame 1004, single-stage, stack-sampled with `eu-stack` every 1.5 s — callgrind is hours on a 30 GiB import, and `perf` is not installed here). Before the fixes below, `Traverse prims` was 3:24: - **~35% is openusd composing the stage**, serially and lazily: the first query into a @@ -731,7 +739,7 @@ rendered in usdview rendered with holes here. bend round them), the seam at +X before the frame, the `rightHanded` winding, and `UsdImagingGprimAdapter::GetImplicitBasis(axis)` as the frame (a cyclic permutation of the coordinates). `Cylinder` passes equal radii, `Capsule` likewise. Readers take - `double` or `float` at `eval_time()` with the schema fallbacks. + `double` or `float` at the index's time with the schema fallbacks. - **Trap: the cone is not a cylinder with `rTop = 0`.** GeomUtil's cone has no top fan: its quads close on a ring of N coincident apex points, so the side's normals stay smooth round the apex instead of averaging to the spine. A `Cylinder_1` with @@ -794,10 +802,9 @@ rendered in usdview rendered with holes here. - **Unread `Gprim`s are reported.** A prim no reading branch takes and that `is_a("Gprim")` (openusd's `UsdPrim::IsA`, through the schema registry) is counted by type in `ImportCaches::unread`: once per prim the top-level walk meets, once per prim - per prototype *build*. Placements never add (the walk runs once per build), but a - streamed load rebuilds a prototype once per chunk that uses it, and `/__Prototype_N` - is renumbered per chunk (`ImportCaches::epoch`), so the count is "prims read", exact - only for a load that is not streamed. One `geom.unsupported_type` per type is raised at + per prototype *build*. Placements never add (the walk runs once per build), and a + prototype is built once per import (keyed by Moho's propagated path), so the count is + "prims read". One `geom.unsupported_type` per type is raised at the end of the load, on the importing thread, its message carrying the count; so the record's own `count` is the number of types. - **The oracle.** `scripts/geomutil_oracle.py` downloads micromamba from @@ -957,14 +964,14 @@ same point. `gridDims` int[3] + `gridData` float[] (x-fastest, length must equal nx·ny·nz — warns and skips otherwise). Sample scenes: `samples/fog.usda` (homogeneous god rays), `samples/smoke.usda` (noise plume + emissive ember + tiny explicit grid). -- **Frame / time code** (`-f/--frame`, `Scene::from_usd_at_frame`). Every attribute read in - the importer goes through `eval_time()` — `Attribute::get_at` at the requested code — - so transforms, points, camera, lights, instancer arrays and render settings all move - together; an attribute with no time samples reads its default either way, and only - animated ones change. The time lives in a scoped **thread-local** (`EvalTimeScope`) - rather than a parameter, because ~40 read sites in helpers handed only a `Prim` would - otherwise all carry a value none of them decide; that is sound only because the import - is single-threaded — parallelising it means threading the time explicitly. **No +- **Frame / time code** (`-f/--frame`, `Scene::from_usd_at_frame`). Every value the + importer reads resolves at the requested code: the scene index owns the time (every + `StageSceneIndex` the import builds is set to it), so transforms, points, camera, + lights, instancer arrays and render settings all move together; an attribute with no + time samples reads its default either way, and only animated ones change. A read off + the stage (`crust ls`, the stage facts) takes the time code as a parameter. (The + direct importer kept it in a scoped thread-local, `EvalTimeScope`, which went with + it.) **No frame means the attribute *default*, not frame 0**: a stage that authors only `timeSamples` reads its schema fallback, which is exactly the pre-`--frame` behaviour (pinned pixel-identical on the samples). The one exception is transforms: openusd @@ -1041,9 +1048,11 @@ same point. boxed because every entry carries one and few move). A prim moves when its own ops might vary (`XformQuery::transform_might_be_time_varying`) or its parent moves and it does not `!resetXformStack!`; it is then composed at both ends by - `compose_at` — `compose_with_parent` under a nested `EvalTimeScope`, quiet - (the read at the frame already warned) — so the composition rule stays one - function. `pair.open` reuses `W_f` when `shutter:open == 0`. `W_f` is still + `compose_at` — the same composition at the shutter's offset, quiet (the read at + the frame already warned) — so the composition rule stays one function. (On the + index, the transform at an offset is Moho's sampled `xform/matrix` at that offset + from the index's time, an `f32` as Hydra takes it: `moho-import`'s listed + exception.) `pair.open` reuses `W_f` when `shutter:open == 0`. `W_f` is still what lights, cameras, the zero-scale tests and `count_placements` read. The question is asked only when the offsets open an interval or a `motionvector` var is requested (`TransformMotion::query`); otherwise `timing` returns @@ -1433,7 +1442,7 @@ changed what the import calls: `SettingsBaseSchema` for the shared camera and framing attributes. - **`Imageable` / `Xformable` are views, not traits.** `xform.rs` views a prim through the type-checked `Xformable::from_prim` and composes its stack with - `XformQuery::new(..).local_transformation(eval_time())` and `resets_xform_stack()` + `XformQuery::new(..).local_transformation(time)` and `resets_xform_stack()` (was `local_to_parent_transform` on a wrapper implementing the traits). The check is against the schema registry: a prim that is not `Xformable` (an untyped prim, a `Scope`, a type the registry does not know) passes its parent's transform through, @@ -1590,6 +1599,95 @@ openusd, and deletes the direct importer at its end. It is gated on parity with baselines recorded from the direct importer before anything migrated, as UsdImaging's move onto scene indices was: the same baselines, a new route. +### The import through Moho + +- **Layout.** One stage (fewer than `MIN_STREAM_CHUNKS` subtrees, or + `CRUST_STREAM_IMPORT=0`): one `StageSceneIndex` over a `LoadAll` stage, under + `moho::chain::input` (native and point instancing, flattening, material binding + resolution, render settings flattening), with light linking and + `MaterialNodeResolvingSceneIndex` on top — `chain::standard`'s shape. Streamed: the + same top over a `MergingSceneIndex` whose inputs are each a `chain::input`: the + payload-free scene (weakest, permanent, `include_unloaded_prims`), one chunk's masked + stage at a time (added, walked, removed, its stage dropped: Moho's spike strategy + (B), and its memory bound), and the side input for what a chunk depends on that no + input holds (§ Overview). Crust opens every stage itself, with its `stage_builder()` + (the schema registry, the `mmap` resolver); Moho never loads or unloads. +- **The walk** (`index::walk`) runs from the absolute root over one input's children, + in the direct importer's order (push in order, pop last-first), because geometry ids, + light-link runs, pass flags and provenance follow visit order and bitwise image + parity follows geometry order; the merging index's children, inputs strongest first, + are never relied on above a chunk root. Abstract and inactive prims are absent from + the index; each prim's own `purpose` and `visibility` (generic data, not Hydra's + flattened values, which let a child's purpose override an ancestor's `proxy`) prune + the subtree. Each prim is dispatched by Hydra type to its family's index reader. +- **What is read.** A reader reads the Hydra schema where it carries what the direct + reader read (types, transforms, topology, bindings, collections), and Moho's generic + attribute data (`__usdAttributes`, `__usdRelationships`) where the direct reader + depended on authored-ness, metadata or a renderer attribute (`crust:*`), with the + direct readers' rule and decoders (`index/data.rs`). Prototype prims are read at + Moho's propagated paths (`MohoNiPropagatedPrototypes/…`, a point instancer's + `ForInstancer…` copies) and named, in warnings and provenance, by the USD prims they + come from. +- **Stage facts.** What is not imaging data — the layers a scene composed, layer-spec + `invisible` overrides, a material's composition arcs for provenance, a `.mtlx` + reference, openusd's own errors for the `xform.uncomposable` and + `light_link.unreadable_collection` diagnostics, the subtrees to stream, a placement + tool's authored ops — is read off the stage in one module, `index/stage_facts.rs`, + each with its reason. `crust ls` (`listing.rs`) is not an import and walks the stage. +- **The bridge, and its end.** The migration started with every family bridged: the + index walk handed the direct reader the `usd::Prim` at the prim's path, so parity held + from the first commit; each family then moved to its index reader, accepted on + unchanged baselines, instancing last. The bridge went with the direct readers, the + thread-local time (`EvalTimeScope`) and the per-stage epoch that scoped + `/__Prototype_N` keys. +- **The rev rule.** crust reaches openusd only through `moho::openusd` and + `moho::openusd_schemas`; Moho is pinned by git `rev` in the root `Cargo.toml`, one rev + across the stack, bumped in order (Moho, then crust-render, then Mantle), each bump its + own commit, with no manifest naming openusd (`crust-core/tests/one_openusd.rs`). + +### Behaviour changes and parity exceptions + +Three behaviour changes, each a fix to the direct importer toward USD and Hydra, with +the baselines they changed re-recorded and checked (`moho-import` design D3a to D3c): +an undefined prim (an `over` no layer defines) is not imported; a prim inside a native +instance inherits the bindings of the instance's ancestors, through Moho's propagated +prototypes (instances bound differently become different prototypes); and a prototype +is built once per import, its parts and materials reused across a streamed import's +chunks and across point instancers placing one instanced asset. Two listed exceptions: +the number openusd gives a native prototype (`/__Prototype_`, numbered in the order +it is first asked for, per stage) is not compared; and a transform at a shutter offset +`f32` cannot hold reads Moho's sampled `xform/matrix` at that `f32` offset, as Hydra's +sampled data sources do, a time up to about 1e-9 frames off the direct importer's +`f64` one (a fixture pins it; `CRUST_RECORD_F32_SHUTTER`). + +### Moho's gaps + +Seven gaps found planning the change, closed in Moho's `scene-index-gaps` at `fc391a5`: +- **M1**, light linking across inputs: `chain::input` per input, `chain::merged` (light + linking after the merge) on top. Crust uses the shape, and judges the lights' + membership expressions itself after the last chunk (an agreement test checks Moho's + `categories` against its answers). +- **M2**, prims outside the loaded chunks: `streaming::unresolved`, which builds the + side input. +- **M3**, authored-ness on the absolute root (`__usdStageMetadata//{value, + authored}`): the time range and `metersPerUnit` read there. +- **M4**, `primOrigin/scenePath` on every prim: names a prototype prim by its USD source. +- **M5**, strategy (D) in Moho's spike: the streaming memory reference beside (B). +- **M6**, a render pass's `collections`: the `prune`/`renderVisibility`, `matte` and + `cameraVisibility` reads. +- **M7**, the merged children order, documented: the walk does not rely on it above a + chunk root. + +Five more found while migrating, each closed in Moho, none worked around in Crust: +**M8** (`__usdPrimInfo` `typeName` and `apiSchemas`: typing by schema `IsA`, the +`ShapingAPI` cone, the unread-type warnings), **M9** (`mightBeTimeVarying` in the +generic data: motion warnings at the default time) and **M10** (a network node outside +a chunk's mask, filled by `MaterialNodeResolvingSceneIndex`) at `788b1ac`, with Moho's +repin of openusd to `doubleailes/openusd` `d7d2a29`; **M11** (path values re-rooted +inside propagated prototypes: bindings inside instances) at `e64f228`; **M12** (a point +instancer's target inside a native instance copied from the instance's propagated +prototype: Moana's coral) at `d09cc94`, the rev Crust pins at the change's end. + ### Baselines - **Every import of the test suite** — the samples, each import test's fixtures, the CLI @@ -1764,8 +1862,9 @@ What it asked of the import, so a rebuild runs the traversal's code and not a co camera exposure step is `apply_exposure`. - The traversal's light dispatch is `emit_light`, and a cache miss in `cached_material` is `resolve_fresh` (with `resolve_displacement` beside it). -- `camera::local_to_world` (the root-to-prim fold of `compose_with_parent`) gives a - rebuilt light the transform the traversal composed for it. +- `xform::stage_local_to_world` (the root-to-prim fold of `compose_index` over a scene + index of the masked stage) gives a rebuilt light the transform the walk composed for + it. - A rebuilt light's geometry gets the `geom_id`s it had by claiming the ids before it in a scratch `WorldBuilder` (`reserve_slot`) before the emitter runs. From 3edf62458d8b046c7e7ec9886a3c7e67cee2b3cf Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 12:05:13 +0100 Subject: [PATCH 89/95] site: a page on the USD import, through Moho (15.3) Crust reads every stage through Moho's scene index and streams a large stage one subtree at a time; the overview names Moho beside openusd. zola build passes. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/tasks.md | 2 +- site/content/docs/architecture/overview.md | 19 +++-- site/content/docs/architecture/usd-import.md | 75 ++++++++++++++++++++ 3 files changed, 88 insertions(+), 8 deletions(-) create mode 100644 site/content/docs/architecture/usd-import.md diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index e750cc42c..fe77797e1 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -368,7 +368,7 @@ this group, and kept for the whole change. in-place rebuild change together. Update the `usd_import/mod.rs` module table to name each family's index reader. Verify with `grep` that each document names Moho and the rev rule. -- [ ] 15.3 Add a page on the import to the site's architecture section (Crust reads +- [x] 15.3 Add a page on the import to the site's architecture section (Crust reads USD through Moho, the scene index; how it streams), and update any site page that names the direct importer. Verify with `zola build`. - [ ] 15.4 Drop the implementation status note on "One import route, through Moho", and diff --git a/site/content/docs/architecture/overview.md b/site/content/docs/architecture/overview.md index 94ecb9ebc..2734b2456 100644 --- a/site/content/docs/architecture/overview.md +++ b/site/content/docs/architecture/overview.md @@ -2,7 +2,7 @@ title = "Overview" description = "The crates that make up Crust Render, and how a render flows through them." date = 2026-10-01T08:00:00+00:00 -updated = 2026-10-23T08:00:00+00:00 +updated = 2026-10-27T08:00:00+00:00 draft = false weight = 10 sort_by = "weight" @@ -36,7 +36,7 @@ in the repository. (USD import, integrator, materials, lights, volumes, guiding) │ │ │ │ │ │ │ ▼ ▼ ▼ ▼ ▼ ▼ ▼ - crust-rt crust-mtlx crust-jit crust-nn utils openqmc-rs openusd, + crust-rt crust-mtlx crust-jit crust-nn utils openqmc-rs moho ──► openusd, (kernel) (MaterialX) (JIT) (networks) (math) (sampling) opensubdiv-rs ``` @@ -52,9 +52,12 @@ in the repository. | `crust-hydra` | crust behind a C interface for [`hdCrust`](@/docs/help/usdview.md), the Hydra render delegate: a session on the layers the delegate writes, rendered progressively | Hydra (the C++ plugin in `hydra/hdCrust` speaks it) | | `utils` | stateless math: sampling warps, MIS heuristics, luminance | everything | -Three libraries come from outside the workspace, all pure Rust: +These libraries come from outside the workspace, all pure Rust: -- [`openusd`](https://github.com/mxpv/openusd) reads and composes USD stages. +- [`openusd`](https://github.com/mxpv/openusd) reads and composes USD stages, and + [Moho](https://github.com/doubleailes/Moho) is the scene index over it, on the model of + Hydra 2.0, that Crust reads every stage through + ([The USD import](@/docs/architecture/usd-import.md)). - [`openqmc-rs`](https://crates.io/crates/openqmc-rs) is a port of the Academy Software Foundation's [OpenQMC](https://github.com/AcademySoftwareFoundation/openqmc) quasi-Monte Carlo sampler. It produces exactly the same samples as the C++ library. @@ -69,9 +72,11 @@ they could be extracted too. 1. **Command line.** `crust-render` parses its flags and builds the asset loader, which reads the `CRUST_*` texture settings. -2. **USD import** (`crust-core`). A light "index" stage is opened with payloads unloaded, - to read the render settings, pick the camera and list the top-level subtrees. Each - subtree is then composed on its own masked stage, traversed and dropped. Prims become +2. **USD import** (`crust-core`, through Moho's scene index). A light "index" stage is + opened with payloads unloaded, to read the render settings, pick the camera and list + the top-level subtrees. Each subtree is then composed on its own masked stage, added + to the scene index, walked and dropped + ([The USD import](@/docs/architecture/usd-import.md)). Prims become meshes, spheres, curves, instances, lights, volumes or the camera. Materials are resolved and cached. Every image, Ptex or IES file is decoded by `crust-assets`. 3. **Geometry build** (`crust-rt`). Meshes are either baked into world space or kept as diff --git a/site/content/docs/architecture/usd-import.md b/site/content/docs/architecture/usd-import.md new file mode 100644 index 000000000..c85fef910 --- /dev/null +++ b/site/content/docs/architecture/usd-import.md @@ -0,0 +1,75 @@ ++++ +title = "The USD import" +description = "How Crust Render reads a USD stage: through Moho, a scene index in the model of Hydra 2.0, one subtree at a time." +date = 2026-10-27T08:00:00+00:00 +updated = 2026-10-27T08:00:00+00:00 +draft = false +weight = 15 +sort_by = "weight" +template = "docs/page.html" + +[extra] +lead = 'Crust Render reads every stage through Moho, a scene index over openusd built on the model of Hydra 2.0, and streams a large stage one subtree at a time.' +toc = true +top = false ++++ + +## Through a scene index + +The renderer never walks USD prims itself. Every stage is read through +[Moho](https://github.com/doubleailes/Moho), a scene index over the pure-Rust +[openusd](https://github.com/mxpv/openusd) crate, on the model of Hydra 2.0, the scene +description layer of Pixar's OpenUSD: + +- a **scene index** gives each prim a Hydra type (`mesh`, `camera`, `sphereLight`, …) and + its data as **data sources**, read lazily; +- **filters** stack on top of it, as UsdImaging stacks them. Native instancing and point + instancing produce prototypes, flattening composes transforms and visibility, + material binding resolution answers which material each prim renders with, and + light linking turns collections into categories; +- the index owns the **time**, so a render at `-f 12` reads every value at frame 12, and + motion blur reads transforms at the shutter's offsets around it. + +Crust walks the top of that stack in namespace order and hands each prim, by its Hydra +type, to the reader for its family: meshes, curves, implicit shapes, lights, cameras, +materials, instancers, volumes, render settings and products. A reader takes the +schema's data where Hydra carries what Crust needs. Elsewhere it reads the attribute +values Moho carries alongside, with whether each is authored. That is where Crust +reads its own `crust:*` attributes. + +A few facts are not scene description: the layers a stage composed, an override +authored to hide a prim, where a material's specs come from. Crust reads those from the +stage itself, in one place, and nowhere else. + +## One subtree at a time + +A production stage is dominated by USD itself: composing all of the Moana Island costs +75 GiB, a single element about 1 GiB. So a stage with at least four top-level subtrees is +imported in pieces: + +1. A light stage, with payloads unloaded, gives the render settings, the camera and the + list of subtrees. It stays in the index as its weakest input. +2. Each subtree is composed on a stage of its own, masked to it, and added to a + **merging** scene index above the light stage. It is walked, then removed, and its + stage is dropped before the next one opens. +3. A material bound from outside the subtree, or a shading node shared from elsewhere, + is listed by Moho as unresolved. Crust opens one more masked stage holding just + those prims and keeps it, between the subtrees and the light stage, until the last + subtree is done. + +At most one subtree's payloads are composed at a time, which is what bounds the import's +memory. Light links are judged after the last subtree, once every light has been seen. +Set [`CRUST_STREAM_IMPORT=0`](@/docs/reference/environment-variables.md#crust-stream-import) to import +under one fully loaded stage instead. Both give the same scene. + +## Prototypes + +Moho gives each instanced prototype one stable path, the same in every subtree. A +prototype is therefore built once for the whole render and placed wherever it is used, +whichever subtree or point instancer places it. Warnings and the material provenance an +MCP session reports still name the prims by their USD paths, not by the index's. + +## One openusd + +Crust reaches openusd only through Moho, which pins it to one revision, the one Mantle +uses too. A bump moves Moho first, then Crust Render, then Mantle. From 58b1a25a42e9663a68834d21dc05e7cbb7324fed Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 12:05:13 +0100 Subject: [PATCH 90/95] openspec: one import route, through Moho, is implemented (15.4) Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/specs/scene-index-import/spec.md | 3 --- openspec/changes/moho-import/tasks.md | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/openspec/changes/moho-import/specs/scene-index-import/spec.md b/openspec/changes/moho-import/specs/scene-index-import/spec.md index 8736832d5..a3b3be70c 100644 --- a/openspec/changes/moho-import/specs/scene-index-import/spec.md +++ b/openspec/changes/moho-import/specs/scene-index-import/spec.md @@ -17,9 +17,6 @@ scene composed, layer-spec overrides, a material's composition arcs for provenan `.mtlx` reference read off layer specs) SHALL be read from the indexed stage in one module, each with its reason. -*Implementation status: in progress. The direct importer is removed in the change's -final task groups.* - #### Scenario: A render - **WHEN** `crust render -i samples/cornellbox.usda -s 16 --indirect-clamp 0` runs diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index fe77797e1..c08dbd7d1 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -371,5 +371,5 @@ this group, and kept for the whole change. - [x] 15.3 Add a page on the import to the site's architecture section (Crust reads USD through Moho, the scene index; how it streams), and update any site page that names the direct importer. Verify with `zola build`. -- [ ] 15.4 Drop the implementation status note on "One import route, through Moho", and +- [x] 15.4 Drop the implementation status note on "One import route, through Moho", and run `openspec validate moho-import --strict`. From c0f9abfbc6b83ebc2ef9f1f9376348babc906aaf Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 13:27:17 +0100 Subject: [PATCH 91/95] hydra: the CLI side of the hdCrust checks can run under the sysroot loader On a host whose glibc is older than the OpenUSD package needs (anderslanglands/aswf-pixi#57) the delegate runs only through the pixi sysroot's loader and so its libm, and a host crust differs from it by an ulp on a few pixels. crust_sysroot.sh runs the release crust under that same loader; the pixi tasks compare-sysroot and interaction-sysroot point the scripts' CRUST (now overridable) at it. CI runs the scripts unchanged. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- hydra/hdCrust/test/compare.sh | 2 +- hydra/hdCrust/test/crust_sysroot.sh | 18 ++++++++++++++++++ hydra/hdCrust/test/interaction.sh | 2 +- hydra/hdCrust/test/usdc_roundtrip.sh | 2 +- hydra/pixi.toml | 15 +++++++++++++++ 5 files changed, 36 insertions(+), 3 deletions(-) create mode 100755 hydra/hdCrust/test/crust_sysroot.sh diff --git a/hydra/hdCrust/test/compare.sh b/hydra/hdCrust/test/compare.sh index e0b092081..10c3d8672 100644 --- a/hydra/hdCrust/test/compare.sh +++ b/hydra/hdCrust/test/compare.sh @@ -21,7 +21,7 @@ PREFIX="${1:?install prefix of hdCrust (cmake --install ... --prefix)}" WORK="${2:?a work directory}" # `pwd -W` (Git Bash) gives the path a native Windows program can open. ROOT="$(cd "$(dirname "$0")/../../.." && (pwd -W 2>/dev/null || pwd))" -CRUST="$ROOT/target/release/crust" +CRUST="${CRUST:-$ROOT/target/release/crust}" TEST="$PREFIX/bin/hdCrustTest" export PXR_PLUGINPATH_NAME="$PREFIX/plugin/usd/hdCrust/resources" # Git Bash on Windows: leave USD prim paths (`/World/Cam`) alone. diff --git a/hydra/hdCrust/test/crust_sysroot.sh b/hydra/hdCrust/test/crust_sysroot.sh new file mode 100755 index 000000000..a181aeae3 --- /dev/null +++ b/hydra/hdCrust/test/crust_sysroot.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +# The release `crust` run under the pixi environment's sysroot loader and C +# library (glibc 2.39), the ones hdCrustTest and the plugin run under, so the +# CLI side of compare.sh and interaction.sh uses the same libm as the delegate +# and the two images can be bit-equal. Only for a host whose own glibc is +# older than the OpenUSD package needs (anderslanglands/aswf-pixi#57): there +# the plugin runs only through the sysroot's loader, and a CLI on the host's +# libm differs from it by an ulp on a few pixels. The pixi tasks +# `compare-sysroot` and `interaction-sysroot` (hydra/pixi.toml) set +# CRUST to this script; CI (ubuntu, glibc 2.39) runs the scripts as they are. +# +# Invoking the loader directly rather than patchelf-ing the binary: nothing is +# rewritten, so the same target/release/crust still runs on the host. +set -euo pipefail +ROOT="$(cd "$(dirname "$0")/../../.." && pwd)" +SYSROOT="${CONDA_PREFIX:?run inside the hydra pixi environment}/x86_64-conda-linux-gnu/sysroot/lib64" +exec "$SYSROOT/ld-linux-x86-64.so.2" --library-path "$SYSROOT:$CONDA_PREFIX/lib" \ + "$ROOT/target/release/crust" "$@" diff --git a/hydra/hdCrust/test/interaction.sh b/hydra/hdCrust/test/interaction.sh index aa2793440..82952b2a6 100644 --- a/hydra/hdCrust/test/interaction.sh +++ b/hydra/hdCrust/test/interaction.sh @@ -22,7 +22,7 @@ PREFIX="${1:?install prefix of hdCrust}" WORK="${2:?a work directory}" # `pwd -W` (Git Bash) gives the path a native Windows program can open. ROOT="$(cd "$(dirname "$0")/../../.." && (pwd -W 2>/dev/null || pwd))" -CRUST="$ROOT/target/release/crust" +CRUST="${CRUST:-$ROOT/target/release/crust}" TEST="$PREFIX/bin/hdCrustTest" export PXR_PLUGINPATH_NAME="$PREFIX/plugin/usd/hdCrust/resources" export MSYS_NO_PATHCONV=1 diff --git a/hydra/hdCrust/test/usdc_roundtrip.sh b/hydra/hdCrust/test/usdc_roundtrip.sh index 0b236ccfd..959a01ad6 100644 --- a/hydra/hdCrust/test/usdc_roundtrip.sh +++ b/hydra/hdCrust/test/usdc_roundtrip.sh @@ -13,7 +13,7 @@ set -uo pipefail WORK="${1:?a work directory}" ROOT="$(cd "$(dirname "$0")/../../.." && (pwd -W 2>/dev/null || pwd))" -CRUST="$ROOT/target/release/crust" +CRUST="${CRUST:-$ROOT/target/release/crust}" export MSYS_NO_PATHCONV=1 mkdir -p "$WORK" diff --git a/hydra/pixi.toml b/hydra/pixi.toml index 40bfd0096..da232e718 100644 --- a/hydra/pixi.toml +++ b/hydra/pixi.toml @@ -27,6 +27,21 @@ sysroot_linux-64 = ">=2.38" [target.linux-64.activation] scripts = ["hide_mtlx_stdlib.sh"] +# On a host whose glibc is older than the OpenUSD package needs (2.38; its +# metadata says 2.17: anderslanglands/aswf-pixi#57), hdCrust runs only through +# the sysroot's loader (`CONDA_OVERRIDE_GLIBC=2.39`, and the plugin's test +# linked with `-Wl,--dynamic-linker=/lib64/ld-linux-x86-64.so.2 +# -Wl,-rpath,/lib64`), so it takes the sysroot's libm while a host +# `crust` takes the host's, and compare.sh and interaction.sh differ by an ulp +# on a few pixels. These tasks run the CLI side under the same loader +# (hdCrust/test/crust_sysroot.sh), so both sides share one libm: +# pixi run compare-sysroot +# pixi run interaction-sysroot +# CI (ubuntu, glibc 2.39) needs no wrapper and runs the scripts directly. +[target.linux-64.tasks] +compare-sysroot = "CRUST=$PIXI_PROJECT_ROOT/hdCrust/test/crust_sysroot.sh bash hdCrust/test/compare.sh" +interaction-sysroot = "CRUST=$PIXI_PROJECT_ROOT/hdCrust/test/crust_sysroot.sh bash hdCrust/test/interaction.sh" + # What that sysroot needs of the machine (ubuntu-latest has 2.39). Linux only. [system-requirements] libc = "2.39" From 9028daac947698754e2235a2ec43a3543dfd9ee0 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 13:27:17 +0100 Subject: [PATCH 92/95] openspec: moho-import 14.1 and 14.4 are done The Hydra workflow passes on the reference runner at 58b1a25a, and locally with the CLI under the sysroot loader; ALab and Moana pass import_parity on the final code, their runs recorded. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- openspec/changes/moho-import/tasks.md | 4 +-- openspec/specs/usd-scene-import/design.md | 33 ++++++++++++++++------- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/openspec/changes/moho-import/tasks.md b/openspec/changes/moho-import/tasks.md index c08dbd7d1..297bda98c 100644 --- a/openspec/changes/moho-import/tasks.md +++ b/openspec/changes/moho-import/tasks.md @@ -342,7 +342,7 @@ this group, and kept for the whole change. ## 14. Hosts and large scenes -- [ ] 14.1 hdCrust: run `hydra/hdCrust/test/compare.sh`, `interaction.sh` and +- [x] 14.1 hdCrust: run `hydra/hdCrust/test/compare.sh`, `interaction.sh` and `usdc_roundtrip.sh`. Verify that all three pass. - [x] 14.2 Run `crust diagnostic --budget 2m` on `samples/cornellbox.usda` and compare its report with the one recorded from the direct importer in group 2, timings aside, @@ -350,7 +350,7 @@ this group, and kept for the whole change. reports and green tests. - [x] 14.3 Run `scripts/check_images.sh check` against the goldens recorded from the direct importer in group 2. Verify exit 0. -- [ ] 14.4 Run `scripts/import_parity.sh check` on ALab and Moana against their +- [x] 14.4 Run `scripts/import_parity.sh check` on ALab and Moana against their baselines on the final commit. Verify that both exit 0 and that the full CI is green, and record the runs in the design record. diff --git a/openspec/specs/usd-scene-import/design.md b/openspec/specs/usd-scene-import/design.md index 288555de1..6c05d4439 100644 --- a/openspec/specs/usd-scene-import/design.md +++ b/openspec/specs/usd-scene-import/design.md @@ -1833,15 +1833,30 @@ crust-core's test-only `parity` feature, which digests every import. counts change, and the verdict flipped in two runs of three. With LTO on, cornellbox still renders about 2.5% slower than the direct importer's binary (4.56 s against 4.45 s at 1024 spp), with no render code changed and the scene digests equal. -- hdCrust (`compare.sh`, `interaction.sh`, `usdc_roundtrip.sh`) cannot pass on this - machine: its glibc is 2.34 and the pixi environment's OpenUSD needs 2.38, so the - plugin runs only through the sysroot's loader (`CONDA_OVERRIDE_GLIBC=2.39`, linked - with `--dynamic-linker` into the sysroot). There `usdc_roundtrip.sh` passes, and - `compare.sh` and `interaction.sh` show one-ulp differences between the delegate - (the sysroot's libm) and the CLI (the host's) on a few pixels. hdCrust built at the - direct importer's commit gives the same outcomes, and its images are bit-identical to - this build's, delegate and CLI alike. The CI runner (glibc 2.39) is where the three - must pass. +- hdCrust (`compare.sh`, `interaction.sh`, `usdc_roundtrip.sh`): the Hydra workflow + passes on the reference runner (ubuntu, glibc 2.39) at `58b1a25a`, + https://github.com/doubleailes/Crust/actions/runs/40494072921. On this machine + (glibc 2.34; the OpenUSD package needs 2.38, anderslanglands/aswf-pixi#57) the plugin + runs only through the pixi sysroot's loader, so it takes the sysroot's libm while a + host `crust` takes the host's: the two sides differed by an ulp on a few pixels, + before the change as after it (hdCrust built at the direct importer's commit gave + the same outcomes and bit-identical images). With the CLI under the same loader + (`pixi run compare-sysroot` / `interaction-sysroot`, `hydra/pixi.toml`), all three + pass locally too. + +### Final runs (task 14.4) + +`scripts/import_parity.sh check` at `58b1a25a` (the change's code as of `933ce471`; what +followed is documentation), alone on the machine: + +| scene | report and 16 spp image | peak memory (ratio) | `Parse USD stage` (ratio) | +|---|---|---|---| +| ALab | equal | 21.14 GiB (1.93) | 57.13 s (1.84) | +| Moana | equal | 24.18 GiB (1.01) | 2171.33 s (12.50) | + +Both against the reports re-recorded for D3c (§ Instancing on the index) and the direct +importer's EXRs. ALab's memory and Moana's import time are the follow-ups recorded +above, for Moho after S2. ## Provenance and in-place rebuilds From f58c950bbbcde65d3f7e7b25df85de1c71a77061 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 15:52:13 +0100 Subject: [PATCH 93/95] crust: sample_imports_are_deterministic skips a sample whose external assets are absent materialx_lion, _teapot and _showcase reference the DPEL MaterialX assets by absolute path, outside the repository (not committed). Where those files exist the sample is compared against its recorded baseline as before; where they do not (CI), the composed layers differ, no baseline matches, and the test now skips it with the paths it needs, as crust-render's import_parity.rs already does. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- crates/crust-core/tests/warnings.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/crates/crust-core/tests/warnings.rs b/crates/crust-core/tests/warnings.rs index 79447c598..bed754957 100644 --- a/crates/crust-core/tests/warnings.rs +++ b/crates/crust-core/tests/warnings.rs @@ -637,6 +637,21 @@ fn a_dome_map_without_a_decoder() { assert_eq!(codes(&scene), [WarningCode::AssetUnsupportedByHost]); } +/// The absolute asset paths `stage` names (`@/…@`) that are not on disk: a +/// sample referencing a file outside the repository (the DPEL MaterialX +/// assets, not committed) has its baseline recorded where that file exists, +/// so it is skipped, and said so, where it does not (CI), as +/// `crust-render/tests/import_parity.rs` skips it. +fn missing_external_assets(stage: &Path) -> Vec { + let text = std::fs::read_to_string(stage).expect("read the sample"); + text.split('@') + .skip(1) + .step_by(2) + .filter(|path| path.starts_with('/') && !Path::new(path).exists()) + .map(str::to_owned) + .collect() +} + /// Every sample imports to the same records twice, and every code it raises /// is one the vocabulary lists. #[test] @@ -650,6 +665,15 @@ fn sample_imports_are_deterministic() { stages.sort(); assert!(!stages.is_empty()); for stage in stages { + let missing = missing_external_assets(&stage); + if !missing.is_empty() { + eprintln!( + "skipped {}: needs {} (not committed)", + stage.display(), + missing.join(", ") + ); + continue; + } let first = Scene::from_usd(&stage).map(|s| s.warnings); let second = Scene::from_usd(&stage).map(|s| s.warnings); match (first, second) { From ab55f8430677f33155dc82fb37298dcafa4e4733 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 16:45:48 +0100 Subject: [PATCH 94/95] scripts: the parity image run fails on any import difference and on a failed build Review of PR #415 (Qodo): a test listed in parity_images.expected had all of its failures excused, so a listed test (the sample report test among them) could hide a baseline mismatch; and a build error or a test binary dying before its summary left no FAILED line and passed. Now every parity: diagnostic fails the run, whichever test or crust process raised it, but an image difference of a stage listed as stage: (cornellbox_guided.usda, nondeterministic guided render; its digest is still compared); a listed test's failure is excused, its import differences are not; a build error, a test target with no result, or cargo failing without a failed test fails the run. every_sample_imports_as_its_baseline is no longer listed: in the image run it still runs every sample's check (digest and image compared in the crust process) and only skips the report comparison. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- crates/crust-render/tests/import_parity.rs | 12 ++- openspec/changes/moho-import/design.md | 22 +++-- scripts/parity_images.expected | 4 +- scripts/parity_images.sh | 102 +++++++++++++++++---- 4 files changed, 107 insertions(+), 33 deletions(-) diff --git a/crates/crust-render/tests/import_parity.rs b/crates/crust-render/tests/import_parity.rs index 786a5626a..afcb21412 100644 --- a/crates/crust-render/tests/import_parity.rs +++ b/crates/crust-render/tests/import_parity.rs @@ -90,8 +90,11 @@ fn report(stage: &Path) -> String { } /// The report baseline comparison for one sample: `None` when equal (or -/// recorded), else what differs. -fn compare(stage: &Path, record: bool) -> Option { +/// recorded), else what differs. In the image run (`images`) the check still +/// runs — its `crust` process compares the digest and the image, and fails on +/// a difference — but the report is not compared: the second import the image +/// takes doubles the textures it counts. +fn compare(stage: &Path, record: bool, images: bool) -> Option { let name = stage .file_name() .expect("a file") @@ -99,6 +102,9 @@ fn compare(stage: &Path, record: bool) -> Option { .into_owned(); let dir = baseline_dir(); let actual = report(stage); + if images { + return None; + } let file = dir.join(format!("{name}.json")); if record { std::fs::create_dir_all(&dir).expect("baseline dir"); @@ -165,7 +171,7 @@ fn every_sample_imports_as_its_baseline() { let failures: Vec = std::thread::scope(|scope| { let runs: Vec<_> = stages .iter() - .map(|stage| scope.spawn(move || compare(stage, record))) + .map(|stage| scope.spawn(move || compare(stage, record, images))) .collect(); runs.into_iter() .filter_map(|run| run.join().expect("a sample's check panicked")) diff --git a/openspec/changes/moho-import/design.md b/openspec/changes/moho-import/design.md index 96fef563b..408c22434 100644 --- a/openspec/changes/moho-import/design.md +++ b/openspec/changes/moho-import/design.md @@ -447,14 +447,20 @@ let through. It is recorded under Open Questions and left for its own behavioura change. The image run (`scripts/parity_images.sh`) lists the tests it expects to fail in -`scripts/parity_images.expected`, each with its reason. All but one fail because the -second import and its render are visible to them (asset requests, log lines, timings). -The exception is `guided_tiles_and_rows_are_bit_identical`. Its `cornellbox_guided.usda` -image differs from the baseline in about 1 run in 6, always with the same other hash, -on the direct importer as on the index import. Its digest always matches. Guided -rendering is nondeterministic there; that is not an import difference. It is listed so -that the run stays meaningful, and its cause is a crust-render follow-up to investigate -separately, outside this change. +`scripts/parity_images.expected`, each with its reason: the second import and its render +are visible to them (asset requests, log lines, timings). A listing excuses a test's +failure, never an import difference: every `parity:` diagnostic in the run fails it, +whichever test or `crust` process raised it, and so does a build error or a test target +that reports no result (both found in review of PR #415, which showed a listed test could +hide a baseline mismatch and a failed build could pass). `every_sample_imports_as_its_baseline` +is no longer listed: in the image run it still runs each sample's check, whose `crust` +process compares the digest and the image, and only skips the report comparison, which the +second import's doubled texture counts would fail. The one exception is a stage, not a +test: `stage:cornellbox_guided.usda` excuses that stage's *image* differences. Its image +differs from the baseline in about 1 run in 6, always with the same other hash, on the +direct importer as on the index import; its digest always matches and is still compared. +Guided rendering is nondeterministic there; that is not an import difference, and its +cause is a crust-render follow-up to investigate separately, outside this change. ### Moho-side follow-ups (closed in Moho's `scene-index-gaps`) diff --git a/scripts/parity_images.expected b/scripts/parity_images.expected index 0074bcccb..0c4d1e56f 100644 --- a/scripts/parity_images.expected +++ b/scripts/parity_images.expected @@ -1,3 +1,4 @@ +stage:cornellbox_guided.usda # its guided render is nondeterministic (about 1 run in 6, the direct importer's too): its image may differ from the baseline in any test that imports it; its digest is still compared a_checkpointed_render_ends_with_the_files_of_one_without a_declined_preview_texture_falls_back_to_its_fallback_then_the_constant a_long_render_returns_within_its_budget_and_keeps_refining @@ -14,8 +15,6 @@ an_unauthored_and_a_full_window_are_the_same_region ctrl_c_writes_the_partial_render_and_exits_130 displaced_at_cage_logs_once_and_counts_every_mesh dome_texture_is_resolved_and_requested_from_the_host -every_sample_imports_as_its_baseline -guided_tiles_and_rows_are_bit_identical # guided rendering is nondeterministic (about 1 run in 6, the direct importer's too); not an import difference materialx_textures_reach_the_host_with_their_udim_token only_meshes_open_displacement_maps overscan_is_clipped_with_one_warning @@ -23,6 +22,5 @@ preview_textures_anchor_on_their_layer_and_read_the_named_primvar preview_textures_reach_the_host_with_their_source_color_space products_that_disagree_on_depth_of_field_render_with_the_first ptex_load_time_is_billed_to_the_asset_phase -sample_imports_are_deterministic # imports cornellbox_guided.usda, whose guided render is nondeterministic (see guided_tiles_and_rows_are_bit_identical) tests_ffi::a_panicking_material_during_a_render_is_an_error_and_the_next_apply_renders the_documented_look_dev_session_runs diff --git a/scripts/parity_images.sh b/scripts/parity_images.sh index 566519ec8..1626c2df1 100755 --- a/scripts/parity_images.sh +++ b/scripts/parity_images.sh @@ -13,9 +13,19 @@ # visible to the few tests that count asset requests or log lines, time a # render, or render a material that panics on purpose; those fail in this mode # and are listed in scripts/parity_images.expected (`#` starts a comment -# there, giving each entry's reason). The run passes when no import differs -# from its baseline (no `parity:` panic, except in a listed test) and every -# other failure is a listed one. +# there, giving each entry's reason). +# +# The run passes only when: +# - cargo built every test target and each one reported a result (a build +# error, or a test binary that dies before its summary, fails the run); +# - no import differs from its baseline: every `parity:` diagnostic in the log +# fails the run, whichever test or `crust` process raised it, unless it is +# an image difference of a stage listed as `stage:` in the expected +# file (a stage whose render is known to vary from run to run, with its +# reason; its digest is still compared); +# - every failed test is listed by name (it fails here for a reason that is +# not an import difference, which the rule above still checks), or failed +# only on excused image differences. set -uo pipefail cd "$(dirname "$0")/.." @@ -24,33 +34,87 @@ export CRUST_PARITY_IMAGES=1 if [ "${1:-}" = record ]; then export CRUST_RECORD_BASELINES=1 fi -LOG="$(mktemp)" -trap 'rm -f "$LOG"' EXIT -CARGO_PROFILE_RELEASE_LTO=false CARGO_PROFILE_RELEASE_CODEGEN_UNITS=16 \ - cargo test --release --workspace --no-fail-fast >"$LOG" 2>&1 +LOG="${PARITY_IMAGES_LOG:-}" +if [ -z "$LOG" ]; then + LOG="$(mktemp)" + trap 'rm -f "$LOG"' EXIT + CARGO_PROFILE_RELEASE_LTO=false CARGO_PROFILE_RELEASE_CODEGEN_UNITS=16 \ + cargo test --release --workspace --no-fail-fast >"$LOG" 2>&1 + cargo_status=$? +else + # PARITY_IMAGES_LOG names the log of a run already made (and + # PARITY_IMAGES_STATUS its exit status): the checks below, without the run. + cargo_status="${PARITY_IMAGES_STATUS:-0}" +fi status=0 -expected="$(sed 's/#.*//; s/[[:space:]]*$//; /^$/d' scripts/parity_images.expected | sort -u)" -# A `parity:` panic in a listed test is that test's listed failure. -differ="$(grep -A3 "panicked at crates/crust-core/src/parity.rs" "$LOG" \ - | LISTED="$expected" awk ' - BEGIN { n = split(ENVIRON["LISTED"], l, "\n"); for (i = 1; i <= n; i++) skip[l[i]] = 1 } - /panicked at crates\/crust-core\/src\/parity.rs/ { - name = $0; sub(/^thread \047/, "", name); sub(/\047.*/, "", name); keep = !(name in skip); next - } - keep && /^parity:|baseline:|import:/ { print }')" -if [ -n "$differ" ]; then +entries="$(sed 's/#.*//; s/[[:space:]]*$//; /^$/d' scripts/parity_images.expected | sort -u)" +tests_listed="$(printf '%s\n' "$entries" | grep -v '^stage:' || true)" +stages_listed="$(printf '%s\n' "$entries" | sed -n 's/^stage://p')" + +# The build, and a result from every test target. +if grep -qE '^error(\[E[0-9]+\])?: ' "$LOG" \ + && grep -vE '^error: ([0-9]+ targets? failed|test failed)' "$LOG" | grep -qE '^error(\[E[0-9]+\])?: '; then + echo "THE TESTS DID NOT BUILD OR RUN:" + grep -E '^error' "$LOG" | grep -vE '^error: ([0-9]+ targets? failed|test failed)' | head -20 + status=1 +fi +silent="$(awk ' + /^ *(Running|Doc-tests) / { if (pending) print target; target = $0; pending = 1; next } + /^test result: / { pending = 0 } + END { if (pending) print target }' "$LOG")" +if [ -n "$silent" ]; then + echo "TEST TARGETS THAT REPORTED NO RESULT:" + printf '%s\n' "$silent" + status=1 +fi + +# A `parity:` diagnostic is excused only when it is an image difference +# (`parity: importing differs from its baseline <...>.image`) of a +# listed stage: a digest difference, a missing baseline or a failed +# re-import never is. +excused() { + local stage + stage="$(printf '%s\n' "$1" | sed -nE 's/.*parity: importing ([^ ]+) differs from its baseline [^ ]+\.image,.*/\1/p' | sed 's#.*/##')" + [ -n "$stage" ] && printf '%s\n' "$stages_listed" | grep -qxF "$stage" +} + +# Every `parity:` diagnostic, whichever test or process raised it. +unexplained="$(grep -E 'parity: ' "$LOG" | while IFS= read -r line; do + excused "$line" || printf '%s\n' "$line" +done)" +if [ -n "$unexplained" ]; then echo "IMPORTS DIFFER FROM THEIR BASELINES:" - printf '%s\n' "$differ" | head -60 + printf '%s\n' "$unexplained" | head -60 status=1 fi + +# Each failed test, judged by its `---- stdout ----` section: listed +# by name, or failing only on excused image differences. failed="$(grep -E '^test .* FAILED$' "$LOG" | sed 's/^test //; s/ \.\.\. FAILED$//' | sort -u)" -unexpected="$(comm -23 <(printf '%s\n' "$failed" | sed '/^$/d') <(printf '%s\n' "$expected"))" +unexpected="$(printf '%s\n' "$failed" | sed '/^$/d' | while IFS= read -r name; do + printf '%s\n' "$tests_listed" | grep -qxF "$name" && continue + diagnostics="$(awk -v n="---- $name stdout ----" ' + $0 == n { on = 1; next } + on && (/^---- .* stdout ----$/ || /^failures:$/) { on = 0 } + on { print }' "$LOG" | grep -E 'parity: ')" + only_excused=1 + [ -z "$diagnostics" ] && only_excused=0 + while IFS= read -r line; do + [ -z "$line" ] || excused "$line" || only_excused=0 + done <<<"$diagnostics" + [ "$only_excused" = 1 ] || printf '%s\n' "$name" +done)" if [ -n "$unexpected" ]; then echo "TESTS FAILING THAT ARE NOT EXPECTED TO IN THIS MODE:" printf '%s\n' "$unexpected" status=1 fi +if [ "$status" = 0 ] && [ "$cargo_status" != 0 ] && [ -z "$failed" ]; then + echo "CARGO FAILED (exit $cargo_status) WITHOUT A FAILED TEST:" + tail -20 "$LOG" + status=1 +fi if [ "$status" = 0 ]; then echo "parity images: every import renders as its baseline" fi From b5ee1dec1a88b5460503293338174be58eecd7a2 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Tue, 27 Oct 2026 16:45:48 +0100 Subject: [PATCH 95/95] crust: a relative asset path is anchored on the layer that authors it Review of PR #415 (Qodo): the index readers anchored an asset value openusd had not resolved on the root layer's directory, where the direct importer used the attribute's authoring layer. openusd anchors an asset value on its layer and records where it resolves even with no file there (a UDIM set, a missing texture), so asset-typed paths were right; a path authored as a string was not. asset_value_path now takes the authoring layer's directory, read in stage_facts (authoring_layer_dir, following an interface connection), at every call site: UsdUVTexture and Pxr Ptex files, MaterialX filenames, the precomp kernel, IES, rect and dome light textures. tests/asset_anchoring.rs (recorded from the direct importer): assets in a referenced layer two directories below the root, a UDIM set, a missing file, a MaterialX filename and a light texture, and a string-typed texture path, which failed before this change. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01PUSvMHN9Akk66u2oG3rUbF --- .../crust-core/src/scene/usd_import/assets.rs | 25 ++- .../src/scene/usd_import/index/stage_facts.rs | 25 +++ .../crust-core/src/scene/usd_import/lights.rs | 36 ++-- .../src/scene/usd_import/materials.rs | 39 +++- crates/crust-core/src/scene/usd_import/mod.rs | 10 +- .../src/scene/usd_import/mtlx_network.rs | 26 ++- .../src/scene/usd_import/precomp.rs | 16 +- .../src/scene/usd_import/preview.rs | 6 +- .../src/scene/usd_import/products.rs | 18 +- crates/crust-core/tests/asset_anchoring.rs | 192 ++++++++++++++++++ .../root_usda-4e355789b700403e-1.digest | 38 ++++ .../root_usda-4e355789b700403e-1.image | 1 + .../root_usda-8e031f11860a45d8-1.digest | 38 ++++ .../root_usda-8e031f11860a45d8-1.image | 1 + 14 files changed, 427 insertions(+), 44 deletions(-) create mode 100644 crates/crust-core/tests/asset_anchoring.rs create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-4e355789b700403e-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-4e355789b700403e-1.image create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-8e031f11860a45d8-1.digest create mode 100644 crates/crust-core/tests/data/import_baselines/root_usda-8e031f11860a45d8-1.image diff --git a/crates/crust-core/src/scene/usd_import/assets.rs b/crates/crust-core/src/scene/usd_import/assets.rs index 78f7540e1..4cfb7f2b8 100644 --- a/crates/crust-core/src/scene/usd_import/assets.rs +++ b/crates/crust-core/src/scene/usd_import/assets.rs @@ -151,8 +151,22 @@ pub(super) fn load_ptex( } /// An asset value as a path: openusd's `resolved_path` when it has one, else -/// the authored string, a relative one anchored against the root layer. -pub(super) fn asset_value_path(value: &sdf::Value, stage_path: &Path) -> Option { +/// the authored string, a relative one anchored against the directory of the +/// layer that authors it (`layer_dir`, read off the stage: +/// `stage_facts::authoring_layer_dir`), the root layer's when that is unknown. +/// +/// openusd's value resolution anchors an `asset` value on its authoring layer +/// and records where it resolves even when no file is there (a `` set, +/// a missing texture), and the scene index carries that value, so an asset +/// authored in a sublayer or a reference (ALab's look layers, five directories +/// below `entry.usda`) reaches the host from its own layer's directory. A +/// path authored as a `string` carries no resolution: `layer_dir` anchors it +/// as the direct importer did (`tests/asset_anchoring.rs`). +pub(super) fn asset_value_path( + value: &sdf::Value, + stage_path: &Path, + layer_dir: &dyn Fn() -> Option, +) -> Option { let (authored, resolved) = match value { sdf::Value::AssetPath(p) => (p.as_str().to_string(), p.resolved_path()), sdf::Value::String(p) => (p.clone(), None), @@ -170,10 +184,11 @@ pub(super) fn asset_value_path(value: &sdf::Value, stage_path: &Path) -> Option< if candidate.is_absolute() { return Some(candidate.to_path_buf()); } - Some( + let dir = layer_dir().unwrap_or_else(|| { stage_path .parent() .unwrap_or_else(|| Path::new(".")) - .join(candidate), - ) + .to_path_buf() + }); + Some(dir.join(candidate)) } diff --git a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs index 5bac39292..d4244e84e 100644 --- a/crates/crust-core/src/scene/usd_import/index/stage_facts.rs +++ b/crates/crust-core/src/scene/usd_import/index/stage_facts.rs @@ -373,3 +373,28 @@ pub(in crate::scene::usd_import) struct AuthoredOps { pub(in crate::scene::usd_import) order: Vec, pub(in crate::scene::usd_import) place: Option, } + +/// The directory of the layer that authors the value of the attribute at +/// `attr` (following its connections to an interface input that supplies +/// it): where a relative asset path the value holds is anchored, as USD +/// anchors an asset path on its layer. Which layer authors an opinion is a +/// fact of the layer stack, not scene description (design D7). `None` when +/// the stage holds no such opinion. +pub(in crate::scene::usd_import) fn authoring_layer_dir( + stage: &Stage, + attr: &sdf::Path, +) -> Option { + let mut at = attr.clone(); + // An interface chain is short; the bound keeps a cycle from looping. + for _ in 0..16 { + let (prim, name) = at.split_property()?; + let attribute = super::super::prim_at(stage, prim).attribute(name); + if attribute.has_authored_value().unwrap_or(false) { + let site = attribute.property_stack().ok()?.into_iter().next()?; + let dir = Path::new(&site.layer).parent()?.to_path_buf(); + return (!dir.as_os_str().is_empty()).then_some(dir); + } + at = attribute.connections().ok()?.into_iter().next()?; + } + None +} diff --git a/crates/crust-core/src/scene/usd_import/lights.rs b/crates/crust-core/src/scene/usd_import/lights.rs index ac2d3daf0..d5a613d47 100644 --- a/crates/crust-core/src/scene/usd_import/lights.rs +++ b/crates/crust-core/src/scene/usd_import/lights.rs @@ -201,9 +201,11 @@ fn lux_shaping( ) .unwrap_or(0.0); - let ies_file = prim - .value("inputs:shaping:ies:file") - .and_then(|v| asset_value_path(&v, caches.stage_path)); + let ies_file = prim.value("inputs:shaping:ies:file").and_then(|v| { + asset_value_path(&v, caches.stage_path, &|| { + caches.layer_dir(prim.path(), "inputs:shaping:ies:file") + }) + }); if let Some(path) = ies_file { let assets = caches.assets; let profile = cached_asset( @@ -509,9 +511,11 @@ fn rect_light_texture( caches: &mut ImportCaches, ) -> Option> { let file = "inputs:texture:file"; - let path = prim - .value(file) - .and_then(|v| asset_value_path(&v, caches.stage_path))?; + let path = prim.value(file).and_then(|v| { + asset_value_path(&v, caches.stage_path, &|| { + caches.layer_dir(prim.path(), file) + }) + })?; let space = texture_color_space(prim, file, caches.working); let assets = caches.assets; let loaded = cached_asset( @@ -799,7 +803,16 @@ pub(super) fn emit_dome_light( dome: &DomeInputs, world_xf: GMat4, ) { - let (lights, stage_path, assets) = (&mut ctx.lights, ctx.stage_path, ctx.assets); + // The authoring layer anchors the path, not the root layer: the Moana + // island's lights author `../textures/islandsun.exr` relative to + // `usd/island.usda` (see `asset_value_path`). + let file = "inputs:texture:file"; + let texture_path = prim.value(file).and_then(|v| { + asset_value_path(&v, ctx.stage_path, &|| { + ctx.caches.layer_dir(prim.path(), file) + }) + }); + let (lights, assets) = (&mut ctx.lights, ctx.assets); let working = ctx.caches.working; // Accumulates time spent in the host's decoder, so the report can // separate "decoding a 14k HDRI" from the rest of the traversal. @@ -812,14 +825,7 @@ pub(super) fn emit_dome_light( } = lux_params(prim, working); let format = prim.value("inputs:texture:format").and_then(decode_text); - // The authoring layer anchors the path, not the root layer: the Moana - // island's lights author `../textures/islandsun.exr` relative to - // `usd/island.usda` (see `asset_path`). - let file = "inputs:texture:file"; - let map = match prim - .value(file) - .and_then(|v| asset_value_path(&v, stage_path)) - { + let map = match texture_path { Some(texture) => match format.as_deref() { // `automatic` infers from the image; for the equirectangular // images a dome light normally carries that means latlong. diff --git a/crates/crust-core/src/scene/usd_import/materials.rs b/crates/crust-core/src/scene/usd_import/materials.rs index 452c1d216..f53eec3c3 100644 --- a/crates/crust-core/src/scene/usd_import/materials.rs +++ b/crates/crust-core/src/scene/usd_import/materials.rs @@ -649,8 +649,8 @@ fn pxr_displacement( id(what) ); }; - let sources: Vec<&super::index::network::Node> = match source_node.id.as_str() { - "PxrPtexture" => vec![source_node], + let sources: Vec<(&str, &super::index::network::Node)> = match source_node.id.as_str() { + "PxrPtexture" => vec![(source, source_node)], // RenderMan's `PxrBlend` operation 18 is multiply — the island also // uses it to mask its bump colour. `resultR` of the blend is the // product of the two inputs' red channels. @@ -658,7 +658,7 @@ fn pxr_displacement( let top = upstream(network, source, "topRGB"); let bottom = upstream(network, source, "bottomRGB"); match (top, bottom) { - (Some((_, t)), Some((_, b))) if [t, b].iter().all(|s| s.id == "PxrPtexture") => { + (Some(t), Some(b)) if [t.1, b.1].iter().all(|s| s.id == "PxrPtexture") => { vec![t, b] } _ => { @@ -673,12 +673,18 @@ fn pxr_displacement( } }; let mut maps = Vec::with_capacity(sources.len()); - for tex in &sources { + for (name, tex) in &sources { + let node = network.path(name); let file = tex .parameters .get("filename") .and_then(|p| p.value.as_ref()) - .and_then(|v| asset_value_path(v, caches.stage_path))?; + .and_then(|v| { + asset_value_path(v, caches.stage_path, &|| { + node.as_ref() + .and_then(|n| src.layer_dir(n, "inputs:filename")) + }) + })?; maps.push(crate::PtexRef(load_ptex( &file, crate::ColorSpace::RAW, @@ -901,6 +907,7 @@ fn inline_mtlx_material( let net = super::mtlx_network::translate( &|p| src.at(p), caches.stage_path, + &|p, name| src.layer_dir(p, name), &caches.materials.library, surface, volume, @@ -951,6 +958,9 @@ pub(super) struct MatSource { /// instancing chain holds it at, its name)`: its prims are read there /// and named here ([`super::index::data::PrimData::rebased`]). rebase: Option<(sdf::Path, sdf::Path)>, + /// The stage that composes the material, for what is read off it: the + /// layer an asset value is authored in ([`MatSource::layer_dir`]). + stage: Stage, } impl MatSource { @@ -971,6 +981,7 @@ impl MatSource { index: inst.clone(), _input: None, rebase: Some((data.clone(), name.clone())), + stage: home.clone(), }; } // Read at the top of the import's chain, where the material-node @@ -994,9 +1005,18 @@ impl MatSource { index, _input: input, rebase: None, + stage: home.clone(), } } + /// The directory of the layer authoring the value of attribute `name` of + /// the prim at `path` (read as the material is, so named by its USD + /// path): where a relative asset path in it is anchored. + pub(super) fn layer_dir(&self, path: &sdf::Path, name: &str) -> Option { + let attr = self.at(path).path().append_property(name).ok()?; + super::index::stage_facts::authoring_layer_dir(&self.stage, &attr) + } + /// The prim at `path`, read as the material is. pub(super) fn at(&self, path: &sdf::Path) -> super::index::data::PrimData { use super::index::data::PrimData; @@ -1300,10 +1320,11 @@ pub(super) fn material_ptex( src: &MatSource, caches: &mut ImportCaches<'_>, ) -> Option { - let path = src - .prim - .value("inputs:surfaceMap") - .and_then(|v| asset_value_path(&v, caches.stage_path))?; + let path = src.prim.value("inputs:surfaceMap").and_then(|v| { + asset_value_path(&v, caches.stage_path, &|| { + src.layer_dir(src.prim.path(), "inputs:surfaceMap") + }) + })?; let space = crate::ColorSpace::new(Space::G22_REC709, caches.working); load_ptex(&path, space, &src.path, caches).map(crate::PtexRef) diff --git a/crates/crust-core/src/scene/usd_import/mod.rs b/crates/crust-core/src/scene/usd_import/mod.rs index be9852932..9f7a53b9b 100644 --- a/crates/crust-core/src/scene/usd_import/mod.rs +++ b/crates/crust-core/src/scene/usd_import/mod.rs @@ -1521,7 +1521,7 @@ fn read_index( let mut settings = import_render_settings(scene, pass); // The products the render writes. The first one's camera and resolution // are the render's: the settings' own unless that product overrides them. - let products = import_render_products(scene, Some(path), pass); + let products = import_render_products(scene, Some((path, index)), pass); if let Some((w, h)) = products.resolution { settings = settings.with_resolution(w, h); } @@ -2166,6 +2166,14 @@ impl<'a> ImportCaches<'a> { /// The prim at `path` of the scene index being walked, for a reader that /// has moved onto the index but is reached from one still bridged (a /// prototype's parts through the instancing reader). + /// The directory of the layer authoring attribute `name` of the prim at + /// `path` on the walked input's stage: where a relative asset path in it + /// is anchored ([`assets::asset_value_path`]). + fn layer_dir(&self, path: &sdf::Path, name: &str) -> Option { + let (_, stage) = self.scene.as_ref()?; + index::stage_facts::authoring_layer_dir(stage, &path.append_property(name).ok()?) + } + fn prim_data(&self, path: &sdf::Path) -> index::data::PrimData { match &self.scene { Some((scene, _)) => index::data::PrimData::in_index(scene, path), diff --git a/crates/crust-core/src/scene/usd_import/mtlx_network.rs b/crates/crust-core/src/scene/usd_import/mtlx_network.rs index 44e01a983..4042dc68c 100644 --- a/crates/crust-core/src/scene/usd_import/mtlx_network.rs +++ b/crates/crust-core/src/scene/usd_import/mtlx_network.rs @@ -58,6 +58,7 @@ pub(super) fn is_mtlx_id(id: &str, library: &Library) -> bool { pub(super) fn translate( at: &dyn Fn(&sdf::Path) -> PrimData, stage_path: &Path, + layer_dir: &LayerDir<'_>, library: &Library, surface: Option<(&Shading, &str)>, volume: Option<(&Shading, &str)>, @@ -65,6 +66,7 @@ pub(super) fn translate( let mut b = Builder { at, stage_path, + layer_dir, library, nodes: Vec::new(), names: HashMap::new(), @@ -83,9 +85,15 @@ pub(super) fn translate( } } +/// The directory of the layer authoring attribute `name` of the node prim at +/// `path` (a network path): where a relative `filename` it holds is anchored +/// ([`asset_value_path`]). +pub(super) type LayerDir<'a> = dyn Fn(&sdf::Path, &str) -> Option + 'a; + struct Builder<'s> { at: &'s dyn Fn(&sdf::Path) -> PrimData, stage_path: &'s Path, + layer_dir: &'s LayerDir<'s>, library: &'s Library, nodes: Vec, /// Shader prim path → its node's name (the path itself), once translated. @@ -113,6 +121,7 @@ pub(super) struct ValueNetwork { pub(super) fn translate_value_graph( at: &dyn Fn(&sdf::Path) -> PrimData, stage_path: &Path, + layer_dir: &LayerDir<'_>, graph: &sdf::Path, ) -> ValueNetwork { let path = graph.as_str().to_string(); @@ -123,6 +132,7 @@ pub(super) fn translate_value_graph( let mut b = Builder { at, stage_path, + layer_dir, library: &library, nodes: Vec::new(), names: HashMap::new(), @@ -340,7 +350,12 @@ impl Builder<'_> { sdf::Value::String(s) => s.clone(), sdf::Value::Token(t) => t.as_str().to_string(), sdf::Value::AssetPath(_) if mtype == "filename" => { - asset_value_path(value, self.stage_path)? + let layer_dir = || { + let attr = sdf::Path::new(at).ok()?; + let (prim, name) = attr.split_property()?; + (self.layer_dir)(&prim, name) + }; + asset_value_path(value, self.stage_path, &layer_dir)? .to_string_lossy() .into_owned() } @@ -599,7 +614,14 @@ mod tests { ..Default::default() }; let at = |p: &openusd::sdf::Path| PrimData::test_at(&stage, p); - let net = translate(&at, &path, &library, Some((&network, "/S")), None); + let net = translate( + &at, + &path, + &|_, _| None, + &library, + Some((&network, "/S")), + None, + ); assert!(net.doc.reported.is_empty(), "{:?}", net.doc.reported); let c = net .doc diff --git a/crates/crust-core/src/scene/usd_import/precomp.rs b/crates/crust-core/src/scene/usd_import/precomp.rs index f3773d919..ca271f504 100644 --- a/crates/crust-core/src/scene/usd_import/precomp.rs +++ b/crates/crust-core/src/scene/usd_import/precomp.rs @@ -26,6 +26,7 @@ use crate::warning; use super::assets::asset_value_path; use super::attrs::decode_vec3; use super::index::data::PrimData; +use super::mtlx_network::LayerDir; use super::mtlx_network::translate_value_graph; use super::products::FilterTarget; @@ -46,6 +47,7 @@ const BEAUTY: &str = "beauty"; pub(super) fn import_precomp( scene: &dyn moho::scene_index::SceneIndex, stage_path: &Path, + layer_dir: &LayerDir<'_>, settings: &sdf::Path, request: &mut AovRequest, targets: &HashMap, @@ -70,7 +72,7 @@ pub(super) fn import_precomp( // The sample filters' graphs first: a var reading one needs its outputs. let graphs: Vec = sample_paths .iter() - .map(|p| Graph::read(scene, stage_path, p)) + .map(|p| Graph::read(scene, stage_path, layer_dir, p)) .collect(); drop_unresolved(request, targets, &graphs, &display_paths); let vars = Vars::of(request); @@ -85,6 +87,7 @@ pub(super) fn import_precomp( let filter = read_display( scene, stage_path, + layer_dir, path, index as u16, &display_paths, @@ -155,9 +158,11 @@ impl Graph { fn read( scene: &dyn moho::scene_index::SceneIndex, stage_path: &Path, + layer_dir: &LayerDir<'_>, path: &sdf::Path, ) -> Graph { - let network = translate_value_graph(&|p| PrimData::at(scene, p), stage_path, path); + let network = + translate_value_graph(&|p| PrimData::at(scene, p), stage_path, layer_dir, path); let roots: Vec<(&str, Option<&str>)> = network .outputs .iter() @@ -418,6 +423,7 @@ fn beauty_var() -> AovVar { fn read_display( scene: &dyn moho::scene_index::SceneIndex, stage_path: &Path, + layer_dir: &LayerDir<'_>, path: &sdf::Path, index: u16, paths: &[sdf::Path], @@ -445,9 +451,9 @@ fn read_display( let op = match id.as_str() { "crust:convolve" => Operation::Convolve { input: image("in"), - kernel_path: prim - .value("inputs:kernel") - .and_then(|v| asset_value_path(&v, stage_path)), + kernel_path: prim.value("inputs:kernel").and_then(|v| { + asset_value_path(&v, stage_path, &|| layer_dir(path, "inputs:kernel")) + }), kernel: None, scale: prim.custom_f32("inputs:kernelScale").unwrap_or(1.0), normalize: input_bool(&prim, "inputs:normalize").unwrap_or(true), diff --git a/crates/crust-core/src/scene/usd_import/preview.rs b/crates/crust-core/src/scene/usd_import/preview.rs index 00079f7c0..1e5a82c75 100644 --- a/crates/crust-core/src/scene/usd_import/preview.rs +++ b/crates/crust-core/src/scene/usd_import/preview.rs @@ -369,7 +369,11 @@ fn preview_uv_input( let token = |input: &str| value(input).and_then(|v| v.as_str().map(str::to_owned)); let float4 = |input: &str| value(input).and_then(decode_float4); - let file = value(tk::FILE).and_then(|v| asset_value_path(&v, caches.stage_path)); + let file = value(tk::FILE).and_then(|v| { + asset_value_path(&v, caches.stage_path, &|| { + src.layer_dir(&tex_path, "inputs:file") + }) + }); let Some(file) = file else { warning!( PreviewTextureWithoutFile, diff --git a/crates/crust-core/src/scene/usd_import/products.rs b/crates/crust-core/src/scene/usd_import/products.rs index 2c2e25b6a..a483fa6c9 100644 --- a/crates/crust-core/src/scene/usd_import/products.rs +++ b/crates/crust-core/src/scene/usd_import/products.rs @@ -458,12 +458,13 @@ impl PrimvarKeep { /// settings prim or the prim authors no `products` — the "write the single /// beauty EXR" case. /// -/// The precomp is read too when `stage_path` (the stage's file, which its -/// kernel asset paths resolve against) is given; a reader that only wants -/// the products' camera and framing (`crust ls`) passes `None`. +/// The precomp is read too when `stage_path` is given: the stage's file and +/// the stage, which its kernel asset paths resolve against (a relative one +/// on the layer authoring it); a reader that only wants the products' camera +/// and framing (`crust ls`) passes `None`. pub(super) fn import_render_products( scene: &dyn SceneIndex, - stage_path: Option<&std::path::Path>, + stage_path: Option<(&std::path::Path, &moho::openusd::usd::Stage)>, pass: Option<&sdf::Path>, ) -> RenderProducts { let Some(path) = render_settings_path(scene, pass) else { @@ -474,10 +475,15 @@ pub(super) fn import_render_products( return RenderProducts::default(); } let mut out = read_products(scene, &path, &settings); - if let Some(stage_path) = stage_path { + if let Some((stage_path, stage)) = stage_path { + let layer_dir = |prim: &sdf::Path, name: &str| { + let attr = prim.append_property(name).ok()?; + super::index::stage_facts::authoring_layer_dir(stage, &attr) + }; out.request.precomp = super::precomp::import_precomp( scene, stage_path, + &layer_dir, &path, &mut out.request, &out.filter_targets, @@ -1314,7 +1320,7 @@ mod tests { .expect("stage opens"); let scope = crate::WarningScope::enter(); let scene = crate::scene::usd_import::index::input_chain(stage.clone(), None, true); - let products = import_render_products(scene.chain.as_ref(), Some(&path), None); + let products = import_render_products(scene.chain.as_ref(), Some((&path, &stage)), None); (products, scope.finish()) } diff --git a/crates/crust-core/tests/asset_anchoring.rs b/crates/crust-core/tests/asset_anchoring.rs new file mode 100644 index 000000000..840ab43b0 --- /dev/null +++ b/crates/crust-core/tests/asset_anchoring.rs @@ -0,0 +1,192 @@ +//! Relative asset paths authored in a referenced layer, below the root +//! layer's directory, are anchored against the layer that authors them, as +//! USD anchors them: a UsdUVTexture's file (a UDIM set and a plain file, both +//! absent from disk, so openusd resolves neither), a MaterialX `filename` +//! input, and a RectLight's texture. The test asserts the paths the host is +//! asked for, and the import's digest is compared with the direct importer's +//! baseline (the `parity` feature). + +#![allow(clippy::unwrap_used)] + +use crust_core::{AssetLoader, ColorSpace, Scene}; +use std::path::{Path, PathBuf}; +use std::sync::{Arc, Mutex}; + +const ASSET: &str = r#"#usda 1.0 +def Xform "Asset" +{ + def Mesh "Q" (prepend apiSchemas = ["MaterialBindingAPI"]) + { + uniform token subdivisionScheme = "none" + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 2, 3] + point3f[] points = [(0, 0, 0), (1, 0, 0), (1, 1, 0), (0, 1, 0)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (1, 1), (0, 1)] (interpolation = "vertex") + rel material:binding = + } + def Mesh "R" (prepend apiSchemas = ["MaterialBindingAPI"]) + { + uniform token subdivisionScheme = "none" + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 2, 3] + point3f[] points = [(2, 0, 0), (3, 0, 0), (3, 1, 0), (2, 1, 0)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (1, 1), (0, 1)] (interpolation = "vertex") + rel material:binding = + } + def RectLight "Card" + { + float inputs:width = 1 + float inputs:height = 1 + asset inputs:texture:file = @../cards/card.png@ + double3 xformOp:translate = (1, 1, 3) + uniform token[] xformOpOrder = ["xformOp:translate"] + } + def Scope "Looks" + { + def Material "M" + { + token outputs:surface.connect = + def Shader "S" + { + uniform token info:id = "UsdPreviewSurface" + color3f inputs:diffuseColor.connect = + float inputs:roughness.connect = + token outputs:surface + } + def Shader "T" + { + uniform token info:id = "UsdUVTexture" + asset inputs:file = @../tex/albedo..png@ + vector3f outputs:rgb + } + def Shader "U" + { + uniform token info:id = "UsdUVTexture" + asset inputs:file = @textures/rough.png@ + float outputs:r + } + } + def Material "X" + { + token outputs:mtlx:surface.connect = + def Shader "S" + { + uniform token info:id = "ND_standard_surface_surfaceshader" + color3f inputs:base_color.connect = + token outputs:out + } + def Shader "I" + { + uniform token info:id = "ND_image_color3" + asset inputs:file = @textures/base..png@ + color3f outputs:out + } + } + } +} +"#; + +const ROOT: &str = r#"#usda 1.0 +def Xform "World" +{ + def Camera "Cam" + { + double3 xformOp:translate = (1.5, 0.5, 6) + uniform token[] xformOpOrder = ["xformOp:translate"] + } + def Xform "Thing" (prepend references = @assets/deep/asset.usda@) {} +} +"#; + +/// The stage, written under a fresh directory: `root.usda`, and the asset two +/// directories below it. +fn stage() -> PathBuf { + let dir = std::env::temp_dir().join("crust_asset_anchoring"); + let _ = std::fs::remove_dir_all(&dir); + std::fs::create_dir_all(dir.join("assets/deep")).unwrap(); + std::fs::write(dir.join("assets/deep/asset.usda"), ASSET).unwrap(); + std::fs::write(dir.join("root.usda"), ROOT).unwrap(); + dir.join("root.usda") +} + +/// A host that records every texture path it is asked for, and decodes none. +#[derive(Default)] +struct Recording(Mutex>); + +impl AssetLoader for Recording { + fn load_environment(&self, path: &Path, _: ColorSpace) -> Option { + self.0.lock().unwrap().push(path.to_path_buf()); + None + } + fn load_texture(&self, path: &Path, _: ColorSpace) -> Option> { + self.0.lock().unwrap().push(path.to_path_buf()); + None + } + fn load_light_texture( + &self, + path: &Path, + _: ColorSpace, + ) -> Option> { + self.0.lock().unwrap().push(path.to_path_buf()); + None + } +} + +#[test] +fn relative_assets_in_a_referenced_layer_anchor_on_that_layer() { + let path = stage(); + let dir = path.parent().unwrap().display().to_string(); + let assets = Recording::default(); + Scene::from_usd_with_assets(&path, &assets).expect("imports"); + let mut asked: Vec = assets + .0 + .lock() + .unwrap() + .iter() + .map(|p| p.display().to_string().replacen(&dir, "$DIR", 1)) + .collect(); + asked.sort(); + asked.dedup(); + // Each anchored on `assets/deep/`, the authoring layer's directory, as + // USD anchors it, never on the root layer's. + assert_eq!( + asked, + [ + "$DIR/assets/deep/../cards/card.png", + "$DIR/assets/deep/../tex/albedo..png", + "$DIR/assets/deep/textures/base..png", + "$DIR/assets/deep/textures/rough.png", + ] + ); +} + +/// A texture file authored as a `string`, not an `asset`: USD does not +/// resolve it, and the importer anchors it on its authoring layer all the +/// same, as the direct importer did. +#[test] +fn a_string_typed_texture_path_anchors_on_its_layer_too() { + let dir = std::env::temp_dir().join("crust_asset_anchoring_string"); + let _ = std::fs::remove_dir_all(&dir); + std::fs::create_dir_all(dir.join("assets/deep")).unwrap(); + let asset = ASSET.replace( + "asset inputs:file = @textures/rough.png@", + "string inputs:file = \"textures/rough.png\"", + ); + std::fs::write(dir.join("assets/deep/asset.usda"), asset).unwrap(); + std::fs::write(dir.join("root.usda"), ROOT).unwrap(); + let assets = Recording::default(); + Scene::from_usd_with_assets(&dir.join("root.usda"), &assets).expect("imports"); + let root = dir.display().to_string(); + let asked: Vec = assets + .0 + .lock() + .unwrap() + .iter() + .map(|p| p.display().to_string().replacen(&root, "$DIR", 1)) + .filter(|p| p.contains("rough")) + .collect(); + // The image run (`CRUST_PARITY_IMAGES=1`) imports twice. + let mut asked = asked; + asked.dedup(); + assert_eq!(asked, ["$DIR/assets/deep/textures/rough.png"]); +} diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-4e355789b700403e-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-4e355789b700403e-1.digest new file mode 100644 index 000000000..d86971060 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-4e355789b700403e-1.digest @@ -0,0 +1,38 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(1.5, 0.5, 6.0), lower_left_corner: Vec3A(-1.2183647, -1.0290802, -4.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda"], invisible_overrides: Some(0) } +layer: $DIR/assets/deep/asset.usda +layer: $DIR/root.usda +lights: 1 +light 0: area name Some("/World/Thing/Card") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4285059f3c1013e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4285059f3c1013e5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9d35beb8f32f58b8 camera=2:9d35beb8f32f58b8 shadow=2:9d35beb8f32f58b8 indirect=2:9d35beb8f32f58b8 +geom 2: material #2 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02ff87c392969355 camera=2:02ff87c392969355 shadow=2:02ff87c392969355 indirect=2:02ff87c392969355 +provenance material /World/Thing/Looks/M: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Thing/Looks/X: MaterialOrigin { slots: [1], displaced: false } +provenance material read: ("/Asset/Looks/M", "/World/Thing/Looks/M") +provenance material read: ("/Asset/Looks/M/S", "/World/Thing/Looks/M") +provenance material read: ("/Asset/Looks/M/T", "/World/Thing/Looks/M") +provenance material read: ("/Asset/Looks/M/U", "/World/Thing/Looks/M") +provenance material read: ("/Asset/Looks/X", "/World/Thing/Looks/X") +provenance material read: ("/Asset/Looks/X/I", "/World/Thing/Looks/X") +provenance material read: ("/Asset/Looks/X/S", "/World/Thing/Looks/X") +provenance light /World/Thing/Card: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Thing/Card +provenance geometry 1..2: /World/Thing/R +provenance geometry 2..3: /World/Thing/Q +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18377322456310340000, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8791120226565781173, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-4e355789b700403e-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-4e355789b700403e-1.image new file mode 100644 index 000000000..d866c623b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-4e355789b700403e-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off de4bdfd600ef69d1 diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-8e031f11860a45d8-1.digest b/crates/crust-core/tests/data/import_baselines/root_usda-8e031f11860a45d8-1.digest new file mode 100644 index 000000000..d86971060 --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-8e031f11860a45d8-1.digest @@ -0,0 +1,38 @@ +time: None +working space: Linear Rec.709 (sRGB) +camera path: Some("/World/Cam") +camera: Camera { origin: Vec3A(1.5, 0.5, 6.0), lower_left_corner: Vec3A(-1.2183647, -1.0290802, -4.0), horizontal: Vec3A(5.4367294, 0.0, 0.0), vertical: Vec3A(0.0, 3.0581603, 0.0), u: Vec3A(1.0, 0.0, 0.0), v: Vec3A(0.0, 1.0, 0.0), lens_radius: 0.0, orthographic: false, clip: CameraClip { near: None, far: None, planes: [Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0), Vec4(0.0, 0.0, 0.0, 0.0)], count: 0 } } +settings prim: None +settings: RenderSettings { samples_per_pixel: 128, max_depth: 32, width: 640, height: 360, region: PixelRect { x0: 0, y0: 0, x1: 640, y1: 360 }, min_samples_per_pixel: 32, variance_threshold: 0.05, adaptive_neighbour_tolerance: 1.0, frame: 0, guiding: false, guiding_train_iterations: 4, guiding_prob: 0.5, sampling_strategy: PowerMis, pixel_filter: Triangle { radius: 1.0 }, sampler: Sobol, light_selection: Power, indirect_clamp: Some(10.0), light_samples: 1, light_samples_indirect: 1, motion_blur: true, depth_of_field: true, exposure_scale: 1.0 } +aovs: AovRequest { products: [], precomp: None } +pass: None +source: Source { lens: Some(Lens { focal_length: 50.0, aperture: [20.955, 15.2908], aperture_offset: [0.0, 0.0], conform: "expandAperture", pixel_aspect: 1.0, f_stop: 0.0, focus_distance: 10.0 }), depth_of_field: false, motion_blur: false, layer_stack: ["$DIR/root.usda"], invisible_overrides: Some(0) } +layer: $DIR/assets/deep/asset.usda +layer: $DIR/root.usda +lights: 1 +light 0: area name Some("/World/Thing/Card") lpe None pmf 1.0 shadow RayMask(2) restricted false nee-only false twinned false gains LobeGains { diffuse: 1.0, specular: 1.0 } +volumes: 0 +world: 3 geometries, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } top level, PrimitiveBreakdown { triangles: 6, spheres: 0, disks: 0, cylinders: 0, curve_segments: 0, cubic_curve_spans: 0, instances: 0 } unique, motion false +geom 0: material #0 Signature { kind: "Emissive", cutout: false, straight: false, boundary: false, emits: true, uv: false, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent true map None uv None shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:4285059f3c1013e5 camera=0:cbf29ce484222325 shadow=0:cbf29ce484222325 indirect=2:4285059f3c1013e5 +geom 1: material #1 Signature { kind: "MaterialX", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(0) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:9d35beb8f32f58b8 camera=2:9d35beb8f32f58b8 shadow=2:9d35beb8f32f58b8 indirect=2:9d35beb8f32f58b8 +geom 2: material #2 Signature { kind: "UsdPreviewSurface (textured)", cutout: false, straight: false, boundary: false, emits: false, uv: true, uv_primvar: None, face_texture: None, curve: None, primvars: Some([]) } class 65535 holdout false transparent false map None uv Some(1) shading None strands None aov None swapped false curves false scale 1.0 motion [] pieces all=2:02ff87c392969355 camera=2:02ff87c392969355 shadow=2:02ff87c392969355 indirect=2:02ff87c392969355 +provenance material /World/Thing/Looks/M: MaterialOrigin { slots: [2], displaced: false } +provenance material /World/Thing/Looks/X: MaterialOrigin { slots: [1], displaced: false } +provenance material read: ("/Asset/Looks/M", "/World/Thing/Looks/M") +provenance material read: ("/Asset/Looks/M/S", "/World/Thing/Looks/M") +provenance material read: ("/Asset/Looks/M/T", "/World/Thing/Looks/M") +provenance material read: ("/Asset/Looks/M/U", "/World/Thing/Looks/M") +provenance material read: ("/Asset/Looks/X", "/World/Thing/Looks/X") +provenance material read: ("/Asset/Looks/X/I", "/World/Thing/Looks/X") +provenance material read: ("/Asset/Looks/X/S", "/World/Thing/Looks/X") +provenance light /World/Thing/Card: LightOrigin { index: 0, geoms: 0..1 } +provenance geometry 0..1: /World/Thing/Card +provenance geometry 1..2: /World/Thing/R +provenance geometry 2..3: /World/Thing/Q +provenance mesh: MeshOrigin { geom_id: 1, slot: 0, baked: true, moving: false } +provenance mesh: MeshOrigin { geom_id: 2, slot: 1, baked: true, moving: false } +provenance mesh slot 0: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 18377322456310340000, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 0 }), placements: 1, shared: false, displaced: false } +provenance mesh slot 1: MeshSlotFacts { key: Some(MeshKeyFacts { geo_hash: 8791120226565781173, n_points: 4, n_indices: 4, n_uvs: Some(4), smooth: false, material: 1 }), placements: 1, shared: false, displaced: false } +provenance spheres: [] +provenance volumes: [] +provenance stage: StageFacts { options: UsdImportOptions { frame: None, camera: None, subdivision_level: None, subdivision_edge_length: None, skip_stage_teardown: false, working_space: None, pass: None, keep_geometry: false }, render_settings: Some("/Render/settings"), subdiv_level: 0, adaptive: None, domes_seen_by_camera: true, precomp: false, working: None, camera: Some("/World/Cam"), cameras: ["/World/Cam"], dicing: None, on_screen_shapes: None, unsized_shapes: false, primvars: [], mtlx_library: Library { defs: [], by_name: {}, impls: {}, files: [] }, shutter: ShutterKey { camera: Some("/World/Cam"), offsets: [0, 0], interval: None, query: false, frame_pose: false } } working Some("Linear Rec.709 (sRGB)") diff --git a/crates/crust-core/tests/data/import_baselines/root_usda-8e031f11860a45d8-1.image b/crates/crust-core/tests/data/import_baselines/root_usda-8e031f11860a45d8-1.image new file mode 100644 index 000000000..d866c623b --- /dev/null +++ b/crates/crust-core/tests/data/import_baselines/root_usda-8e031f11860a45d8-1.image @@ -0,0 +1 @@ +640x360 16spp clamp-off de4bdfd600ef69d1